Completed
Push — master ( c9d2a2...08db8b )
by cam
01:03
created
ecrire/lang/spip_bs.php 1 patch
Indentation   +520 added lines, -520 removed lines patch added patch discarded remove patch
@@ -4,465 +4,465 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'access_interface_graphique' => 'Nazad na kompletno graficki interfejs',
14
-	'access_mode_texte' => 'Prikazi pojednostavljeni tekstualni interfejs',
15
-	'admin_debug' => 'debug',
16
-	'admin_modifier_article' => 'Izmijeni ovaj clanak',
17
-	'admin_modifier_auteur' => 'Izmijeni ovog autora',
18
-	'admin_modifier_breve' => 'Izmijeni ovo obavjestenje',
19
-	'admin_modifier_mot' => 'Izmijeni ovu kljucnu rijec',
20
-	'admin_modifier_rubrique' => 'Izmijeni ovu rubriku',
21
-	'admin_recalculer' => 'Osvjezi ovu stranicu',
22
-	'alerte_maj_impossible' => '<b>Paznja!</b> Osvjezavanje SQL baze podataka na verziju @version@ nije uspjelo. Mozda se radi o dozvoli na bazi podataka. Molimo, kontaktirajte vas ISP.', # MODIF
23
-	'analyse_xml' => 'Obrada XML',
24
-	'articles_recents' => 'Последнји Чланци',
25
-	'avis_archive_incorrect' => 'arhiv dokument nije vazeci SPIP dokument',
26
-	'avis_archive_invalide' => 'arhiv dokument nije vazeci',
27
-	'avis_attention' => 'OPREZ!',
28
-	'avis_champ_incorrect_type_objet' => 'Pogresno ime polja @name@ za objekat tipa @type@',
29
-	'avis_colonne_inexistante' => 'Colona @col@ ne postoji',
30
-	'avis_erreur' => 'Greska: vidi ispod',
31
-	'avis_erreur_connexion' => 'Greska u konekciji',
32
-	'avis_erreur_cookie' => 'Problem sa cookiem',
33
-	'avis_erreur_fonction_contexte' => 'Greska u programiranju.Ova funkcija se ne treba pozivati u ovom kontekstu.', # MODIF
34
-	'avis_erreur_mysql' => 'SQL greska', # MODIF
35
-	'avis_erreur_sauvegarde' => 'Backup greska (@type@ @id_objet@) !',
12
+    // A
13
+    'access_interface_graphique' => 'Nazad na kompletno graficki interfejs',
14
+    'access_mode_texte' => 'Prikazi pojednostavljeni tekstualni interfejs',
15
+    'admin_debug' => 'debug',
16
+    'admin_modifier_article' => 'Izmijeni ovaj clanak',
17
+    'admin_modifier_auteur' => 'Izmijeni ovog autora',
18
+    'admin_modifier_breve' => 'Izmijeni ovo obavjestenje',
19
+    'admin_modifier_mot' => 'Izmijeni ovu kljucnu rijec',
20
+    'admin_modifier_rubrique' => 'Izmijeni ovu rubriku',
21
+    'admin_recalculer' => 'Osvjezi ovu stranicu',
22
+    'alerte_maj_impossible' => '<b>Paznja!</b> Osvjezavanje SQL baze podataka na verziju @version@ nije uspjelo. Mozda se radi o dozvoli na bazi podataka. Molimo, kontaktirajte vas ISP.', # MODIF
23
+    'analyse_xml' => 'Obrada XML',
24
+    'articles_recents' => 'Последнји Чланци',
25
+    'avis_archive_incorrect' => 'arhiv dokument nije vazeci SPIP dokument',
26
+    'avis_archive_invalide' => 'arhiv dokument nije vazeci',
27
+    'avis_attention' => 'OPREZ!',
28
+    'avis_champ_incorrect_type_objet' => 'Pogresno ime polja @name@ za objekat tipa @type@',
29
+    'avis_colonne_inexistante' => 'Colona @col@ ne postoji',
30
+    'avis_erreur' => 'Greska: vidi ispod',
31
+    'avis_erreur_connexion' => 'Greska u konekciji',
32
+    'avis_erreur_cookie' => 'Problem sa cookiem',
33
+    'avis_erreur_fonction_contexte' => 'Greska u programiranju.Ova funkcija se ne treba pozivati u ovom kontekstu.', # MODIF
34
+    'avis_erreur_mysql' => 'SQL greska', # MODIF
35
+    'avis_erreur_sauvegarde' => 'Backup greska (@type@ @id_objet@) !',
36 36
 
37
-	// B
38
-	'barre_a_accent_grave' => 'Unesi veliko A sa grave akcentom',
39
-	'barre_aide' => 'Obogatite izgled vaseg teksta, koristeci se tipografskim precicama',
40
-	'barre_e_accent_aigu' => 'Unesi veliko E sa akutnim akcentom',
41
-	'barre_eo' => 'Unesi eo ligaturu',
42
-	'barre_eo_maj' => 'Unesi EO ligaturu velikim slovima',
43
-	'barre_euro' => 'Unesi simbol za euro',
44
-	'barre_gras' => 'Pretvori u {{masna slova}}',
45
-	'barre_guillemets' => 'Stavi pod "duple navodne znake"',
46
-	'barre_guillemets_simples' => 'Stavi pod "navodne znake"',
47
-	'barre_intertitre' => 'Pretvori u {{{podnaslov}}}',
48
-	'barre_italic' => 'Pretvori u {italik}',
49
-	'barre_lien' => 'pretvori u [hiperlink->http://...]',
50
-	'barre_lien_input' => 'Unesite odrediste vaseg hiperlinka (mozete unijeti internet URL u formi http://www.mysite.com ili navesti broj clanka na ovoj stranici.',
51
-	'barre_note' => 'Pretvori u [[fusnotu]]',
52
-	'barre_quote' => '<quote>citiraj neku poruku</quote>',
53
-	'bouton_changer' => 'Izmijeni',
54
-	'bouton_chercher' => 'Pretraga',
55
-	'bouton_choisir' => 'Izaberi',
56
-	'bouton_download' => 'Télécharger', # MODIF
57
-	'bouton_enregistrer' => 'Snimi',
58
-	'bouton_radio_desactiver_messagerie_interne' => 'Dezaktiviraj interni servis poruka',
59
-	'bouton_radio_envoi_annonces' => 'Posalji editorijalne najave',
60
-	'bouton_radio_non_envoi_annonces' => 'Ne salji najave',
61
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Ne salji listu novosti',
62
-	'bouton_recharger_page' => 'Osvjezi ovu stranicu',
63
-	'bouton_telecharger' => 'Download',
64
-	'bouton_upload' => 'Download', # MODIF
65
-	'bouton_valider' => 'Ovjeri',
37
+    // B
38
+    'barre_a_accent_grave' => 'Unesi veliko A sa grave akcentom',
39
+    'barre_aide' => 'Obogatite izgled vaseg teksta, koristeci se tipografskim precicama',
40
+    'barre_e_accent_aigu' => 'Unesi veliko E sa akutnim akcentom',
41
+    'barre_eo' => 'Unesi eo ligaturu',
42
+    'barre_eo_maj' => 'Unesi EO ligaturu velikim slovima',
43
+    'barre_euro' => 'Unesi simbol za euro',
44
+    'barre_gras' => 'Pretvori u {{masna slova}}',
45
+    'barre_guillemets' => 'Stavi pod "duple navodne znake"',
46
+    'barre_guillemets_simples' => 'Stavi pod "navodne znake"',
47
+    'barre_intertitre' => 'Pretvori u {{{podnaslov}}}',
48
+    'barre_italic' => 'Pretvori u {italik}',
49
+    'barre_lien' => 'pretvori u [hiperlink->http://...]',
50
+    'barre_lien_input' => 'Unesite odrediste vaseg hiperlinka (mozete unijeti internet URL u formi http://www.mysite.com ili navesti broj clanka na ovoj stranici.',
51
+    'barre_note' => 'Pretvori u [[fusnotu]]',
52
+    'barre_quote' => '<quote>citiraj neku poruku</quote>',
53
+    'bouton_changer' => 'Izmijeni',
54
+    'bouton_chercher' => 'Pretraga',
55
+    'bouton_choisir' => 'Izaberi',
56
+    'bouton_download' => 'Télécharger', # MODIF
57
+    'bouton_enregistrer' => 'Snimi',
58
+    'bouton_radio_desactiver_messagerie_interne' => 'Dezaktiviraj interni servis poruka',
59
+    'bouton_radio_envoi_annonces' => 'Posalji editorijalne najave',
60
+    'bouton_radio_non_envoi_annonces' => 'Ne salji najave',
61
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Ne salji listu novosti',
62
+    'bouton_recharger_page' => 'Osvjezi ovu stranicu',
63
+    'bouton_telecharger' => 'Download',
64
+    'bouton_upload' => 'Download', # MODIF
65
+    'bouton_valider' => 'Ovjeri',
66 66
 
67
-	// C
68
-	'cal_apresmidi' => 'posljepodne',
69
-	'cal_jour_entier' => 'cijeli dan',
70
-	'cal_matin' => 'prijepodne',
71
-	'cal_par_jour' => 'dnevni kalendar',
72
-	'cal_par_mois' => 'mjesecni kalendar',
73
-	'cal_par_semaine' => 'sedmicni kalendar',
74
-	'confirm_changer_statut' => 'Trazili ste izmjenu statusa ovog clanka. Zelite li nastaviti?',
75
-	'correcte' => 'tacno',
67
+    // C
68
+    'cal_apresmidi' => 'posljepodne',
69
+    'cal_jour_entier' => 'cijeli dan',
70
+    'cal_matin' => 'prijepodne',
71
+    'cal_par_jour' => 'dnevni kalendar',
72
+    'cal_par_mois' => 'mjesecni kalendar',
73
+    'cal_par_semaine' => 'sedmicni kalendar',
74
+    'confirm_changer_statut' => 'Trazili ste izmjenu statusa ovog clanka. Zelite li nastaviti?',
75
+    'correcte' => 'tacno',
76 76
 
77
-	// D
78
-	'date_aujourdhui' => 'danas',
79
-	'date_avant_jc' => 'pne.',
80
-	'date_dans' => 'za @delai@',
81
-	'date_de_mois_1' => '@j@ @nommois@',
82
-	'date_de_mois_10' => '@j@ @nommois@',
83
-	'date_de_mois_11' => '@j@ @nommois@',
84
-	'date_de_mois_12' => '@j@ @nommois@',
85
-	'date_de_mois_2' => '@j@ @nommois@',
86
-	'date_de_mois_3' => '@j@ @nommois@',
87
-	'date_de_mois_4' => '@j@ @nommois@',
88
-	'date_de_mois_5' => '@j@ @nommois@',
89
-	'date_de_mois_6' => '@j@ @nommois@',
90
-	'date_de_mois_7' => '@j@ @nommois@',
91
-	'date_de_mois_8' => '@j@ @nommois@',
92
-	'date_de_mois_9' => '@j@ @nommois@',
93
-	'date_demain' => 'sutra',
94
-	'date_fmt_heures_minutes' => '@h@h@m@min',
95
-	'date_fmt_jour_heure' => '@jour@ u @heure@',
96
-	'date_fmt_jour_mois' => '@jour@ @nommois@',
97
-	'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
98
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
99
-	'date_fmt_nomjour_date' => '@nomjour@ @date@',
100
-	'date_heures' => 'sati',
101
-	'date_hier' => 'jucer',
102
-	'date_il_y_a' => 'prije @delai@',
103
-	'date_jnum1' => '1',
104
-	'date_jnum10' => '10',
105
-	'date_jnum11' => '11',
106
-	'date_jnum12' => '12',
107
-	'date_jnum13' => '13',
108
-	'date_jnum14' => '14',
109
-	'date_jnum15' => '15',
110
-	'date_jnum16' => '16',
111
-	'date_jnum17' => '17',
112
-	'date_jnum18' => '18',
113
-	'date_jnum19' => '19',
114
-	'date_jnum2' => '2',
115
-	'date_jnum20' => '20',
116
-	'date_jnum21' => '21',
117
-	'date_jnum22' => '22',
118
-	'date_jnum23' => '23',
119
-	'date_jnum24' => '24',
120
-	'date_jnum25' => '25',
121
-	'date_jnum26' => '26',
122
-	'date_jnum27' => '27',
123
-	'date_jnum28' => '28',
124
-	'date_jnum29' => '29',
125
-	'date_jnum3' => '3',
126
-	'date_jnum30' => '30',
127
-	'date_jnum31' => '31',
128
-	'date_jnum4' => '4',
129
-	'date_jnum5' => '5',
130
-	'date_jnum6' => '6',
131
-	'date_jnum7' => '7',
132
-	'date_jnum8' => '8',
133
-	'date_jnum9' => '9',
134
-	'date_jour_1' => 'nedjelja',
135
-	'date_jour_2' => 'ponedjeljak',
136
-	'date_jour_3' => 'utorak',
137
-	'date_jour_4' => 'srijeda',
138
-	'date_jour_5' => 'cetvrtak',
139
-	'date_jour_6' => 'petak',
140
-	'date_jour_7' => 'subota',
141
-	'date_jours' => 'dani',
142
-	'date_minutes' => 'minute',
143
-	'date_mois' => 'mjeseci',
144
-	'date_mois_1' => 'januar',
145
-	'date_mois_10' => 'oktobar',
146
-	'date_mois_11' => 'novembar',
147
-	'date_mois_12' => 'decembar',
148
-	'date_mois_2' => 'februar',
149
-	'date_mois_3' => 'mart',
150
-	'date_mois_4' => 'april',
151
-	'date_mois_5' => 'maj',
152
-	'date_mois_6' => 'juni',
153
-	'date_mois_7' => 'juli',
154
-	'date_mois_8' => 'august',
155
-	'date_mois_9' => 'septembar',
156
-	'date_saison_1' => 'zima',
157
-	'date_saison_2' => 'proljece',
158
-	'date_saison_3' => 'ljeto',
159
-	'date_saison_4' => 'jesen',
160
-	'date_semaines' => 'sedmice',
161
-	'dirs_commencer' => ' da bi ste poceli sa stvarnom instalacijom',
162
-	'dirs_preliminaire' => 'Uvod: <b>Podesavanje dozvola za pristup</b>',
163
-	'dirs_probleme_droits' => '<b>Problem sa dozvolama za pristup</b>',
164
-	'dirs_repertoires_absents' => '<b>Sljedeci direktoriji nisu nadjeni: <ul>@bad_dirs@.</ul> </b>
77
+    // D
78
+    'date_aujourdhui' => 'danas',
79
+    'date_avant_jc' => 'pne.',
80
+    'date_dans' => 'za @delai@',
81
+    'date_de_mois_1' => '@j@ @nommois@',
82
+    'date_de_mois_10' => '@j@ @nommois@',
83
+    'date_de_mois_11' => '@j@ @nommois@',
84
+    'date_de_mois_12' => '@j@ @nommois@',
85
+    'date_de_mois_2' => '@j@ @nommois@',
86
+    'date_de_mois_3' => '@j@ @nommois@',
87
+    'date_de_mois_4' => '@j@ @nommois@',
88
+    'date_de_mois_5' => '@j@ @nommois@',
89
+    'date_de_mois_6' => '@j@ @nommois@',
90
+    'date_de_mois_7' => '@j@ @nommois@',
91
+    'date_de_mois_8' => '@j@ @nommois@',
92
+    'date_de_mois_9' => '@j@ @nommois@',
93
+    'date_demain' => 'sutra',
94
+    'date_fmt_heures_minutes' => '@h@h@m@min',
95
+    'date_fmt_jour_heure' => '@jour@ u @heure@',
96
+    'date_fmt_jour_mois' => '@jour@ @nommois@',
97
+    'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
98
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
99
+    'date_fmt_nomjour_date' => '@nomjour@ @date@',
100
+    'date_heures' => 'sati',
101
+    'date_hier' => 'jucer',
102
+    'date_il_y_a' => 'prije @delai@',
103
+    'date_jnum1' => '1',
104
+    'date_jnum10' => '10',
105
+    'date_jnum11' => '11',
106
+    'date_jnum12' => '12',
107
+    'date_jnum13' => '13',
108
+    'date_jnum14' => '14',
109
+    'date_jnum15' => '15',
110
+    'date_jnum16' => '16',
111
+    'date_jnum17' => '17',
112
+    'date_jnum18' => '18',
113
+    'date_jnum19' => '19',
114
+    'date_jnum2' => '2',
115
+    'date_jnum20' => '20',
116
+    'date_jnum21' => '21',
117
+    'date_jnum22' => '22',
118
+    'date_jnum23' => '23',
119
+    'date_jnum24' => '24',
120
+    'date_jnum25' => '25',
121
+    'date_jnum26' => '26',
122
+    'date_jnum27' => '27',
123
+    'date_jnum28' => '28',
124
+    'date_jnum29' => '29',
125
+    'date_jnum3' => '3',
126
+    'date_jnum30' => '30',
127
+    'date_jnum31' => '31',
128
+    'date_jnum4' => '4',
129
+    'date_jnum5' => '5',
130
+    'date_jnum6' => '6',
131
+    'date_jnum7' => '7',
132
+    'date_jnum8' => '8',
133
+    'date_jnum9' => '9',
134
+    'date_jour_1' => 'nedjelja',
135
+    'date_jour_2' => 'ponedjeljak',
136
+    'date_jour_3' => 'utorak',
137
+    'date_jour_4' => 'srijeda',
138
+    'date_jour_5' => 'cetvrtak',
139
+    'date_jour_6' => 'petak',
140
+    'date_jour_7' => 'subota',
141
+    'date_jours' => 'dani',
142
+    'date_minutes' => 'minute',
143
+    'date_mois' => 'mjeseci',
144
+    'date_mois_1' => 'januar',
145
+    'date_mois_10' => 'oktobar',
146
+    'date_mois_11' => 'novembar',
147
+    'date_mois_12' => 'decembar',
148
+    'date_mois_2' => 'februar',
149
+    'date_mois_3' => 'mart',
150
+    'date_mois_4' => 'april',
151
+    'date_mois_5' => 'maj',
152
+    'date_mois_6' => 'juni',
153
+    'date_mois_7' => 'juli',
154
+    'date_mois_8' => 'august',
155
+    'date_mois_9' => 'septembar',
156
+    'date_saison_1' => 'zima',
157
+    'date_saison_2' => 'proljece',
158
+    'date_saison_3' => 'ljeto',
159
+    'date_saison_4' => 'jesen',
160
+    'date_semaines' => 'sedmice',
161
+    'dirs_commencer' => ' da bi ste poceli sa stvarnom instalacijom',
162
+    'dirs_preliminaire' => 'Uvod: <b>Podesavanje dozvola za pristup</b>',
163
+    'dirs_probleme_droits' => '<b>Problem sa dozvolama za pristup</b>',
164
+    'dirs_repertoires_absents' => '<b>Sljedeci direktoriji nisu nadjeni: <ul>@bad_dirs@.</ul> </b>
165 165
   <p>Problem je vjerovatno u pisanju velikih i malih slova.
166 166
   Provjerite da li velika i mala slova ovih direktorija odgovaraju onom sto je prikazano nize; ako to nije slucaj, promijenite imena direktorija pomocu vaseg FTP klijenta, da biste ispravili gresku.
167 167
   </p><p>Kada to uradite, mozete </p>', # MODIF
168
-	'dirs_repertoires_suivants' => '<b>Sljedeci direktoriji ne dozvoljavaju pisanje: <ul>@bad_dirs@.</ul> </b>
168
+    'dirs_repertoires_suivants' => '<b>Sljedeci direktoriji ne dozvoljavaju pisanje: <ul>@bad_dirs@.</ul> </b>
169 169
   <p>Da bi ste to promijenili, koristite svog FTP klijenta i postavite dozvole pristupa za svaki od direktorija. Procedura je detaljno opisana u uputama za instalaciju.
170 170
   </p><p>Kada izvrsite ovu operaciju, mozete </p>', # MODIF
171
-	'double_occurrence' => 'Double occurrence', # MODIF
171
+    'double_occurrence' => 'Double occurrence', # MODIF
172 172
 
173
-	// E
174
-	'envoi_via_le_site' => 'Poslano putem stranice',
173
+    // E
174
+    'envoi_via_le_site' => 'Poslano putem stranice',
175 175
 
176
-	// F
177
-	'fichier_introuvable' => 'Dokument @fichier@ nije pronadjen', # MODIF
178
-	'form_deja_inscrit' => 'Vec ste registrovani.',
179
-	'form_email_non_valide' => 'Vasa e-mail adresa nije vazeca.',
180
-	'form_forum_access_refuse' => 'Nemate vise pristup ovoj stranici.',
181
-	'form_forum_bonjour' => 'Dobar dan @nom@,',
182
-	'form_forum_email_deja_enregistre' => 'Ova e-mail adresa je vec registrovana. Mozete koistiti vasu uobicajenu lozinku',
183
-	'form_forum_identifiant_mail' => 'Vas novi identifikator vam je upravo poslan na vasu e-mail adresu.',
184
-	'form_forum_identifiants' => 'Licni identifikatori',
185
-	'form_forum_indiquer_nom_email' => 'Ovdje upisite vase ime i e-mail adresu. Ubrzo ce na tu adresu stici vas licni identifikator.',
186
-	'form_forum_login' => 'login:',
187
-	'form_forum_message_auto' => '(ovo je automatska poruka)',
188
-	'form_forum_pass' => 'lozinka:',
189
-	'form_forum_probleme_mail' => 'Problem sa e-mail adresom. Identifikator nije poslan.',
190
-	'form_forum_voici1' => 'Ovo su identifikatori za vase ucesce u aktivnosti stranice "@nom_site_spip@" (@adresse_site@/) :',
191
-	'form_forum_voici2' => 'Ovo su vasi identifikatori za postavljanje clanaka na stranici "@nom_site_spip@" (@adresse_site@/ecrire/) :',
192
-	'form_indiquer_email' => 'Naznacite vasu e-mail adresu.',
193
-	'form_indiquer_nom' => 'Naznacite vase ime.',
194
-	'form_indiquer_nom_site' => 'Naznacite ime vase stranice.',
195
-	'form_pet_deja_enregistre' => 'Ova stranica je vec registrovana',
196
-	'form_pet_signature_pasprise' => 'Vas potpis nije primljen.',
197
-	'form_prop_confirmer_envoi' => 'Potvrdi posiljku',
198
-	'form_prop_description' => 'Opis/komentar',
199
-	'form_prop_enregistre' => 'Vas prijedlog je registrovan i bice postavljen nakon ovjere od strane odgovornih osoba ove stranice.',
200
-	'form_prop_envoyer' => 'Pošaljite poruku',
201
-	'form_prop_indiquer_email' => 'Naznacite vazecu e-mail adresu',
202
-	'form_prop_indiquer_nom_site' => 'Naznacite ime strancie.',
203
-	'form_prop_indiquer_sujet' => 'Naznacite temu',
204
-	'form_prop_message_envoye' => 'Poruka poslana',
205
-	'form_prop_non_enregistre' => 'Vas prijedlog nije registrovan.',
206
-	'form_prop_sujet' => 'Tema',
207
-	'form_prop_url_site' => 'URL adresa stranice', # MODIF
208
-	'forum_non_inscrit' => 'Niste registrovani ili adresa i lozinka nisu ispravni.',
209
-	'forum_par_auteur' => 'od @auteur@',
210
-	'forum_titre_erreur' => 'Greska...',
176
+    // F
177
+    'fichier_introuvable' => 'Dokument @fichier@ nije pronadjen', # MODIF
178
+    'form_deja_inscrit' => 'Vec ste registrovani.',
179
+    'form_email_non_valide' => 'Vasa e-mail adresa nije vazeca.',
180
+    'form_forum_access_refuse' => 'Nemate vise pristup ovoj stranici.',
181
+    'form_forum_bonjour' => 'Dobar dan @nom@,',
182
+    'form_forum_email_deja_enregistre' => 'Ova e-mail adresa je vec registrovana. Mozete koistiti vasu uobicajenu lozinku',
183
+    'form_forum_identifiant_mail' => 'Vas novi identifikator vam je upravo poslan na vasu e-mail adresu.',
184
+    'form_forum_identifiants' => 'Licni identifikatori',
185
+    'form_forum_indiquer_nom_email' => 'Ovdje upisite vase ime i e-mail adresu. Ubrzo ce na tu adresu stici vas licni identifikator.',
186
+    'form_forum_login' => 'login:',
187
+    'form_forum_message_auto' => '(ovo je automatska poruka)',
188
+    'form_forum_pass' => 'lozinka:',
189
+    'form_forum_probleme_mail' => 'Problem sa e-mail adresom. Identifikator nije poslan.',
190
+    'form_forum_voici1' => 'Ovo su identifikatori za vase ucesce u aktivnosti stranice "@nom_site_spip@" (@adresse_site@/) :',
191
+    'form_forum_voici2' => 'Ovo su vasi identifikatori za postavljanje clanaka na stranici "@nom_site_spip@" (@adresse_site@/ecrire/) :',
192
+    'form_indiquer_email' => 'Naznacite vasu e-mail adresu.',
193
+    'form_indiquer_nom' => 'Naznacite vase ime.',
194
+    'form_indiquer_nom_site' => 'Naznacite ime vase stranice.',
195
+    'form_pet_deja_enregistre' => 'Ova stranica je vec registrovana',
196
+    'form_pet_signature_pasprise' => 'Vas potpis nije primljen.',
197
+    'form_prop_confirmer_envoi' => 'Potvrdi posiljku',
198
+    'form_prop_description' => 'Opis/komentar',
199
+    'form_prop_enregistre' => 'Vas prijedlog je registrovan i bice postavljen nakon ovjere od strane odgovornih osoba ove stranice.',
200
+    'form_prop_envoyer' => 'Pošaljite poruku',
201
+    'form_prop_indiquer_email' => 'Naznacite vazecu e-mail adresu',
202
+    'form_prop_indiquer_nom_site' => 'Naznacite ime strancie.',
203
+    'form_prop_indiquer_sujet' => 'Naznacite temu',
204
+    'form_prop_message_envoye' => 'Poruka poslana',
205
+    'form_prop_non_enregistre' => 'Vas prijedlog nije registrovan.',
206
+    'form_prop_sujet' => 'Tema',
207
+    'form_prop_url_site' => 'URL adresa stranice', # MODIF
208
+    'forum_non_inscrit' => 'Niste registrovani ili adresa i lozinka nisu ispravni.',
209
+    'forum_par_auteur' => 'od @auteur@',
210
+    'forum_titre_erreur' => 'Greska...',
211 211
 
212
-	// I
213
-	'ical_texte_rss_articles' => 'Backend dokument clanaka ove stranice se nalazi na adresi:',
214
-	'ical_texte_rss_articles2' => 'Svakako mozete dobiti backend dokumente za clanke svih rubrika na stanici:',
215
-	'ical_texte_rss_breves' => 'Postoji dokument koji sadrzi novosti stranice. Mozete dobiti samo novosti jedne rubrike, tako sto ce te izabrati broj sekcije.',
216
-	'icone_a_suivre' => 'À suivre',
217
-	'icone_admin_site' => 'Administracija stranice',
218
-	'icone_agenda' => 'Kalendar',
219
-	'icone_aide_ligne' => 'Pomoc',
220
-	'icone_articles' => 'Clanci',
221
-	'icone_auteurs' => 'Autori',
222
-	'icone_brouteur' => 'Brza navigacija',
223
-	'icone_configuration_site' => 'Podesavanje',
224
-	'icone_configurer_site' => 'Podesavanje vase stranice',
225
-	'icone_creer_nouvel_auteur' => 'Kreiraj novog autora',
226
-	'icone_creer_rubrique' => 'Kreiraj rubriku',
227
-	'icone_creer_sous_rubrique' => 'Kreiraj podrubriku',
228
-	'icone_deconnecter' => 'odjava',
229
-	'icone_discussions' => 'Diskusije',
230
-	'icone_doc_rubrique' => 'Prilozeni dokumenti',
231
-	'icone_ecrire_article' => 'Napisi novi clanak',
232
-	'icone_edition_site' => 'Izmjena',
233
-	'icone_gestion_langues' => 'Menadzer jezika',
234
-	'icone_informations_personnelles' => 'Licne informacije',
235
-	'icone_interface_complet' => 'cjelokupni interfejs',
236
-	'icone_interface_simple' => 'Pojednostavljeni interfejs',
237
-	'icone_maintenance_site' => 'Odrzavanje stranice',
238
-	'icone_messagerie_personnelle' => 'Licni servis poruka',
239
-	'icone_repartition_debut' => 'Prikazi distribuciju od pocetka',
240
-	'icone_rubriques' => 'Rubrike',
241
-	'icone_sauver_site' => 'Backup stranice',
242
-	'icone_site_entier' => 'Cjela stranica',
243
-	'icone_sites_references' => 'Preporucene stranice',
244
-	'icone_statistiques' => 'Statistike stranice',
245
-	'icone_suivi_activite' => 'Prati aktivnost stranice',
246
-	'icone_suivi_actualite' => 'Razvoj stranice',
247
-	'icone_suivi_pettions' => 'Prati/uredi peticija',
248
-	'icone_suivi_revisions' => 'Izmjene clanaka',
249
-	'icone_supprimer_document' => 'Izbrisi ovaj dokument',
250
-	'icone_supprimer_image' => 'Izbrisi ovu fotografiju',
251
-	'icone_tous_articles' => 'Svi vasi clanci',
252
-	'icone_tous_auteur' => 'Svi autori',
253
-	'icone_visiter_site' => 'Posjeti', # MODIF
254
-	'icone_voir_en_ligne' => 'Pogledaj online',
255
-	'img_indisponible' => 'fotografija je nedostupna',
256
-	'info_a_suivre' => 'LAUNCH PAD»',
257
-	'info_acces_interdit' => 'zabranjen pristup',
258
-	'info_acces_refuse' => 'pristup odbijen',
259
-	'info_action' => 'Akcija: @action@',
260
-	'info_administrer_rubriques' => 'Mozete administrirati ovu rubriku i njene podrubrike',
261
-	'info_adresse_non_indiquee' => 'Niste naznacili adresu koju treba testirati!',
262
-	'info_aide' => 'POMOC:',
263
-	'info_ajouter_mot' => 'Dodaj ovu rijec',
264
-	'info_annonce' => 'NAJAVA',
265
-	'info_annonces_generales' => 'Opste najave:',
266
-	'info_article_propose' => 'Clanak je predlozen',
267
-	'info_article_publie' => 'Clanak je objavljen',
268
-	'info_article_redaction' => 'Clanak u toku uredjivanja',
269
-	'info_article_refuse' => 'Clanak je odbijen',
270
-	'info_article_supprime' => 'Clanak je izbrisan',
271
-	'info_articles' => 'Чланци',
272
-	'info_articles_a_valider' => 'Clanci za ovjeriti',
273
-	'info_articles_proposes' => 'Predlozeni clanci',
274
-	'info_auteurs_nombre' => 'autor/i:',
275
-	'info_authentification_ftp' => 'Authentifikacija (FTP-om).',
276
-	'info_breves_2' => 'obavjestenja',
277
-	'info_connexion_refusee' => 'Prijava odbijena',
278
-	'info_contact_developpeur' => 'Kontaktirajte programera.',
279
-	'info_contenance' => 'Ova stranica sadrzi:',
280
-	'info_contribution' => 'Pridonos foruma', # MODIF
281
-	'info_copyright' => '@spip@ je slobodni softver distribucije @lien_gpl@.',
282
-	'info_copyright_doc' => 'Za vise informacija pogledajte <a href="@spipnet@">http://www.spip.net/fr</a>.', # MODIF
283
-	'info_copyright_gpl' => 'pod GPL licencom',
284
-	'info_cours_edition' => 'Vasi clanci u toku uredjivanja', # MODIF
285
-	'info_creer_repertoire' => 'Kreirajte dokument ili direktorij pod imenom:',
286
-	'info_creer_repertoire_2' => 'Unutar podirektorija<b>ecrire/data/</b>, zatim:',
287
-	'info_creer_vignette' => 'automatska kreacija vinjete',
288
-	'info_deplier' => 'Otvori',
289
-	'info_descriptif_nombre' => 'opis/i:',
290
-	'info_description' => 'Opis:',
291
-	'info_description_2' => 'Opis:',
292
-	'info_dimension' => 'Dimenzije:',
293
-	'info_ecire_message_prive' => 'Napisi privatnu poruku',
294
-	'info_email_invalide' => 'Pogresna e-mail adresa.',
295
-	'info_en_cours_validation' => 'Vasi clanci u toku uredjivanja',
296
-	'info_en_ligne' => 'Trenutno online:',
297
-	'info_envoyer_message_prive' => 'Posalji privatnu poruku ovom autoru',
298
-	'info_erreur_requete' => 'Greska sa upitom:',
299
-	'info_erreur_squelette2' => 'Nijedan predlozak <b>@fichier@</b> nije dostupan...',
300
-	'info_erreur_systeme' => 'Sistemska greska (errno @errsys@)',
301
-	'info_fini' => 'Zavrseno je!',
302
-	'info_format_image' => 'Format fotografija koji se moze koristiti za kreiranje vinjeta: @gd_formats@.',
303
-	'info_format_non_defini' => 'neodredjen format',
304
-	'info_grand_ecran' => 'Veliki prikaz',
305
-	'info_image_aide' => 'POMOC',
306
-	'info_image_process_titre' => 'Metoda pravljenja vinjeta',
307
-	'info_impossible_lire_page' => '<b>Greska!</b> Nemoguce procitati stranicu <tt><html>@test_proxy@</html></tt> iako proxy <tt>', # MODIF
308
-	'info_installation_systeme_publication' => 'Instalacija sistema objavljivanja...',
309
-	'info_installer_documents' => 'Mozete automatski instalirati sve dokumente iz foldera <i>upload</i>.',
310
-	'info_installer_ftp' => 'Kao administrator mozete putem FTP-a instalirati dokumente iz foldera @upload@ da bi ste ih kasnije izabrali direktno sa ove lokacije.',
311
-	'info_installer_images' => 'Mozete instalirati fotografije formata JPEG, GIF i PNG.',
312
-	'info_installer_images_dossier' => 'Instalirajte fotografije u folder @upload@ da bi ste ih mogli izabrati sa ov lokacije.',
313
-	'info_interface_complete' => 'Cjelokupni interfejs',
314
-	'info_interface_simple' => 'Pojednostavljeni interfejs',
315
-	'info_joindre_document_article' => 'Ovom clanku mozete pridruziti dokumente tipa',
316
-	'info_joindre_document_rubrique' => 'Ovoj rubrici mozete dodati dokumente tipa',
317
-	'info_joindre_documents_article' => 'Vasem clanku mozete dodati dokumente tipa:',
318
-	'info_l_article' => 'Чланак',
319
-	'info_la_breve' => 'obavjestenje',
320
-	'info_la_rubrique' => 'rubrika',
321
-	'info_langue_principale' => 'Glavni jezik stranice',
322
-	'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ piksela',
323
-	'info_les_auteurs_1' => 'od @les_auteurs@',
324
-	'info_logo_format_interdit' => 'Dozvoljeni su samo logotipi formata @formats@.',
325
-	'info_logo_max_poids' => 'Logotip mora biti manji od @maxi@ (ovaj dokument je @actuel@).',
326
-	'info_mail_fournisseur' => '[email protected]',
327
-	'info_message_2' => 'PORUKA',
328
-	'info_message_supprime' => 'PORUKA JE IZBRISANA',
329
-	'info_mise_en_ligne' => 'Datum objavljivanja:',
330
-	'info_modification_parametres_securite' => 'Izmjena parametara sigurnosti',
331
-	'info_mois_courant' => 'Tokom mjeseca:',
332
-	'info_mot_cle_ajoute' => 'Sljedeca kljucna rijec je dodana u',
333
-	'info_multi_herit' => 'Standardni jezik',
334
-	'info_multi_langues_soulignees' => '<u>Podvuceni jezici</u> raspolazu prevodom svih tekstova interfejsa. Ako izaberete jedan od tih jezika, brojni elementi javne stranice (datumi, formulari) ce biti automatski prevedeni. Za nepodvucene jezike, ti ce elementi biti prikazani u glavnom jeziku stranice.', # MODIF
335
-	'info_multilinguisme' => 'Multilingvizam',
336
-	'info_nom_non_utilisateurs_connectes' => 'Vase ime se ne pojavljuje na listi prisutnih korisnika.',
337
-	'info_nom_utilisateurs_connectes' => 'Vase ime se pojavljuje na listi prisutnih korisnika.',
338
-	'info_nombre_en_ligne' => 'Trenutno prisutni:',
339
-	'info_non_resultat' => 'Nema rezultata za "@cherche_mot@"',
340
-	'info_non_utilisation_messagerie' => 'Ne koristite privatni servis poruka ove stranice.',
341
-	'info_nouveau_message' => 'NEMATE NOVIH PORUKA',
342
-	'info_nouveaux_messages' => 'IMATE @total_messages@ NOVIH PORUKA',
343
-	'info_numero_abbreviation' => 'N°',
344
-	'info_obligatoire' => 'Ovaj podatak je obavezan',
345
-	'info_pense_bete' => 'BILJESKA',
346
-	'info_petit_ecran' => 'Mali prikaz',
347
-	'info_pixels' => 'piksela',
348
-	'info_plusieurs_mots_trouves' => 'Pronadjeno je vise kljucnih rijeci za "@cherche_mot@":',
349
-	'info_portfolio_automatique' => 'Automatski portfolio:',
350
-	'info_premier_resultat' => '[@debut_limit@ prvih rezultata od ukupno @total@]',
351
-	'info_premier_resultat_sur' => '[@debut_limit@ prvih rezultata od ukupno @total@]',
352
-	'info_propose_1' => '[@nom_site_spip@] Poslano: @titre@',
353
-	'info_propose_2' => 'Clanak je poslan
212
+    // I
213
+    'ical_texte_rss_articles' => 'Backend dokument clanaka ove stranice se nalazi na adresi:',
214
+    'ical_texte_rss_articles2' => 'Svakako mozete dobiti backend dokumente za clanke svih rubrika na stanici:',
215
+    'ical_texte_rss_breves' => 'Postoji dokument koji sadrzi novosti stranice. Mozete dobiti samo novosti jedne rubrike, tako sto ce te izabrati broj sekcije.',
216
+    'icone_a_suivre' => 'À suivre',
217
+    'icone_admin_site' => 'Administracija stranice',
218
+    'icone_agenda' => 'Kalendar',
219
+    'icone_aide_ligne' => 'Pomoc',
220
+    'icone_articles' => 'Clanci',
221
+    'icone_auteurs' => 'Autori',
222
+    'icone_brouteur' => 'Brza navigacija',
223
+    'icone_configuration_site' => 'Podesavanje',
224
+    'icone_configurer_site' => 'Podesavanje vase stranice',
225
+    'icone_creer_nouvel_auteur' => 'Kreiraj novog autora',
226
+    'icone_creer_rubrique' => 'Kreiraj rubriku',
227
+    'icone_creer_sous_rubrique' => 'Kreiraj podrubriku',
228
+    'icone_deconnecter' => 'odjava',
229
+    'icone_discussions' => 'Diskusije',
230
+    'icone_doc_rubrique' => 'Prilozeni dokumenti',
231
+    'icone_ecrire_article' => 'Napisi novi clanak',
232
+    'icone_edition_site' => 'Izmjena',
233
+    'icone_gestion_langues' => 'Menadzer jezika',
234
+    'icone_informations_personnelles' => 'Licne informacije',
235
+    'icone_interface_complet' => 'cjelokupni interfejs',
236
+    'icone_interface_simple' => 'Pojednostavljeni interfejs',
237
+    'icone_maintenance_site' => 'Odrzavanje stranice',
238
+    'icone_messagerie_personnelle' => 'Licni servis poruka',
239
+    'icone_repartition_debut' => 'Prikazi distribuciju od pocetka',
240
+    'icone_rubriques' => 'Rubrike',
241
+    'icone_sauver_site' => 'Backup stranice',
242
+    'icone_site_entier' => 'Cjela stranica',
243
+    'icone_sites_references' => 'Preporucene stranice',
244
+    'icone_statistiques' => 'Statistike stranice',
245
+    'icone_suivi_activite' => 'Prati aktivnost stranice',
246
+    'icone_suivi_actualite' => 'Razvoj stranice',
247
+    'icone_suivi_pettions' => 'Prati/uredi peticija',
248
+    'icone_suivi_revisions' => 'Izmjene clanaka',
249
+    'icone_supprimer_document' => 'Izbrisi ovaj dokument',
250
+    'icone_supprimer_image' => 'Izbrisi ovu fotografiju',
251
+    'icone_tous_articles' => 'Svi vasi clanci',
252
+    'icone_tous_auteur' => 'Svi autori',
253
+    'icone_visiter_site' => 'Posjeti', # MODIF
254
+    'icone_voir_en_ligne' => 'Pogledaj online',
255
+    'img_indisponible' => 'fotografija je nedostupna',
256
+    'info_a_suivre' => 'LAUNCH PAD»',
257
+    'info_acces_interdit' => 'zabranjen pristup',
258
+    'info_acces_refuse' => 'pristup odbijen',
259
+    'info_action' => 'Akcija: @action@',
260
+    'info_administrer_rubriques' => 'Mozete administrirati ovu rubriku i njene podrubrike',
261
+    'info_adresse_non_indiquee' => 'Niste naznacili adresu koju treba testirati!',
262
+    'info_aide' => 'POMOC:',
263
+    'info_ajouter_mot' => 'Dodaj ovu rijec',
264
+    'info_annonce' => 'NAJAVA',
265
+    'info_annonces_generales' => 'Opste najave:',
266
+    'info_article_propose' => 'Clanak je predlozen',
267
+    'info_article_publie' => 'Clanak je objavljen',
268
+    'info_article_redaction' => 'Clanak u toku uredjivanja',
269
+    'info_article_refuse' => 'Clanak je odbijen',
270
+    'info_article_supprime' => 'Clanak je izbrisan',
271
+    'info_articles' => 'Чланци',
272
+    'info_articles_a_valider' => 'Clanci za ovjeriti',
273
+    'info_articles_proposes' => 'Predlozeni clanci',
274
+    'info_auteurs_nombre' => 'autor/i:',
275
+    'info_authentification_ftp' => 'Authentifikacija (FTP-om).',
276
+    'info_breves_2' => 'obavjestenja',
277
+    'info_connexion_refusee' => 'Prijava odbijena',
278
+    'info_contact_developpeur' => 'Kontaktirajte programera.',
279
+    'info_contenance' => 'Ova stranica sadrzi:',
280
+    'info_contribution' => 'Pridonos foruma', # MODIF
281
+    'info_copyright' => '@spip@ je slobodni softver distribucije @lien_gpl@.',
282
+    'info_copyright_doc' => 'Za vise informacija pogledajte <a href="@spipnet@">http://www.spip.net/fr</a>.', # MODIF
283
+    'info_copyright_gpl' => 'pod GPL licencom',
284
+    'info_cours_edition' => 'Vasi clanci u toku uredjivanja', # MODIF
285
+    'info_creer_repertoire' => 'Kreirajte dokument ili direktorij pod imenom:',
286
+    'info_creer_repertoire_2' => 'Unutar podirektorija<b>ecrire/data/</b>, zatim:',
287
+    'info_creer_vignette' => 'automatska kreacija vinjete',
288
+    'info_deplier' => 'Otvori',
289
+    'info_descriptif_nombre' => 'opis/i:',
290
+    'info_description' => 'Opis:',
291
+    'info_description_2' => 'Opis:',
292
+    'info_dimension' => 'Dimenzije:',
293
+    'info_ecire_message_prive' => 'Napisi privatnu poruku',
294
+    'info_email_invalide' => 'Pogresna e-mail adresa.',
295
+    'info_en_cours_validation' => 'Vasi clanci u toku uredjivanja',
296
+    'info_en_ligne' => 'Trenutno online:',
297
+    'info_envoyer_message_prive' => 'Posalji privatnu poruku ovom autoru',
298
+    'info_erreur_requete' => 'Greska sa upitom:',
299
+    'info_erreur_squelette2' => 'Nijedan predlozak <b>@fichier@</b> nije dostupan...',
300
+    'info_erreur_systeme' => 'Sistemska greska (errno @errsys@)',
301
+    'info_fini' => 'Zavrseno je!',
302
+    'info_format_image' => 'Format fotografija koji se moze koristiti za kreiranje vinjeta: @gd_formats@.',
303
+    'info_format_non_defini' => 'neodredjen format',
304
+    'info_grand_ecran' => 'Veliki prikaz',
305
+    'info_image_aide' => 'POMOC',
306
+    'info_image_process_titre' => 'Metoda pravljenja vinjeta',
307
+    'info_impossible_lire_page' => '<b>Greska!</b> Nemoguce procitati stranicu <tt><html>@test_proxy@</html></tt> iako proxy <tt>', # MODIF
308
+    'info_installation_systeme_publication' => 'Instalacija sistema objavljivanja...',
309
+    'info_installer_documents' => 'Mozete automatski instalirati sve dokumente iz foldera <i>upload</i>.',
310
+    'info_installer_ftp' => 'Kao administrator mozete putem FTP-a instalirati dokumente iz foldera @upload@ da bi ste ih kasnije izabrali direktno sa ove lokacije.',
311
+    'info_installer_images' => 'Mozete instalirati fotografije formata JPEG, GIF i PNG.',
312
+    'info_installer_images_dossier' => 'Instalirajte fotografije u folder @upload@ da bi ste ih mogli izabrati sa ov lokacije.',
313
+    'info_interface_complete' => 'Cjelokupni interfejs',
314
+    'info_interface_simple' => 'Pojednostavljeni interfejs',
315
+    'info_joindre_document_article' => 'Ovom clanku mozete pridruziti dokumente tipa',
316
+    'info_joindre_document_rubrique' => 'Ovoj rubrici mozete dodati dokumente tipa',
317
+    'info_joindre_documents_article' => 'Vasem clanku mozete dodati dokumente tipa:',
318
+    'info_l_article' => 'Чланак',
319
+    'info_la_breve' => 'obavjestenje',
320
+    'info_la_rubrique' => 'rubrika',
321
+    'info_langue_principale' => 'Glavni jezik stranice',
322
+    'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ piksela',
323
+    'info_les_auteurs_1' => 'od @les_auteurs@',
324
+    'info_logo_format_interdit' => 'Dozvoljeni su samo logotipi formata @formats@.',
325
+    'info_logo_max_poids' => 'Logotip mora biti manji od @maxi@ (ovaj dokument je @actuel@).',
326
+    'info_mail_fournisseur' => '[email protected]',
327
+    'info_message_2' => 'PORUKA',
328
+    'info_message_supprime' => 'PORUKA JE IZBRISANA',
329
+    'info_mise_en_ligne' => 'Datum objavljivanja:',
330
+    'info_modification_parametres_securite' => 'Izmjena parametara sigurnosti',
331
+    'info_mois_courant' => 'Tokom mjeseca:',
332
+    'info_mot_cle_ajoute' => 'Sljedeca kljucna rijec je dodana u',
333
+    'info_multi_herit' => 'Standardni jezik',
334
+    'info_multi_langues_soulignees' => '<u>Podvuceni jezici</u> raspolazu prevodom svih tekstova interfejsa. Ako izaberete jedan od tih jezika, brojni elementi javne stranice (datumi, formulari) ce biti automatski prevedeni. Za nepodvucene jezike, ti ce elementi biti prikazani u glavnom jeziku stranice.', # MODIF
335
+    'info_multilinguisme' => 'Multilingvizam',
336
+    'info_nom_non_utilisateurs_connectes' => 'Vase ime se ne pojavljuje na listi prisutnih korisnika.',
337
+    'info_nom_utilisateurs_connectes' => 'Vase ime se pojavljuje na listi prisutnih korisnika.',
338
+    'info_nombre_en_ligne' => 'Trenutno prisutni:',
339
+    'info_non_resultat' => 'Nema rezultata za "@cherche_mot@"',
340
+    'info_non_utilisation_messagerie' => 'Ne koristite privatni servis poruka ove stranice.',
341
+    'info_nouveau_message' => 'NEMATE NOVIH PORUKA',
342
+    'info_nouveaux_messages' => 'IMATE @total_messages@ NOVIH PORUKA',
343
+    'info_numero_abbreviation' => 'N°',
344
+    'info_obligatoire' => 'Ovaj podatak je obavezan',
345
+    'info_pense_bete' => 'BILJESKA',
346
+    'info_petit_ecran' => 'Mali prikaz',
347
+    'info_pixels' => 'piksela',
348
+    'info_plusieurs_mots_trouves' => 'Pronadjeno je vise kljucnih rijeci za "@cherche_mot@":',
349
+    'info_portfolio_automatique' => 'Automatski portfolio:',
350
+    'info_premier_resultat' => '[@debut_limit@ prvih rezultata od ukupno @total@]',
351
+    'info_premier_resultat_sur' => '[@debut_limit@ prvih rezultata od ukupno @total@]',
352
+    'info_propose_1' => '[@nom_site_spip@] Poslano: @titre@',
353
+    'info_propose_2' => 'Clanak je poslan
354 354
 ---------------',
355
-	'info_propose_3' => 'Clanak "@titre@" je predlozen za objavljivanje.',
356
-	'info_propose_4' => 'Mozete ga konsultovati i dati vase misljenje',
357
-	'info_propose_5' => 'u forumu koji mu je pridruzen. Dostupan je na adresi:',
358
-	'info_publie_01' => 'Clanak "@titre@" je ovjerio/la @connect_nom@.',
359
-	'info_publie_1' => '[@nom_site_spip@] OBJAVLJEN: @titre@',
360
-	'info_publie_2' => 'Clanak objavljen
355
+    'info_propose_3' => 'Clanak "@titre@" je predlozen za objavljivanje.',
356
+    'info_propose_4' => 'Mozete ga konsultovati i dati vase misljenje',
357
+    'info_propose_5' => 'u forumu koji mu je pridruzen. Dostupan je na adresi:',
358
+    'info_publie_01' => 'Clanak "@titre@" je ovjerio/la @connect_nom@.',
359
+    'info_publie_1' => '[@nom_site_spip@] OBJAVLJEN: @titre@',
360
+    'info_publie_2' => 'Clanak objavljen
361 361
 --------------',
362
-	'info_rechercher' => 'Pretraga',
363
-	'info_rechercher_02' => 'Pretraga:',
364
-	'info_remplacer_vignette' => 'Automatski zamijeni vinjetu sa pesonalizovanim logotipom:',
365
-	'info_sans_titre_2' => 'bez naslova',
366
-	'info_selectionner_fichier' => 'Mozete izabrati dokument iz foldera <i>upload</i>',
367
-	'info_selectionner_fichier_2' => 'Izaberite dokument:',
368
-	'info_supprimer_vignette' => 'izbrisi vinjetu',
369
-	'info_symbole_bleu' => 'Simbol <b>bleu</b> ukazuje na <b>pense-bête</b>: to jeste poruku za vasu licnu upotrebu.', # MODIF
370
-	'info_symbole_jaune' => 'Simbol <b>jaune</b> ukazuje na <b>najavu za sve urednike: Svi urednici ga mogu vidjeti i izmijeniti.', # MODIF
371
-	'info_symbole_vert' => 'Simbol <b>vert</b> ukazuje na <b>poruke razmijene sa drugim korisnicima</b> stranicama.', # MODIF
372
-	'info_telecharger_nouveau_logo' => 'Upload novi logotip:',
373
-	'info_telecharger_ordinateur' => 'Upload sa vaseg kompjutera:',
374
-	'info_tous_resultats_enregistres' => '[registrovani su svi rezultati]',
375
-	'info_tout_afficher' => 'Prikazi sve',
376
-	'info_travaux_texte' => 'Ova stranica jos nije podesena. Vratite se kasnije...',
377
-	'info_travaux_titre' => 'Stranica pod konstrukcijom',
378
-	'info_trop_resultat' => 'Previse rezultata za "@cherche_mot@"; predefinisite opcije pretrazivnja.',
379
-	'info_utilisation_messagerie_interne' => 'Koristite interni servis poruka ove stranice.',
380
-	'info_valider_lien' => 'ovjeri ovaj link',
381
-	'info_verifier_image' => ', provjerite da li je transfer fotografija uspio.',
382
-	'info_vignette_defaut' => 'Standardna vinjeta',
383
-	'info_vignette_personnalisee' => 'Personalizovana vinjeta',
384
-	'info_visite' => 'posjeta:',
385
-	'info_vos_rendez_vous' => 'Vasi sastanci koji slijede',
386
-	'infos_vos_pense_bete' => 'Vase biljeske', # MODIF
362
+    'info_rechercher' => 'Pretraga',
363
+    'info_rechercher_02' => 'Pretraga:',
364
+    'info_remplacer_vignette' => 'Automatski zamijeni vinjetu sa pesonalizovanim logotipom:',
365
+    'info_sans_titre_2' => 'bez naslova',
366
+    'info_selectionner_fichier' => 'Mozete izabrati dokument iz foldera <i>upload</i>',
367
+    'info_selectionner_fichier_2' => 'Izaberite dokument:',
368
+    'info_supprimer_vignette' => 'izbrisi vinjetu',
369
+    'info_symbole_bleu' => 'Simbol <b>bleu</b> ukazuje na <b>pense-bête</b>: to jeste poruku za vasu licnu upotrebu.', # MODIF
370
+    'info_symbole_jaune' => 'Simbol <b>jaune</b> ukazuje na <b>najavu za sve urednike: Svi urednici ga mogu vidjeti i izmijeniti.', # MODIF
371
+    'info_symbole_vert' => 'Simbol <b>vert</b> ukazuje na <b>poruke razmijene sa drugim korisnicima</b> stranicama.', # MODIF
372
+    'info_telecharger_nouveau_logo' => 'Upload novi logotip:',
373
+    'info_telecharger_ordinateur' => 'Upload sa vaseg kompjutera:',
374
+    'info_tous_resultats_enregistres' => '[registrovani su svi rezultati]',
375
+    'info_tout_afficher' => 'Prikazi sve',
376
+    'info_travaux_texte' => 'Ova stranica jos nije podesena. Vratite se kasnije...',
377
+    'info_travaux_titre' => 'Stranica pod konstrukcijom',
378
+    'info_trop_resultat' => 'Previse rezultata za "@cherche_mot@"; predefinisite opcije pretrazivnja.',
379
+    'info_utilisation_messagerie_interne' => 'Koristite interni servis poruka ove stranice.',
380
+    'info_valider_lien' => 'ovjeri ovaj link',
381
+    'info_verifier_image' => ', provjerite da li je transfer fotografija uspio.',
382
+    'info_vignette_defaut' => 'Standardna vinjeta',
383
+    'info_vignette_personnalisee' => 'Personalizovana vinjeta',
384
+    'info_visite' => 'posjeta:',
385
+    'info_vos_rendez_vous' => 'Vasi sastanci koji slijede',
386
+    'infos_vos_pense_bete' => 'Vase biljeske', # MODIF
387 387
 
388
-	// L
389
-	'lien_afficher_icones_seuls' => 'Prikazi samo ikone',
390
-	'lien_afficher_texte_icones' => 'Prikazi ikone i tekst',
391
-	'lien_afficher_texte_seul' => 'Prikazi samo tekst',
392
-	'lien_liberer' => 'izdanje',
393
-	'lien_liberer_tous' => 'izdaj ove clanke', # MODIF
394
-	'lien_nouvea_pense_bete' => 'NOVA BILJESKA',
395
-	'lien_nouveau_message' => 'NOVA PORUKA',
396
-	'lien_nouvelle_annonce' => 'NOVA NAJAVA',
397
-	'lien_petitions' => 'PETICIJA',
398
-	'lien_popularite' => 'popularno: @popularite@%',
399
-	'lien_racine_site' => 'KORIJEN STRANICE',
400
-	'lien_reessayer' => 'pokusaj ponovo',
401
-	'lien_repondre_message' => 'Odgovori na ovu poruku',
402
-	'lien_supprimer' => 'izbrisi',
403
-	'lien_tout_afficher' => 'Prikazi sve',
404
-	'lien_visite_site' => 'posjeti ovu stranicu',
405
-	'lien_visites' => '@visites@ посете',
406
-	'lien_voir_auteur' => 'Pgledaj ovog autora',
407
-	'login_acces_prive' => 'pristup privatnom prostoru',
408
-	'login_autre_identifiant' => 'konektuj se drugim identifikatorom',
409
-	'login_cookie_accepte' => 'Podesite vas navigator da prihvata cookie (bar za ovu stranicu).',
410
-	'login_cookie_oblige' => 'Da bi ste se sigurno prijavili na ovu stranicu, morate prihvatiti cookie.',
411
-	'login_deconnexion_ok' => 'Odjavljeni ste.',
412
-	'login_erreur_pass' => 'Greska sa lozinkom.',
413
-	'login_espace_prive' => 'privatni prostor',
414
-	'login_identifiant_inconnu' => 'Identifikator « @login@ » je nepoznat.',
415
-	'login_login' => 'Login:',
416
-	'login_login2' => 'Login (identifikator za prijavu na stranicu) :', # MODIF
417
-	'login_login_pass_incorrect' => '(Login ili lozinka nije ispravna.)',
418
-	'login_motpasseoublie' => 'zaboravili ste lozinku?',
419
-	'login_non_securise' => 'Oprez, ovaj formular nije siguran.
388
+    // L
389
+    'lien_afficher_icones_seuls' => 'Prikazi samo ikone',
390
+    'lien_afficher_texte_icones' => 'Prikazi ikone i tekst',
391
+    'lien_afficher_texte_seul' => 'Prikazi samo tekst',
392
+    'lien_liberer' => 'izdanje',
393
+    'lien_liberer_tous' => 'izdaj ove clanke', # MODIF
394
+    'lien_nouvea_pense_bete' => 'NOVA BILJESKA',
395
+    'lien_nouveau_message' => 'NOVA PORUKA',
396
+    'lien_nouvelle_annonce' => 'NOVA NAJAVA',
397
+    'lien_petitions' => 'PETICIJA',
398
+    'lien_popularite' => 'popularno: @popularite@%',
399
+    'lien_racine_site' => 'KORIJEN STRANICE',
400
+    'lien_reessayer' => 'pokusaj ponovo',
401
+    'lien_repondre_message' => 'Odgovori na ovu poruku',
402
+    'lien_supprimer' => 'izbrisi',
403
+    'lien_tout_afficher' => 'Prikazi sve',
404
+    'lien_visite_site' => 'posjeti ovu stranicu',
405
+    'lien_visites' => '@visites@ посете',
406
+    'lien_voir_auteur' => 'Pgledaj ovog autora',
407
+    'login_acces_prive' => 'pristup privatnom prostoru',
408
+    'login_autre_identifiant' => 'konektuj se drugim identifikatorom',
409
+    'login_cookie_accepte' => 'Podesite vas navigator da prihvata cookie (bar za ovu stranicu).',
410
+    'login_cookie_oblige' => 'Da bi ste se sigurno prijavili na ovu stranicu, morate prihvatiti cookie.',
411
+    'login_deconnexion_ok' => 'Odjavljeni ste.',
412
+    'login_erreur_pass' => 'Greska sa lozinkom.',
413
+    'login_espace_prive' => 'privatni prostor',
414
+    'login_identifiant_inconnu' => 'Identifikator « @login@ » je nepoznat.',
415
+    'login_login' => 'Login:',
416
+    'login_login2' => 'Login (identifikator za prijavu na stranicu) :', # MODIF
417
+    'login_login_pass_incorrect' => '(Login ili lozinka nije ispravna.)',
418
+    'login_motpasseoublie' => 'zaboravili ste lozinku?',
419
+    'login_non_securise' => 'Oprez, ovaj formular nije siguran.
420 420
 			Ako ne zelite da vasa lozinka bude dostupna na mrezi, aktivirajte 			Javascript u vasem navigatoru i',
421
-	'login_nouvelle_tentative' => 'Novi pokusaj',
422
-	'login_par_ici' => 'Registrovani ste... ovim putem...',
423
-	'login_pass2' => 'Lozinka:',
424
-	'login_preferez_refuser' => '<b>Ako zelite odbiti cookie</b>, na raspolaganju vam je drugi nacin prijavljivanja (manje siguran):',
425
-	'login_recharger' => 'ponovo ucitaj ovu stranicu',
426
-	'login_rester_identifie' => 'Ostanite identifikovani nekoliko dana', # MODIF
427
-	'login_retour_public' => 'Nazad na javnu stranicu',
428
-	'login_retour_site' => 'Nazad na javnu stranicu',
429
-	'login_retoursitepublic' => 'nazad na javnu stranicu',
430
-	'login_sinscrire' => 'registruj se',
431
-	'login_test_navigateur' => 'test navigatora/ponovna konekcija',
432
-	'login_verifiez_navigateur' => '(Svakako se uvjerite da vas navigator nije zapamtio vasu lozinku...)',
421
+    'login_nouvelle_tentative' => 'Novi pokusaj',
422
+    'login_par_ici' => 'Registrovani ste... ovim putem...',
423
+    'login_pass2' => 'Lozinka:',
424
+    'login_preferez_refuser' => '<b>Ako zelite odbiti cookie</b>, na raspolaganju vam je drugi nacin prijavljivanja (manje siguran):',
425
+    'login_recharger' => 'ponovo ucitaj ovu stranicu',
426
+    'login_rester_identifie' => 'Ostanite identifikovani nekoliko dana', # MODIF
427
+    'login_retour_public' => 'Nazad na javnu stranicu',
428
+    'login_retour_site' => 'Nazad na javnu stranicu',
429
+    'login_retoursitepublic' => 'nazad na javnu stranicu',
430
+    'login_sinscrire' => 'registruj se',
431
+    'login_test_navigateur' => 'test navigatora/ponovna konekcija',
432
+    'login_verifiez_navigateur' => '(Svakako se uvjerite da vas navigator nije zapamtio vasu lozinku...)',
433 433
 
434
-	// M
435
-	'module_fichiers_langues' => 'Jezicni dokumenti',
434
+    // M
435
+    'module_fichiers_langues' => 'Jezicni dokumenti',
436 436
 
437
-	// N
438
-	'navigateur_pas_redirige' => 'Ako vas navigator nije preusmjeren, kliknite ovdje da biste nastavili.',
437
+    // N
438
+    'navigateur_pas_redirige' => 'Ako vas navigator nije preusmjeren, kliknite ovdje da biste nastavili.',
439 439
 
440
-	// O
441
-	'onglet_affacer_base' => 'Izbrisi bazu',
442
-	'onglet_auteur' => 'Autor',
443
-	'onglet_contenu_site' => 'Sadrzaj stranice',
444
-	'onglet_evolution_visite_mod' => 'Nivo posjeta',
445
-	'onglet_fonctions_avances' => 'Napredne funkcije',
446
-	'onglet_informations_personnelles' => 'Licne informacije',
447
-	'onglet_interactivite' => 'Interaktivnost',
448
-	'onglet_messagerie' => 'Servis poruka',
449
-	'onglet_repartition_rubrique' => 'Distribucija po rubrikama',
450
-	'onglet_save_restaur_base' => 'Backup/obnova baze podataka',
451
-	'onglet_vider_cache' => 'Isprazni kes',
440
+    // O
441
+    'onglet_affacer_base' => 'Izbrisi bazu',
442
+    'onglet_auteur' => 'Autor',
443
+    'onglet_contenu_site' => 'Sadrzaj stranice',
444
+    'onglet_evolution_visite_mod' => 'Nivo posjeta',
445
+    'onglet_fonctions_avances' => 'Napredne funkcije',
446
+    'onglet_informations_personnelles' => 'Licne informacije',
447
+    'onglet_interactivite' => 'Interaktivnost',
448
+    'onglet_messagerie' => 'Servis poruka',
449
+    'onglet_repartition_rubrique' => 'Distribucija po rubrikama',
450
+    'onglet_save_restaur_base' => 'Backup/obnova baze podataka',
451
+    'onglet_vider_cache' => 'Isprazni kes',
452 452
 
453
-	// P
454
-	'pass_choix_pass' => 'Izaberite vasu novu lozinku:',
455
-	'pass_erreur' => 'Greska',
456
-	'pass_erreur_acces_refuse' => '<b>Greska:</b> vise nemate pristup ovoj stranici.',
457
-	'pass_erreur_code_inconnu' => '<b>Greska:</b> ovaj kod ne odgovara nijednom posjetiocu koji ima pristup ovoj stranici.',
458
-	'pass_erreur_non_enregistre' => '<b>Greska:</b> adresa <tt>@email_oubli@</tt> nije registgrovana na ovoj stranici.',
459
-	'pass_erreur_non_valide' => '<b>Greska:</b> ovaj e-mail <tt>@email_oubli@</tt> nije vazeci!',
460
-	'pass_erreur_probleme_technique' => '<b>Greska:</b> e-mail nije poslan, radi tehnickog problema.',
461
-	'pass_espace_prive_bla' => 'Privatni prostor ove stranice je otvoren za posjetioce nakon registrovanja. Nakon registracije, mozete konsultovati clanke u toku uredjivanja,
453
+    // P
454
+    'pass_choix_pass' => 'Izaberite vasu novu lozinku:',
455
+    'pass_erreur' => 'Greska',
456
+    'pass_erreur_acces_refuse' => '<b>Greska:</b> vise nemate pristup ovoj stranici.',
457
+    'pass_erreur_code_inconnu' => '<b>Greska:</b> ovaj kod ne odgovara nijednom posjetiocu koji ima pristup ovoj stranici.',
458
+    'pass_erreur_non_enregistre' => '<b>Greska:</b> adresa <tt>@email_oubli@</tt> nije registgrovana na ovoj stranici.',
459
+    'pass_erreur_non_valide' => '<b>Greska:</b> ovaj e-mail <tt>@email_oubli@</tt> nije vazeci!',
460
+    'pass_erreur_probleme_technique' => '<b>Greska:</b> e-mail nije poslan, radi tehnickog problema.',
461
+    'pass_espace_prive_bla' => 'Privatni prostor ove stranice je otvoren za posjetioce nakon registrovanja. Nakon registracije, mozete konsultovati clanke u toku uredjivanja,
462 462
 predlagati clanke i ucestvovati u svim forumima.',
463
-	'pass_forum_bla' => 'Trazili ste ucesce u forumu koji je rezervisan za registrovane posjetioce.',
464
-	'pass_indiquez_cidessous' => 'Ispod naznacite e-mail adresu sa kojom ste trenutno registrovani. Primicete e-mail sa putem koji trebate slijediti da biste ponovo dobili pristup.',
465
-	'pass_mail_passcookie' => '(ovo je automatska poruka)
463
+    'pass_forum_bla' => 'Trazili ste ucesce u forumu koji je rezervisan za registrovane posjetioce.',
464
+    'pass_indiquez_cidessous' => 'Ispod naznacite e-mail adresu sa kojom ste trenutno registrovani. Primicete e-mail sa putem koji trebate slijediti da biste ponovo dobili pristup.',
465
+    'pass_mail_passcookie' => '(ovo je automatska poruka)
466 466
 Da biste ponovo dobili pristup
467 467
 @nom_site_spip@ (@adresse_site@)
468 468
 
@@ -473,94 +473,94 @@  discard block
 block discarded – undo
473 473
 Tamo mozete unijeti novu lozinku i ponovo se prijaviti na stranicu.
474 474
 
475 475
 ',
476
-	'pass_mot_oublie' => 'Zaboravili ste lozinku',
477
-	'pass_nouveau_enregistre' => 'Vasa nova lozinka je registrovana.',
478
-	'pass_nouveau_pass' => 'Nova lozinka',
479
-	'pass_ok' => 'OK',
480
-	'pass_oubli_mot' => 'Zaboravljena lozinka',
481
-	'pass_quitter_fenetre' => 'Napusti ovaj prozor',
482
-	'pass_rappel_login' => 'Podsjetnik: vas identifikator (login) je « @login@ ».',
483
-	'pass_recevoir_mail' => 'Primicete e-mai sa uputstvom za pronalazenje vaseg pristupa.', # MODIF
484
-	'pass_retour_public' => 'Nazad na javnu stranicu',
485
-	'pass_rien_a_faire_ici' => 'Ovdje nema nista za raditi.',
486
-	'pass_vousinscrire' => 'Registrujte se na srtranicu se na stranicu',
487
-	'precedent' => 'Nazad',
488
-	'previsualisation' => 'Pegled',
489
-	'previsualiser' => 'Pokazi pregled',
476
+    'pass_mot_oublie' => 'Zaboravili ste lozinku',
477
+    'pass_nouveau_enregistre' => 'Vasa nova lozinka je registrovana.',
478
+    'pass_nouveau_pass' => 'Nova lozinka',
479
+    'pass_ok' => 'OK',
480
+    'pass_oubli_mot' => 'Zaboravljena lozinka',
481
+    'pass_quitter_fenetre' => 'Napusti ovaj prozor',
482
+    'pass_rappel_login' => 'Podsjetnik: vas identifikator (login) je « @login@ ».',
483
+    'pass_recevoir_mail' => 'Primicete e-mai sa uputstvom za pronalazenje vaseg pristupa.', # MODIF
484
+    'pass_retour_public' => 'Nazad na javnu stranicu',
485
+    'pass_rien_a_faire_ici' => 'Ovdje nema nista za raditi.',
486
+    'pass_vousinscrire' => 'Registrujte se na srtranicu se na stranicu',
487
+    'precedent' => 'Nazad',
488
+    'previsualisation' => 'Pegled',
489
+    'previsualiser' => 'Pokazi pregled',
490 490
 
491
-	// S
492
-	'squelette' => 'predlozak',
493
-	'squelette_inclus_ligne' => 'ukjucen predlozak, linija',
494
-	'squelette_ligne' => 'predlozak linija',
495
-	'stats_visites_et_popularite' => '@visites@ posjete; popularno: @popularite@',
496
-	'suivant' => 'Naprijed',
491
+    // S
492
+    'squelette' => 'predlozak',
493
+    'squelette_inclus_ligne' => 'ukjucen predlozak, linija',
494
+    'squelette_ligne' => 'predlozak linija',
495
+    'stats_visites_et_popularite' => '@visites@ posjete; popularno: @popularite@',
496
+    'suivant' => 'Naprijed',
497 497
 
498
-	// T
499
-	'taille_ko' => '@taille@ kb',
500
-	'taille_mo' => '@taille@ Mb',
501
-	'taille_octets' => '@taille@ bit',
502
-	'texte_actualite_site_1' => 'Kada se naviknete na interfejs, kliknite na «',
503
-	'texte_actualite_site_2' => 'cjelokupni interfejs',
504
-	'texte_actualite_site_3' => '» za otveranje vise mogucnosti.',
505
-	'texte_creation_automatique_vignette' => 'Aktivirano je automatsko kreiranje vinjeta na ovoj stranici. Ako putem ovog formulara instalirate fotografije formata @gd_formats@, one ce biti popracene vinjetom maksimalne velicine @taille_preview@piksela.',
506
-	'texte_documents_associes' => 'Sljedeci dokumenti su povezani sa clankom,ali nisu direktno ukljuceni. Na osnovu izgleda javne stranice, mogu biti prikazani kao pridruzeni dokumenti',
507
-	'texte_erreur_mise_niveau_base' => 'Greska u bazi podataka tokom nadogradnje.
498
+    // T
499
+    'taille_ko' => '@taille@ kb',
500
+    'taille_mo' => '@taille@ Mb',
501
+    'taille_octets' => '@taille@ bit',
502
+    'texte_actualite_site_1' => 'Kada se naviknete na interfejs, kliknite na «',
503
+    'texte_actualite_site_2' => 'cjelokupni interfejs',
504
+    'texte_actualite_site_3' => '» za otveranje vise mogucnosti.',
505
+    'texte_creation_automatique_vignette' => 'Aktivirano je automatsko kreiranje vinjeta na ovoj stranici. Ako putem ovog formulara instalirate fotografije formata @gd_formats@, one ce biti popracene vinjetom maksimalne velicine @taille_preview@piksela.',
506
+    'texte_documents_associes' => 'Sljedeci dokumenti su povezani sa clankom,ali nisu direktno ukljuceni. Na osnovu izgleda javne stranice, mogu biti prikazani kao pridruzeni dokumenti',
507
+    'texte_erreur_mise_niveau_base' => 'Greska u bazi podataka tokom nadogradnje.
508 508
 Fotografija <b>@fichier@</b> nije predjena (clanak @id_article@).
509 509
 Obratite paznu na ovu referencu, ponovo pokusajte nadogradnju i na kraju provjerite da li se fotografije uvijek pojavljuju u clancima.', # MODIF
510
-	'texte_inc_auth_1' => 'Identifikovani ste pod loginom <b>@auth_login@</b>, ali on vise ne postoji u bazi. Pokusajte se ponovo', # MODIF
511
-	'texte_inc_auth_2' => 'prijaviti',
512
-	'texte_inc_auth_3' => ', nakon sto ste iskljucili, a zatim ponovo ukljucili vas navigator.',
513
-	'texte_inc_config' => 'Dole unesene modifikacije znatno uticu na funkcionisanje vase stranice. Preporucuje se da ne intervenisete ako niste upoznati sa SPIP sistemom. <br /><br /><b>Generalno se preporucuje intervencija webmastera ove stranice.</b>', # MODIF
514
-	'texte_inc_meta_1' => 'Sistem je naisao na gresku pri pokusaju da pise dokument <code>ecrire/data/meta_cache.php3</code>. Kao administrator stranice,',
515
-	'texte_inc_meta_2' => 'mozete provjeriti dozvolu pisanja',
516
-	'texte_inc_meta_3' => 'u direktorij <code>ecrire/data/</code>.',
517
-	'texte_statut_en_cours_redaction' => 'U toku uredjivanja',
518
-	'texte_statut_poubelle' => 'u korpi za smece',
519
-	'texte_statut_propose_evaluation' => 'predlozeno za izglasavanje',
520
-	'texte_statut_publie' => 'objavljeno',
521
-	'texte_statut_refuse' => 'odbijeno',
522
-	'titre_ajouter_mot_cle' => 'DODATI KLJUCNU RIJEC:',
523
-	'titre_cadre_raccourcis' => 'PRECICE:',
524
-	'titre_changer_couleur_interface' => 'Promijeni boju interfejsa',
525
-	'titre_image_admin_article' => 'Mozete administrirati ovaj clanak',
526
-	'titre_image_administrateur' => 'Administrator',
527
-	'titre_image_aide' => 'Pomoc sa ovim elementom',
528
-	'titre_image_auteur_supprime' => 'Autor izbrisan',
529
-	'titre_image_redacteur' => 'Urednik bez pristupa',
530
-	'titre_image_redacteur_02' => 'Urednik',
531
-	'titre_image_visiteur' => 'Posjetioc',
532
-	'titre_joindre_document' => 'PRIDRUZI DOKUMENT',
533
-	'titre_mots_cles' => 'KLJUCNE RIJECI',
534
-	'titre_probleme_technique' => 'Upozorenje: tehnicki problem (SQL server) sprijecava pristup ovom dijelu stranice. Hvala na razumijevanju.', # MODIF
535
-	'titre_publier_document' => 'OBJAVI DOKUMENT U OVOJ RUBRICI',
536
-	'titre_statistiques' => 'Statistike stranice',
537
-	'titre_titre_document' => 'Naslov dokumenta:',
538
-	'trad_reference' => '(preporuceni clanak)', # MODIF
510
+    'texte_inc_auth_1' => 'Identifikovani ste pod loginom <b>@auth_login@</b>, ali on vise ne postoji u bazi. Pokusajte se ponovo', # MODIF
511
+    'texte_inc_auth_2' => 'prijaviti',
512
+    'texte_inc_auth_3' => ', nakon sto ste iskljucili, a zatim ponovo ukljucili vas navigator.',
513
+    'texte_inc_config' => 'Dole unesene modifikacije znatno uticu na funkcionisanje vase stranice. Preporucuje se da ne intervenisete ako niste upoznati sa SPIP sistemom. <br /><br /><b>Generalno se preporucuje intervencija webmastera ove stranice.</b>', # MODIF
514
+    'texte_inc_meta_1' => 'Sistem je naisao na gresku pri pokusaju da pise dokument <code>ecrire/data/meta_cache.php3</code>. Kao administrator stranice,',
515
+    'texte_inc_meta_2' => 'mozete provjeriti dozvolu pisanja',
516
+    'texte_inc_meta_3' => 'u direktorij <code>ecrire/data/</code>.',
517
+    'texte_statut_en_cours_redaction' => 'U toku uredjivanja',
518
+    'texte_statut_poubelle' => 'u korpi za smece',
519
+    'texte_statut_propose_evaluation' => 'predlozeno za izglasavanje',
520
+    'texte_statut_publie' => 'objavljeno',
521
+    'texte_statut_refuse' => 'odbijeno',
522
+    'titre_ajouter_mot_cle' => 'DODATI KLJUCNU RIJEC:',
523
+    'titre_cadre_raccourcis' => 'PRECICE:',
524
+    'titre_changer_couleur_interface' => 'Promijeni boju interfejsa',
525
+    'titre_image_admin_article' => 'Mozete administrirati ovaj clanak',
526
+    'titre_image_administrateur' => 'Administrator',
527
+    'titre_image_aide' => 'Pomoc sa ovim elementom',
528
+    'titre_image_auteur_supprime' => 'Autor izbrisan',
529
+    'titre_image_redacteur' => 'Urednik bez pristupa',
530
+    'titre_image_redacteur_02' => 'Urednik',
531
+    'titre_image_visiteur' => 'Posjetioc',
532
+    'titre_joindre_document' => 'PRIDRUZI DOKUMENT',
533
+    'titre_mots_cles' => 'KLJUCNE RIJECI',
534
+    'titre_probleme_technique' => 'Upozorenje: tehnicki problem (SQL server) sprijecava pristup ovom dijelu stranice. Hvala na razumijevanju.', # MODIF
535
+    'titre_publier_document' => 'OBJAVI DOKUMENT U OVOJ RUBRICI',
536
+    'titre_statistiques' => 'Statistike stranice',
537
+    'titre_titre_document' => 'Naslov dokumenta:',
538
+    'trad_reference' => '(preporuceni clanak)', # MODIF
539 539
 
540
-	// Z
541
-	'zbug_balise_b_aval' => ' : oznaka B kasni u petlji',
542
-	'zbug_balise_inexistante' => 'erreur @from@: la balise #@balise@ n’existe pas', # MODIF
543
-	'zbug_boucle' => 'petlja',
544
-	'zbug_boucle_recursive_undef' => 'nedefinisana rakurzivna petlja', # MODIF
545
-	'zbug_champ_hors_boucle' => 'Polje @champ@ izvan petlje',
546
-	'zbug_champ_hors_motif' => 'Polje @champ@ van oznacene petlje @motif@', # MODIF
547
-	'zbug_code' => 'kod',
548
-	'zbug_critere_inconnu' => 'nepoznat kriterij @critere@', # MODIF
549
-	'zbug_distant_interdit' => 'zabranjeni eksterni podaci', # MODIF
550
-	'zbug_doublon_table_sans_cle_primaire' => 'doublons sur une table sans clef primaire atomique', # MODIF
551
-	'zbug_doublon_table_sans_index' => 'doublons sur une table sans index', # MODIF
552
-	'zbug_erreur_boucle_double' => 'BOUCLE@id@: dupla definicija', # MODIF
553
-	'zbug_erreur_boucle_fermant' => 'BOUCLE@id@: zatvarajuca oznaka nedostaje', # MODIF
554
-	'zbug_erreur_boucle_syntaxe' => 'Pogresna sintaksa petlje', # MODIF
555
-	'zbug_erreur_execution_page' => 'greska pri izvodjenju stranice', # MODIF
556
-	'zbug_erreur_filtre' => 'Greska: nedefinisan filter <b>« @filtre@ »</b>', # MODIF
557
-	'zbug_erreur_meme_parent' => '{meme_parent} odnosi se samo na petlje (FORUMI) ili (RUBRIKE)', # MODIF
558
-	'zbug_erreur_squelette' => 'Greska sa predloskom',
559
-	'zbug_info_erreur_squelette' => 'Greska na stranici',
560
-	'zbug_inversion_ordre_inexistant' => 'inverzija nepostojecim rasporedom', # MODIF
561
-	'zbug_pagination_sans_critere' => '#PAGINATION sans critère {pagination} ou employé dans une boucle recursive', # MODIF
562
-	'zbug_parametres_inclus_incorrects' => 'Pogresni parametri ukljucivanja', # MODIF
563
-	'zbug_resultat' => 'rezultat',
564
-	'zbug_serveur_indefini' => 'nedefinisan SQL server', # MODIF
565
-	'zbug_table_inconnue' => 'Nedefinisana SQL  tabela « @table@ »'
540
+    // Z
541
+    'zbug_balise_b_aval' => ' : oznaka B kasni u petlji',
542
+    'zbug_balise_inexistante' => 'erreur @from@: la balise #@balise@ n’existe pas', # MODIF
543
+    'zbug_boucle' => 'petlja',
544
+    'zbug_boucle_recursive_undef' => 'nedefinisana rakurzivna petlja', # MODIF
545
+    'zbug_champ_hors_boucle' => 'Polje @champ@ izvan petlje',
546
+    'zbug_champ_hors_motif' => 'Polje @champ@ van oznacene petlje @motif@', # MODIF
547
+    'zbug_code' => 'kod',
548
+    'zbug_critere_inconnu' => 'nepoznat kriterij @critere@', # MODIF
549
+    'zbug_distant_interdit' => 'zabranjeni eksterni podaci', # MODIF
550
+    'zbug_doublon_table_sans_cle_primaire' => 'doublons sur une table sans clef primaire atomique', # MODIF
551
+    'zbug_doublon_table_sans_index' => 'doublons sur une table sans index', # MODIF
552
+    'zbug_erreur_boucle_double' => 'BOUCLE@id@: dupla definicija', # MODIF
553
+    'zbug_erreur_boucle_fermant' => 'BOUCLE@id@: zatvarajuca oznaka nedostaje', # MODIF
554
+    'zbug_erreur_boucle_syntaxe' => 'Pogresna sintaksa petlje', # MODIF
555
+    'zbug_erreur_execution_page' => 'greska pri izvodjenju stranice', # MODIF
556
+    'zbug_erreur_filtre' => 'Greska: nedefinisan filter <b>« @filtre@ »</b>', # MODIF
557
+    'zbug_erreur_meme_parent' => '{meme_parent} odnosi se samo na petlje (FORUMI) ili (RUBRIKE)', # MODIF
558
+    'zbug_erreur_squelette' => 'Greska sa predloskom',
559
+    'zbug_info_erreur_squelette' => 'Greska na stranici',
560
+    'zbug_inversion_ordre_inexistant' => 'inverzija nepostojecim rasporedom', # MODIF
561
+    'zbug_pagination_sans_critere' => '#PAGINATION sans critère {pagination} ou employé dans une boucle recursive', # MODIF
562
+    'zbug_parametres_inclus_incorrects' => 'Pogresni parametri ukljucivanja', # MODIF
563
+    'zbug_resultat' => 'rezultat',
564
+    'zbug_serveur_indefini' => 'nedefinisan SQL server', # MODIF
565
+    'zbug_table_inconnue' => 'Nedefinisana SQL  tabela « @table@ »'
566 566
 );
Please login to merge, or discard this patch.
ecrire/lang/spip_eo.php 1 patch
Indentation   +656 added lines, -656 removed lines patch added patch discarded remove patch
@@ -4,584 +4,584 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'access_interface_graphique' => 'Reen al kompleta grafika interfaco',
14
-	'access_mode_texte' => 'Afiŝi la simpligitan tekstan interfacon',
15
-	'admin_debug' => 'erarserĉilo',
16
-	'admin_modifier_article' => 'Modifu tiun ĉi artikolon',
17
-	'admin_modifier_auteur' => 'Modifu tiun ĉi aŭtoron',
18
-	'admin_modifier_breve' => 'Modifu tiun ĉi fulm-informon',
19
-	'admin_modifier_mot' => 'Modifu tiun ĉi ŝlosilvorton',
20
-	'admin_modifier_rubrique' => 'Modifu tiun ĉi rubrikon',
21
-	'admin_recalculer' => 'Rekalkulu tiun ĉi paĝon',
22
-	'afficher_calendrier' => 'Montri la kalendaro',
23
-	'afficher_trad' => 'afiŝi la tradukojn',
24
-	'alerte_maj_impossible' => '<b>Alarmo !</b> La ĝisdatigo de la SQL-datenbazo al versio @version@ ne eblas pro datenbazo-modif-rajtaj kialoj. Bonvolu kontakti vian retgastiganton.',
25
-	'alerte_modif_info_concourante' => 'ATENTU : Tiu ĉi informo estis modifita de alia homo. La nuna stato estas :',
26
-	'analyse_xml' => 'XML analizo',
27
-	'annuler' => 'Nuligi',
28
-	'antispam_champ_vide' => 'Bonvolu forlasi tiun tajpujon malplena :',
29
-	'articles_recents' => 'La plej freŝaj artikoloj',
30
-	'avis_1_erreur_saisie' => 'Estas 1 eraro en via tajpado, bonvolu kontroli ĝin.',
31
-	'avis_archive_incorrect' => 'Tiu arkivo ne estas SPIP-dosiero',
32
-	'avis_archive_invalide' => 'Tiu arkiva dosiero ne validas',
33
-	'avis_attention' => 'ATENTU !',
34
-	'avis_champ_incorrect_type_objet' => 'Erara tajpuja nomo @name@ por la objekto de tipo @type@',
35
-	'avis_colonne_inexistante' => 'La kolumno @col@ ne ekzistas',
36
-	'avis_erreur' => 'Eraro : vidu ĉi-sube',
37
-	'avis_erreur_connexion' => 'Konekt-eraro',
38
-	'avis_erreur_cookie' => 'kuketo-problemo',
39
-	'avis_erreur_fonction_contexte' => 'Program-eraro. Tiu funkcio ne alvokeblas en tiu ĉi kunteksto.',
40
-	'avis_erreur_mysql' => 'SQL-eraro',
41
-	'avis_erreur_sauvegarde' => 'Konservo-eraro (@type@ @id_objet@) ! ',
42
-	'avis_erreur_visiteur' => 'Alir-problemo al la privata spaco',
43
-	'avis_nb_erreurs_saisie' => 'Estas @nb@ eraroj en via tajpado, bonvolu kontroli ilin.',
12
+    // A
13
+    'access_interface_graphique' => 'Reen al kompleta grafika interfaco',
14
+    'access_mode_texte' => 'Afiŝi la simpligitan tekstan interfacon',
15
+    'admin_debug' => 'erarserĉilo',
16
+    'admin_modifier_article' => 'Modifu tiun ĉi artikolon',
17
+    'admin_modifier_auteur' => 'Modifu tiun ĉi aŭtoron',
18
+    'admin_modifier_breve' => 'Modifu tiun ĉi fulm-informon',
19
+    'admin_modifier_mot' => 'Modifu tiun ĉi ŝlosilvorton',
20
+    'admin_modifier_rubrique' => 'Modifu tiun ĉi rubrikon',
21
+    'admin_recalculer' => 'Rekalkulu tiun ĉi paĝon',
22
+    'afficher_calendrier' => 'Montri la kalendaro',
23
+    'afficher_trad' => 'afiŝi la tradukojn',
24
+    'alerte_maj_impossible' => '<b>Alarmo !</b> La ĝisdatigo de la SQL-datenbazo al versio @version@ ne eblas pro datenbazo-modif-rajtaj kialoj. Bonvolu kontakti vian retgastiganton.',
25
+    'alerte_modif_info_concourante' => 'ATENTU : Tiu ĉi informo estis modifita de alia homo. La nuna stato estas :',
26
+    'analyse_xml' => 'XML analizo',
27
+    'annuler' => 'Nuligi',
28
+    'antispam_champ_vide' => 'Bonvolu forlasi tiun tajpujon malplena :',
29
+    'articles_recents' => 'La plej freŝaj artikoloj',
30
+    'avis_1_erreur_saisie' => 'Estas 1 eraro en via tajpado, bonvolu kontroli ĝin.',
31
+    'avis_archive_incorrect' => 'Tiu arkivo ne estas SPIP-dosiero',
32
+    'avis_archive_invalide' => 'Tiu arkiva dosiero ne validas',
33
+    'avis_attention' => 'ATENTU !',
34
+    'avis_champ_incorrect_type_objet' => 'Erara tajpuja nomo @name@ por la objekto de tipo @type@',
35
+    'avis_colonne_inexistante' => 'La kolumno @col@ ne ekzistas',
36
+    'avis_erreur' => 'Eraro : vidu ĉi-sube',
37
+    'avis_erreur_connexion' => 'Konekt-eraro',
38
+    'avis_erreur_cookie' => 'kuketo-problemo',
39
+    'avis_erreur_fonction_contexte' => 'Program-eraro. Tiu funkcio ne alvokeblas en tiu ĉi kunteksto.',
40
+    'avis_erreur_mysql' => 'SQL-eraro',
41
+    'avis_erreur_sauvegarde' => 'Konservo-eraro (@type@ @id_objet@) ! ',
42
+    'avis_erreur_visiteur' => 'Alir-problemo al la privata spaco',
43
+    'avis_nb_erreurs_saisie' => 'Estas @nb@ eraroj en via tajpado, bonvolu kontroli ilin.',
44 44
 
45
-	// B
46
-	'barre_a_accent_grave' => 'Entajpi malakut-akcentan ĉefliteran A',
47
-	'barre_aide' => 'Uzu la tipografiajn rapidligilojn por pliriĉigi vian enpaĝigon',
48
-	'barre_e_accent_aigu' => 'Entajpi malakut-akcentan ĉefliteran E',
49
-	'barre_eo' => 'Entajpi E en ĉefliteran O',
50
-	'barre_eo_maj' => 'Entajpi E en la ĉeflitero O',
51
-	'barre_euro' => 'Entajpi la simbolon €',
52
-	'barre_gras' => '{{Grasigi}}',
53
-	'barre_guillemets' => 'Flanki per « citiloj »',
54
-	'barre_guillemets_simples' => 'Flanki per “simplaj citiloj”',
55
-	'barre_intertitre' => '{{{Intertitoligi}}}',
56
-	'barre_italic' => '{Kursivigi}',
57
-	'barre_lien' => 'Transformi al [hiperligo->http://...]',
58
-	'barre_lien_input' => 'Bonvolu indiki la retadreson de via ligilo (vi povas indiki ret-adreson tian, kia http://www.monsite.com aŭ simple indiki la numeron de artikolo de tiu retejo.',
59
-	'barre_note' => 'Transformi al [[sub-paĝan noton]]',
60
-	'barre_paragraphe' => 'Krei paragrafon',
61
-	'barre_quote' => '<quote>Citi mesaĝon</quote>',
62
-	'bouton_changer' => 'Ŝanĝi',
63
-	'bouton_chercher' => 'Serĉi',
64
-	'bouton_choisir' => 'Elekti',
65
-	'bouton_deplacer' => 'Movi',
66
-	'bouton_download' => 'Elŝuti',
67
-	'bouton_enregistrer' => 'Registri',
68
-	'bouton_radio_desactiver_messagerie_interne' => 'Malŝalti la internan mesaĝilon',
69
-	'bouton_radio_envoi_annonces' => 'Sendi la ĉefartikolajn anoncojn',
70
-	'bouton_radio_non_envoi_annonces' => 'Ne sendi anoncojn',
71
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Ne sendi liston de novaĵoj',
72
-	'bouton_recharger_page' => 'freŝigi tiun paĝon',
73
-	'bouton_telecharger' => 'Alŝuti',
74
-	'bouton_upload' => 'Alŝuti',
75
-	'bouton_valider' => 'Validigi',
45
+    // B
46
+    'barre_a_accent_grave' => 'Entajpi malakut-akcentan ĉefliteran A',
47
+    'barre_aide' => 'Uzu la tipografiajn rapidligilojn por pliriĉigi vian enpaĝigon',
48
+    'barre_e_accent_aigu' => 'Entajpi malakut-akcentan ĉefliteran E',
49
+    'barre_eo' => 'Entajpi E en ĉefliteran O',
50
+    'barre_eo_maj' => 'Entajpi E en la ĉeflitero O',
51
+    'barre_euro' => 'Entajpi la simbolon €',
52
+    'barre_gras' => '{{Grasigi}}',
53
+    'barre_guillemets' => 'Flanki per « citiloj »',
54
+    'barre_guillemets_simples' => 'Flanki per “simplaj citiloj”',
55
+    'barre_intertitre' => '{{{Intertitoligi}}}',
56
+    'barre_italic' => '{Kursivigi}',
57
+    'barre_lien' => 'Transformi al [hiperligo->http://...]',
58
+    'barre_lien_input' => 'Bonvolu indiki la retadreson de via ligilo (vi povas indiki ret-adreson tian, kia http://www.monsite.com aŭ simple indiki la numeron de artikolo de tiu retejo.',
59
+    'barre_note' => 'Transformi al [[sub-paĝan noton]]',
60
+    'barre_paragraphe' => 'Krei paragrafon',
61
+    'barre_quote' => '<quote>Citi mesaĝon</quote>',
62
+    'bouton_changer' => 'Ŝanĝi',
63
+    'bouton_chercher' => 'Serĉi',
64
+    'bouton_choisir' => 'Elekti',
65
+    'bouton_deplacer' => 'Movi',
66
+    'bouton_download' => 'Elŝuti',
67
+    'bouton_enregistrer' => 'Registri',
68
+    'bouton_radio_desactiver_messagerie_interne' => 'Malŝalti la internan mesaĝilon',
69
+    'bouton_radio_envoi_annonces' => 'Sendi la ĉefartikolajn anoncojn',
70
+    'bouton_radio_non_envoi_annonces' => 'Ne sendi anoncojn',
71
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Ne sendi liston de novaĵoj',
72
+    'bouton_recharger_page' => 'freŝigi tiun paĝon',
73
+    'bouton_telecharger' => 'Alŝuti',
74
+    'bouton_upload' => 'Alŝuti',
75
+    'bouton_valider' => 'Validigi',
76 76
 
77
-	// C
78
-	'cal_apresmidi' => 'posttagmezo',
79
-	'cal_jour_entier' => 'tuta tago',
80
-	'cal_matin' => 'mateno',
81
-	'cal_par_jour' => 'tag-kalendaro',
82
-	'cal_par_mois' => 'monat-kalendaro',
83
-	'cal_par_semaine' => 'semajn-kalendaro',
84
-	'choix_couleur_interface' => 'koloro',
85
-	'choix_interface' => 'elekto de interfaco',
86
-	'colonne' => 'Kolumno',
87
-	'confirm_changer_statut' => 'Atentu, vi petis por ŝanĝi la statuton de tiu elemento. Ĉu vi deziras daŭrigi ?',
88
-	'correcte' => 'korekta',
77
+    // C
78
+    'cal_apresmidi' => 'posttagmezo',
79
+    'cal_jour_entier' => 'tuta tago',
80
+    'cal_matin' => 'mateno',
81
+    'cal_par_jour' => 'tag-kalendaro',
82
+    'cal_par_mois' => 'monat-kalendaro',
83
+    'cal_par_semaine' => 'semajn-kalendaro',
84
+    'choix_couleur_interface' => 'koloro',
85
+    'choix_interface' => 'elekto de interfaco',
86
+    'colonne' => 'Kolumno',
87
+    'confirm_changer_statut' => 'Atentu, vi petis por ŝanĝi la statuton de tiu elemento. Ĉu vi deziras daŭrigi ?',
88
+    'correcte' => 'korekta',
89 89
 
90
-	// D
91
-	'date_aujourdhui' => 'hodiaŭ',
92
-	'date_avant_jc' => 'a.K.',
93
-	'date_dans' => 'post @delai@',
94
-	'date_de_mois_1' => '@j@ @nommois@',
95
-	'date_de_mois_10' => '@j@ @nommois@',
96
-	'date_de_mois_11' => '@j@ @nommois@',
97
-	'date_de_mois_12' => '@j@ @nommois@',
98
-	'date_de_mois_2' => '@j@ @nommois@',
99
-	'date_de_mois_3' => '@j@ @nommois@',
100
-	'date_de_mois_4' => '@j@ @nommois@',
101
-	'date_de_mois_5' => '@j@ @nommois@',
102
-	'date_de_mois_6' => '@j@ @nommois@',
103
-	'date_de_mois_7' => '@j@ @nommois@',
104
-	'date_de_mois_8' => '@j@ @nommois@',
105
-	'date_de_mois_9' => '@j@ @nommois@',
106
-	'date_demain' => 'morgaŭ',
107
-	'date_fmt_heures_minutes' => '@h@h@m@min',
108
-	'date_fmt_heures_minutes_court' => '@h@h@m@',
109
-	'date_fmt_jour' => '@nomjour@ la @jour@a',
110
-	'date_fmt_jour_heure' => '@jour@ je la @heure@',
111
-	'date_fmt_jour_heure_debut_fin' => 'la @jour@ de @heure_debut@ ĝis @heure_fin@',
112
-	'date_fmt_jour_heure_debut_fin_abbr' => 'la @dtstart@@jour@a de @heure_debut@@dtabbr@ ĝis @dtend@@heure_fin@@dtend@',
113
-	'date_fmt_jour_mois' => '@jour@a @nommois@',
114
-	'date_fmt_jour_mois_annee' => '@jour@a @nommois@ @annee@',
115
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
116
-	'date_fmt_nomjour' => '@nomjour@ @date@',
117
-	'date_fmt_nomjour_date' => 'la @nomjour@ @date@',
118
-	'date_fmt_periode' => 'De @date_debut@ ĝis @date_fin@',
119
-	'date_fmt_periode_abbr' => 'De @dtart@@date_debut@@dtabbr@ ĝis @dtend@@date_fin@@dtabbr@',
120
-	'date_fmt_periode_from' => 'De',
121
-	'date_fmt_periode_to' => 'ĝis',
122
-	'date_fmt_saison_annee' => '@saison@ @annee@',
123
-	'date_heures' => 'horoj',
124
-	'date_hier' => 'hieraŭ',
125
-	'date_il_y_a' => 'antaŭ @delai@',
126
-	'date_jnum1' => '1',
127
-	'date_jnum10' => '10',
128
-	'date_jnum11' => '11',
129
-	'date_jnum12' => '12',
130
-	'date_jnum13' => '13',
131
-	'date_jnum14' => '14',
132
-	'date_jnum15' => '15',
133
-	'date_jnum16' => '16',
134
-	'date_jnum17' => '17',
135
-	'date_jnum18' => '18',
136
-	'date_jnum19' => '19',
137
-	'date_jnum2' => '2',
138
-	'date_jnum20' => '20',
139
-	'date_jnum21' => '21',
140
-	'date_jnum22' => '22',
141
-	'date_jnum23' => '23',
142
-	'date_jnum24' => '24',
143
-	'date_jnum25' => '25',
144
-	'date_jnum26' => '26',
145
-	'date_jnum27' => '27',
146
-	'date_jnum28' => '28',
147
-	'date_jnum29' => '29',
148
-	'date_jnum3' => '3',
149
-	'date_jnum30' => '30',
150
-	'date_jnum31' => '31',
151
-	'date_jnum4' => '4',
152
-	'date_jnum5' => '5',
153
-	'date_jnum6' => '6',
154
-	'date_jnum7' => '7',
155
-	'date_jnum8' => '8',
156
-	'date_jnum9' => '9',
157
-	'date_jour_1' => 'dimanĉo',
158
-	'date_jour_1_abbr' => 'dim.',
159
-	'date_jour_1_initiale' => 'd.',
160
-	'date_jour_2' => 'lundo',
161
-	'date_jour_2_abbr' => 'lun.',
162
-	'date_jour_2_initiale' => 'l.',
163
-	'date_jour_3' => 'mardo',
164
-	'date_jour_3_abbr' => 'mar.',
165
-	'date_jour_3_initiale' => 'm.',
166
-	'date_jour_4' => 'merkredo',
167
-	'date_jour_4_abbr' => 'mer.',
168
-	'date_jour_4_initiale' => 'm.',
169
-	'date_jour_5' => 'ĵaŭdo',
170
-	'date_jour_5_abbr' => 'jaŭ.',
171
-	'date_jour_5_initiale' => 'j.',
172
-	'date_jour_6' => 'vendredo',
173
-	'date_jour_6_abbr' => 'ven.',
174
-	'date_jour_6_initiale' => 'v.',
175
-	'date_jour_7' => 'sabato',
176
-	'date_jour_7_abbr' => 'sab.',
177
-	'date_jour_7_initiale' => 's.',
178
-	'date_jours' => 'tagoj',
179
-	'date_minutes' => 'minutoj',
180
-	'date_mois' => 'monatoj',
181
-	'date_mois_1' => 'januaro',
182
-	'date_mois_10' => 'oktobro',
183
-	'date_mois_10_abbr' => 'oct.',
184
-	'date_mois_11' => 'novembro',
185
-	'date_mois_11_abbr' => 'nov.',
186
-	'date_mois_12' => 'decembro',
187
-	'date_mois_12_abbr' => 'dec.',
188
-	'date_mois_1_abbr' => 'jan.',
189
-	'date_mois_2' => 'februaro',
190
-	'date_mois_2_abbr' => 'feb.',
191
-	'date_mois_3' => 'marto',
192
-	'date_mois_3_abbr' => 'mar.',
193
-	'date_mois_4' => 'aprilo',
194
-	'date_mois_4_abbr' => 'apr.',
195
-	'date_mois_5' => 'majo',
196
-	'date_mois_5_abbr' => 'majo',
197
-	'date_mois_6' => 'junio',
198
-	'date_mois_6_abbr' => 'jun.',
199
-	'date_mois_7' => 'julio',
200
-	'date_mois_7_abbr' => 'jul.',
201
-	'date_mois_8' => 'aŭgusto',
202
-	'date_mois_8_abbr' => 'aŭg.',
203
-	'date_mois_9' => 'septembro',
204
-	'date_mois_9_abbr' => 'sep.',
205
-	'date_saison_1' => 'vintro',
206
-	'date_saison_2' => 'printempo',
207
-	'date_saison_3' => 'somero',
208
-	'date_saison_4' => 'aŭtuno',
209
-	'date_secondes' => 'sekundoj',
210
-	'date_semaines' => 'semajnoj',
211
-	'date_un_mois' => 'monato',
212
-	'date_une_heure' => 'horo',
213
-	'date_une_minute' => 'minuto',
214
-	'date_une_seconde' => 'sekundo',
215
-	'date_une_semaine' => 'semajno',
216
-	'dirs_commencer' => ' por vere komenci la instalprocezon',
217
-	'dirs_preliminaire' => 'Antaŭfaro : <b>Difinu la alir-rajtojn</b>',
218
-	'dirs_probleme_droits' => 'Alir-rajta problemo',
219
-	'dirs_repertoires_absents' => '<b>La jenaj dosierujoj ne estas trovitaj : <ul>@bad_dirs@.</ul> </b>
90
+    // D
91
+    'date_aujourdhui' => 'hodiaŭ',
92
+    'date_avant_jc' => 'a.K.',
93
+    'date_dans' => 'post @delai@',
94
+    'date_de_mois_1' => '@j@ @nommois@',
95
+    'date_de_mois_10' => '@j@ @nommois@',
96
+    'date_de_mois_11' => '@j@ @nommois@',
97
+    'date_de_mois_12' => '@j@ @nommois@',
98
+    'date_de_mois_2' => '@j@ @nommois@',
99
+    'date_de_mois_3' => '@j@ @nommois@',
100
+    'date_de_mois_4' => '@j@ @nommois@',
101
+    'date_de_mois_5' => '@j@ @nommois@',
102
+    'date_de_mois_6' => '@j@ @nommois@',
103
+    'date_de_mois_7' => '@j@ @nommois@',
104
+    'date_de_mois_8' => '@j@ @nommois@',
105
+    'date_de_mois_9' => '@j@ @nommois@',
106
+    'date_demain' => 'morgaŭ',
107
+    'date_fmt_heures_minutes' => '@h@h@m@min',
108
+    'date_fmt_heures_minutes_court' => '@h@h@m@',
109
+    'date_fmt_jour' => '@nomjour@ la @jour@a',
110
+    'date_fmt_jour_heure' => '@jour@ je la @heure@',
111
+    'date_fmt_jour_heure_debut_fin' => 'la @jour@ de @heure_debut@ ĝis @heure_fin@',
112
+    'date_fmt_jour_heure_debut_fin_abbr' => 'la @dtstart@@jour@a de @heure_debut@@dtabbr@ ĝis @dtend@@heure_fin@@dtend@',
113
+    'date_fmt_jour_mois' => '@jour@a @nommois@',
114
+    'date_fmt_jour_mois_annee' => '@jour@a @nommois@ @annee@',
115
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
116
+    'date_fmt_nomjour' => '@nomjour@ @date@',
117
+    'date_fmt_nomjour_date' => 'la @nomjour@ @date@',
118
+    'date_fmt_periode' => 'De @date_debut@ ĝis @date_fin@',
119
+    'date_fmt_periode_abbr' => 'De @dtart@@date_debut@@dtabbr@ ĝis @dtend@@date_fin@@dtabbr@',
120
+    'date_fmt_periode_from' => 'De',
121
+    'date_fmt_periode_to' => 'ĝis',
122
+    'date_fmt_saison_annee' => '@saison@ @annee@',
123
+    'date_heures' => 'horoj',
124
+    'date_hier' => 'hieraŭ',
125
+    'date_il_y_a' => 'antaŭ @delai@',
126
+    'date_jnum1' => '1',
127
+    'date_jnum10' => '10',
128
+    'date_jnum11' => '11',
129
+    'date_jnum12' => '12',
130
+    'date_jnum13' => '13',
131
+    'date_jnum14' => '14',
132
+    'date_jnum15' => '15',
133
+    'date_jnum16' => '16',
134
+    'date_jnum17' => '17',
135
+    'date_jnum18' => '18',
136
+    'date_jnum19' => '19',
137
+    'date_jnum2' => '2',
138
+    'date_jnum20' => '20',
139
+    'date_jnum21' => '21',
140
+    'date_jnum22' => '22',
141
+    'date_jnum23' => '23',
142
+    'date_jnum24' => '24',
143
+    'date_jnum25' => '25',
144
+    'date_jnum26' => '26',
145
+    'date_jnum27' => '27',
146
+    'date_jnum28' => '28',
147
+    'date_jnum29' => '29',
148
+    'date_jnum3' => '3',
149
+    'date_jnum30' => '30',
150
+    'date_jnum31' => '31',
151
+    'date_jnum4' => '4',
152
+    'date_jnum5' => '5',
153
+    'date_jnum6' => '6',
154
+    'date_jnum7' => '7',
155
+    'date_jnum8' => '8',
156
+    'date_jnum9' => '9',
157
+    'date_jour_1' => 'dimanĉo',
158
+    'date_jour_1_abbr' => 'dim.',
159
+    'date_jour_1_initiale' => 'd.',
160
+    'date_jour_2' => 'lundo',
161
+    'date_jour_2_abbr' => 'lun.',
162
+    'date_jour_2_initiale' => 'l.',
163
+    'date_jour_3' => 'mardo',
164
+    'date_jour_3_abbr' => 'mar.',
165
+    'date_jour_3_initiale' => 'm.',
166
+    'date_jour_4' => 'merkredo',
167
+    'date_jour_4_abbr' => 'mer.',
168
+    'date_jour_4_initiale' => 'm.',
169
+    'date_jour_5' => 'ĵaŭdo',
170
+    'date_jour_5_abbr' => 'jaŭ.',
171
+    'date_jour_5_initiale' => 'j.',
172
+    'date_jour_6' => 'vendredo',
173
+    'date_jour_6_abbr' => 'ven.',
174
+    'date_jour_6_initiale' => 'v.',
175
+    'date_jour_7' => 'sabato',
176
+    'date_jour_7_abbr' => 'sab.',
177
+    'date_jour_7_initiale' => 's.',
178
+    'date_jours' => 'tagoj',
179
+    'date_minutes' => 'minutoj',
180
+    'date_mois' => 'monatoj',
181
+    'date_mois_1' => 'januaro',
182
+    'date_mois_10' => 'oktobro',
183
+    'date_mois_10_abbr' => 'oct.',
184
+    'date_mois_11' => 'novembro',
185
+    'date_mois_11_abbr' => 'nov.',
186
+    'date_mois_12' => 'decembro',
187
+    'date_mois_12_abbr' => 'dec.',
188
+    'date_mois_1_abbr' => 'jan.',
189
+    'date_mois_2' => 'februaro',
190
+    'date_mois_2_abbr' => 'feb.',
191
+    'date_mois_3' => 'marto',
192
+    'date_mois_3_abbr' => 'mar.',
193
+    'date_mois_4' => 'aprilo',
194
+    'date_mois_4_abbr' => 'apr.',
195
+    'date_mois_5' => 'majo',
196
+    'date_mois_5_abbr' => 'majo',
197
+    'date_mois_6' => 'junio',
198
+    'date_mois_6_abbr' => 'jun.',
199
+    'date_mois_7' => 'julio',
200
+    'date_mois_7_abbr' => 'jul.',
201
+    'date_mois_8' => 'aŭgusto',
202
+    'date_mois_8_abbr' => 'aŭg.',
203
+    'date_mois_9' => 'septembro',
204
+    'date_mois_9_abbr' => 'sep.',
205
+    'date_saison_1' => 'vintro',
206
+    'date_saison_2' => 'printempo',
207
+    'date_saison_3' => 'somero',
208
+    'date_saison_4' => 'aŭtuno',
209
+    'date_secondes' => 'sekundoj',
210
+    'date_semaines' => 'semajnoj',
211
+    'date_un_mois' => 'monato',
212
+    'date_une_heure' => 'horo',
213
+    'date_une_minute' => 'minuto',
214
+    'date_une_seconde' => 'sekundo',
215
+    'date_une_semaine' => 'semajno',
216
+    'dirs_commencer' => ' por vere komenci la instalprocezon',
217
+    'dirs_preliminaire' => 'Antaŭfaro : <b>Difinu la alir-rajtojn</b>',
218
+    'dirs_probleme_droits' => 'Alir-rajta problemo',
219
+    'dirs_repertoires_absents' => '<b>La jenaj dosierujoj ne estas trovitaj : <ul>@bad_dirs@.</ul> </b>
220 220
   <p>La problemo verŝajne rilatas al majuskligo de literoj.
221 221
   Kontrolu ke la majuskloj ja kongruas kun tio kio estas afiŝita ĉi-supre ;
222 222
   se ili ne kongruas, bonvolu renomi la dosierujon per via FTP-programo por korekti la eraron.
223 223
 </p><p>Post tio, vi povos</p>',
224
-	'dirs_repertoires_suivants' => '<b>La jenaj dosierujoj ne estas skribe modifeblaj : 
224
+    'dirs_repertoires_suivants' => '<b>La jenaj dosierujoj ne estas skribe modifeblaj : 
225 225
 <ul>@bad_dirs@.</ul></b>
226 226
 <p>Por solvi tion, uzu vian FTP-klienton por reguligi la alir-rajtojn de ĉiu
227 227
  el tiuj dosierujoj. La proceduron oni detale klarigas en la instalgvidlibro.
228 228
 </p><p>Post tio, vi povos </p>',
229
-	'double_occurrence' => 'Duobla trafo de @balise@',
229
+    'double_occurrence' => 'Duobla trafo de @balise@',
230 230
 
231
-	// E
232
-	'en_cours' => 'okazanta',
233
-	'envoi_via_le_site' => 'Sendo tra la retejo',
234
-	'erreur' => 'Eraro',
235
-	'erreur_balise_non_fermee' => 'lasta ne fermita marko :',
236
-	'erreur_technique_ajaxform' => 'Aj. Neatendita eraro ne ebligis la sendon de la formularo. Vi povas reprovi denove.',
237
-	'erreur_technique_enregistrement_champs' => 'Teknika eraro neebligis la ĝustan registradon de la kampo @champs@.',
238
-	'erreur_technique_enregistrement_impossible' => 'Teknika eraro neebligis la registradon.',
239
-	'erreur_texte' => 'eraro(j)',
240
-	'etape' => 'Etapo',
231
+    // E
232
+    'en_cours' => 'okazanta',
233
+    'envoi_via_le_site' => 'Sendo tra la retejo',
234
+    'erreur' => 'Eraro',
235
+    'erreur_balise_non_fermee' => 'lasta ne fermita marko :',
236
+    'erreur_technique_ajaxform' => 'Aj. Neatendita eraro ne ebligis la sendon de la formularo. Vi povas reprovi denove.',
237
+    'erreur_technique_enregistrement_champs' => 'Teknika eraro neebligis la ĝustan registradon de la kampo @champs@.',
238
+    'erreur_technique_enregistrement_impossible' => 'Teknika eraro neebligis la registradon.',
239
+    'erreur_texte' => 'eraro(j)',
240
+    'etape' => 'Etapo',
241 241
 
242
-	// F
243
-	'fichier_introuvable' => 'Netrovebla dosiero @fichier@ ', # MODIF
244
-	'form_auteur_confirmation' => 'Konfirmu vian retpoŝtadreso',
245
-	'form_auteur_email_modifie' => 'Via retpoŝtadreso estis modifita.',
246
-	'form_auteur_envoi_mail_confirmation' => 'Konfirmretmesaĝo estis sendita al @email@. Vi devu viziti la menciita retadreso en la retmesaĝo por validigi vian retpoŝtadreson.',
247
-	'form_auteur_mail_confirmation' => 'Saluton,
242
+    // F
243
+    'fichier_introuvable' => 'Netrovebla dosiero @fichier@ ', # MODIF
244
+    'form_auteur_confirmation' => 'Konfirmu vian retpoŝtadreso',
245
+    'form_auteur_email_modifie' => 'Via retpoŝtadreso estis modifita.',
246
+    'form_auteur_envoi_mail_confirmation' => 'Konfirmretmesaĝo estis sendita al @email@. Vi devu viziti la menciita retadreso en la retmesaĝo por validigi vian retpoŝtadreson.',
247
+    'form_auteur_mail_confirmation' => 'Saluton,
248 248
 
249 249
 Vi petis ŝanĝi vian retpoŝtadreson.
250 250
 Por konfirmi vian novan retadreson, simple ensaluti al
251 251
 la retadreso ĉi-sube (alie, via peto estos ignoritaj) :
252 252
 
253 253
     @url@',
254
-	'form_deja_inscrit' => 'Vi estas jam registrita.',
255
-	'form_email_non_valide' => 'Via retpoŝtadreso ne validas.',
256
-	'form_forum_access_refuse' => 'Vi ne plu havas alir-rajton al tiu retejo.',
257
-	'form_forum_bonjour' => 'Saluton @nom@,',
258
-	'form_forum_confirmer_email' => 'Por konfirmi vian retpoŝtadreson, iru al tiu retadreso : @url_confirm@',
259
-	'form_forum_email_deja_enregistre' => 'Tiu ĉi retpoŝtadreso estas jam registrita, vi povas do uzi vian kutiman pasvorton.',
260
-	'form_forum_identifiant_mail' => 'Via nova ensalutilo estis ĵus al vi sendita per retletero.',
261
-	'form_forum_identifiants' => 'Personaj ensalutiloj',
262
-	'form_forum_indiquer_nom_email' => 'Indiku ĉi tie vian nomon kaj retpoŝtadreson. Via persona ensalutilo rapide alvenos al vi retletere.',
263
-	'form_forum_login' => 'salutnomo :',
264
-	'form_forum_message_auto' => '(tio estas aŭtomata mesaĝo)',
265
-	'form_forum_pass' => 'pasvorto :',
266
-	'form_forum_probleme_mail' => 'Retpoŝta problemo : la ensalutilo ne sendeblas.',
267
-	'form_forum_voici1' => 'Jen viaj ensalutiloj por partopreni la vivon de la retejo "@nom_site_spip@" (@adresse_site@) :',
268
-	'form_forum_voici2' => 'Jen estas viaj ensalutiloj por proponi artikolojn ĉe la retejo "@nom_site_spip@" (@adresse_login@) :',
269
-	'form_indiquer_email' => 'Bonvolu indiki vian retpoŝtadreson.',
270
-	'form_indiquer_nom' => 'Bonvolu indiki vian nomon.',
271
-	'form_indiquer_nom_site' => 'Bonvolu indiki la nomon de via retejo.',
272
-	'form_pet_deja_enregistre' => 'Tiu retejo estas jam registrita',
273
-	'form_pet_signature_pasprise' => 'Via subskribo ne estas registrita.',
274
-	'form_prop_confirmer_envoi' => 'Konfirmi la sendon',
275
-	'form_prop_description' => 'Priskribo/komento',
276
-	'form_prop_enregistre' => 'Via kontribuo estas registrita, ĝi aperos ĉerete post validigo de la respondeculoj de la retejo.',
277
-	'form_prop_envoyer' => 'Sendi mesaĝon',
278
-	'form_prop_indiquer_email' => 'Bonvolu indiki validan retpoŝtadreson',
279
-	'form_prop_indiquer_nom_site' => 'Bonvolu indiki la nomon de la retejo.',
280
-	'form_prop_indiquer_sujet' => 'Bonvolu indiki temon',
281
-	'form_prop_message_envoye' => 'Mesaĝo sendita',
282
-	'form_prop_non_enregistre' => 'Via propono ne estis registrita.',
283
-	'form_prop_sujet' => 'Temo',
284
-	'form_prop_url_site' => 'URL-adreso de la retejo',
285
-	'format_date_incorrecte' => 'La dato aŭ ĝia formo ne validas',
286
-	'format_heure_incorrecte' => 'La horo aŭ ĝia formo ne validas',
287
-	'forum_non_inscrit' => 'Vi ne estas registrita, aŭ la adreso aŭ la pasvorto ne ĝustas.',
288
-	'forum_par_auteur' => 'de @auteur@',
289
-	'forum_titre_erreur' => 'Eraro...',
254
+    'form_deja_inscrit' => 'Vi estas jam registrita.',
255
+    'form_email_non_valide' => 'Via retpoŝtadreso ne validas.',
256
+    'form_forum_access_refuse' => 'Vi ne plu havas alir-rajton al tiu retejo.',
257
+    'form_forum_bonjour' => 'Saluton @nom@,',
258
+    'form_forum_confirmer_email' => 'Por konfirmi vian retpoŝtadreson, iru al tiu retadreso : @url_confirm@',
259
+    'form_forum_email_deja_enregistre' => 'Tiu ĉi retpoŝtadreso estas jam registrita, vi povas do uzi vian kutiman pasvorton.',
260
+    'form_forum_identifiant_mail' => 'Via nova ensalutilo estis ĵus al vi sendita per retletero.',
261
+    'form_forum_identifiants' => 'Personaj ensalutiloj',
262
+    'form_forum_indiquer_nom_email' => 'Indiku ĉi tie vian nomon kaj retpoŝtadreson. Via persona ensalutilo rapide alvenos al vi retletere.',
263
+    'form_forum_login' => 'salutnomo :',
264
+    'form_forum_message_auto' => '(tio estas aŭtomata mesaĝo)',
265
+    'form_forum_pass' => 'pasvorto :',
266
+    'form_forum_probleme_mail' => 'Retpoŝta problemo : la ensalutilo ne sendeblas.',
267
+    'form_forum_voici1' => 'Jen viaj ensalutiloj por partopreni la vivon de la retejo "@nom_site_spip@" (@adresse_site@) :',
268
+    'form_forum_voici2' => 'Jen estas viaj ensalutiloj por proponi artikolojn ĉe la retejo "@nom_site_spip@" (@adresse_login@) :',
269
+    'form_indiquer_email' => 'Bonvolu indiki vian retpoŝtadreson.',
270
+    'form_indiquer_nom' => 'Bonvolu indiki vian nomon.',
271
+    'form_indiquer_nom_site' => 'Bonvolu indiki la nomon de via retejo.',
272
+    'form_pet_deja_enregistre' => 'Tiu retejo estas jam registrita',
273
+    'form_pet_signature_pasprise' => 'Via subskribo ne estas registrita.',
274
+    'form_prop_confirmer_envoi' => 'Konfirmi la sendon',
275
+    'form_prop_description' => 'Priskribo/komento',
276
+    'form_prop_enregistre' => 'Via kontribuo estas registrita, ĝi aperos ĉerete post validigo de la respondeculoj de la retejo.',
277
+    'form_prop_envoyer' => 'Sendi mesaĝon',
278
+    'form_prop_indiquer_email' => 'Bonvolu indiki validan retpoŝtadreson',
279
+    'form_prop_indiquer_nom_site' => 'Bonvolu indiki la nomon de la retejo.',
280
+    'form_prop_indiquer_sujet' => 'Bonvolu indiki temon',
281
+    'form_prop_message_envoye' => 'Mesaĝo sendita',
282
+    'form_prop_non_enregistre' => 'Via propono ne estis registrita.',
283
+    'form_prop_sujet' => 'Temo',
284
+    'form_prop_url_site' => 'URL-adreso de la retejo',
285
+    'format_date_incorrecte' => 'La dato aŭ ĝia formo ne validas',
286
+    'format_heure_incorrecte' => 'La horo aŭ ĝia formo ne validas',
287
+    'forum_non_inscrit' => 'Vi ne estas registrita, aŭ la adreso aŭ la pasvorto ne ĝustas.',
288
+    'forum_par_auteur' => 'de @auteur@',
289
+    'forum_titre_erreur' => 'Eraro...',
290 290
 
291
-	// I
292
-	'ical_texte_rss_articles' => 'La abondosiero (backend-dosiero) de la artikoloj de tiu retejo troveblas ĉe la retadreso :',
293
-	'ical_texte_rss_articles2' => 'Sube, vi povas trovi abonligojn por gvati evoluadon de artikoloj el ĉiu rubriko de la retejo :',
294
-	'ical_texte_rss_breves' => 'Krome ekzistas dosiero enhavanta ĉiujn fulm-informojn de la retejo. Precizigante la rubriko-numeron, vi ricevos nur la fulm-informojn el tiu rubriko.',
295
-	'icone_a_suivre' => 'Stabejo',
296
-	'icone_admin_site' => 'Reteja administrado',
297
-	'icone_agenda' => 'Agendo',
298
-	'icone_aide_ligne' => 'Helpilo',
299
-	'icone_articles' => 'Artikoloj',
300
-	'icone_auteurs' => 'Aŭtoroj',
301
-	'icone_brouteur' => 'Rapida retumado',
302
-	'icone_configuration_site' => 'Konfiguro',
303
-	'icone_configurer_site' => 'Konfiguri vian retejon',
304
-	'icone_creer_nouvel_auteur' => 'Krei novan aŭtoron',
305
-	'icone_creer_rubrique' => 'Krei novan rubrikon',
306
-	'icone_creer_sous_rubrique' => 'Krei sub-rubrikon',
307
-	'icone_deconnecter' => 'Elsaluti',
308
-	'icone_discussions' => 'Diskutoj',
309
-	'icone_doc_rubrique' => 'Dokumentoj de la rubrikoj',
310
-	'icone_ecrire_article' => 'Skribi novan artikolon',
311
-	'icone_edition_site' => 'Redaktejo',
312
-	'icone_gestion_langues' => 'Mastrumado de lingvoj',
313
-	'icone_informations_personnelles' => 'Personaj datenoj',
314
-	'icone_interface_complet' => 'kompleta interfaco',
315
-	'icone_interface_simple' => 'Simpla interfaco',
316
-	'icone_maintenance_site' => 'Retejo-bontenado',
317
-	'icone_messagerie_personnelle' => 'Persona mesaĝilo',
318
-	'icone_repartition_debut' => 'Afiŝi la distribuon ekde la komenco',
319
-	'icone_rubriques' => 'Rubrikoj',
320
-	'icone_sauver_site' => 'Savkopii la retejon',
321
-	'icone_site_entier' => 'La tuta retejo',
322
-	'icone_sites_references' => 'Referencigitaj retejoj',
323
-	'icone_statistiques' => 'Statistikoj de la retejo',
324
-	'icone_suivi_activite' => 'Gvati vivon de la retejo',
325
-	'icone_suivi_actualite' => 'Evoluado de la retejo',
326
-	'icone_suivi_pettions' => 'Superrigardi/mastrumi la petskribon',
327
-	'icone_suivi_revisions' => 'Modifoj de artikoloj',
328
-	'icone_supprimer_document' => 'Forigi tiun dokumenton',
329
-	'icone_supprimer_image' => 'Forigi tiun bildon',
330
-	'icone_tous_articles' => 'Ĉiuj viaj artikoloj',
331
-	'icone_tous_auteur' => 'Ĉiuj aŭtoroj',
332
-	'icone_tous_visiteur' => 'Ĉiuj vizitantoj',
333
-	'icone_visiter_site' => 'Vidi la publika spaco',
334
-	'icone_voir_en_ligne' => 'Vidi ĉeretigite',
335
-	'img_indisponible' => 'nedisponebla bildo',
336
-	'impossible' => 'ne eblas',
337
-	'info_a_suivre' => 'STABEJO »',
338
-	'info_acces_interdit' => 'Malpermesata aliro',
339
-	'info_acces_refuse' => 'Rifuzita aliro',
340
-	'info_action' => 'Ago : @action@',
341
-	'info_administrer_rubriques' => 'Vi povas mastrumi tiun rubrikon kaj ties subrubrikojn',
342
-	'info_adresse_non_indiquee' => 'Vi indikis neniun adreson por testi !',
343
-	'info_aide' => 'HELPO :',
344
-	'info_ajouter_mot' => 'Aldoni tiun vorton',
345
-	'info_annonce' => 'ANONCO',
346
-	'info_annonces_generales' => 'Ĝeneralaj anoncoj :',
347
-	'info_article_propose' => 'Proponita artikolo',
348
-	'info_article_publie' => 'Publikigita artikolo',
349
-	'info_article_redaction' => 'Redaktata artikolo',
350
-	'info_article_refuse' => 'Rifuzita artikolo',
351
-	'info_article_supprime' => 'Forviŝita artikolo',
352
-	'info_articles' => 'Artikoloj',
353
-	'info_articles_a_valider' => 'Validigendaj artikoloj',
354
-	'info_articles_nb' => '@nb@ artikoloj',
355
-	'info_articles_proposes' => 'Proponitaj artikoloj',
356
-	'info_articles_un' => '1 artikolo',
357
-	'info_auteurs_nombre' => 'aŭtoro(j) :',
358
-	'info_authentification_ftp' => 'Aŭtentigo (per FTP).',
359
-	'info_breves_2' => 'fulm-informoj',
360
-	'info_breves_nb' => '@nb@ fulm-informoj',
361
-	'info_breves_un' => '1 fulm-informo',
362
-	'info_connexion_refusee' => 'Konektiĝo rifuzata',
363
-	'info_contact_developpeur' => 'Bonvolu kontakti programiston.',
364
-	'info_contenance' => 'Tiu retejo enhavas :',
365
-	'info_contribution' => 'kontribuaĵoj',
366
-	'info_copyright' => '@spip@ estas libera programo distribuata @lien_gpl@.',
367
-	'info_copyright_doc' => 'Por pliaj informoj vidu la retpaĝon <a href="@spipnet@">@spipnet_affiche@</a>.',
368
-	'info_copyright_gpl' => 'sub licenco GPL',
369
-	'info_cours_edition' => 'Viaj redaktataj artikoloj', # MODIF
370
-	'info_creer_repertoire' => 'Bonvolu krei dosieron aŭ dosierujon kies nomo estu :',
371
-	'info_creer_repertoire_2' => 'ene de la subdosierujo <b>@repertoire@</b>, kaj :',
372
-	'info_creer_vignette' => 'aŭtomata kreo de la vinjeto',
373
-	'info_creerdansrubrique_non_autorise' => 'Vi ne havas sufiĉajn rajtojn por krei enhavo en ĉi tiu rubriko',
374
-	'info_deplier' => 'Malfaldi',
375
-	'info_descriptif_nombre' => 'priskribo(j) :',
376
-	'info_description' => 'Priskribo :',
377
-	'info_description_2' => 'Priskribo :',
378
-	'info_dimension' => 'Dimensioj :',
379
-	'info_documents_nb' => '@nb@ dokumentoj',
380
-	'info_documents_un' => '1 dokumento',
381
-	'info_ecire_message_prive' => 'Skribi privatan mesaĝon',
382
-	'info_email_invalide' => 'Nevalida retpoŝtadreso.',
383
-	'info_en_cours_validation' => 'Viaj redaktataj artikoloj',
384
-	'info_en_ligne' => 'Nun ĉerete :',
385
-	'info_envoyer_message_prive' => 'Sendi privatan mesaĝon al tiu ĉi aŭtoro',
386
-	'info_erreur_requete' => 'Eraro en la peto : ',
387
-	'info_erreur_squelette2' => 'Neniu skeleto <b>@fichier@</b> disponeblas...',
388
-	'info_erreur_systeme' => 'Sistemo-eraro (errno @errsys@)',
389
-	'info_erreur_systeme2' => 'Eble la fiksdisko plenas, aŭ la datenbazo estas difektita.<br />
291
+    // I
292
+    'ical_texte_rss_articles' => 'La abondosiero (backend-dosiero) de la artikoloj de tiu retejo troveblas ĉe la retadreso :',
293
+    'ical_texte_rss_articles2' => 'Sube, vi povas trovi abonligojn por gvati evoluadon de artikoloj el ĉiu rubriko de la retejo :',
294
+    'ical_texte_rss_breves' => 'Krome ekzistas dosiero enhavanta ĉiujn fulm-informojn de la retejo. Precizigante la rubriko-numeron, vi ricevos nur la fulm-informojn el tiu rubriko.',
295
+    'icone_a_suivre' => 'Stabejo',
296
+    'icone_admin_site' => 'Reteja administrado',
297
+    'icone_agenda' => 'Agendo',
298
+    'icone_aide_ligne' => 'Helpilo',
299
+    'icone_articles' => 'Artikoloj',
300
+    'icone_auteurs' => 'Aŭtoroj',
301
+    'icone_brouteur' => 'Rapida retumado',
302
+    'icone_configuration_site' => 'Konfiguro',
303
+    'icone_configurer_site' => 'Konfiguri vian retejon',
304
+    'icone_creer_nouvel_auteur' => 'Krei novan aŭtoron',
305
+    'icone_creer_rubrique' => 'Krei novan rubrikon',
306
+    'icone_creer_sous_rubrique' => 'Krei sub-rubrikon',
307
+    'icone_deconnecter' => 'Elsaluti',
308
+    'icone_discussions' => 'Diskutoj',
309
+    'icone_doc_rubrique' => 'Dokumentoj de la rubrikoj',
310
+    'icone_ecrire_article' => 'Skribi novan artikolon',
311
+    'icone_edition_site' => 'Redaktejo',
312
+    'icone_gestion_langues' => 'Mastrumado de lingvoj',
313
+    'icone_informations_personnelles' => 'Personaj datenoj',
314
+    'icone_interface_complet' => 'kompleta interfaco',
315
+    'icone_interface_simple' => 'Simpla interfaco',
316
+    'icone_maintenance_site' => 'Retejo-bontenado',
317
+    'icone_messagerie_personnelle' => 'Persona mesaĝilo',
318
+    'icone_repartition_debut' => 'Afiŝi la distribuon ekde la komenco',
319
+    'icone_rubriques' => 'Rubrikoj',
320
+    'icone_sauver_site' => 'Savkopii la retejon',
321
+    'icone_site_entier' => 'La tuta retejo',
322
+    'icone_sites_references' => 'Referencigitaj retejoj',
323
+    'icone_statistiques' => 'Statistikoj de la retejo',
324
+    'icone_suivi_activite' => 'Gvati vivon de la retejo',
325
+    'icone_suivi_actualite' => 'Evoluado de la retejo',
326
+    'icone_suivi_pettions' => 'Superrigardi/mastrumi la petskribon',
327
+    'icone_suivi_revisions' => 'Modifoj de artikoloj',
328
+    'icone_supprimer_document' => 'Forigi tiun dokumenton',
329
+    'icone_supprimer_image' => 'Forigi tiun bildon',
330
+    'icone_tous_articles' => 'Ĉiuj viaj artikoloj',
331
+    'icone_tous_auteur' => 'Ĉiuj aŭtoroj',
332
+    'icone_tous_visiteur' => 'Ĉiuj vizitantoj',
333
+    'icone_visiter_site' => 'Vidi la publika spaco',
334
+    'icone_voir_en_ligne' => 'Vidi ĉeretigite',
335
+    'img_indisponible' => 'nedisponebla bildo',
336
+    'impossible' => 'ne eblas',
337
+    'info_a_suivre' => 'STABEJO »',
338
+    'info_acces_interdit' => 'Malpermesata aliro',
339
+    'info_acces_refuse' => 'Rifuzita aliro',
340
+    'info_action' => 'Ago : @action@',
341
+    'info_administrer_rubriques' => 'Vi povas mastrumi tiun rubrikon kaj ties subrubrikojn',
342
+    'info_adresse_non_indiquee' => 'Vi indikis neniun adreson por testi !',
343
+    'info_aide' => 'HELPO :',
344
+    'info_ajouter_mot' => 'Aldoni tiun vorton',
345
+    'info_annonce' => 'ANONCO',
346
+    'info_annonces_generales' => 'Ĝeneralaj anoncoj :',
347
+    'info_article_propose' => 'Proponita artikolo',
348
+    'info_article_publie' => 'Publikigita artikolo',
349
+    'info_article_redaction' => 'Redaktata artikolo',
350
+    'info_article_refuse' => 'Rifuzita artikolo',
351
+    'info_article_supprime' => 'Forviŝita artikolo',
352
+    'info_articles' => 'Artikoloj',
353
+    'info_articles_a_valider' => 'Validigendaj artikoloj',
354
+    'info_articles_nb' => '@nb@ artikoloj',
355
+    'info_articles_proposes' => 'Proponitaj artikoloj',
356
+    'info_articles_un' => '1 artikolo',
357
+    'info_auteurs_nombre' => 'aŭtoro(j) :',
358
+    'info_authentification_ftp' => 'Aŭtentigo (per FTP).',
359
+    'info_breves_2' => 'fulm-informoj',
360
+    'info_breves_nb' => '@nb@ fulm-informoj',
361
+    'info_breves_un' => '1 fulm-informo',
362
+    'info_connexion_refusee' => 'Konektiĝo rifuzata',
363
+    'info_contact_developpeur' => 'Bonvolu kontakti programiston.',
364
+    'info_contenance' => 'Tiu retejo enhavas :',
365
+    'info_contribution' => 'kontribuaĵoj',
366
+    'info_copyright' => '@spip@ estas libera programo distribuata @lien_gpl@.',
367
+    'info_copyright_doc' => 'Por pliaj informoj vidu la retpaĝon <a href="@spipnet@">@spipnet_affiche@</a>.',
368
+    'info_copyright_gpl' => 'sub licenco GPL',
369
+    'info_cours_edition' => 'Viaj redaktataj artikoloj', # MODIF
370
+    'info_creer_repertoire' => 'Bonvolu krei dosieron aŭ dosierujon kies nomo estu :',
371
+    'info_creer_repertoire_2' => 'ene de la subdosierujo <b>@repertoire@</b>, kaj :',
372
+    'info_creer_vignette' => 'aŭtomata kreo de la vinjeto',
373
+    'info_creerdansrubrique_non_autorise' => 'Vi ne havas sufiĉajn rajtojn por krei enhavo en ĉi tiu rubriko',
374
+    'info_deplier' => 'Malfaldi',
375
+    'info_descriptif_nombre' => 'priskribo(j) :',
376
+    'info_description' => 'Priskribo :',
377
+    'info_description_2' => 'Priskribo :',
378
+    'info_dimension' => 'Dimensioj :',
379
+    'info_documents_nb' => '@nb@ dokumentoj',
380
+    'info_documents_un' => '1 dokumento',
381
+    'info_ecire_message_prive' => 'Skribi privatan mesaĝon',
382
+    'info_email_invalide' => 'Nevalida retpoŝtadreso.',
383
+    'info_en_cours_validation' => 'Viaj redaktataj artikoloj',
384
+    'info_en_ligne' => 'Nun ĉerete :',
385
+    'info_envoyer_message_prive' => 'Sendi privatan mesaĝon al tiu ĉi aŭtoro',
386
+    'info_erreur_requete' => 'Eraro en la peto : ',
387
+    'info_erreur_squelette2' => 'Neniu skeleto <b>@fichier@</b> disponeblas...',
388
+    'info_erreur_systeme' => 'Sistemo-eraro (errno @errsys@)',
389
+    'info_erreur_systeme2' => 'Eble la fiksdisko plenas, aŭ la datenbazo estas difektita.<br />
390 390
 <span style="color:red;">Provu<a href=\'@script@\'>ripari la datenbazon</a>,
391 391
 aŭ kontaktu vian retgastiganton.</span>',
392
-	'info_fini' => 'Finite !',
393
-	'info_format_image' => 'Bildaj formatoj uzeblaj por krei vinjetojn : @gd_formats@.',
394
-	'info_format_non_defini' => 'nedefinita formato',
395
-	'info_grand_ecran' => 'Granda ekrano',
396
-	'info_image_aide' => 'HELPILO',
397
-	'info_image_process_titre' => 'Metodo pri vinjet-farado',
398
-	'info_impossible_lire_page' => '<b>Eraro !</b> Ne eblas legi la paĝon <tt> <html>@test_proxy@</html> </tt> tra la prokura servilo <tt>',
399
-	'info_installation_systeme_publication' => 'Instalo de la publikiga sistemo...',
400
-	'info_installer_documents' => 'Vi povas aŭtomate instali ĉiujn dokumentojn troviĝantajn en la dosiero @upload@.',
401
-	'info_installer_ftp' => 'Kiel mastrumanto, vi povas instali (FTP-e) dosierojn en la dosierujon @upload@ kaj poste rekte selekti ilin ĉi tie.',
402
-	'info_installer_images' => 'Vi povas instali bildojn je la formatoj JPEG, GIF kaj PNG.',
403
-	'info_installer_images_dossier' => 'Instali bildojn en la dosierujon @upload@ por povi ilin selekti ĉi tie.',
404
-	'info_interface_complete' => 'kompleta interfaco',
405
-	'info_interface_simple' => 'Simpla interfaco',
406
-	'info_joindre_document_article' => 'Vi povas ligi kun tiu artikolo dokumentojn tiajn, kiaj',
407
-	'info_joindre_document_rubrique' => 'Vi povas ligi kun tiu rubriko dokumentojn tiajn, kiaj',
408
-	'info_joindre_documents_article' => 'Vi povas ligi kun tiu artikolo dokumentojn tiajn, kiaj :',
409
-	'info_l_article' => 'la artikolo',
410
-	'info_la_breve' => 'la fulm-informo',
411
-	'info_la_rubrique' => 'la rubriko',
412
-	'info_langue_principale' => 'Ĉefa lingvo de la retejo',
413
-	'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ bilderoj',
414
-	'info_les_auteurs_1' => 'de @les_auteurs@',
415
-	'info_logo_format_interdit' => 'Nur vinjetoj je formatoj @formats@ estas permesataj.',
416
-	'info_logo_max_poids' => 'Vinjetoj devige pezu malpli ol @maxi@ (tiu dosiero pezas @actuel@).',
417
-	'info_mail_fournisseur' => '[email protected]',
418
-	'info_message_2' => 'MESAĜO',
419
-	'info_message_supprime' => 'FORIGITA MESAĜO',
420
-	'info_messages_nb' => '@nb@ mesaĝoj',
421
-	'info_messages_un' => '1 mesaĝo',
422
-	'info_mise_en_ligne' => 'Dato de ĉeretigo : ',
423
-	'info_modification_parametres_securite' => 'modifoj de la sekuraj parametroj',
424
-	'info_mois_courant' => 'En la kuranta monato :',
425
-	'info_mot_cle_ajoute' => 'La jena ŝlosilvorto estas ligita kun',
426
-	'info_multi_herit' => 'Defaŭlta lingvo',
427
-	'info_multi_langues_soulignees' => 'Por la <u>substrekitaj lingvoj</u>, ĉiuj tekstoj de la interfaco estas tute aŭ parte tradukitaj. Kiam vi elektas tiujn lingvojn, multaj elementoj de la publika retejo (datenoj, formularoj) estos aŭtomate tradukitaj. Por la nesubstrekitaj lingvoj, tiuj elementoj afiŝiĝos en la ĉefa lingvo de la retejo.',
428
-	'info_multilinguisme' => 'Multlingvismo',
429
-	'info_nom_non_utilisateurs_connectes' => 'Via nomo ne aperas en la listo de la ensalutintaj uzantoj.',
430
-	'info_nom_utilisateurs_connectes' => 'Via nomo aperas en la listo de la ensalutintaj uzantoj.',
431
-	'info_nombre_en_ligne' => 'Nun ensalutintaj :',
432
-	'info_non_resultat' => 'Neniu rezulto por "@cherche_mot@"',
433
-	'info_non_utilisation_messagerie' => 'Vi ne uzas la internan mesaĝilon de tiu retejo.',
434
-	'info_nouveau_message' => 'VI HAVAS NOVAN MESAĜON',
435
-	'info_nouveaux_messages' => 'VI HAVAS @total_messages@ NOVA(J)N MESAĜO(J)N',
436
-	'info_numero_abbreviation' => 'N° ',
437
-	'info_obligatoire' => 'Tiu ĉi informo estas deviga',
438
-	'info_pense_bete' => 'MEMORIGILO',
439
-	'info_petit_ecran' => 'Eta ekrano',
440
-	'info_petition_close' => 'Petskribo fermita',
441
-	'info_pixels' => 'bilderoj',
442
-	'info_plusieurs_mots_trouves' => 'Pluraj ŝlosilvortoj trovitaj por "@cherche_mot@" :',
443
-	'info_portfolio_automatique' => 'Aŭtomata dokumentujo :',
444
-	'info_premier_resultat' => '[@debut_limit@ unuaj rezultoj el @total@]',
445
-	'info_premier_resultat_sur' => '[@debut_limit@ unuaj rezultoj el @total@]',
446
-	'info_propose_1' => '[@nom_site_spip@] Proponas : @titre@',
447
-	'info_propose_2' => 'Proponita artikolo
392
+    'info_fini' => 'Finite !',
393
+    'info_format_image' => 'Bildaj formatoj uzeblaj por krei vinjetojn : @gd_formats@.',
394
+    'info_format_non_defini' => 'nedefinita formato',
395
+    'info_grand_ecran' => 'Granda ekrano',
396
+    'info_image_aide' => 'HELPILO',
397
+    'info_image_process_titre' => 'Metodo pri vinjet-farado',
398
+    'info_impossible_lire_page' => '<b>Eraro !</b> Ne eblas legi la paĝon <tt> <html>@test_proxy@</html> </tt> tra la prokura servilo <tt>',
399
+    'info_installation_systeme_publication' => 'Instalo de la publikiga sistemo...',
400
+    'info_installer_documents' => 'Vi povas aŭtomate instali ĉiujn dokumentojn troviĝantajn en la dosiero @upload@.',
401
+    'info_installer_ftp' => 'Kiel mastrumanto, vi povas instali (FTP-e) dosierojn en la dosierujon @upload@ kaj poste rekte selekti ilin ĉi tie.',
402
+    'info_installer_images' => 'Vi povas instali bildojn je la formatoj JPEG, GIF kaj PNG.',
403
+    'info_installer_images_dossier' => 'Instali bildojn en la dosierujon @upload@ por povi ilin selekti ĉi tie.',
404
+    'info_interface_complete' => 'kompleta interfaco',
405
+    'info_interface_simple' => 'Simpla interfaco',
406
+    'info_joindre_document_article' => 'Vi povas ligi kun tiu artikolo dokumentojn tiajn, kiaj',
407
+    'info_joindre_document_rubrique' => 'Vi povas ligi kun tiu rubriko dokumentojn tiajn, kiaj',
408
+    'info_joindre_documents_article' => 'Vi povas ligi kun tiu artikolo dokumentojn tiajn, kiaj :',
409
+    'info_l_article' => 'la artikolo',
410
+    'info_la_breve' => 'la fulm-informo',
411
+    'info_la_rubrique' => 'la rubriko',
412
+    'info_langue_principale' => 'Ĉefa lingvo de la retejo',
413
+    'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ bilderoj',
414
+    'info_les_auteurs_1' => 'de @les_auteurs@',
415
+    'info_logo_format_interdit' => 'Nur vinjetoj je formatoj @formats@ estas permesataj.',
416
+    'info_logo_max_poids' => 'Vinjetoj devige pezu malpli ol @maxi@ (tiu dosiero pezas @actuel@).',
417
+    'info_mail_fournisseur' => '[email protected]',
418
+    'info_message_2' => 'MESAĜO',
419
+    'info_message_supprime' => 'FORIGITA MESAĜO',
420
+    'info_messages_nb' => '@nb@ mesaĝoj',
421
+    'info_messages_un' => '1 mesaĝo',
422
+    'info_mise_en_ligne' => 'Dato de ĉeretigo : ',
423
+    'info_modification_parametres_securite' => 'modifoj de la sekuraj parametroj',
424
+    'info_mois_courant' => 'En la kuranta monato :',
425
+    'info_mot_cle_ajoute' => 'La jena ŝlosilvorto estas ligita kun',
426
+    'info_multi_herit' => 'Defaŭlta lingvo',
427
+    'info_multi_langues_soulignees' => 'Por la <u>substrekitaj lingvoj</u>, ĉiuj tekstoj de la interfaco estas tute aŭ parte tradukitaj. Kiam vi elektas tiujn lingvojn, multaj elementoj de la publika retejo (datenoj, formularoj) estos aŭtomate tradukitaj. Por la nesubstrekitaj lingvoj, tiuj elementoj afiŝiĝos en la ĉefa lingvo de la retejo.',
428
+    'info_multilinguisme' => 'Multlingvismo',
429
+    'info_nom_non_utilisateurs_connectes' => 'Via nomo ne aperas en la listo de la ensalutintaj uzantoj.',
430
+    'info_nom_utilisateurs_connectes' => 'Via nomo aperas en la listo de la ensalutintaj uzantoj.',
431
+    'info_nombre_en_ligne' => 'Nun ensalutintaj :',
432
+    'info_non_resultat' => 'Neniu rezulto por "@cherche_mot@"',
433
+    'info_non_utilisation_messagerie' => 'Vi ne uzas la internan mesaĝilon de tiu retejo.',
434
+    'info_nouveau_message' => 'VI HAVAS NOVAN MESAĜON',
435
+    'info_nouveaux_messages' => 'VI HAVAS @total_messages@ NOVA(J)N MESAĜO(J)N',
436
+    'info_numero_abbreviation' => 'N° ',
437
+    'info_obligatoire' => 'Tiu ĉi informo estas deviga',
438
+    'info_pense_bete' => 'MEMORIGILO',
439
+    'info_petit_ecran' => 'Eta ekrano',
440
+    'info_petition_close' => 'Petskribo fermita',
441
+    'info_pixels' => 'bilderoj',
442
+    'info_plusieurs_mots_trouves' => 'Pluraj ŝlosilvortoj trovitaj por "@cherche_mot@" :',
443
+    'info_portfolio_automatique' => 'Aŭtomata dokumentujo :',
444
+    'info_premier_resultat' => '[@debut_limit@ unuaj rezultoj el @total@]',
445
+    'info_premier_resultat_sur' => '[@debut_limit@ unuaj rezultoj el @total@]',
446
+    'info_propose_1' => '[@nom_site_spip@] Proponas : @titre@',
447
+    'info_propose_2' => 'Proponita artikolo
448 448
 ---------------',
449
-	'info_propose_3' => 'La artikolo "@titre@" estas proponita por publikigo.',
450
-	'info_propose_4' => 'Vi estas petata konsulti ĝin kaj doni vian opinion',
451
-	'info_propose_5' => 'en la forumo ligita al ĝi. Ĝi estas disponebla el la adreso :',
452
-	'info_publie_01' => 'La artikolo "@titre@" estis validigita de @connect_nom@.',
453
-	'info_publie_1' => '[@nom_site_spip@] PUBLIKIGAS : @titre@',
454
-	'info_publie_2' => 'Artikolo publikigita
449
+    'info_propose_3' => 'La artikolo "@titre@" estas proponita por publikigo.',
450
+    'info_propose_4' => 'Vi estas petata konsulti ĝin kaj doni vian opinion',
451
+    'info_propose_5' => 'en la forumo ligita al ĝi. Ĝi estas disponebla el la adreso :',
452
+    'info_publie_01' => 'La artikolo "@titre@" estis validigita de @connect_nom@.',
453
+    'info_publie_1' => '[@nom_site_spip@] PUBLIKIGAS : @titre@',
454
+    'info_publie_2' => 'Artikolo publikigita
455 455
 --------------',
456
-	'info_rechercher' => 'Serĉi',
457
-	'info_rechercher_02' => 'Serĉi :',
458
-	'info_remplacer_vignette' => 'Anstataŭi la defaŭltan vinjeton per propra vinjeto :',
459
-	'info_rubriques_nb' => '@nb@ rubrikoj',
460
-	'info_rubriques_un' => '1 rubriko',
461
-	'info_sans_titre_2' => 'sen titolo',
462
-	'info_selectionner_fichier' => 'Vi povas selekti dosieron el la dosierujo @upload@',
463
-	'info_selectionner_fichier_2' => 'Elektu dosieron :',
464
-	'info_sites_nb' => '@nb@ retejoj',
465
-	'info_sites_un' => '1 retejo',
466
-	'info_supprimer_vignette' => 'forigi la vinjeton',
467
-	'info_symbole_bleu' => 'La <b>blua</b> simbolo indikas <b>memorigilon</b> : tio estas al vi persone adresata memoriga mesaĝo.',
468
-	'info_symbole_jaune' => 'La <b>flava</b> simbolo indikas <b>anoncon al ĉiuj redaktantoj</b> : modifebla de ĉiuj mastrumantoj, kaj videbla de ĉiuj redaktantoj.',
469
-	'info_symbole_vert' => 'La <b>verda</b> simbolo indikas la <b>mesaĝojn interŝanĝitajn kun aliaj uzantoj</b> de la retejo.',
470
-	'info_telecharger_nouveau_logo' => 'Alŝuti novan vinjeton :',
471
-	'info_telecharger_ordinateur' => 'Alŝuti ekde via komputilo :',
472
-	'info_tous_resultats_enregistres' => '[ĉiuj rezultoj estas registritaj]',
473
-	'info_tout_afficher' => 'Ĉion afiŝi',
474
-	'info_travaux_texte' => 'Tiu retejo ne jam estas konfigurita. Bonvolu reveni poste...',
475
-	'info_travaux_titre' => 'Retejo prilaborata ',
476
-	'info_trop_resultat' => 'Tro da rezultoj por "@cherche_mot@" ; bonvolu fajnigi la serĉokriteriojn.',
477
-	'info_utilisation_messagerie_interne' => 'Vi uzas la internan poŝton de tiu ĉi retejo.',
478
-	'info_valider_lien' => 'validigi tiun ĉi ligilon',
479
-	'info_verifier_image' => ', bonvolu kontroli ĉu viaj bildoj estas trafe transigitaj.',
480
-	'info_vignette_defaut' => 'Defaŭlta vinjeto',
481
-	'info_vignette_personnalisee' => 'Persona vinjeto',
482
-	'info_visite' => 'vizito :',
483
-	'info_vos_rendez_vous' => 'Viaj estontaj rendevuoj',
484
-	'infos_vos_pense_bete' => 'Viaj memorigiloj',
456
+    'info_rechercher' => 'Serĉi',
457
+    'info_rechercher_02' => 'Serĉi :',
458
+    'info_remplacer_vignette' => 'Anstataŭi la defaŭltan vinjeton per propra vinjeto :',
459
+    'info_rubriques_nb' => '@nb@ rubrikoj',
460
+    'info_rubriques_un' => '1 rubriko',
461
+    'info_sans_titre_2' => 'sen titolo',
462
+    'info_selectionner_fichier' => 'Vi povas selekti dosieron el la dosierujo @upload@',
463
+    'info_selectionner_fichier_2' => 'Elektu dosieron :',
464
+    'info_sites_nb' => '@nb@ retejoj',
465
+    'info_sites_un' => '1 retejo',
466
+    'info_supprimer_vignette' => 'forigi la vinjeton',
467
+    'info_symbole_bleu' => 'La <b>blua</b> simbolo indikas <b>memorigilon</b> : tio estas al vi persone adresata memoriga mesaĝo.',
468
+    'info_symbole_jaune' => 'La <b>flava</b> simbolo indikas <b>anoncon al ĉiuj redaktantoj</b> : modifebla de ĉiuj mastrumantoj, kaj videbla de ĉiuj redaktantoj.',
469
+    'info_symbole_vert' => 'La <b>verda</b> simbolo indikas la <b>mesaĝojn interŝanĝitajn kun aliaj uzantoj</b> de la retejo.',
470
+    'info_telecharger_nouveau_logo' => 'Alŝuti novan vinjeton :',
471
+    'info_telecharger_ordinateur' => 'Alŝuti ekde via komputilo :',
472
+    'info_tous_resultats_enregistres' => '[ĉiuj rezultoj estas registritaj]',
473
+    'info_tout_afficher' => 'Ĉion afiŝi',
474
+    'info_travaux_texte' => 'Tiu retejo ne jam estas konfigurita. Bonvolu reveni poste...',
475
+    'info_travaux_titre' => 'Retejo prilaborata ',
476
+    'info_trop_resultat' => 'Tro da rezultoj por "@cherche_mot@" ; bonvolu fajnigi la serĉokriteriojn.',
477
+    'info_utilisation_messagerie_interne' => 'Vi uzas la internan poŝton de tiu ĉi retejo.',
478
+    'info_valider_lien' => 'validigi tiun ĉi ligilon',
479
+    'info_verifier_image' => ', bonvolu kontroli ĉu viaj bildoj estas trafe transigitaj.',
480
+    'info_vignette_defaut' => 'Defaŭlta vinjeto',
481
+    'info_vignette_personnalisee' => 'Persona vinjeto',
482
+    'info_visite' => 'vizito :',
483
+    'info_vos_rendez_vous' => 'Viaj estontaj rendevuoj',
484
+    'infos_vos_pense_bete' => 'Viaj memorigiloj',
485 485
 
486
-	// L
487
-	'label_ajout_id_rapide' => 'Rapida aldono',
488
-	'label_poids_fichier' => 'Grandeco',
489
-	'lien_afficher_icones_seuls' => 'Afiŝi nur la piktogramojn',
490
-	'lien_afficher_texte_icones' => 'Afiŝi la piktogramojn kaj la tekston',
491
-	'lien_afficher_texte_seul' => 'Afiŝi nur la tekston',
492
-	'lien_liberer' => 'liberigi',
493
-	'lien_liberer_tous' => 'Liberigi ĉiujn',
494
-	'lien_nouvea_pense_bete' => 'NOVA MEMORIGILO',
495
-	'lien_nouveau_message' => 'NOVA MESAĜO',
496
-	'lien_nouvelle_annonce' => 'NOVA ANONCO',
497
-	'lien_petitions' => 'PETSKRIBO',
498
-	'lien_popularite' => 'populareco : @popularite@%',
499
-	'lien_racine_site' => 'RADIKO DE LA RETEJO',
500
-	'lien_reessayer' => 'reprovi',
501
-	'lien_repondre_message' => 'Respondi al tiu mesaĝo',
502
-	'lien_supprimer' => 'forigi',
503
-	'lien_tout_afficher' => 'Afiŝi ĉion',
504
-	'lien_visite_site' => 'viziti tiun retejon',
505
-	'lien_visites' => '@visites@ vizitoj',
506
-	'lien_voir_auteur' => 'Vidi tiun aŭtoron',
507
-	'ligne' => 'Linio',
508
-	'login' => 'Ensaluti',
509
-	'login_acces_prive' => 'aliro al la privata spaco',
510
-	'login_autre_identifiant' => 'ensaluti per alia salutnomo',
511
-	'login_cookie_accepte' => 'Bonvolu agordi vian retumilon por ke ĝi akceptu ilin (almenaŭ por tiu ĉi retejo).',
512
-	'login_cookie_oblige' => 'Por sekure ensalutiĝi en tiu retejo, vi devas akcepti la kuketojn.',
513
-	'login_deconnexion_ok' => 'Elsalutinta.',
514
-	'login_erreur_pass' => 'Pasvort-eraro.',
515
-	'login_espace_prive' => 'privata spaco',
516
-	'login_identifiant_inconnu' => 'La salutnomo « @login@ » estas nekonata.',
517
-	'login_login' => 'Salutnomo :',
518
-	'login_login2' => 'Salutnomo aŭ retpoŝtadreso :',
519
-	'login_login_pass_incorrect' => '(Salutnomo aŭ pasvorto ne valida.)',
520
-	'login_motpasseoublie' => 'ĉu pasvorto forgesita ?',
521
-	'login_non_securise' => 'Atentu, tiu formularo ne estas sekurigita ;.
486
+    // L
487
+    'label_ajout_id_rapide' => 'Rapida aldono',
488
+    'label_poids_fichier' => 'Grandeco',
489
+    'lien_afficher_icones_seuls' => 'Afiŝi nur la piktogramojn',
490
+    'lien_afficher_texte_icones' => 'Afiŝi la piktogramojn kaj la tekston',
491
+    'lien_afficher_texte_seul' => 'Afiŝi nur la tekston',
492
+    'lien_liberer' => 'liberigi',
493
+    'lien_liberer_tous' => 'Liberigi ĉiujn',
494
+    'lien_nouvea_pense_bete' => 'NOVA MEMORIGILO',
495
+    'lien_nouveau_message' => 'NOVA MESAĜO',
496
+    'lien_nouvelle_annonce' => 'NOVA ANONCO',
497
+    'lien_petitions' => 'PETSKRIBO',
498
+    'lien_popularite' => 'populareco : @popularite@%',
499
+    'lien_racine_site' => 'RADIKO DE LA RETEJO',
500
+    'lien_reessayer' => 'reprovi',
501
+    'lien_repondre_message' => 'Respondi al tiu mesaĝo',
502
+    'lien_supprimer' => 'forigi',
503
+    'lien_tout_afficher' => 'Afiŝi ĉion',
504
+    'lien_visite_site' => 'viziti tiun retejon',
505
+    'lien_visites' => '@visites@ vizitoj',
506
+    'lien_voir_auteur' => 'Vidi tiun aŭtoron',
507
+    'ligne' => 'Linio',
508
+    'login' => 'Ensaluti',
509
+    'login_acces_prive' => 'aliro al la privata spaco',
510
+    'login_autre_identifiant' => 'ensaluti per alia salutnomo',
511
+    'login_cookie_accepte' => 'Bonvolu agordi vian retumilon por ke ĝi akceptu ilin (almenaŭ por tiu ĉi retejo).',
512
+    'login_cookie_oblige' => 'Por sekure ensalutiĝi en tiu retejo, vi devas akcepti la kuketojn.',
513
+    'login_deconnexion_ok' => 'Elsalutinta.',
514
+    'login_erreur_pass' => 'Pasvort-eraro.',
515
+    'login_espace_prive' => 'privata spaco',
516
+    'login_identifiant_inconnu' => 'La salutnomo « @login@ » estas nekonata.',
517
+    'login_login' => 'Salutnomo :',
518
+    'login_login2' => 'Salutnomo aŭ retpoŝtadreso :',
519
+    'login_login_pass_incorrect' => '(Salutnomo aŭ pasvorto ne valida.)',
520
+    'login_motpasseoublie' => 'ĉu pasvorto forgesita ?',
521
+    'login_non_securise' => 'Atentu, tiu formularo ne estas sekurigita ;.
522 522
    Se vi ne volas ke via pasvorto estu fraŭde
523 523
    interkaptita ĉe la reto, bonvolu aktivigi
524 524
    Javascript-on en via retumilo',
525
-	'login_nouvelle_tentative' => 'Nova provo',
526
-	'login_par_ici' => 'Vi estas registrita... ĉi tien...',
527
-	'login_pass2' => 'Pasvorto :',
528
-	'login_preferez_refuser' => '<b>Se vi preferas rifuzi kuketojn</b>, alia konektometodo (malpli sekura) estas je via dispono :',
529
-	'login_recharger' => 'freŝigi tiun ĉi paĝon',
530
-	'login_rester_identifie' => 'Resti ensalutinta kelkajn tagojn', # MODIF
531
-	'login_retour_public' => 'Reen al la publika spaco',
532
-	'login_retour_site' => 'Reen al la publika spaco',
533
-	'login_retoursitepublic' => 'reen al la publika spaco',
534
-	'login_sans_cookie' => 'Ensaluto sen kuketo',
535
-	'login_securise' => 'Sekura salutnomo',
536
-	'login_sinscrire' => 'registriĝi',
537
-	'login_test_navigateur' => 'testo retumilo/rekonektiĝo',
538
-	'login_verifiez_navigateur' => '(Kontrolu tamen ke via retumilo ne memoras pri via pasvorto...)',
525
+    'login_nouvelle_tentative' => 'Nova provo',
526
+    'login_par_ici' => 'Vi estas registrita... ĉi tien...',
527
+    'login_pass2' => 'Pasvorto :',
528
+    'login_preferez_refuser' => '<b>Se vi preferas rifuzi kuketojn</b>, alia konektometodo (malpli sekura) estas je via dispono :',
529
+    'login_recharger' => 'freŝigi tiun ĉi paĝon',
530
+    'login_rester_identifie' => 'Resti ensalutinta kelkajn tagojn', # MODIF
531
+    'login_retour_public' => 'Reen al la publika spaco',
532
+    'login_retour_site' => 'Reen al la publika spaco',
533
+    'login_retoursitepublic' => 'reen al la publika spaco',
534
+    'login_sans_cookie' => 'Ensaluto sen kuketo',
535
+    'login_securise' => 'Sekura salutnomo',
536
+    'login_sinscrire' => 'registriĝi',
537
+    'login_test_navigateur' => 'testo retumilo/rekonektiĝo',
538
+    'login_verifiez_navigateur' => '(Kontrolu tamen ke via retumilo ne memoras pri via pasvorto...)',
539 539
 
540
-	// M
541
-	'masquer_colonne' => 'Kaŝi tiun ĉi kolumnon',
542
-	'masquer_trad' => 'kaŝi la tradukojn',
543
-	'message_nouveaux_identifiants_echec' => 'Ne eblas krei novajn ensalutilojn.',
544
-	'message_nouveaux_identifiants_echec_envoi' => 'Ne eblis sendi la novajn ensalutilojn.',
545
-	'message_nouveaux_identifiants_ok' => 'La novaj ensalutilojn estis senditaj al @email@.',
546
-	'module_fichiers_langues' => 'Dosieroj de lingvo',
540
+    // M
541
+    'masquer_colonne' => 'Kaŝi tiun ĉi kolumnon',
542
+    'masquer_trad' => 'kaŝi la tradukojn',
543
+    'message_nouveaux_identifiants_echec' => 'Ne eblas krei novajn ensalutilojn.',
544
+    'message_nouveaux_identifiants_echec_envoi' => 'Ne eblis sendi la novajn ensalutilojn.',
545
+    'message_nouveaux_identifiants_ok' => 'La novaj ensalutilojn estis senditaj al @email@.',
546
+    'module_fichiers_langues' => 'Dosieroj de lingvo',
547 547
 
548
-	// N
549
-	'navigateur_pas_redirige' => 'Se via retumilo ne redirektiĝas, daŭrigu musklakante ĉi tie.',
550
-	'numero' => 'Numero',
548
+    // N
549
+    'navigateur_pas_redirige' => 'Se via retumilo ne redirektiĝas, daŭrigu musklakante ĉi tie.',
550
+    'numero' => 'Numero',
551 551
 
552
-	// O
553
-	'occurence' => 'Trafo',
554
-	'onglet_affacer_base' => 'Forigi la datenbazon',
555
-	'onglet_auteur' => 'La aŭtoro',
556
-	'onglet_contenu_site' => 'Enhavo de la retejo',
557
-	'onglet_evolution_visite_mod' => 'Evoluado',
558
-	'onglet_fonctions_avances' => 'Ampleksaj funkcioj',
559
-	'onglet_informations_personnelles' => 'Personaj datenoj',
560
-	'onglet_interactivite' => 'Interagado',
561
-	'onglet_messagerie' => 'Mesaĝilo',
562
-	'onglet_repartition_rubrique' => 'Distribuo laŭ rubrikoj',
563
-	'onglet_save_restaur_base' => 'Savkopii/restaŭri la datenbazon',
564
-	'onglet_vider_cache' => 'Malplenigi la staplon',
552
+    // O
553
+    'occurence' => 'Trafo',
554
+    'onglet_affacer_base' => 'Forigi la datenbazon',
555
+    'onglet_auteur' => 'La aŭtoro',
556
+    'onglet_contenu_site' => 'Enhavo de la retejo',
557
+    'onglet_evolution_visite_mod' => 'Evoluado',
558
+    'onglet_fonctions_avances' => 'Ampleksaj funkcioj',
559
+    'onglet_informations_personnelles' => 'Personaj datenoj',
560
+    'onglet_interactivite' => 'Interagado',
561
+    'onglet_messagerie' => 'Mesaĝilo',
562
+    'onglet_repartition_rubrique' => 'Distribuo laŭ rubrikoj',
563
+    'onglet_save_restaur_base' => 'Savkopii/restaŭri la datenbazon',
564
+    'onglet_vider_cache' => 'Malplenigi la staplon',
565 565
 
566
-	// P
567
-	'pass_choix_pass' => 'Bonvolu elekti vian novan pasvorton :',
568
-	'pass_erreur' => 'Eraro',
569
-	'pass_erreur_acces_refuse' => '<b>Eraro :</b> vi ne plu havas aliron al tiu retejo.',
570
-	'pass_erreur_code_inconnu' => '<b>Eraro :</b> tiu kodo kongruas kun neniu el la vizitantoj rajtantaj aliri tiun ĉi retejon.',
571
-	'pass_erreur_non_enregistre' => '<b>Eraro :</b> la retpoŝtadreso <tt>@email_oubli@</tt> ne estas registrita ĉi tie.',
572
-	'pass_erreur_non_valide' => '<b>Eraro :</b> tiu retpoŝtadreso <tt>@email_oubli@</tt> ne validas !',
573
-	'pass_erreur_probleme_technique' => '<b>Eraro :</b> pro teknika problemo, la retmesaĝo ne povas esti sendata.',
574
-	'pass_espace_prive_bla' => 'La privata spaco de tiu ĉi retejo estas malfermita al
566
+    // P
567
+    'pass_choix_pass' => 'Bonvolu elekti vian novan pasvorton :',
568
+    'pass_erreur' => 'Eraro',
569
+    'pass_erreur_acces_refuse' => '<b>Eraro :</b> vi ne plu havas aliron al tiu retejo.',
570
+    'pass_erreur_code_inconnu' => '<b>Eraro :</b> tiu kodo kongruas kun neniu el la vizitantoj rajtantaj aliri tiun ĉi retejon.',
571
+    'pass_erreur_non_enregistre' => '<b>Eraro :</b> la retpoŝtadreso <tt>@email_oubli@</tt> ne estas registrita ĉi tie.',
572
+    'pass_erreur_non_valide' => '<b>Eraro :</b> tiu retpoŝtadreso <tt>@email_oubli@</tt> ne validas !',
573
+    'pass_erreur_probleme_technique' => '<b>Eraro :</b> pro teknika problemo, la retmesaĝo ne povas esti sendata.',
574
+    'pass_espace_prive_bla' => 'La privata spaco de tiu ĉi retejo estas malfermita al
575 575
   vizitantoj, post ties registriĝo. Tio farita, vi povos
576 576
   konsulti la redaktatajn artikolojn, proponi artikolojn
577 577
   kaj partopreni en ĉiuj forumoj.',
578
-	'pass_forum_bla' => 'Vi petis por kontribui en forumo
578
+    'pass_forum_bla' => 'Vi petis por kontribui en forumo
579 579
   rezervita al registritaj vizitantoj.',
580
-	'pass_indiquez_cidessous' => 'Indiku ĉi-sube la retpoŝtadreson laŭ kiu vi
580
+    'pass_indiquez_cidessous' => 'Indiku ĉi-sube la retpoŝtadreson laŭ kiu vi
581 581
    antaŭe registriĝis. Vi
582 582
    ricevos retmesaĝon kiu indikos al vi kion fari por
583 583
    reakiri vian alir-rajton.',
584
-	'pass_mail_passcookie' => '(tio ĉi estas aŭtomata mesaĝo)
584
+    'pass_mail_passcookie' => '(tio ĉi estas aŭtomata mesaĝo)
585 585
 Por reakiri alireblon al la retejo
586 586
 @nom_site_spip@ (@adresse_site@)
587 587
 
@@ -593,144 +593,144 @@  discard block
 block discarded – undo
593 593
 kaj ensaluti.
594 594
 
595 595
 ',
596
-	'pass_mot_oublie' => 'Pasvorto forgesita',
597
-	'pass_nouveau_enregistre' => 'Via nova pasvorto estas registrita.',
598
-	'pass_nouveau_pass' => 'Nova pasvorto',
599
-	'pass_ok' => 'JES',
600
-	'pass_oubli_mot' => 'Pasvorto-forgeso',
601
-	'pass_procedure_changer' => 'Por ŝanĝi vian pasvorton, specifu al ni la asociitan retpoŝtadreson el via konto.',
602
-	'pass_quitter_fenetre' => 'Forlasi tiun fenestron',
603
-	'pass_rappel_login' => 'Memoru : via ensalutilo (salutnomo) estas « @login@ ».',
604
-	'pass_recevoir_mail' => 'Vi ricevos retmesaĝon indikantan al vi kiel retrovi vian aliron al la retejo.', # MODIF
605
-	'pass_retour_public' => 'Reen al la publika spaco',
606
-	'pass_rien_a_faire_ici' => 'Nenion por fari ĉi tie.',
607
-	'pass_vousinscrire' => 'Registriĝi ĉe tiu retejo',
608
-	'precedent' => 'antaŭan',
609
-	'previsualisation' => 'Antaŭrigardo',
610
-	'previsualiser' => 'Antaŭrigardi',
596
+    'pass_mot_oublie' => 'Pasvorto forgesita',
597
+    'pass_nouveau_enregistre' => 'Via nova pasvorto estas registrita.',
598
+    'pass_nouveau_pass' => 'Nova pasvorto',
599
+    'pass_ok' => 'JES',
600
+    'pass_oubli_mot' => 'Pasvorto-forgeso',
601
+    'pass_procedure_changer' => 'Por ŝanĝi vian pasvorton, specifu al ni la asociitan retpoŝtadreson el via konto.',
602
+    'pass_quitter_fenetre' => 'Forlasi tiun fenestron',
603
+    'pass_rappel_login' => 'Memoru : via ensalutilo (salutnomo) estas « @login@ ».',
604
+    'pass_recevoir_mail' => 'Vi ricevos retmesaĝon indikantan al vi kiel retrovi vian aliron al la retejo.', # MODIF
605
+    'pass_retour_public' => 'Reen al la publika spaco',
606
+    'pass_rien_a_faire_ici' => 'Nenion por fari ĉi tie.',
607
+    'pass_vousinscrire' => 'Registriĝi ĉe tiu retejo',
608
+    'precedent' => 'antaŭan',
609
+    'previsualisation' => 'Antaŭrigardo',
610
+    'previsualiser' => 'Antaŭrigardi',
611 611
 
612
-	// R
613
-	'retour' => 'Reen',
612
+    // R
613
+    'retour' => 'Reen',
614 614
 
615
-	// S
616
-	'spip_conforme_dtd' => 'SPIP konsideras tiun dokumenton konforma al sia DOCTYPE :',
617
-	'squelette' => 'skeleto',
618
-	'squelette_inclus_ligne' => 'skeleto inkluzivita, linio',
619
-	'squelette_ligne' => 'skeleto, linio',
620
-	'stats_visites_et_popularite' => '@visites@ vizitoj ; populareco : @popularite@',
621
-	'suivant' => 'sekvanta',
615
+    // S
616
+    'spip_conforme_dtd' => 'SPIP konsideras tiun dokumenton konforma al sia DOCTYPE :',
617
+    'squelette' => 'skeleto',
618
+    'squelette_inclus_ligne' => 'skeleto inkluzivita, linio',
619
+    'squelette_ligne' => 'skeleto, linio',
620
+    'stats_visites_et_popularite' => '@visites@ vizitoj ; populareco : @popularite@',
621
+    'suivant' => 'sekvanta',
622 622
 
623
-	// T
624
-	'taille_go' => '@taille@ Go',
625
-	'taille_ko' => '@taille@ kb',
626
-	'taille_mo' => '@taille@ Mb',
627
-	'taille_octets' => '@taille@ bitokoj',
628
-	'texte_actualite_site_1' => 'Kiam vi estos kutimiĝinta kun la interfaco, vi povos musklaki sur « ',
629
-	'texte_actualite_site_2' => 'kompleta interfaco',
630
-	'texte_actualite_site_3' => ' » por malfermi pliajn eblecojn.',
631
-	'texte_creation_automatique_vignette' => 'La aŭtomata kreado de antaŭrigardaj vinjetoj estas aktivigita ĉe tiu ĉi retejo. Se vi instalas pere de tiu ĉi formularo bildojn je la formato(j) @gd_formats@, ili estos akompanataj de vinjeto kun maksimuma grandeco de @taille_preview@ bilderoj.',
632
-	'texte_documents_associes' => 'La sekvantaj dokumentoj estas asociitaj al la artikolo,
623
+    // T
624
+    'taille_go' => '@taille@ Go',
625
+    'taille_ko' => '@taille@ kb',
626
+    'taille_mo' => '@taille@ Mb',
627
+    'taille_octets' => '@taille@ bitokoj',
628
+    'texte_actualite_site_1' => 'Kiam vi estos kutimiĝinta kun la interfaco, vi povos musklaki sur « ',
629
+    'texte_actualite_site_2' => 'kompleta interfaco',
630
+    'texte_actualite_site_3' => ' » por malfermi pliajn eblecojn.',
631
+    'texte_creation_automatique_vignette' => 'La aŭtomata kreado de antaŭrigardaj vinjetoj estas aktivigita ĉe tiu ĉi retejo. Se vi instalas pere de tiu ĉi formularo bildojn je la formato(j) @gd_formats@, ili estos akompanataj de vinjeto kun maksimuma grandeco de @taille_preview@ bilderoj.',
632
+    'texte_documents_associes' => 'La sekvantaj dokumentoj estas asociitaj al la artikolo,
633 633
     sed ili ne estis rekte enmetitaj en ĝin.
634 634
     Laŭ la enpaĝigo de la publika spaco,
635 635
     ili povos aperi en formo de alkroĉitaj dokumentoj.',
636
-	'texte_erreur_mise_niveau_base' => 'Datenbazo-eraro dum la alniveligo.
636
+    'texte_erreur_mise_niveau_base' => 'Datenbazo-eraro dum la alniveligo.
637 637
   La bildo <b>@fichier@</b> ne transŝutiĝis (artikolo @id_article@).
638 638
   Bone notu tiun referencon, reprovu la alniveligon,
639 639
   kaj fine kontrolu ke la bildoj plu aperu
640 640
 en la artikoloj.',
641
-	'texte_erreur_visiteur' => 'Vi provis eniri la privatan spacon pere de ne alir-rajtiga salutnomo.',
642
-	'texte_inc_auth_1' => 'Vi ensalutis laŭ la
641
+    'texte_erreur_visiteur' => 'Vi provis eniri la privatan spacon pere de ne alir-rajtiga salutnomo.',
642
+    'texte_inc_auth_1' => 'Vi ensalutis laŭ la
643 643
   salutnomo <b>@auth_login@</b>, sed tiu ne/ne plu ekzistas en la datenbazo.
644 644
   Provu',
645
-	'texte_inc_auth_2' => 'rekonektiĝi',
646
-	'texte_inc_auth_3' => ', post esti eventuale ferminta kaj
645
+    'texte_inc_auth_2' => 'rekonektiĝi',
646
+    'texte_inc_auth_3' => ', post esti eventuale ferminta kaj
647 647
   restartiginta via retumilon.',
648
-	'texte_inc_config' => 'La ŝanĝoj faritaj en tiuj ĉi paĝoj influas grave la
648
+    'texte_inc_config' => 'La ŝanĝoj faritaj en tiuj ĉi paĝoj influas grave la
649 649
  funkciadon de via retejo. Ni konsilas al vi ne plu interveni antaŭ ol esti pli
650 650
  kutimiĝinta pri la funkciado de la SPIP-sistemo. <br /><br /><b>Pli
651 651
  ĝenerale, estas tre konsilinde lasi la mastrumadon de tiuj ĉi paĝoj
652 652
 sub la respondeco de la ĉefa retejestro .</b>',
653
-	'texte_inc_meta_1' => 'La sistemo detektis eraron dum skribado de la dosiero <code>@fichier@</code>. Bonvolu, kiel mastrumanto de la retejo,',
654
-	'texte_inc_meta_2' => 'kontroli la skriborajtojn',
655
-	'texte_inc_meta_3' => 'en la dosierujo <code>@repertoire@</code>.',
656
-	'texte_statut_en_cours_redaction' => 'Redaktataj',
657
-	'texte_statut_poubelle' => 'en rubujo',
658
-	'texte_statut_propose_evaluation' => 'proponita por taksado',
659
-	'texte_statut_publie' => 'rete publikigita',
660
-	'texte_statut_refuse' => 'rifuzita',
661
-	'titre_ajouter_mot_cle' => 'ALDONI ŜLOSILVORTON :',
662
-	'titre_cadre_raccourcis' => 'RAPIDAJ ALIROJ :',
663
-	'titre_changer_couleur_interface' => 'Ŝanĝi la koloron de la interfaco',
664
-	'titre_image_admin_article' => 'Vi povas mastrumi tiun ĉi artikolon',
665
-	'titre_image_administrateur' => 'Mastrumanto',
666
-	'titre_image_aide' => 'Helpo pri tiu elemento',
667
-	'titre_image_auteur_supprime' => 'Aŭtoro forigita',
668
-	'titre_image_redacteur' => 'Redaktanto sen alireblo',
669
-	'titre_image_redacteur_02' => 'Redaktanto',
670
-	'titre_image_selecteur' => 'Montri la liston',
671
-	'titre_image_visiteur' => 'Vizitanto',
672
-	'titre_joindre_document' => 'ALDONI DOKUMENTON',
673
-	'titre_mots_cles' => 'ŜLOSILVORTOJ',
674
-	'titre_probleme_technique' => 'Atentu : teknika problemo  (SQL-servilo) malhelpas la aliron al tiu parto de la retejo. Dankon pro via komprenemo.',
675
-	'titre_publier_document' => 'PUBLIKIGI DOKUMENTON EN TIU ĈI RUBRIKO',
676
-	'titre_signatures_attente' => 'Subskriboj validotaj',
677
-	'titre_signatures_confirmees' => 'Subskriboj konfirmitaj',
678
-	'titre_statistiques' => 'Statistikoj de la retejo',
679
-	'titre_titre_document' => 'Titolo de la dokumento :',
680
-	'todo' => 'venonta',
681
-	'trad_definir_reference' => 'Elekti „@titre@“ kiel referenco de la tradukoj',
682
-	'trad_reference' => '(referenco de la traduktoj)',
653
+    'texte_inc_meta_1' => 'La sistemo detektis eraron dum skribado de la dosiero <code>@fichier@</code>. Bonvolu, kiel mastrumanto de la retejo,',
654
+    'texte_inc_meta_2' => 'kontroli la skriborajtojn',
655
+    'texte_inc_meta_3' => 'en la dosierujo <code>@repertoire@</code>.',
656
+    'texte_statut_en_cours_redaction' => 'Redaktataj',
657
+    'texte_statut_poubelle' => 'en rubujo',
658
+    'texte_statut_propose_evaluation' => 'proponita por taksado',
659
+    'texte_statut_publie' => 'rete publikigita',
660
+    'texte_statut_refuse' => 'rifuzita',
661
+    'titre_ajouter_mot_cle' => 'ALDONI ŜLOSILVORTON :',
662
+    'titre_cadre_raccourcis' => 'RAPIDAJ ALIROJ :',
663
+    'titre_changer_couleur_interface' => 'Ŝanĝi la koloron de la interfaco',
664
+    'titre_image_admin_article' => 'Vi povas mastrumi tiun ĉi artikolon',
665
+    'titre_image_administrateur' => 'Mastrumanto',
666
+    'titre_image_aide' => 'Helpo pri tiu elemento',
667
+    'titre_image_auteur_supprime' => 'Aŭtoro forigita',
668
+    'titre_image_redacteur' => 'Redaktanto sen alireblo',
669
+    'titre_image_redacteur_02' => 'Redaktanto',
670
+    'titre_image_selecteur' => 'Montri la liston',
671
+    'titre_image_visiteur' => 'Vizitanto',
672
+    'titre_joindre_document' => 'ALDONI DOKUMENTON',
673
+    'titre_mots_cles' => 'ŜLOSILVORTOJ',
674
+    'titre_probleme_technique' => 'Atentu : teknika problemo  (SQL-servilo) malhelpas la aliron al tiu parto de la retejo. Dankon pro via komprenemo.',
675
+    'titre_publier_document' => 'PUBLIKIGI DOKUMENTON EN TIU ĈI RUBRIKO',
676
+    'titre_signatures_attente' => 'Subskriboj validotaj',
677
+    'titre_signatures_confirmees' => 'Subskriboj konfirmitaj',
678
+    'titre_statistiques' => 'Statistikoj de la retejo',
679
+    'titre_titre_document' => 'Titolo de la dokumento :',
680
+    'todo' => 'venonta',
681
+    'trad_definir_reference' => 'Elekti „@titre@“ kiel referenco de la tradukoj',
682
+    'trad_reference' => '(referenco de la traduktoj)',
683 683
 
684
-	// U
685
-	'upload_limit' => 'Tiu dosiero estas tro granda por la servilo : la maksimuma dosiergrando, kiam oni alŝutas, estas @max@.',
684
+    // U
685
+    'upload_limit' => 'Tiu dosiero estas tro granda por la servilo : la maksimuma dosiergrando, kiam oni alŝutas, estas @max@.',
686 686
 
687
-	// Z
688
-	'zbug_balise_b_aval' => ' : posta B marko',
689
-	'zbug_balise_inexistante' => 'Marko @balise@ malbone deklarita por @from@',
690
-	'zbug_balise_sans_argument' => 'Mankas argumento en la marko @balise@',
691
-	'zbug_boucle' => 'iteracio',
692
-	'zbug_boucle_recursive_undef' => 'Nedifinita rekursia iteracio : @nom@',
693
-	'zbug_calcul' => 'komputado',
694
-	'zbug_champ_hors_boucle' => 'Kampo @champ@ eksteras iteracion',
695
-	'zbug_champ_hors_motif' => 'Kampo @champ@ eksteras kontekston @motif@',
696
-	'zbug_code' => 'kodo',
697
-	'zbug_critere_inconnu' => 'Nekonata kriterio @critere@',
698
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} pri tabelo sen atoma ĉefŝlosilo',
699
-	'zbug_distant_interdit' => 'Ago ĉe tiu ekstera datenbazo malpermesata',
700
-	'zbug_doublon_table_sans_cle_primaire' => 'Duobloj uzitaj ĉe tabelo, kiu ne havas simplan ĉefŝlosilon',
701
-	'zbug_doublon_table_sans_index' => 'Duoblaĵoj en la datentabelo sen indekso',
702
-	'zbug_erreur_boucle_double' => 'Duobla difino de la interacio @id@',
703
-	'zbug_erreur_boucle_fermant' => 'Iteracio @id@ ne fermita',
704
-	'zbug_erreur_boucle_syntaxe' => 'Sintakso de la iteracia @id@ ne valida',
705
-	'zbug_erreur_compilation' => 'Kompil-eraro',
706
-	'zbug_erreur_execution_page' => 'Eraro dum plenumo',
707
-	'zbug_erreur_filtre' => 'Filtrilo @filtre@ nedifinita',
708
-	'zbug_erreur_meme_parent' => 'La kriterio {meme_parent} nur aplikiĝas je iteracioj (FORUMS) aŭ (RUBRIQUES)',
709
-	'zbug_erreur_squelette' => 'Eraro(j) en la skeleto',
710
-	'zbug_hors_compilation' => 'Ne kompilita',
711
-	'zbug_info_erreur_squelette' => 'Eraro ĉe la retejo',
712
-	'zbug_inversion_ordre_inexistant' => 'Inversigo de ne ekzistanta ordo',
713
-	'zbug_pagination_sans_critere' => 'Marko #PAGINATION senkriteria {pagination} aŭ uzata en rekursia iteracio',
714
-	'zbug_parametres_inclus_incorrects' => 'Ne korektaj inkludaj parametroj : @param@',
715
-	'zbug_profile' => 'Kalkuldaŭro : @time@',
716
-	'zbug_resultat' => 'rezulto',
717
-	'zbug_serveur_indefini' => 'Nedifinata SQL-servilo',
718
-	'zbug_statistiques' => 'statistikoj pri SQL-informpetoj ordigitaj laŭ daŭro',
719
-	'zbug_table_inconnue' => 'nekonata SQL « @table@ » tabelo',
720
-	'zxml_connus_attributs' => 'konataj atributoj',
721
-	'zxml_de' => 'de',
722
-	'zxml_inconnu_attribut' => 'nekonataj atributoj',
723
-	'zxml_inconnu_balise' => 'ne konita marko',
724
-	'zxml_inconnu_entite' => 'ne konata ento',
725
-	'zxml_inconnu_id' => 'ne konata ID',
726
-	'zxml_mais_de' => 'sed',
727
-	'zxml_non_conforme' => 'ne kongrua kun la motivo',
728
-	'zxml_non_fils' => 'ne estas filo de',
729
-	'zxml_nonvide_balise' => 'ne malplena marko',
730
-	'zxml_obligatoire_attribut' => 'deviga atributo sed foresta en',
731
-	'zxml_succession_fils_incorrecte' => 'sinsekvo de filoj korekta',
732
-	'zxml_survoler' => 'superflugi por ekvidi korektaĵojn',
733
-	'zxml_valeur_attribut' => 'atributa valoro',
734
-	'zxml_vide_balise' => 'malplena marko',
735
-	'zxml_vu' => 'antaŭe vidita'
687
+    // Z
688
+    'zbug_balise_b_aval' => ' : posta B marko',
689
+    'zbug_balise_inexistante' => 'Marko @balise@ malbone deklarita por @from@',
690
+    'zbug_balise_sans_argument' => 'Mankas argumento en la marko @balise@',
691
+    'zbug_boucle' => 'iteracio',
692
+    'zbug_boucle_recursive_undef' => 'Nedifinita rekursia iteracio : @nom@',
693
+    'zbug_calcul' => 'komputado',
694
+    'zbug_champ_hors_boucle' => 'Kampo @champ@ eksteras iteracion',
695
+    'zbug_champ_hors_motif' => 'Kampo @champ@ eksteras kontekston @motif@',
696
+    'zbug_code' => 'kodo',
697
+    'zbug_critere_inconnu' => 'Nekonata kriterio @critere@',
698
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} pri tabelo sen atoma ĉefŝlosilo',
699
+    'zbug_distant_interdit' => 'Ago ĉe tiu ekstera datenbazo malpermesata',
700
+    'zbug_doublon_table_sans_cle_primaire' => 'Duobloj uzitaj ĉe tabelo, kiu ne havas simplan ĉefŝlosilon',
701
+    'zbug_doublon_table_sans_index' => 'Duoblaĵoj en la datentabelo sen indekso',
702
+    'zbug_erreur_boucle_double' => 'Duobla difino de la interacio @id@',
703
+    'zbug_erreur_boucle_fermant' => 'Iteracio @id@ ne fermita',
704
+    'zbug_erreur_boucle_syntaxe' => 'Sintakso de la iteracia @id@ ne valida',
705
+    'zbug_erreur_compilation' => 'Kompil-eraro',
706
+    'zbug_erreur_execution_page' => 'Eraro dum plenumo',
707
+    'zbug_erreur_filtre' => 'Filtrilo @filtre@ nedifinita',
708
+    'zbug_erreur_meme_parent' => 'La kriterio {meme_parent} nur aplikiĝas je iteracioj (FORUMS) aŭ (RUBRIQUES)',
709
+    'zbug_erreur_squelette' => 'Eraro(j) en la skeleto',
710
+    'zbug_hors_compilation' => 'Ne kompilita',
711
+    'zbug_info_erreur_squelette' => 'Eraro ĉe la retejo',
712
+    'zbug_inversion_ordre_inexistant' => 'Inversigo de ne ekzistanta ordo',
713
+    'zbug_pagination_sans_critere' => 'Marko #PAGINATION senkriteria {pagination} aŭ uzata en rekursia iteracio',
714
+    'zbug_parametres_inclus_incorrects' => 'Ne korektaj inkludaj parametroj : @param@',
715
+    'zbug_profile' => 'Kalkuldaŭro : @time@',
716
+    'zbug_resultat' => 'rezulto',
717
+    'zbug_serveur_indefini' => 'Nedifinata SQL-servilo',
718
+    'zbug_statistiques' => 'statistikoj pri SQL-informpetoj ordigitaj laŭ daŭro',
719
+    'zbug_table_inconnue' => 'nekonata SQL « @table@ » tabelo',
720
+    'zxml_connus_attributs' => 'konataj atributoj',
721
+    'zxml_de' => 'de',
722
+    'zxml_inconnu_attribut' => 'nekonataj atributoj',
723
+    'zxml_inconnu_balise' => 'ne konita marko',
724
+    'zxml_inconnu_entite' => 'ne konata ento',
725
+    'zxml_inconnu_id' => 'ne konata ID',
726
+    'zxml_mais_de' => 'sed',
727
+    'zxml_non_conforme' => 'ne kongrua kun la motivo',
728
+    'zxml_non_fils' => 'ne estas filo de',
729
+    'zxml_nonvide_balise' => 'ne malplena marko',
730
+    'zxml_obligatoire_attribut' => 'deviga atributo sed foresta en',
731
+    'zxml_succession_fils_incorrecte' => 'sinsekvo de filoj korekta',
732
+    'zxml_survoler' => 'superflugi por ekvidi korektaĵojn',
733
+    'zxml_valeur_attribut' => 'atributa valoro',
734
+    'zxml_vide_balise' => 'malplena marko',
735
+    'zxml_vu' => 'antaŭe vidita'
736 736
 );
Please login to merge, or discard this patch.
ecrire/lang/spip_br.php 1 patch
Indentation   +656 added lines, -656 removed lines patch added patch discarded remove patch
@@ -4,579 +4,579 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'access_interface_graphique' => 'Distreiñ d’an etrefas grafek klok', # Gwelloc'h e vije ober gant etrefas evit treiñ interface; heñveldra, grafek zo kalz komprenusoc'h eget kevregañ. Dreist-holl e vez komprenet gant an holl hag en implij emañ gant kalz a dud
14
-	'access_mode_texte' => 'diskouez an etrefas testenn eeun',
15
-	'admin_debug' => 'dizreinañ',
16
-	'admin_modifier_article' => 'Kemmañ ar pennad-mañ',
17
-	'admin_modifier_auteur' => 'Kemmañ ar skridaozer-mañ',
18
-	'admin_modifier_breve' => 'Kemmañ ar berrskrid-mañ',
19
-	'admin_modifier_mot' => 'Kemmañ ar ger-stur-mañ',
20
-	'admin_modifier_rubrique' => 'Kemmañ ar rubrikenn-mañ',
21
-	'admin_recalculer' => 'Hizivaat ar bajenn',
22
-	'afficher_calendrier' => 'Diskouez an deiziater',
23
-	'afficher_trad' => 'diskouez an troidigezhioù',
24
-	'alerte_maj_impossible' => '<b>Diwallit !</b> N’eus ket tu da hizivaat an diaz SQL etrezek ar stumm @version@, marteze abalamour d’ur gudenn aotre evit kemmañ an diaz titouroù. Mar plij kit e darempred gant ho herberc’hier.',
25
-	'alerte_modif_info_concourante' => 'DIWALLIT : Kemmet eo bet an titour-mañ en ul lec’h all. Setu an talvoud nevez :',
26
-	'analyse_xml' => 'Dielfennañ XML',
27
-	'annuler' => 'Nullañ',
28
-	'antispam_champ_vide' => 'Na lakait netra amañ :',
29
-	'articles_recents' => 'Pennadoù nevesañ',
30
-	'avis_1_erreur_saisie' => 'Ur fazi ho peus graet en ur skrivañ. Gwiriit ho testenn mar plij.',
31
-	'avis_archive_incorrect' => 'N’eo ket ar restr diell ur restr SPIP',
32
-	'avis_archive_invalide' => 'N’eo ket reizh ar restr diell',
33
-	'avis_attention' => 'DIWALLIT !',
34
-	'avis_champ_incorrect_type_objet' => 'Anv maezienn direizh @name@ evit un draezenn a seurt @type@',
35
-	'avis_colonne_inexistante' => 'N’eus ket eus ar bann @col@',
36
-	'avis_erreur' => 'Fazi: gwelet amañ a-is',
37
-	'avis_erreur_connexion' => 'Fazi kevreañ',
38
-	'avis_erreur_cookie' => 'kudenn toupin',
39
-	'avis_erreur_fonction_contexte' => 'Fazi programmiñ. Arabat d’an arc’hwel-mañ bezañ galvet er gendestenn-mañ.',
40
-	'avis_erreur_mysql' => 'Fazi SQL',
41
-	'avis_erreur_sauvegarde' => 'Fazi er savete (@type@ @id_objet@) !',
42
-	'avis_erreur_visiteur' => 'N’eus ket tu da dizhout al lodenn brevez',
43
-	'avis_nb_erreurs_saisie' => 'Bez ez eus @nb@ fazi en ho skrid. Gwiriit ho testenn mar plij.',
12
+    // A
13
+    'access_interface_graphique' => 'Distreiñ d’an etrefas grafek klok', # Gwelloc'h e vije ober gant etrefas evit treiñ interface; heñveldra, grafek zo kalz komprenusoc'h eget kevregañ. Dreist-holl e vez komprenet gant an holl hag en implij emañ gant kalz a dud
14
+    'access_mode_texte' => 'diskouez an etrefas testenn eeun',
15
+    'admin_debug' => 'dizreinañ',
16
+    'admin_modifier_article' => 'Kemmañ ar pennad-mañ',
17
+    'admin_modifier_auteur' => 'Kemmañ ar skridaozer-mañ',
18
+    'admin_modifier_breve' => 'Kemmañ ar berrskrid-mañ',
19
+    'admin_modifier_mot' => 'Kemmañ ar ger-stur-mañ',
20
+    'admin_modifier_rubrique' => 'Kemmañ ar rubrikenn-mañ',
21
+    'admin_recalculer' => 'Hizivaat ar bajenn',
22
+    'afficher_calendrier' => 'Diskouez an deiziater',
23
+    'afficher_trad' => 'diskouez an troidigezhioù',
24
+    'alerte_maj_impossible' => '<b>Diwallit !</b> N’eus ket tu da hizivaat an diaz SQL etrezek ar stumm @version@, marteze abalamour d’ur gudenn aotre evit kemmañ an diaz titouroù. Mar plij kit e darempred gant ho herberc’hier.',
25
+    'alerte_modif_info_concourante' => 'DIWALLIT : Kemmet eo bet an titour-mañ en ul lec’h all. Setu an talvoud nevez :',
26
+    'analyse_xml' => 'Dielfennañ XML',
27
+    'annuler' => 'Nullañ',
28
+    'antispam_champ_vide' => 'Na lakait netra amañ :',
29
+    'articles_recents' => 'Pennadoù nevesañ',
30
+    'avis_1_erreur_saisie' => 'Ur fazi ho peus graet en ur skrivañ. Gwiriit ho testenn mar plij.',
31
+    'avis_archive_incorrect' => 'N’eo ket ar restr diell ur restr SPIP',
32
+    'avis_archive_invalide' => 'N’eo ket reizh ar restr diell',
33
+    'avis_attention' => 'DIWALLIT !',
34
+    'avis_champ_incorrect_type_objet' => 'Anv maezienn direizh @name@ evit un draezenn a seurt @type@',
35
+    'avis_colonne_inexistante' => 'N’eus ket eus ar bann @col@',
36
+    'avis_erreur' => 'Fazi: gwelet amañ a-is',
37
+    'avis_erreur_connexion' => 'Fazi kevreañ',
38
+    'avis_erreur_cookie' => 'kudenn toupin',
39
+    'avis_erreur_fonction_contexte' => 'Fazi programmiñ. Arabat d’an arc’hwel-mañ bezañ galvet er gendestenn-mañ.',
40
+    'avis_erreur_mysql' => 'Fazi SQL',
41
+    'avis_erreur_sauvegarde' => 'Fazi er savete (@type@ @id_objet@) !',
42
+    'avis_erreur_visiteur' => 'N’eus ket tu da dizhout al lodenn brevez',
43
+    'avis_nb_erreurs_saisie' => 'Bez ez eus @nb@ fazi en ho skrid. Gwiriit ho testenn mar plij.',
44 44
 
45
-	// B
46
-	'barre_a_accent_grave' => 'Ouzhpennañ un A (pennlizherenn) gant un tired-boud warnañ',
47
-	'barre_aide' => 'Implijit ar berradennoù tipografek evit pinvidikaat ar pajennaozañ',
48
-	'barre_e_accent_aigu' => 'Ouzhpennañ un E (pennlizherenn) gant un tired-lemm warnañ',
49
-	'barre_eo' => 'Ouzhpennañ un E en ’O’ (munud)',
50
-	'barre_eo_maj' => 'Ouzhpennañ un E en O (pennlizherenn)',
51
-	'barre_euro' => 'Ouzhpennañ an arouezenn €',
52
-	'barre_gras' => 'Lakaat e {{druz}}',
53
-	'barre_guillemets' => 'Gronnañ gant « krochedigoù »',
54
-	'barre_guillemets_simples' => 'Gronnañ gant “krochedigoù a eil live”',
55
-	'barre_intertitre' => 'Lakaat da {{{etretitl}}}',
56
-	'barre_italic' => 'Lakaat en {italek}',
57
-	'barre_lien' => 'Treiñ e [liamm gourskrid->http://...]',
58
-	'barre_lien_input' => 'Merkit chomlec’h ho liamm (gallout a rit reiñ ar chomlec’h a-stumm gant  http://www.forzhpetra/com pe reiñ niverenn ur pennad eus al lec’hienn-mañ).',
59
-	'barre_note' => 'Lakaat da [[Notenn traoñ-pajenn]]',
60
-	'barre_paragraphe' => 'Krouiñ ur rannbennad',
61
-	'barre_quote' => '<quote>Menegiñ ur gemennadenn</quote>',
62
-	'bouton_changer' => 'Kemmañ',
63
-	'bouton_chercher' => 'Klask',
64
-	'bouton_choisir' => 'Dibab',
65
-	'bouton_deplacer' => 'Dilec’hiañ ',
66
-	'bouton_download' => 'Pellgargañ',
67
-	'bouton_enregistrer' => 'Enrollañ',
68
-	'bouton_radio_desactiver_messagerie_interne' => 'Diweredekaat ar postelerezh diabarzh',
69
-	'bouton_radio_envoi_annonces' => 'Kas ar c’hemennoù embann',
70
-	'bouton_radio_non_envoi_annonces' => 'Chom hep kas kemennoù',
71
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Chom hep kas roll an nevezinti',
72
-	'bouton_recharger_page' => 'adkargañ ar bajenn-mañ',
73
-	'bouton_telecharger' => 'Pellgargañ',
74
-	'bouton_upload' => 'Pellgas',
75
-	'bouton_valider' => 'Kadarnaat',
45
+    // B
46
+    'barre_a_accent_grave' => 'Ouzhpennañ un A (pennlizherenn) gant un tired-boud warnañ',
47
+    'barre_aide' => 'Implijit ar berradennoù tipografek evit pinvidikaat ar pajennaozañ',
48
+    'barre_e_accent_aigu' => 'Ouzhpennañ un E (pennlizherenn) gant un tired-lemm warnañ',
49
+    'barre_eo' => 'Ouzhpennañ un E en ’O’ (munud)',
50
+    'barre_eo_maj' => 'Ouzhpennañ un E en O (pennlizherenn)',
51
+    'barre_euro' => 'Ouzhpennañ an arouezenn €',
52
+    'barre_gras' => 'Lakaat e {{druz}}',
53
+    'barre_guillemets' => 'Gronnañ gant « krochedigoù »',
54
+    'barre_guillemets_simples' => 'Gronnañ gant “krochedigoù a eil live”',
55
+    'barre_intertitre' => 'Lakaat da {{{etretitl}}}',
56
+    'barre_italic' => 'Lakaat en {italek}',
57
+    'barre_lien' => 'Treiñ e [liamm gourskrid->http://...]',
58
+    'barre_lien_input' => 'Merkit chomlec’h ho liamm (gallout a rit reiñ ar chomlec’h a-stumm gant  http://www.forzhpetra/com pe reiñ niverenn ur pennad eus al lec’hienn-mañ).',
59
+    'barre_note' => 'Lakaat da [[Notenn traoñ-pajenn]]',
60
+    'barre_paragraphe' => 'Krouiñ ur rannbennad',
61
+    'barre_quote' => '<quote>Menegiñ ur gemennadenn</quote>',
62
+    'bouton_changer' => 'Kemmañ',
63
+    'bouton_chercher' => 'Klask',
64
+    'bouton_choisir' => 'Dibab',
65
+    'bouton_deplacer' => 'Dilec’hiañ ',
66
+    'bouton_download' => 'Pellgargañ',
67
+    'bouton_enregistrer' => 'Enrollañ',
68
+    'bouton_radio_desactiver_messagerie_interne' => 'Diweredekaat ar postelerezh diabarzh',
69
+    'bouton_radio_envoi_annonces' => 'Kas ar c’hemennoù embann',
70
+    'bouton_radio_non_envoi_annonces' => 'Chom hep kas kemennoù',
71
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Chom hep kas roll an nevezinti',
72
+    'bouton_recharger_page' => 'adkargañ ar bajenn-mañ',
73
+    'bouton_telecharger' => 'Pellgargañ',
74
+    'bouton_upload' => 'Pellgas',
75
+    'bouton_valider' => 'Kadarnaat',
76 76
 
77
-	// C
78
-	'cal_apresmidi' => 'endervezh',
79
-	'cal_jour_entier' => 'devezh a-bezh',
80
-	'cal_matin' => 'beure',
81
-	'cal_par_jour' => 'deiziataer deiz-ha-deiz',
82
-	'cal_par_mois' => 'deiziataer miz-ha-miz',
83
-	'cal_par_semaine' => 'deiziataer sizhun-ha-sizhun',
84
-	'choix_couleur_interface' => 'liv',
85
-	'choix_interface' => 'dibab an etrefas',
86
-	'colonne' => 'Bann',
87
-	'confirm_changer_statut' => 'Diwallit, goulennet hoc’h eus ma vo kemmet statud an elfenn-mañ. Ha mennet oc’h da genderc’hel ?',
88
-	'correcte' => 'reizh',
77
+    // C
78
+    'cal_apresmidi' => 'endervezh',
79
+    'cal_jour_entier' => 'devezh a-bezh',
80
+    'cal_matin' => 'beure',
81
+    'cal_par_jour' => 'deiziataer deiz-ha-deiz',
82
+    'cal_par_mois' => 'deiziataer miz-ha-miz',
83
+    'cal_par_semaine' => 'deiziataer sizhun-ha-sizhun',
84
+    'choix_couleur_interface' => 'liv',
85
+    'choix_interface' => 'dibab an etrefas',
86
+    'colonne' => 'Bann',
87
+    'confirm_changer_statut' => 'Diwallit, goulennet hoc’h eus ma vo kemmet statud an elfenn-mañ. Ha mennet oc’h da genderc’hel ?',
88
+    'correcte' => 'reizh',
89 89
 
90
-	// D
91
-	'date_aujourdhui' => 'hiziv',
92
-	'date_avant_jc' => 'kent J.K.',
93
-	'date_dans' => 'a-benn @delai@',
94
-	'date_de_mois_1' => '@j@ @nommois@',
95
-	'date_de_mois_10' => '@j@ @nommois@',
96
-	'date_de_mois_11' => '@j@ @nommois@',
97
-	'date_de_mois_12' => '@j@ @nommois@',
98
-	'date_de_mois_2' => '@j@ @nommois@',
99
-	'date_de_mois_3' => '@j@ @nommois@',
100
-	'date_de_mois_4' => '@j@ @nommois@',
101
-	'date_de_mois_5' => '@j@ @nommois@',
102
-	'date_de_mois_6' => '@j@ @nommois@',
103
-	'date_de_mois_7' => '@j@ @nommois@',
104
-	'date_de_mois_8' => '@j@ @nommois@',
105
-	'date_de_mois_9' => '@j@ @nommois@',
106
-	'date_demain' => 'warc’hoazh',
107
-	'date_fmt_heures_minutes' => '@h@eur@m@munut',
108
-	'date_fmt_heures_minutes_court' => '@h@h@m@',
109
-	'date_fmt_jour' => '@nomjour@ @jour@',
110
-	'date_fmt_jour_heure' => '@jour@ da @heure@',
111
-	'date_fmt_jour_heure_debut_fin' => '@jour@ adalek @heure_debut@ betek @heure_fin@',
112
-	'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ adalek @heure_debut@@dtabbr@ betek @dtend@@heure_fin@@dtabbr@',
113
-	'date_fmt_jour_mois' => '@jour@ a viz @nommois@',
114
-	'date_fmt_jour_mois_annee' => '@jour@ a viz @nommois@ @annee@',
115
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
116
-	'date_fmt_nomjour' => '@nomjour@ @date@',
117
-	'date_fmt_nomjour_date' => '@nomjour@ @date@',
118
-	'date_fmt_periode' => 'Adalek @date_debut@ betek @date_fin@',
119
-	'date_fmt_periode_abbr' => 'Adalek @dtart@@date_debut@@dtabbr@ betek @dtend@@date_fin@@dtabbr@',
120
-	'date_fmt_periode_from' => 'Adalek',
121
-	'date_fmt_periode_to' => 'betek',
122
-	'date_fmt_saison_annee' => '@saison@ @annee@',
123
-	'date_heures' => 'eur',
124
-	'date_hier' => 'dec’h',
125
-	'date_il_y_a' => '@delai@ zo',
126
-	'date_jnum1' => '1añ',
127
-	'date_jnum10' => '10',
128
-	'date_jnum11' => '11',
129
-	'date_jnum12' => '12',
130
-	'date_jnum13' => '13',
131
-	'date_jnum14' => '14',
132
-	'date_jnum15' => '15',
133
-	'date_jnum16' => '16',
134
-	'date_jnum17' => '17',
135
-	'date_jnum18' => '18',
136
-	'date_jnum19' => '19',
137
-	'date_jnum2' => 'eil',
138
-	'date_jnum20' => '20',
139
-	'date_jnum21' => '21',
140
-	'date_jnum22' => '22',
141
-	'date_jnum23' => '23',
142
-	'date_jnum24' => '24',
143
-	'date_jnum25' => '25',
144
-	'date_jnum26' => '26',
145
-	'date_jnum27' => '27',
146
-	'date_jnum28' => '28',
147
-	'date_jnum29' => '29',
148
-	'date_jnum3' => '3',
149
-	'date_jnum30' => '30',
150
-	'date_jnum31' => '31',
151
-	'date_jnum4' => '4',
152
-	'date_jnum5' => '5',
153
-	'date_jnum6' => '6',
154
-	'date_jnum7' => '7',
155
-	'date_jnum8' => '8',
156
-	'date_jnum9' => '9',
157
-	'date_jour_1' => 'Sul',
158
-	'date_jour_1_abbr' => 'Sul',
159
-	'date_jour_1_initiale' => 'S.',
160
-	'date_jour_2' => 'Lun',
161
-	'date_jour_2_abbr' => 'Lun',
162
-	'date_jour_2_initiale' => 'L.',
163
-	'date_jour_3' => 'Meurzh',
164
-	'date_jour_3_abbr' => 'Meu.',
165
-	'date_jour_3_initiale' => 'M.',
166
-	'date_jour_4' => 'Merc’her',
167
-	'date_jour_4_abbr' => 'Mer.',
168
-	'date_jour_4_initiale' => 'M.',
169
-	'date_jour_5' => 'Yaou',
170
-	'date_jour_5_abbr' => 'Yaou',
171
-	'date_jour_5_initiale' => 'Y.',
172
-	'date_jour_6' => 'Gwener',
173
-	'date_jour_6_abbr' => 'Gwe.',
174
-	'date_jour_6_initiale' => 'Gw.',
175
-	'date_jour_7' => 'Sadorn',
176
-	'date_jour_7_abbr' => 'Sad.',
177
-	'date_jour_7_initiale' => 'S.',
178
-	'date_jours' => 'deiz',
179
-	'date_minutes' => 'munut',
180
-	'date_mois' => 'miz',
181
-	'date_mois_1' => 'Genver',
182
-	'date_mois_10' => 'Here',
183
-	'date_mois_10_abbr' => 'here.',
184
-	'date_mois_11' => 'Du',
185
-	'date_mois_11_abbr' => 'du.',
186
-	'date_mois_12' => 'Kerzu',
187
-	'date_mois_12_abbr' => 'kerzu.',
188
-	'date_mois_1_abbr' => 'genver.',
189
-	'date_mois_2' => 'C’hwevrer',
190
-	'date_mois_2_abbr' => 'c’hevrer.',
191
-	'date_mois_3' => 'Meurzh',
192
-	'date_mois_3_abbr' => 'Meurzh ',
193
-	'date_mois_4' => 'Ebrel',
194
-	'date_mois_4_abbr' => 'ebrel.',
195
-	'date_mois_5' => 'Mae',
196
-	'date_mois_5_abbr' => 'Mae',
197
-	'date_mois_6' => 'Mezheven',
198
-	'date_mois_6_abbr' => 'Mezheven',
199
-	'date_mois_7' => 'Gouere',
200
-	'date_mois_7_abbr' => 'gouere.',
201
-	'date_mois_8' => 'Eost',
202
-	'date_mois_8_abbr' => 'Eost',
203
-	'date_mois_9' => 'Gwengolo',
204
-	'date_mois_9_abbr' => 'gweng.',
205
-	'date_saison_1' => 'Goañv',
206
-	'date_saison_2' => 'nevez-amzer',
207
-	'date_saison_3' => 'hañv',
208
-	'date_saison_4' => 'diskar-amzer',
209
-	'date_secondes' => 'eilenn',
210
-	'date_semaines' => 'sizhun',
211
-	'date_un_mois' => 'miz',
212
-	'date_une_heure' => 'eur',
213
-	'date_une_minute' => 'munut',
214
-	'date_une_seconde' => 'eilenn',
215
-	'date_une_semaine' => 'sizhun',
216
-	'dirs_commencer' => 'a-benn kregiñ da vat gant ar staliadur',
217
-	'dirs_preliminaire' => 'A-raok kenderc’hel : <b>Renkañ ar gwirioù moned</b>',
218
-	'dirs_probleme_droits' => 'Kudenn gant ar gwirioù moned',
219
-	'dirs_repertoires_absents' => '<p><b>N’eo ket bet kavet ar c’havlec’hioù-mañ : </b></p><ul>@bad_dirs@.</ul>
90
+    // D
91
+    'date_aujourdhui' => 'hiziv',
92
+    'date_avant_jc' => 'kent J.K.',
93
+    'date_dans' => 'a-benn @delai@',
94
+    'date_de_mois_1' => '@j@ @nommois@',
95
+    'date_de_mois_10' => '@j@ @nommois@',
96
+    'date_de_mois_11' => '@j@ @nommois@',
97
+    'date_de_mois_12' => '@j@ @nommois@',
98
+    'date_de_mois_2' => '@j@ @nommois@',
99
+    'date_de_mois_3' => '@j@ @nommois@',
100
+    'date_de_mois_4' => '@j@ @nommois@',
101
+    'date_de_mois_5' => '@j@ @nommois@',
102
+    'date_de_mois_6' => '@j@ @nommois@',
103
+    'date_de_mois_7' => '@j@ @nommois@',
104
+    'date_de_mois_8' => '@j@ @nommois@',
105
+    'date_de_mois_9' => '@j@ @nommois@',
106
+    'date_demain' => 'warc’hoazh',
107
+    'date_fmt_heures_minutes' => '@h@eur@m@munut',
108
+    'date_fmt_heures_minutes_court' => '@h@h@m@',
109
+    'date_fmt_jour' => '@nomjour@ @jour@',
110
+    'date_fmt_jour_heure' => '@jour@ da @heure@',
111
+    'date_fmt_jour_heure_debut_fin' => '@jour@ adalek @heure_debut@ betek @heure_fin@',
112
+    'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ adalek @heure_debut@@dtabbr@ betek @dtend@@heure_fin@@dtabbr@',
113
+    'date_fmt_jour_mois' => '@jour@ a viz @nommois@',
114
+    'date_fmt_jour_mois_annee' => '@jour@ a viz @nommois@ @annee@',
115
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
116
+    'date_fmt_nomjour' => '@nomjour@ @date@',
117
+    'date_fmt_nomjour_date' => '@nomjour@ @date@',
118
+    'date_fmt_periode' => 'Adalek @date_debut@ betek @date_fin@',
119
+    'date_fmt_periode_abbr' => 'Adalek @dtart@@date_debut@@dtabbr@ betek @dtend@@date_fin@@dtabbr@',
120
+    'date_fmt_periode_from' => 'Adalek',
121
+    'date_fmt_periode_to' => 'betek',
122
+    'date_fmt_saison_annee' => '@saison@ @annee@',
123
+    'date_heures' => 'eur',
124
+    'date_hier' => 'dec’h',
125
+    'date_il_y_a' => '@delai@ zo',
126
+    'date_jnum1' => '1añ',
127
+    'date_jnum10' => '10',
128
+    'date_jnum11' => '11',
129
+    'date_jnum12' => '12',
130
+    'date_jnum13' => '13',
131
+    'date_jnum14' => '14',
132
+    'date_jnum15' => '15',
133
+    'date_jnum16' => '16',
134
+    'date_jnum17' => '17',
135
+    'date_jnum18' => '18',
136
+    'date_jnum19' => '19',
137
+    'date_jnum2' => 'eil',
138
+    'date_jnum20' => '20',
139
+    'date_jnum21' => '21',
140
+    'date_jnum22' => '22',
141
+    'date_jnum23' => '23',
142
+    'date_jnum24' => '24',
143
+    'date_jnum25' => '25',
144
+    'date_jnum26' => '26',
145
+    'date_jnum27' => '27',
146
+    'date_jnum28' => '28',
147
+    'date_jnum29' => '29',
148
+    'date_jnum3' => '3',
149
+    'date_jnum30' => '30',
150
+    'date_jnum31' => '31',
151
+    'date_jnum4' => '4',
152
+    'date_jnum5' => '5',
153
+    'date_jnum6' => '6',
154
+    'date_jnum7' => '7',
155
+    'date_jnum8' => '8',
156
+    'date_jnum9' => '9',
157
+    'date_jour_1' => 'Sul',
158
+    'date_jour_1_abbr' => 'Sul',
159
+    'date_jour_1_initiale' => 'S.',
160
+    'date_jour_2' => 'Lun',
161
+    'date_jour_2_abbr' => 'Lun',
162
+    'date_jour_2_initiale' => 'L.',
163
+    'date_jour_3' => 'Meurzh',
164
+    'date_jour_3_abbr' => 'Meu.',
165
+    'date_jour_3_initiale' => 'M.',
166
+    'date_jour_4' => 'Merc’her',
167
+    'date_jour_4_abbr' => 'Mer.',
168
+    'date_jour_4_initiale' => 'M.',
169
+    'date_jour_5' => 'Yaou',
170
+    'date_jour_5_abbr' => 'Yaou',
171
+    'date_jour_5_initiale' => 'Y.',
172
+    'date_jour_6' => 'Gwener',
173
+    'date_jour_6_abbr' => 'Gwe.',
174
+    'date_jour_6_initiale' => 'Gw.',
175
+    'date_jour_7' => 'Sadorn',
176
+    'date_jour_7_abbr' => 'Sad.',
177
+    'date_jour_7_initiale' => 'S.',
178
+    'date_jours' => 'deiz',
179
+    'date_minutes' => 'munut',
180
+    'date_mois' => 'miz',
181
+    'date_mois_1' => 'Genver',
182
+    'date_mois_10' => 'Here',
183
+    'date_mois_10_abbr' => 'here.',
184
+    'date_mois_11' => 'Du',
185
+    'date_mois_11_abbr' => 'du.',
186
+    'date_mois_12' => 'Kerzu',
187
+    'date_mois_12_abbr' => 'kerzu.',
188
+    'date_mois_1_abbr' => 'genver.',
189
+    'date_mois_2' => 'C’hwevrer',
190
+    'date_mois_2_abbr' => 'c’hevrer.',
191
+    'date_mois_3' => 'Meurzh',
192
+    'date_mois_3_abbr' => 'Meurzh ',
193
+    'date_mois_4' => 'Ebrel',
194
+    'date_mois_4_abbr' => 'ebrel.',
195
+    'date_mois_5' => 'Mae',
196
+    'date_mois_5_abbr' => 'Mae',
197
+    'date_mois_6' => 'Mezheven',
198
+    'date_mois_6_abbr' => 'Mezheven',
199
+    'date_mois_7' => 'Gouere',
200
+    'date_mois_7_abbr' => 'gouere.',
201
+    'date_mois_8' => 'Eost',
202
+    'date_mois_8_abbr' => 'Eost',
203
+    'date_mois_9' => 'Gwengolo',
204
+    'date_mois_9_abbr' => 'gweng.',
205
+    'date_saison_1' => 'Goañv',
206
+    'date_saison_2' => 'nevez-amzer',
207
+    'date_saison_3' => 'hañv',
208
+    'date_saison_4' => 'diskar-amzer',
209
+    'date_secondes' => 'eilenn',
210
+    'date_semaines' => 'sizhun',
211
+    'date_un_mois' => 'miz',
212
+    'date_une_heure' => 'eur',
213
+    'date_une_minute' => 'munut',
214
+    'date_une_seconde' => 'eilenn',
215
+    'date_une_semaine' => 'sizhun',
216
+    'dirs_commencer' => 'a-benn kregiñ da vat gant ar staliadur',
217
+    'dirs_preliminaire' => 'A-raok kenderc’hel : <b>Renkañ ar gwirioù moned</b>',
218
+    'dirs_probleme_droits' => 'Kudenn gant ar gwirioù moned',
219
+    'dirs_repertoires_absents' => '<p><b>N’eo ket bet kavet ar c’havlec’hioù-mañ : </b></p><ul>@bad_dirs@.</ul>
220 220
   <p>Posupl eo e vefe abalamour d’ur fazi impplij pennlizherennoù pe lizherennoù munut e lec’hioù fall.
221 221
   Gwiriit e klot mat stumm lizherennoù ar c’havlec’hioù gant ar pezh zo diskouezet a-us;
222 222
   ha ma ne glotont ket, adanvit anezho gant ho meziant FTP evit reizhañ ar gudenn.</p>
223 223
   <p>Ur wech graet an dra-se e c’hellot </p>',
224
-	'dirs_repertoires_suivants' => '<p><b>N’haller ket skrivañ er c’havlec’hioù-mañ : </b></p><ul>@bad_dirs@.</ul>
224
+    'dirs_repertoires_suivants' => '<p><b>N’haller ket skrivañ er c’havlec’hioù-mañ : </b></p><ul>@bad_dirs@.</ul>
225 225
   <p>Implijit ar meziant FTP a-benn kemmañ ar gwirioù evit pep hini.
226 226
   Displeget eo an hentenn er sturlevr staliañ.</p>
227 227
   <p>Ur wech graet se e c’helloc’h ',
228
-	'double_occurrence' => '@balise@ bet kavet div wech',
228
+    'double_occurrence' => '@balise@ bet kavet div wech',
229 229
 
230
-	// E
231
-	'en_cours' => 'war ober',
232
-	'envoi_via_le_site' => 'Kas dre al lec’hienn',
233
-	'erreur' => 'Fazi',
234
-	'erreur_balise_non_fermee' => 'Balizenn ziwezhañ chomet digor :',
235
-	'erreur_technique_ajaxform' => 'Gast !  Dre ur fazi dic’hortoz n’eus ket bet gellet kas ar furmenn. Klaskit ober en dro mar plij.
230
+    // E
231
+    'en_cours' => 'war ober',
232
+    'envoi_via_le_site' => 'Kas dre al lec’hienn',
233
+    'erreur' => 'Fazi',
234
+    'erreur_balise_non_fermee' => 'Balizenn ziwezhañ chomet digor :',
235
+    'erreur_technique_ajaxform' => 'Gast !  Dre ur fazi dic’hortoz n’eus ket bet gellet kas ar furmenn. Klaskit ober en dro mar plij.
236 236
 
237 237
 ',
238
-	'erreur_technique_enregistrement_champs' => 'Miret eo bet enrolliñ mat al heuliad-gerioù @champs@ abalamour d’ur fazi teknikel.',
239
-	'erreur_technique_enregistrement_impossible' => 'Miret eo bet an enrolladenn abalamour d’ur fazi teknikel.',
240
-	'erreur_texte' => 'fazi',
241
-	'etape' => 'Pazenn',
238
+    'erreur_technique_enregistrement_champs' => 'Miret eo bet enrolliñ mat al heuliad-gerioù @champs@ abalamour d’ur fazi teknikel.',
239
+    'erreur_technique_enregistrement_impossible' => 'Miret eo bet an enrolladenn abalamour d’ur fazi teknikel.',
240
+    'erreur_texte' => 'fazi',
241
+    'etape' => 'Pazenn',
242 242
 
243
-	// F
244
-	'fichier_introuvable' => 'Restr @fichier@ dibosupl da gavout', # MODIF
245
-	'form_auteur_confirmation' => 'Gwirekait ho postel',
246
-	'form_auteur_email_modifie' => 'Ho postel a zo bet kemmet.',
247
-	'form_auteur_envoi_mail_confirmation' => 'Ur postel a wiriekadur a zo paouez bezañ kaset da @email@.  Ret eo deoc’h mont da welet ar chomlec’h merket e-barzh al lizher-se evit gwiriekaat ho postel.',
248
-	'form_auteur_mail_confirmation' => 'Demat,
243
+    // F
244
+    'fichier_introuvable' => 'Restr @fichier@ dibosupl da gavout', # MODIF
245
+    'form_auteur_confirmation' => 'Gwirekait ho postel',
246
+    'form_auteur_email_modifie' => 'Ho postel a zo bet kemmet.',
247
+    'form_auteur_envoi_mail_confirmation' => 'Ur postel a wiriekadur a zo paouez bezañ kaset da @email@.  Ret eo deoc’h mont da welet ar chomlec’h merket e-barzh al lizher-se evit gwiriekaat ho postel.',
248
+    'form_auteur_mail_confirmation' => 'Demat,
249 249
 
250 250
 Goulennet ho peus cheñch ho postel. 
251 251
 Evit gwiriekaat ho postel nevez, n’ho peus nemet kevreañ d’ar chomlec’h amañ dindan (e-giz-all e vo dianavezet ho koulenn) : 
252 252
 
253 253
     @url@
254 254
 ',
255
-	'form_deja_inscrit' => 'Enskrivet oc’h c’hoazh.',
256
-	'form_email_non_valide' => 'N’eo ket reizh ho postel.',
257
-	'form_forum_access_refuse' => 'N’oc’h ket aotreet da vont war al lec’hienn-mañ ken.',
258
-	'form_forum_bonjour' => 'Demat @nom@,',
259
-	'form_forum_confirmer_email' => 'Evit gwiriekaat ho postel, mont d’ar chomlec’h :
255
+    'form_deja_inscrit' => 'Enskrivet oc’h c’hoazh.',
256
+    'form_email_non_valide' => 'N’eo ket reizh ho postel.',
257
+    'form_forum_access_refuse' => 'N’oc’h ket aotreet da vont war al lec’hienn-mañ ken.',
258
+    'form_forum_bonjour' => 'Demat @nom@,',
259
+    'form_forum_confirmer_email' => 'Evit gwiriekaat ho postel, mont d’ar chomlec’h :
260 260
 @url_confirm@',
261
-	'form_forum_email_deja_enregistre' => 'Enrollet eo ar postel-se dija. Gallout a rit ober gant ho ker-tremen boas neuze.',
262
-	'form_forum_identifiant_mail' => 'Emañ ho kod moned nevez o paouez bezañ kaset deoc’h dre bostel.',
263
-	'form_forum_identifiants' => 'Titouroù hiniennel',
264
-	'form_forum_indiquer_nom_email' => 'Skrivit amañ hoc’h anv hag ho postel. Kaset e vo deoc’h buan ho titouroù hiniennel dre bostel.',
265
-	'form_forum_login' => 'Kod kevreañ :',
266
-	'form_forum_message_auto' => '(ur gemennadenn emgefre eo homañ)',
267
-	'form_forum_pass' => 'ger-tremen :',
268
-	'form_forum_probleme_mail' => 'Kudenn postel : n’haller ket kas an titouroù.',
269
-	'form_forum_voici1' => 'Setu ho titouroù evit gallout kemer perzh e buhez "@nom_site_spip@" (@adresse_site@) :',
270
-	'form_forum_voici2' => 'Setu ho titouroù evit gallout kinnig pennadoù war "@nom_site_spip@" (@adresse_login@) :',
271
-	'form_indiquer_email' => 'Skrivit ho postel mar plij.',
272
-	'form_indiquer_nom' => 'Skrivit hoc’h anv mar plij.',
273
-	'form_indiquer_nom_site' => 'Skrivit anv ho lec’hienn.',
274
-	'form_pet_deja_enregistre' => 'Enrollet eo al lec’hienn-mañ c’hoazh',
275
-	'form_pet_signature_pasprise' => 'N’eus ket bet dalc’het kont eus ho sinadur.',
276
-	'form_prop_confirmer_envoi' => 'Kadarnaat ar c’has',
277
-	'form_prop_description' => 'Deskrivadur/evezhiadenn',
278
-	'form_prop_enregistre' => 'Enrollet eo bet ho kinnig. Embannet e vo goude bezañ bet asantet gant tud e-karg eus al lec’hienn-mañ.',
279
-	'form_prop_envoyer' => 'Kas ur gemenadenn',
280
-	'form_prop_indiquer_email' => 'Merkit ur postel reizh mar plij',
281
-	'form_prop_indiquer_nom_site' => 'Merkit anv al lec’hienn.',
282
-	'form_prop_indiquer_sujet' => 'Merkit ur sujed',
283
-	'form_prop_message_envoye' => 'Kaset eo bet ar gemennadenn',
284
-	'form_prop_non_enregistre' => 'N’eo ket bet enrollet ho kinnig',
285
-	'form_prop_sujet' => 'Sujed',
286
-	'form_prop_url_site' => 'Chomlec’h (URL) al lec’hienn',
287
-	'format_date_incorrecte' => 'N’eo ket reizh an deiziad pe e stumm.',
288
-	'format_heure_incorrecte' => 'N’eo ket reizh an eur pe he stumm.',
289
-	'forum_non_inscrit' => 'N’oc’h ket enskrivet, pe direizh eo ar ger-tremen pe ar chomlec’h.',
290
-	'forum_par_auteur' => 'gant @auteur@',
291
-	'forum_titre_erreur' => 'Fazi...',
261
+    'form_forum_email_deja_enregistre' => 'Enrollet eo ar postel-se dija. Gallout a rit ober gant ho ker-tremen boas neuze.',
262
+    'form_forum_identifiant_mail' => 'Emañ ho kod moned nevez o paouez bezañ kaset deoc’h dre bostel.',
263
+    'form_forum_identifiants' => 'Titouroù hiniennel',
264
+    'form_forum_indiquer_nom_email' => 'Skrivit amañ hoc’h anv hag ho postel. Kaset e vo deoc’h buan ho titouroù hiniennel dre bostel.',
265
+    'form_forum_login' => 'Kod kevreañ :',
266
+    'form_forum_message_auto' => '(ur gemennadenn emgefre eo homañ)',
267
+    'form_forum_pass' => 'ger-tremen :',
268
+    'form_forum_probleme_mail' => 'Kudenn postel : n’haller ket kas an titouroù.',
269
+    'form_forum_voici1' => 'Setu ho titouroù evit gallout kemer perzh e buhez "@nom_site_spip@" (@adresse_site@) :',
270
+    'form_forum_voici2' => 'Setu ho titouroù evit gallout kinnig pennadoù war "@nom_site_spip@" (@adresse_login@) :',
271
+    'form_indiquer_email' => 'Skrivit ho postel mar plij.',
272
+    'form_indiquer_nom' => 'Skrivit hoc’h anv mar plij.',
273
+    'form_indiquer_nom_site' => 'Skrivit anv ho lec’hienn.',
274
+    'form_pet_deja_enregistre' => 'Enrollet eo al lec’hienn-mañ c’hoazh',
275
+    'form_pet_signature_pasprise' => 'N’eus ket bet dalc’het kont eus ho sinadur.',
276
+    'form_prop_confirmer_envoi' => 'Kadarnaat ar c’has',
277
+    'form_prop_description' => 'Deskrivadur/evezhiadenn',
278
+    'form_prop_enregistre' => 'Enrollet eo bet ho kinnig. Embannet e vo goude bezañ bet asantet gant tud e-karg eus al lec’hienn-mañ.',
279
+    'form_prop_envoyer' => 'Kas ur gemenadenn',
280
+    'form_prop_indiquer_email' => 'Merkit ur postel reizh mar plij',
281
+    'form_prop_indiquer_nom_site' => 'Merkit anv al lec’hienn.',
282
+    'form_prop_indiquer_sujet' => 'Merkit ur sujed',
283
+    'form_prop_message_envoye' => 'Kaset eo bet ar gemennadenn',
284
+    'form_prop_non_enregistre' => 'N’eo ket bet enrollet ho kinnig',
285
+    'form_prop_sujet' => 'Sujed',
286
+    'form_prop_url_site' => 'Chomlec’h (URL) al lec’hienn',
287
+    'format_date_incorrecte' => 'N’eo ket reizh an deiziad pe e stumm.',
288
+    'format_heure_incorrecte' => 'N’eo ket reizh an eur pe he stumm.',
289
+    'forum_non_inscrit' => 'N’oc’h ket enskrivet, pe direizh eo ar ger-tremen pe ar chomlec’h.',
290
+    'forum_par_auteur' => 'gant @auteur@',
291
+    'forum_titre_erreur' => 'Fazi...',
292 292
 
293
-	// I
294
-	'ical_texte_rss_articles' => 'D’ar chomlec’h-mañ emañ restr «backend» ar pennadoù :',
295
-	'ical_texte_rss_articles2' => 'Gallout a rit kaout restroù «backend» evit pennadoù pep rummad al lec’hienn ivez :',
296
-	'ical_texte_rss_breves' => 'Bez’ ez eus ivez ur restr enni berrskridoù al lec’hienn. Ma resisait niverenn ur rubrikenn, n’ho po nemet berrskridoù ar rubrikenn-se.',
297
-	'icone_a_suivre' => 'Da genderc’hel',
298
-	'icone_admin_site' => 'Merañ al lec’hienn',
299
-	'icone_agenda' => 'Deiziataer',
300
-	'icone_aide_ligne' => 'Skoazell',
301
-	'icone_articles' => 'Pennadoù',
302
-	'icone_auteurs' => 'Skridaozerien',
303
-	'icone_brouteur' => 'Merdeiñ prim',
304
-	'icone_configuration_site' => 'Kefluniañ ',
305
-	'icone_configurer_site' => 'Kefluniañ ho lec’hienn',
306
-	'icone_creer_nouvel_auteur' => 'Krouiñ ur skridaozer nevez',
307
-	'icone_creer_rubrique' => 'Krouiñ ur rubrikenn',
308
-	'icone_creer_sous_rubrique' => 'Krouiñ un isrubrikenn',
309
-	'icone_deconnecter' => 'Digevreañ',
310
-	'icone_discussions' => 'Kaozeadennoù',
311
-	'icone_doc_rubrique' => 'Teulioù ar rubrikennoù',
312
-	'icone_ecrire_article' => 'Skrivañ ur pennad nevez',
313
-	'icone_edition_site' => 'Embann',
314
-	'icone_gestion_langues' => 'Merañ ar yezhoù',
315
-	'icone_informations_personnelles' => 'Titouroù hiniennel',
316
-	'icone_interface_complet' => 'Etrefas klok',
317
-	'icone_interface_simple' => 'Etrefas eeunaet',
318
-	'icone_maintenance_site' => 'Ober war-dro al lec’hienn',
319
-	'icone_messagerie_personnelle' => 'Postelerezh hiniennel',
320
-	'icone_repartition_debut' => 'Diskouez an dasparzh abaoe an deroù',
321
-	'icone_rubriques' => 'Rubrikennoù',
322
-	'icone_sauver_site' => 'Saveteiñ al lec’hienn',
323
-	'icone_site_entier' => 'Al lec’hienn a-bezh',
324
-	'icone_sites_references' => 'Lec’hiennoù menegeret',
325
-	'icone_statistiques' => 'Stadegoù al lec’hienn',
326
-	'icone_suivi_activite' => 'Heuliañ buhez al lec’hienn',
327
-	'icone_suivi_actualite' => 'Emdroadur al lec’hienn',
328
-	'icone_suivi_pettions' => 'Heuliañ/merañ ar sinadegoù',
329
-	'icone_suivi_revisions' => 'Kemmoù ar pennadoù',
330
-	'icone_supprimer_document' => 'Diverkañ an teul-mañ',
331
-	'icone_supprimer_image' => 'Diverkañ ar skeudenn-mañ',
332
-	'icone_tous_articles' => 'Ho holl bennadoù',
333
-	'icone_tous_auteur' => 'An holl skridaozerien',
334
-	'icone_tous_visiteur' => 'An holl gweladerien',
335
-	'icone_visiter_site' => 'Gweladenniñ al lec’hienn foran',
336
-	'icone_voir_en_ligne' => 'Gwelet enlinenn',
337
-	'img_indisponible' => 'skeudenn dibosupl da gaout',
338
-	'impossible' => 'dibosupl',
339
-	'info_a_suivre' => 'DA GENDERC’HEL»',
340
-	'info_acces_interdit' => 'Difennet mont tre',
341
-	'info_acces_refuse' => 'Nac’het eo bet deoc’h mon tre',
342
-	'info_action' => 'Oberiadenn : @action@',
343
-	'info_administrer_rubriques' => 'Gallout a rit merañ ar rubrikenn-mañ hag an isrubrikenndoù enni',
344
-	'info_adresse_non_indiquee' => 'N’hoc’h eus ket lakaet chomlec’h ebet da arnodiñ !',
345
-	'info_aide' => 'SKOAZELL :',
346
-	'info_ajouter_mot' => 'Ouzhpennañ ar ger-mañ',
347
-	'info_annonce' => 'KEMENN',
348
-	'info_annonces_generales' => 'Kemennoù hollek :',
349
-	'info_article_propose' => 'Pennad kinniget',
350
-	'info_article_publie' => 'Pennad embannet',
351
-	'info_article_redaction' => 'Pennad emeur o skridaozañ',
352
-	'info_article_refuse' => 'Pennad nac’het',
353
-	'info_article_supprime' => 'Pennad diverket',
354
-	'info_articles' => 'Pennadoù',
355
-	'info_articles_a_valider' => 'Ar pennadoù da gadarnaat',
356
-	'info_articles_nb' => '@nb@ pennad-skrid',
357
-	'info_articles_proposes' => 'Pennadoù kinniget',
358
-	'info_articles_un' => '1 pennad',
359
-	'info_auteurs_nombre' => 'skridaozer(ien) :',
360
-	'info_authentification_ftp' => 'Gwiriañ (dre FTP).',
361
-	'info_breves_2' => 'berrskridoù',
362
-	'info_breves_nb' => '@nb@ pennadoù-berr',
363
-	'info_breves_un' => '1 pennadig',
364
-	'info_connexion_refusee' => 'Kevreañ nac’het',
365
-	'info_contact_developpeur' => 'Kit e darempred gant un diorroer.',
366
-	'info_contenance' => 'El lec’hienn-mañ ez eus :',
367
-	'info_contribution' => 'kenaozadurioù',
368
-	'info_copyright' => 'Ur meziant dieub eo @spip@, dasparzhet @lien_gpl@.',
369
-	'info_copyright_doc' => 'Evit titouroù ouzhpenn, gwelet al lec’hienn <a href="@spipnet@">@spipnet_affiche@</a>.',
370
-	'info_copyright_gpl' => 'dindan aotre implijout GPL',
371
-	'info_cours_edition' => 'Ar pennadoù emaoc’h o skrivañ', # MODIF
372
-	'info_creer_repertoire' => 'Krouit ur restr pe ur c’havlec’h anvet :',
373
-	'info_creer_repertoire_2' => 'en iskavlec’h <b>@repertoire@</b>, ha :',
374
-	'info_creer_vignette' => 'krouiñ emgefreek ar skeudennig',
375
-	'info_creerdansrubrique_non_autorise' => 'N’ho peus trawalc’h a wirioù evit krouiñ danvez er rubrikenn-mañ.',
376
-	'info_deplier' => 'Displegañ',
377
-	'info_descriptif_nombre' => 'deskrivadur(ioù) :',
378
-	'info_description' => 'Deskrivadur :',
379
-	'info_description_2' => 'Deskrivadur :',
380
-	'info_dimension' => 'Ment :',
381
-	'info_documents_nb' => '@nb@ diell',
382
-	'info_documents_un' => '1 diell',
383
-	'info_ecire_message_prive' => 'Skrivañ ur gerig prevez;',
384
-	'info_email_invalide' => 'Postel direizh.',
385
-	'info_en_cours_validation' => 'Ar pennadoù emaoc’h o skrivañ',
386
-	'info_en_ligne' => 'Enlinenn evit poent :',
387
-	'info_envoyer_message_prive' => 'Kas ur gerig prevez d’ar skridaozer-mañ',
388
-	'info_erreur_requete' => 'Fazi er reked :',
389
-	'info_erreur_squelette2' => 'N’eus framm <b>@fichier@</b> ebet da gaout...',
390
-	'info_erreur_systeme' => 'Fazi reizhiad (errno @errsys@)',
391
-	'info_erreur_systeme2' => 'Marteze eo leun-chouk ar bladenn-galet, pe neuze eo mazaouet an diaz titouroù.<br />
293
+    // I
294
+    'ical_texte_rss_articles' => 'D’ar chomlec’h-mañ emañ restr «backend» ar pennadoù :',
295
+    'ical_texte_rss_articles2' => 'Gallout a rit kaout restroù «backend» evit pennadoù pep rummad al lec’hienn ivez :',
296
+    'ical_texte_rss_breves' => 'Bez’ ez eus ivez ur restr enni berrskridoù al lec’hienn. Ma resisait niverenn ur rubrikenn, n’ho po nemet berrskridoù ar rubrikenn-se.',
297
+    'icone_a_suivre' => 'Da genderc’hel',
298
+    'icone_admin_site' => 'Merañ al lec’hienn',
299
+    'icone_agenda' => 'Deiziataer',
300
+    'icone_aide_ligne' => 'Skoazell',
301
+    'icone_articles' => 'Pennadoù',
302
+    'icone_auteurs' => 'Skridaozerien',
303
+    'icone_brouteur' => 'Merdeiñ prim',
304
+    'icone_configuration_site' => 'Kefluniañ ',
305
+    'icone_configurer_site' => 'Kefluniañ ho lec’hienn',
306
+    'icone_creer_nouvel_auteur' => 'Krouiñ ur skridaozer nevez',
307
+    'icone_creer_rubrique' => 'Krouiñ ur rubrikenn',
308
+    'icone_creer_sous_rubrique' => 'Krouiñ un isrubrikenn',
309
+    'icone_deconnecter' => 'Digevreañ',
310
+    'icone_discussions' => 'Kaozeadennoù',
311
+    'icone_doc_rubrique' => 'Teulioù ar rubrikennoù',
312
+    'icone_ecrire_article' => 'Skrivañ ur pennad nevez',
313
+    'icone_edition_site' => 'Embann',
314
+    'icone_gestion_langues' => 'Merañ ar yezhoù',
315
+    'icone_informations_personnelles' => 'Titouroù hiniennel',
316
+    'icone_interface_complet' => 'Etrefas klok',
317
+    'icone_interface_simple' => 'Etrefas eeunaet',
318
+    'icone_maintenance_site' => 'Ober war-dro al lec’hienn',
319
+    'icone_messagerie_personnelle' => 'Postelerezh hiniennel',
320
+    'icone_repartition_debut' => 'Diskouez an dasparzh abaoe an deroù',
321
+    'icone_rubriques' => 'Rubrikennoù',
322
+    'icone_sauver_site' => 'Saveteiñ al lec’hienn',
323
+    'icone_site_entier' => 'Al lec’hienn a-bezh',
324
+    'icone_sites_references' => 'Lec’hiennoù menegeret',
325
+    'icone_statistiques' => 'Stadegoù al lec’hienn',
326
+    'icone_suivi_activite' => 'Heuliañ buhez al lec’hienn',
327
+    'icone_suivi_actualite' => 'Emdroadur al lec’hienn',
328
+    'icone_suivi_pettions' => 'Heuliañ/merañ ar sinadegoù',
329
+    'icone_suivi_revisions' => 'Kemmoù ar pennadoù',
330
+    'icone_supprimer_document' => 'Diverkañ an teul-mañ',
331
+    'icone_supprimer_image' => 'Diverkañ ar skeudenn-mañ',
332
+    'icone_tous_articles' => 'Ho holl bennadoù',
333
+    'icone_tous_auteur' => 'An holl skridaozerien',
334
+    'icone_tous_visiteur' => 'An holl gweladerien',
335
+    'icone_visiter_site' => 'Gweladenniñ al lec’hienn foran',
336
+    'icone_voir_en_ligne' => 'Gwelet enlinenn',
337
+    'img_indisponible' => 'skeudenn dibosupl da gaout',
338
+    'impossible' => 'dibosupl',
339
+    'info_a_suivre' => 'DA GENDERC’HEL»',
340
+    'info_acces_interdit' => 'Difennet mont tre',
341
+    'info_acces_refuse' => 'Nac’het eo bet deoc’h mon tre',
342
+    'info_action' => 'Oberiadenn : @action@',
343
+    'info_administrer_rubriques' => 'Gallout a rit merañ ar rubrikenn-mañ hag an isrubrikenndoù enni',
344
+    'info_adresse_non_indiquee' => 'N’hoc’h eus ket lakaet chomlec’h ebet da arnodiñ !',
345
+    'info_aide' => 'SKOAZELL :',
346
+    'info_ajouter_mot' => 'Ouzhpennañ ar ger-mañ',
347
+    'info_annonce' => 'KEMENN',
348
+    'info_annonces_generales' => 'Kemennoù hollek :',
349
+    'info_article_propose' => 'Pennad kinniget',
350
+    'info_article_publie' => 'Pennad embannet',
351
+    'info_article_redaction' => 'Pennad emeur o skridaozañ',
352
+    'info_article_refuse' => 'Pennad nac’het',
353
+    'info_article_supprime' => 'Pennad diverket',
354
+    'info_articles' => 'Pennadoù',
355
+    'info_articles_a_valider' => 'Ar pennadoù da gadarnaat',
356
+    'info_articles_nb' => '@nb@ pennad-skrid',
357
+    'info_articles_proposes' => 'Pennadoù kinniget',
358
+    'info_articles_un' => '1 pennad',
359
+    'info_auteurs_nombre' => 'skridaozer(ien) :',
360
+    'info_authentification_ftp' => 'Gwiriañ (dre FTP).',
361
+    'info_breves_2' => 'berrskridoù',
362
+    'info_breves_nb' => '@nb@ pennadoù-berr',
363
+    'info_breves_un' => '1 pennadig',
364
+    'info_connexion_refusee' => 'Kevreañ nac’het',
365
+    'info_contact_developpeur' => 'Kit e darempred gant un diorroer.',
366
+    'info_contenance' => 'El lec’hienn-mañ ez eus :',
367
+    'info_contribution' => 'kenaozadurioù',
368
+    'info_copyright' => 'Ur meziant dieub eo @spip@, dasparzhet @lien_gpl@.',
369
+    'info_copyright_doc' => 'Evit titouroù ouzhpenn, gwelet al lec’hienn <a href="@spipnet@">@spipnet_affiche@</a>.',
370
+    'info_copyright_gpl' => 'dindan aotre implijout GPL',
371
+    'info_cours_edition' => 'Ar pennadoù emaoc’h o skrivañ', # MODIF
372
+    'info_creer_repertoire' => 'Krouit ur restr pe ur c’havlec’h anvet :',
373
+    'info_creer_repertoire_2' => 'en iskavlec’h <b>@repertoire@</b>, ha :',
374
+    'info_creer_vignette' => 'krouiñ emgefreek ar skeudennig',
375
+    'info_creerdansrubrique_non_autorise' => 'N’ho peus trawalc’h a wirioù evit krouiñ danvez er rubrikenn-mañ.',
376
+    'info_deplier' => 'Displegañ',
377
+    'info_descriptif_nombre' => 'deskrivadur(ioù) :',
378
+    'info_description' => 'Deskrivadur :',
379
+    'info_description_2' => 'Deskrivadur :',
380
+    'info_dimension' => 'Ment :',
381
+    'info_documents_nb' => '@nb@ diell',
382
+    'info_documents_un' => '1 diell',
383
+    'info_ecire_message_prive' => 'Skrivañ ur gerig prevez;',
384
+    'info_email_invalide' => 'Postel direizh.',
385
+    'info_en_cours_validation' => 'Ar pennadoù emaoc’h o skrivañ',
386
+    'info_en_ligne' => 'Enlinenn evit poent :',
387
+    'info_envoyer_message_prive' => 'Kas ur gerig prevez d’ar skridaozer-mañ',
388
+    'info_erreur_requete' => 'Fazi er reked :',
389
+    'info_erreur_squelette2' => 'N’eus framm <b>@fichier@</b> ebet da gaout...',
390
+    'info_erreur_systeme' => 'Fazi reizhiad (errno @errsys@)',
391
+    'info_erreur_systeme2' => 'Marteze eo leun-chouk ar bladenn-galet, pe neuze eo mazaouet an diaz titouroù.<br />
392 392
 <span style="color:red;">Klaskit <a href=\'@script@\'>ratreañ an diaz</a>, pe kit e darempred gant an herberc’hier.</span>',
393
-	'info_fini' => 'Echu eo !',
394
-	'info_format_image' => 'Furmadoù skeudenn a c’hell bezañ implijet da sevel skeudennigoù : @gd_formats@.',
395
-	'info_format_non_defini' => 'Stumm didermenet',
396
-	'info_grand_ecran' => 'Skramm bras',
397
-	'info_image_aide' => 'SKOAZELL',
398
-	'info_image_process_titre' => 'Hentenn da grouiñ skeudennigoù',
399
-	'info_impossible_lire_page' => '<b>Fazi !</b> Dibosupl eo lenn ar bajenn <tt><html>@test_proxy@</html></tt> dre ar proksi',
400
-	'info_installation_systeme_publication' => 'O staliañ ar reizhiad embann...',
401
-	'info_installer_documents' => 'Gallout a rit staliañ en un doare emgefreek an holl deulioù zo en teuliad @upload@.',
402
-	'info_installer_ftp' => 'Dre ma’z oc’h merour e c’hellit staliañ restroù (dre FTP) en teuliad @upload@ deoc’h da c’hallout ober ganto amañ da c’houde.',
403
-	'info_installer_images' => 'Er furmadoù JPEG, GIF ha PNG e c’hellit staliañ skeudennoù.',
404
-	'info_installer_images_dossier' => 'Staliañ skeudennoù en teuliad @upload@ evit gallout o diuzañ amañ.',
405
-	'info_interface_complete' => 'Etrefas klok',
406
-	'info_interface_simple' => 'Etrefas eeunaet',
407
-	'info_joindre_document_article' => 'Teulioù a eurt-se a c’hellit stagañ ouzh ar pennad-mañ :',
408
-	'info_joindre_document_rubrique' => 'Teulioù a seurt-se a c’hellit stagañ ouzh ar rubrikenn-mañ :',
409
-	'info_joindre_documents_article' => 'Teulioù a seurt-se a c’hellit stagañ ouzh ho pennad :',
410
-	'info_l_article' => 'ar pennad',
411
-	'info_la_breve' => 'ar berrskrid',
412
-	'info_la_rubrique' => 'ar rubrikenn',
413
-	'info_langue_principale' => 'Yezh pennañ al lec’hienn',
414
-	'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ piksel',
415
-	'info_les_auteurs_1' => 'gant @les_auteurs@',
416
-	'info_logo_format_interdit' => 'Er furmad @formats@ hepken e vez aotreet al logoioù.',
417
-	'info_logo_max_poids' => 'Nebeutoc’h eget @maxi@ e rank al logoioù bezañ (@actuel@ eo ar restr-mañ).',
418
-	'info_mail_fournisseur' => 'hoc’hanv@herberc’hier.com',
419
-	'info_message_2' => 'KEMENNADENN',
420
-	'info_message_supprime' => 'KEMENNADENN BET DIVERKET',
421
-	'info_messages_nb' => '@nb@ kemennadennoù',
422
-	'info_messages_un' => '1 gemennadenn',
423
-	'info_mise_en_ligne' => 'Lakaet war ar rouedad d’an :',
424
-	'info_modification_parametres_securite' => 'kemm an arventennoù surentez',
425
-	'info_mois_courant' => 'E-kerzh ar miz :',
426
-	'info_mot_cle_ajoute' => 'Ar ger-stur-mañ zo bet ouzhpennet',
427
-	'info_multi_herit' => 'Yezh dre ziouer',
428
-	'info_multi_langues_soulignees' => 'Ar <u>yezhoù islinennet</u> zo bet troet holl destennoù an etrefas enne. Ma tibabit ar yezhoù-se e vo troet ul lodenn vat eus elfennoù al lec’hienn (deiziadoù, furmskridoù, hag all) en un doare otomatek. Evit ar yezhoù n’int ket islinennet e vo an elfennoù-se e yezh pennañ al lec’hienn.',
429
-	'info_multilinguisme' => 'Liesyezhegezh',
430
-	'info_nom_non_utilisateurs_connectes' => 'N’emañ ket hoc’h  anv war roll an implijerien kevreet.',
431
-	'info_nom_utilisateurs_connectes' => 'Gwelet e vez hoc’h anv war roll an implijerien kevreet.',
432
-	'info_nombre_en_ligne' => 'Bremañ war al lec’hienn :',
433
-	'info_non_resultat' => 'Disoc’h ebet evit "@cherche_mot@"',
434
-	'info_non_utilisation_messagerie' => 'N’implijit ket postelerezh diabarzh al lec’hienn-mañ.',
435
-	'info_nouveau_message' => 'UR GEMENNADENN NEVEZ HOC’H EUS BET',
436
-	'info_nouveaux_messages' => '@total_messages@ KEMENNADENN NEVEZ HOC’H EUS BET',
437
-	'info_numero_abbreviation' => 'Niv. ',
438
-	'info_obligatoire' => 'Ret eo deoc’h reiñ an titour-mañ',
439
-	'info_pense_bete' => 'NOTENNIG-EÑVOR',
440
-	'info_petit_ecran' => 'Skramm bihan',
441
-	'info_petition_close' => 'Kloz eo ar sinadeg',
442
-	'info_pixels' => 'piksel',
443
-	'info_plusieurs_mots_trouves' => 'Meur a c’her-stur zo bet kavet evit "@cherche_mot@":',
444
-	'info_portfolio_automatique' => 'Portfolio emgefre :',
445
-	'info_premier_resultat' => '[@debut_limit@ disoc’h kentañ diwar @total@]',
446
-	'info_premier_resultat_sur' => '[@debut_limit@ disoc’h kentañ diwar @total@]',
447
-	'info_propose_1' => '[@nom_site_spip@] a ginnig : @titre@',
448
-	'info_propose_2' => 'Pennad bet kinniget
393
+    'info_fini' => 'Echu eo !',
394
+    'info_format_image' => 'Furmadoù skeudenn a c’hell bezañ implijet da sevel skeudennigoù : @gd_formats@.',
395
+    'info_format_non_defini' => 'Stumm didermenet',
396
+    'info_grand_ecran' => 'Skramm bras',
397
+    'info_image_aide' => 'SKOAZELL',
398
+    'info_image_process_titre' => 'Hentenn da grouiñ skeudennigoù',
399
+    'info_impossible_lire_page' => '<b>Fazi !</b> Dibosupl eo lenn ar bajenn <tt><html>@test_proxy@</html></tt> dre ar proksi',
400
+    'info_installation_systeme_publication' => 'O staliañ ar reizhiad embann...',
401
+    'info_installer_documents' => 'Gallout a rit staliañ en un doare emgefreek an holl deulioù zo en teuliad @upload@.',
402
+    'info_installer_ftp' => 'Dre ma’z oc’h merour e c’hellit staliañ restroù (dre FTP) en teuliad @upload@ deoc’h da c’hallout ober ganto amañ da c’houde.',
403
+    'info_installer_images' => 'Er furmadoù JPEG, GIF ha PNG e c’hellit staliañ skeudennoù.',
404
+    'info_installer_images_dossier' => 'Staliañ skeudennoù en teuliad @upload@ evit gallout o diuzañ amañ.',
405
+    'info_interface_complete' => 'Etrefas klok',
406
+    'info_interface_simple' => 'Etrefas eeunaet',
407
+    'info_joindre_document_article' => 'Teulioù a eurt-se a c’hellit stagañ ouzh ar pennad-mañ :',
408
+    'info_joindre_document_rubrique' => 'Teulioù a seurt-se a c’hellit stagañ ouzh ar rubrikenn-mañ :',
409
+    'info_joindre_documents_article' => 'Teulioù a seurt-se a c’hellit stagañ ouzh ho pennad :',
410
+    'info_l_article' => 'ar pennad',
411
+    'info_la_breve' => 'ar berrskrid',
412
+    'info_la_rubrique' => 'ar rubrikenn',
413
+    'info_langue_principale' => 'Yezh pennañ al lec’hienn',
414
+    'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ piksel',
415
+    'info_les_auteurs_1' => 'gant @les_auteurs@',
416
+    'info_logo_format_interdit' => 'Er furmad @formats@ hepken e vez aotreet al logoioù.',
417
+    'info_logo_max_poids' => 'Nebeutoc’h eget @maxi@ e rank al logoioù bezañ (@actuel@ eo ar restr-mañ).',
418
+    'info_mail_fournisseur' => 'hoc’hanv@herberc’hier.com',
419
+    'info_message_2' => 'KEMENNADENN',
420
+    'info_message_supprime' => 'KEMENNADENN BET DIVERKET',
421
+    'info_messages_nb' => '@nb@ kemennadennoù',
422
+    'info_messages_un' => '1 gemennadenn',
423
+    'info_mise_en_ligne' => 'Lakaet war ar rouedad d’an :',
424
+    'info_modification_parametres_securite' => 'kemm an arventennoù surentez',
425
+    'info_mois_courant' => 'E-kerzh ar miz :',
426
+    'info_mot_cle_ajoute' => 'Ar ger-stur-mañ zo bet ouzhpennet',
427
+    'info_multi_herit' => 'Yezh dre ziouer',
428
+    'info_multi_langues_soulignees' => 'Ar <u>yezhoù islinennet</u> zo bet troet holl destennoù an etrefas enne. Ma tibabit ar yezhoù-se e vo troet ul lodenn vat eus elfennoù al lec’hienn (deiziadoù, furmskridoù, hag all) en un doare otomatek. Evit ar yezhoù n’int ket islinennet e vo an elfennoù-se e yezh pennañ al lec’hienn.',
429
+    'info_multilinguisme' => 'Liesyezhegezh',
430
+    'info_nom_non_utilisateurs_connectes' => 'N’emañ ket hoc’h  anv war roll an implijerien kevreet.',
431
+    'info_nom_utilisateurs_connectes' => 'Gwelet e vez hoc’h anv war roll an implijerien kevreet.',
432
+    'info_nombre_en_ligne' => 'Bremañ war al lec’hienn :',
433
+    'info_non_resultat' => 'Disoc’h ebet evit "@cherche_mot@"',
434
+    'info_non_utilisation_messagerie' => 'N’implijit ket postelerezh diabarzh al lec’hienn-mañ.',
435
+    'info_nouveau_message' => 'UR GEMENNADENN NEVEZ HOC’H EUS BET',
436
+    'info_nouveaux_messages' => '@total_messages@ KEMENNADENN NEVEZ HOC’H EUS BET',
437
+    'info_numero_abbreviation' => 'Niv. ',
438
+    'info_obligatoire' => 'Ret eo deoc’h reiñ an titour-mañ',
439
+    'info_pense_bete' => 'NOTENNIG-EÑVOR',
440
+    'info_petit_ecran' => 'Skramm bihan',
441
+    'info_petition_close' => 'Kloz eo ar sinadeg',
442
+    'info_pixels' => 'piksel',
443
+    'info_plusieurs_mots_trouves' => 'Meur a c’her-stur zo bet kavet evit "@cherche_mot@":',
444
+    'info_portfolio_automatique' => 'Portfolio emgefre :',
445
+    'info_premier_resultat' => '[@debut_limit@ disoc’h kentañ diwar @total@]',
446
+    'info_premier_resultat_sur' => '[@debut_limit@ disoc’h kentañ diwar @total@]',
447
+    'info_propose_1' => '[@nom_site_spip@] a ginnig : @titre@',
448
+    'info_propose_2' => 'Pennad bet kinniget
449 449
 ---------------',
450
-	'info_propose_3' => 'Kinnig a reer embann ar pennad "@titre@".',
451
-	'info_propose_4' => 'Pedet oc’h da zont d’e lenn ha da reiñ hoc’h ali',
452
-	'info_propose_5' => 'er forom stag outañ. Kavet e vo er chomlec’h-mañ :',
453
-	'info_publie_01' => 'Kadarnaet eo bet ar pennad "@titre@" gant @connect_nom@.',
454
-	'info_publie_1' => '[@nom_site_spip@] A EMBANN : @titre@',
455
-	'info_publie_2' => 'Pennad embannet
450
+    'info_propose_3' => 'Kinnig a reer embann ar pennad "@titre@".',
451
+    'info_propose_4' => 'Pedet oc’h da zont d’e lenn ha da reiñ hoc’h ali',
452
+    'info_propose_5' => 'er forom stag outañ. Kavet e vo er chomlec’h-mañ :',
453
+    'info_publie_01' => 'Kadarnaet eo bet ar pennad "@titre@" gant @connect_nom@.',
454
+    'info_publie_1' => '[@nom_site_spip@] A EMBANN : @titre@',
455
+    'info_publie_2' => 'Pennad embannet
456 456
 --------------',
457
-	'info_rechercher' => 'Klask',
458
-	'info_rechercher_02' => 'Klask :',
459
-	'info_remplacer_vignette' => 'Erlec’hiañ ar skeudennig dre ziouer gant ul logo deoc’h :',
460
-	'info_rubriques_nb' => '@nb@ rubrikenn',
461
-	'info_rubriques_un' => '1 rubrikenn',
462
-	'info_sans_titre_2' => 'titl ebet',
463
-	'info_selectionner_fichier' => 'Gallout a rit diuzañ ur restr eus an teuliad @upload@',
464
-	'info_selectionner_fichier_2' => 'Diuzañ ur restr :',
465
-	'info_sites_nb' => '@nb@ lec’hienn',
466
-	'info_sites_un' => '1 lec’hienn',
467
-	'info_supprimer_vignette' => 'diverkañ ar skeudennig',
468
-	'info_symbole_bleu' => 'Talvezout a ra an arouez <b>glas</b> evit un <b>notennig-eñvor</b>: da lavaret eo ur gemennadenn evidoc’h hepken.',
469
-	'info_symbole_jaune' => 'Talvezout a ra an arouez <b>melen</b> evit ur <b>c’hemenn d’an holl skridaozerien</b> : a c’hell bezañ kemmet gant ur merour ha lennet gant an holl skridaozerien.',
470
-	'info_symbole_vert' => 'Talvezout a ra an arouez <b>gwer</b> evit ar <b>c’hemennadennoù bet eskemmet etre implijerien all</b> al lec’hienn.',
471
-	'info_telecharger_nouveau_logo' => 'Pellgargañ ul logo nevez :',
472
-	'info_telecharger_ordinateur' => 'Pellgargañ adal hoc’h urzhiataer :',
473
-	'info_tous_resultats_enregistres' => '[enrollet e vez an holl discoc’hoù]',
474
-	'info_tout_afficher' => 'Diskouez pep tra',
475
-	'info_travaux_texte' => 'N’eo ket bet kefluniet al lec’hienn evit c’hoazh. Distroit a-benn nebeut...',
476
-	'info_travaux_titre' => 'Emeur o sevel al lec’hienn',
477
-	'info_trop_resultat' => 'Re a zisoc’hoù evit "@cherche_mot@"; resisait termenoù hoc’h enklask mar plij.',
478
-	'info_utilisation_messagerie_interne' => 'Ober a rit gant postelerezh diabarzh al lec’hienn-mañ.',
479
-	'info_valider_lien' => 'kadarnaat al liamm-mañ',
480
-	'info_verifier_image' => 'gwiriit eo bet treuzkaset mat ho skeudennoù.',
481
-	'info_vignette_defaut' => 'Skeudennig dre ziouer',
482
-	'info_vignette_personnalisee' => 'skeudennig personelaet',
483
-	'info_visite' => 'gweladenn :',
484
-	'info_vos_rendez_vous' => 'Hoc’h emgavioù da zont',
485
-	'infos_vos_pense_bete' => 'Ho notennigoù-eñvor',
457
+    'info_rechercher' => 'Klask',
458
+    'info_rechercher_02' => 'Klask :',
459
+    'info_remplacer_vignette' => 'Erlec’hiañ ar skeudennig dre ziouer gant ul logo deoc’h :',
460
+    'info_rubriques_nb' => '@nb@ rubrikenn',
461
+    'info_rubriques_un' => '1 rubrikenn',
462
+    'info_sans_titre_2' => 'titl ebet',
463
+    'info_selectionner_fichier' => 'Gallout a rit diuzañ ur restr eus an teuliad @upload@',
464
+    'info_selectionner_fichier_2' => 'Diuzañ ur restr :',
465
+    'info_sites_nb' => '@nb@ lec’hienn',
466
+    'info_sites_un' => '1 lec’hienn',
467
+    'info_supprimer_vignette' => 'diverkañ ar skeudennig',
468
+    'info_symbole_bleu' => 'Talvezout a ra an arouez <b>glas</b> evit un <b>notennig-eñvor</b>: da lavaret eo ur gemennadenn evidoc’h hepken.',
469
+    'info_symbole_jaune' => 'Talvezout a ra an arouez <b>melen</b> evit ur <b>c’hemenn d’an holl skridaozerien</b> : a c’hell bezañ kemmet gant ur merour ha lennet gant an holl skridaozerien.',
470
+    'info_symbole_vert' => 'Talvezout a ra an arouez <b>gwer</b> evit ar <b>c’hemennadennoù bet eskemmet etre implijerien all</b> al lec’hienn.',
471
+    'info_telecharger_nouveau_logo' => 'Pellgargañ ul logo nevez :',
472
+    'info_telecharger_ordinateur' => 'Pellgargañ adal hoc’h urzhiataer :',
473
+    'info_tous_resultats_enregistres' => '[enrollet e vez an holl discoc’hoù]',
474
+    'info_tout_afficher' => 'Diskouez pep tra',
475
+    'info_travaux_texte' => 'N’eo ket bet kefluniet al lec’hienn evit c’hoazh. Distroit a-benn nebeut...',
476
+    'info_travaux_titre' => 'Emeur o sevel al lec’hienn',
477
+    'info_trop_resultat' => 'Re a zisoc’hoù evit "@cherche_mot@"; resisait termenoù hoc’h enklask mar plij.',
478
+    'info_utilisation_messagerie_interne' => 'Ober a rit gant postelerezh diabarzh al lec’hienn-mañ.',
479
+    'info_valider_lien' => 'kadarnaat al liamm-mañ',
480
+    'info_verifier_image' => 'gwiriit eo bet treuzkaset mat ho skeudennoù.',
481
+    'info_vignette_defaut' => 'Skeudennig dre ziouer',
482
+    'info_vignette_personnalisee' => 'skeudennig personelaet',
483
+    'info_visite' => 'gweladenn :',
484
+    'info_vos_rendez_vous' => 'Hoc’h emgavioù da zont',
485
+    'infos_vos_pense_bete' => 'Ho notennigoù-eñvor',
486 486
 
487
-	// L
488
-	'label_ajout_id_rapide' => 'Ouzhpennet buan',
489
-	'label_poids_fichier' => 'Ment',
490
-	'lien_afficher_icones_seuls' => 'Diskouez ar skeudennigoù hepken',
491
-	'lien_afficher_texte_icones' => 'Diskouez ar skeudennigoù hag an destenn',
492
-	'lien_afficher_texte_seul' => 'Diskouez an destenn hepken',
493
-	'lien_liberer' => 'dieubiñ',
494
-	'lien_liberer_tous' => 'Dinaskañ an holl',
495
-	'lien_nouvea_pense_bete' => 'NOTENNIG-EÑVOR NEVEZ',
496
-	'lien_nouveau_message' => 'KEMENNADENN NEVEZ',
497
-	'lien_nouvelle_annonce' => 'KEMENN NEVEZ',
498
-	'lien_petitions' => 'SINADEG',
499
-	'lien_popularite' => 'brud : @popularite@%',
500
-	'lien_racine_site' => 'GWRIZIENN AL LEC’HIENN',
501
-	'lien_reessayer' => 'klask en-dro',
502
-	'lien_repondre_message' => 'Repont d’ar gemennadenn-mañ',
503
-	'lien_supprimer' => 'diverkañ',
504
-	'lien_tout_afficher' => 'Diskouez pep tra',
505
-	'lien_visite_site' => 'gweladenniñ al lec’hienn-mañ',
506
-	'lien_visites' => '@visites@ gweladenn',
507
-	'lien_voir_auteur' => 'Gwelet ar skridaozer-mañ',
508
-	'ligne' => 'Linenn',
509
-	'login' => 'Kevreañ',
510
-	'login_acces_prive' => 'tizhout al lodenn brevez',
511
-	'login_autre_identifiant' => 'Kevreañ gant ur c’hod anaout all',
512
-	'login_cookie_accepte' => 'Grit ar pezh zo ezhomm evit ma vint degemeret gant ho merdeer, evit al lec’hienn-mañ d’an nebeutañ',
513
-	'login_cookie_oblige' => 'Evit kevreañ en un doare sur war al lec’hienn-mañ e rankit degemer an toupinoù.',
514
-	'login_deconnexion_ok' => 'Digevreet oc’h.',
515
-	'login_erreur_pass' => 'Fazi ger-tremen.',
516
-	'login_espace_prive' => 'lodenn brevez',
517
-	'login_identifiant_inconnu' => 'N’eo ket anavezet ar c’hoad anaout « @login@ ».',
518
-	'login_login' => 'Kod kevreañ :',
519
-	'login_login2' => 'Login pe postel :',
520
-	'login_login_pass_incorrect' => '(direizh eo ar c’hod kevreañ pe ar ger-tremen)',
521
-	'login_motpasseoublie' => 'ankouaet ho ker-tremen ganeoc’h ?',
522
-	'login_non_securise' => 'Diwallit, n’eo ket suraet ar furmskrid-mañ.
487
+    // L
488
+    'label_ajout_id_rapide' => 'Ouzhpennet buan',
489
+    'label_poids_fichier' => 'Ment',
490
+    'lien_afficher_icones_seuls' => 'Diskouez ar skeudennigoù hepken',
491
+    'lien_afficher_texte_icones' => 'Diskouez ar skeudennigoù hag an destenn',
492
+    'lien_afficher_texte_seul' => 'Diskouez an destenn hepken',
493
+    'lien_liberer' => 'dieubiñ',
494
+    'lien_liberer_tous' => 'Dinaskañ an holl',
495
+    'lien_nouvea_pense_bete' => 'NOTENNIG-EÑVOR NEVEZ',
496
+    'lien_nouveau_message' => 'KEMENNADENN NEVEZ',
497
+    'lien_nouvelle_annonce' => 'KEMENN NEVEZ',
498
+    'lien_petitions' => 'SINADEG',
499
+    'lien_popularite' => 'brud : @popularite@%',
500
+    'lien_racine_site' => 'GWRIZIENN AL LEC’HIENN',
501
+    'lien_reessayer' => 'klask en-dro',
502
+    'lien_repondre_message' => 'Repont d’ar gemennadenn-mañ',
503
+    'lien_supprimer' => 'diverkañ',
504
+    'lien_tout_afficher' => 'Diskouez pep tra',
505
+    'lien_visite_site' => 'gweladenniñ al lec’hienn-mañ',
506
+    'lien_visites' => '@visites@ gweladenn',
507
+    'lien_voir_auteur' => 'Gwelet ar skridaozer-mañ',
508
+    'ligne' => 'Linenn',
509
+    'login' => 'Kevreañ',
510
+    'login_acces_prive' => 'tizhout al lodenn brevez',
511
+    'login_autre_identifiant' => 'Kevreañ gant ur c’hod anaout all',
512
+    'login_cookie_accepte' => 'Grit ar pezh zo ezhomm evit ma vint degemeret gant ho merdeer, evit al lec’hienn-mañ d’an nebeutañ',
513
+    'login_cookie_oblige' => 'Evit kevreañ en un doare sur war al lec’hienn-mañ e rankit degemer an toupinoù.',
514
+    'login_deconnexion_ok' => 'Digevreet oc’h.',
515
+    'login_erreur_pass' => 'Fazi ger-tremen.',
516
+    'login_espace_prive' => 'lodenn brevez',
517
+    'login_identifiant_inconnu' => 'N’eo ket anavezet ar c’hoad anaout « @login@ ».',
518
+    'login_login' => 'Kod kevreañ :',
519
+    'login_login2' => 'Login pe postel :',
520
+    'login_login_pass_incorrect' => '(direizh eo ar c’hod kevreañ pe ar ger-tremen)',
521
+    'login_motpasseoublie' => 'ankouaet ho ker-tremen ganeoc’h ?',
522
+    'login_non_securise' => 'Diwallit, n’eo ket suraet ar furmskrid-mañ.
523 523
    Ma ne fell ket deoc’h e c’hellfe ho ker-tremen bezañ pesketet
524 524
    war ar rouedad, gweredekait Javascript en ho merdeer ha',
525
-	'login_nouvelle_tentative' => 'Klask en-dro',
526
-	'login_par_ici' => 'Enrollet oc’h...dre amañ...',
527
-	'login_pass2' => 'Ger-tremen :',
528
-	'login_preferez_refuser' => '<b>Ma kavit gwell nac’hañ an toupinoù</b>, e c’hellit ober gant un doare all da gevreañ, met n’eo ket ken asur :',
529
-	'login_recharger' => 'adkargañ ar bajenn-mañ',
530
-	'login_rester_identifie' => 'Chom anavezet un nebeud devezhioù', # MODIF
531
-	'login_retour_public' => 'Distreiñ d’al lodenn foran',
532
-	'login_retour_site' => 'Distreiñ d’al lodenn foran',
533
-	'login_retoursitepublic' => 'distreiñ d’al lodenn foran',
534
-	'login_sans_cookie' => 'Kevreañ hep toupinoù',
535
-	'login_securise' => 'Login diogelet',
536
-	'login_sinscrire' => 'en em enskrivañ',
537
-	'login_test_navigateur' => 'taol-arnod merdeer/adkevreañ',
538
-	'login_verifiez_navigateur' => '(Gwiriit memes tra n’eo ket bet memoret ho ker-tremen gant ar merdeer...)',
525
+    'login_nouvelle_tentative' => 'Klask en-dro',
526
+    'login_par_ici' => 'Enrollet oc’h...dre amañ...',
527
+    'login_pass2' => 'Ger-tremen :',
528
+    'login_preferez_refuser' => '<b>Ma kavit gwell nac’hañ an toupinoù</b>, e c’hellit ober gant un doare all da gevreañ, met n’eo ket ken asur :',
529
+    'login_recharger' => 'adkargañ ar bajenn-mañ',
530
+    'login_rester_identifie' => 'Chom anavezet un nebeud devezhioù', # MODIF
531
+    'login_retour_public' => 'Distreiñ d’al lodenn foran',
532
+    'login_retour_site' => 'Distreiñ d’al lodenn foran',
533
+    'login_retoursitepublic' => 'distreiñ d’al lodenn foran',
534
+    'login_sans_cookie' => 'Kevreañ hep toupinoù',
535
+    'login_securise' => 'Login diogelet',
536
+    'login_sinscrire' => 'en em enskrivañ',
537
+    'login_test_navigateur' => 'taol-arnod merdeer/adkevreañ',
538
+    'login_verifiez_navigateur' => '(Gwiriit memes tra n’eo ket bet memoret ho ker-tremen gant ar merdeer...)',
539 539
 
540
-	// M
541
-	'masquer_colonne' => 'Kuzhat ar bann-mañ',
542
-	'masquer_trad' => 'kuzhat an troidigezhioù',
543
-	'message_nouveaux_identifiants_echec' => 'N’heller ket krouiñ anvioù implijer nevez.',
544
-	'message_nouveaux_identifiants_echec_envoi' => 'N’eo ket bet kaset an anvioù  implijer nevez evit kevreañ.',
545
-	'message_nouveaux_identifiants_ok' => 'Kaset eo bet an anvioù implijer nevez evit kevreañ da @email@.',
546
-	'module_fichiers_langues' => 'Restroù yezh',
540
+    // M
541
+    'masquer_colonne' => 'Kuzhat ar bann-mañ',
542
+    'masquer_trad' => 'kuzhat an troidigezhioù',
543
+    'message_nouveaux_identifiants_echec' => 'N’heller ket krouiñ anvioù implijer nevez.',
544
+    'message_nouveaux_identifiants_echec_envoi' => 'N’eo ket bet kaset an anvioù  implijer nevez evit kevreañ.',
545
+    'message_nouveaux_identifiants_ok' => 'Kaset eo bet an anvioù implijer nevez evit kevreañ da @email@.',
546
+    'module_fichiers_langues' => 'Restroù yezh',
547 547
 
548
-	// N
549
-	'navigateur_pas_redirige' => 'Klikit amañ evit kederc’hel ma ne vez ket adheñchet ho merdeer.',
550
-	'numero' => 'Niverenn',
548
+    // N
549
+    'navigateur_pas_redirige' => 'Klikit amañ evit kederc’hel ma ne vez ket adheñchet ho merdeer.',
550
+    'numero' => 'Niverenn',
551 551
 
552
-	// O
553
-	'occurence' => 'Kavadenn',
554
-	'onglet_affacer_base' => 'Diverkañ an diaz',
555
-	'onglet_auteur' => 'Ar skridaozer',
556
-	'onglet_contenu_site' => 'Endalc’had al lec’hienn',
557
-	'onglet_evolution_visite_mod' => 'Emdroadur',
558
-	'onglet_fonctions_avances' => 'Arc’hwelioù kemplezh',
559
-	'onglet_informations_personnelles' => 'Titouroù hiniennel',
560
-	'onglet_interactivite' => 'Etreobererezh',
561
-	'onglet_messagerie' => 'Postelerezh',
562
-	'onglet_repartition_rubrique' => 'Dasparzh diouzh ar rummad',
563
-	'onglet_save_restaur_base' => 'Saveteiñ/Assevel an diaz',
564
-	'onglet_vider_cache' => 'Goullonderiñ ar grubuilh',
552
+    // O
553
+    'occurence' => 'Kavadenn',
554
+    'onglet_affacer_base' => 'Diverkañ an diaz',
555
+    'onglet_auteur' => 'Ar skridaozer',
556
+    'onglet_contenu_site' => 'Endalc’had al lec’hienn',
557
+    'onglet_evolution_visite_mod' => 'Emdroadur',
558
+    'onglet_fonctions_avances' => 'Arc’hwelioù kemplezh',
559
+    'onglet_informations_personnelles' => 'Titouroù hiniennel',
560
+    'onglet_interactivite' => 'Etreobererezh',
561
+    'onglet_messagerie' => 'Postelerezh',
562
+    'onglet_repartition_rubrique' => 'Dasparzh diouzh ar rummad',
563
+    'onglet_save_restaur_base' => 'Saveteiñ/Assevel an diaz',
564
+    'onglet_vider_cache' => 'Goullonderiñ ar grubuilh',
565 565
 
566
-	// P
567
-	'pass_choix_pass' => 'Dibabit ho ker-tremen nevez :',
568
-	'pass_erreur' => 'Fazi',
569
-	'pass_erreur_acces_refuse' => '<b>Fazi :</b> n’hoc’h ket aotreet da zont war al lec’hienn-mañ ken.',
570
-	'pass_erreur_code_inconnu' => '<b>Fazi :</b> ne glot ar c’hod-mañ gant gweladenner ebet a c’hall mont war al lec’hienn-mañ.',
571
-	'pass_erreur_non_enregistre' => '<b>Fazi :</b>n’eo ket enrollet ar chomlec’h <tt>@email_oubli@</tt> war al lec’hienn-mañ.',
572
-	'pass_erreur_non_valide' => '<b>Fazi :</b> n’eo ket reizh ar postel <tt>@email_oubli@</tt> !',
573
-	'pass_erreur_probleme_technique' => '<b>Fazi :</b> abalamout d’u gudenn deknikel, ne c’hell ket ar postel bezañ kaset.',
574
-	'pass_espace_prive_bla' => 'Dav eo bezañ enskrivet a-raok gallout tizhout lodenn brevez al lec’hienn.
566
+    // P
567
+    'pass_choix_pass' => 'Dibabit ho ker-tremen nevez :',
568
+    'pass_erreur' => 'Fazi',
569
+    'pass_erreur_acces_refuse' => '<b>Fazi :</b> n’hoc’h ket aotreet da zont war al lec’hienn-mañ ken.',
570
+    'pass_erreur_code_inconnu' => '<b>Fazi :</b> ne glot ar c’hod-mañ gant gweladenner ebet a c’hall mont war al lec’hienn-mañ.',
571
+    'pass_erreur_non_enregistre' => '<b>Fazi :</b>n’eo ket enrollet ar chomlec’h <tt>@email_oubli@</tt> war al lec’hienn-mañ.',
572
+    'pass_erreur_non_valide' => '<b>Fazi :</b> n’eo ket reizh ar postel <tt>@email_oubli@</tt> !',
573
+    'pass_erreur_probleme_technique' => '<b>Fazi :</b> abalamout d’u gudenn deknikel, ne c’hell ket ar postel bezañ kaset.',
574
+    'pass_espace_prive_bla' => 'Dav eo bezañ enskrivet a-raok gallout tizhout lodenn brevez al lec’hienn.
575 575
   P aviot enrollet e c’hellot lenn ar pennadoù meeur o skrivañ, kinnig pennadoù, ha kemer perzh er foromoù.',
576
-	'pass_forum_bla' => 'Goulennet hoc’h eus gallout kemer perzh war ur forom n’hall nemet an implijerien enrollet skrivañ warnañ.',
577
-	'pass_indiquez_cidessous' => 'Skrivit amañ dindan ar postel a oa bet implijet ganeoc’h evit en em enrollañ.
576
+    'pass_forum_bla' => 'Goulennet hoc’h eus gallout kemer perzh war ur forom n’hall nemet an implijerien enrollet skrivañ warnañ.',
577
+    'pass_indiquez_cidessous' => 'Skrivit amañ dindan ar postel a oa bet implijet ganeoc’h evit en em enrollañ.
578 578
    Ur postel a vo kaset deoc’h ennañ an titouroù ret evit gallout dont en-dro war al lec’hienn.',
579
-	'pass_mail_passcookie' => '(ur gemennadenn emgefre eo homañ)
579
+    'pass_mail_passcookie' => '(ur gemennadenn emgefre eo homañ)
580 580
 Evit gallout distreiñ war al lec’hienn
581 581
 @nom_site_spip@ (@adresse_site@)
582 582
 
@@ -588,139 +588,139 @@  discard block
 block discarded – undo
588 588
 kevreañ en-dro ouzh al lec’hienn.
589 589
 
590 590
 ', # Connecter : gwelloc'h eo ober gant kevreañ zo muioc'h en implij gant an dud. Kevreañ ouzh ar genrouedad hag all.
591
-	'pass_mot_oublie' => 'Ankouaet ar ger-tremen',
592
-	'pass_nouveau_enregistre' => 'Enrollet eo bet ho ker-tremen nevez.',
593
-	'pass_nouveau_pass' => 'Ger-tremen nevez',
594
-	'pass_ok' => 'MAT EO',
595
-	'pass_oubli_mot' => 'Ankouaet ar ger-tremen',
596
-	'pass_procedure_changer' => 'Evit kemmañ ho ker-tremen e rankomp gwiriekaat piv oc’h. Evit en ober diskouezit deomp ar postel liammet gant ho kont.',
597
-	'pass_quitter_fenetre' => 'Kuitaat ar prenestr-mañ',
598
-	'pass_rappel_login' => 'Dalc’hit soñj : « @login@ » eo ho anv-tremen (login).',
599
-	'pass_recevoir_mail' => 'Ur postel a vo kaset deoc’h, ennañ an titouroù ret da c’hallout tizhout al lec’hienn en-dro.', # MODIF
600
-	'pass_retour_public' => 'Distreiñ d’al lodenn foran',
601
-	'pass_rien_a_faire_ici' => 'Netra d’ober amañ.',
602
-	'pass_vousinscrire' => 'En em enskrivañ war al lec’hienn-mañ',
603
-	'precedent' => 'kent',
604
-	'previsualisation' => 'Rakwelet',
605
-	'previsualiser' => 'Rakwelet',
591
+    'pass_mot_oublie' => 'Ankouaet ar ger-tremen',
592
+    'pass_nouveau_enregistre' => 'Enrollet eo bet ho ker-tremen nevez.',
593
+    'pass_nouveau_pass' => 'Ger-tremen nevez',
594
+    'pass_ok' => 'MAT EO',
595
+    'pass_oubli_mot' => 'Ankouaet ar ger-tremen',
596
+    'pass_procedure_changer' => 'Evit kemmañ ho ker-tremen e rankomp gwiriekaat piv oc’h. Evit en ober diskouezit deomp ar postel liammet gant ho kont.',
597
+    'pass_quitter_fenetre' => 'Kuitaat ar prenestr-mañ',
598
+    'pass_rappel_login' => 'Dalc’hit soñj : « @login@ » eo ho anv-tremen (login).',
599
+    'pass_recevoir_mail' => 'Ur postel a vo kaset deoc’h, ennañ an titouroù ret da c’hallout tizhout al lec’hienn en-dro.', # MODIF
600
+    'pass_retour_public' => 'Distreiñ d’al lodenn foran',
601
+    'pass_rien_a_faire_ici' => 'Netra d’ober amañ.',
602
+    'pass_vousinscrire' => 'En em enskrivañ war al lec’hienn-mañ',
603
+    'precedent' => 'kent',
604
+    'previsualisation' => 'Rakwelet',
605
+    'previsualiser' => 'Rakwelet',
606 606
 
607
-	// R
608
-	'retour' => 'Distreiñ',
607
+    // R
608
+    'retour' => 'Distreiñ',
609 609
 
610
-	// S
611
-	'spip_conforme_dtd' => 'SPIP a gav dezhañ e klot an teul-mañ gant e DOCTYPE :',
612
-	'squelette' => 'framm',
613
-	'squelette_inclus_ligne' => 'framm e-barzh, linenn',
614
-	'squelette_ligne' => 'framm, linenn',
615
-	'stats_visites_et_popularite' => '@visites@ gweladenn ; brud; : @popularite@',
616
-	'suivant' => 'war-lerc’h',
610
+    // S
611
+    'spip_conforme_dtd' => 'SPIP a gav dezhañ e klot an teul-mañ gant e DOCTYPE :',
612
+    'squelette' => 'framm',
613
+    'squelette_inclus_ligne' => 'framm e-barzh, linenn',
614
+    'squelette_ligne' => 'framm, linenn',
615
+    'stats_visites_et_popularite' => '@visites@ gweladenn ; brud; : @popularite@',
616
+    'suivant' => 'war-lerc’h',
617 617
 
618
-	// T
619
-	'taille_go' => '@taille@ Go',
620
-	'taille_ko' => '@taille@ ke',
621
-	'taille_mo' => '@taille@ Me',
622
-	'taille_octets' => '@taille@ eizhbit',
623
-	'texte_actualite_site_1' => 'Pa viot boas ouzh an etrefas e c’hellot klikañ war «',
624
-	'texte_actualite_site_2' => 'etrefas klok',
625
-	'texte_actualite_site_3' => '» evit sevijoù ouzhpenn.',
626
-	'texte_creation_automatique_vignette' => 'Ober a reer gant ar sevel skeudennigoù adal skeudennoù. Ma stailhi skeudennoù er furmad(où) @gd_formats@, adal ar furmskrid-mañ e vo staget ur skeudennig @taille_preview@ piksel d’ar muiañ outo.',
627
-	'texte_documents_associes' => 'Stag eo an teulioù-mañ ouzh ar pennad,
618
+    // T
619
+    'taille_go' => '@taille@ Go',
620
+    'taille_ko' => '@taille@ ke',
621
+    'taille_mo' => '@taille@ Me',
622
+    'taille_octets' => '@taille@ eizhbit',
623
+    'texte_actualite_site_1' => 'Pa viot boas ouzh an etrefas e c’hellot klikañ war «',
624
+    'texte_actualite_site_2' => 'etrefas klok',
625
+    'texte_actualite_site_3' => '» evit sevijoù ouzhpenn.',
626
+    'texte_creation_automatique_vignette' => 'Ober a reer gant ar sevel skeudennigoù adal skeudennoù. Ma stailhi skeudennoù er furmad(où) @gd_formats@, adal ar furmskrid-mañ e vo staget ur skeudennig @taille_preview@ piksel d’ar muiañ outo.',
627
+    'texte_documents_associes' => 'Stag eo an teulioù-mañ ouzh ar pennad,
628 628
     met n’int ket bet ensoc’het diouzhtu ennañ
629 629
     Diouzh mod pajennaozañ al lec’hienn e c’hellint bezañ diskouezet dindan stumm restroù stag.',
630
-	'texte_erreur_mise_niveau_base' => 'Ur fazi zo bet gant an diaz titouroù en ur hizivaat.
630
+    'texte_erreur_mise_niveau_base' => 'Ur fazi zo bet gant an diaz titouroù en ur hizivaat.
631 631
   N’eo ket tremenet ar skeudenn <b>@fichier@</b> (pennad @id_article@).
632 632
   Notennit an daveenn-se, klaksit hizivaat en-dro, 
633 633
   ha gwiriit e vez diskouezet ar skeudennoù er pennadoù.',
634
-	'texte_erreur_visiteur' => 'Klasket hoc’h eus tizhout al lodenn brevez gant un anv implijer direizh.',
635
-	'texte_inc_auth_1' => 'Enrollet oc’h dindan al ger kevreañ
634
+    'texte_erreur_visiteur' => 'Klasket hoc’h eus tizhout al lodenn brevez gant un anv implijer direizh.',
635
+    'texte_inc_auth_1' => 'Enrollet oc’h dindan al ger kevreañ
636 636
  <b>@auth_login@</b>, met n’eus ket anezhañ (ken) en diaz titouroù.
637 637
   Klaskit ',
638
-	'texte_inc_auth_2' => 'adkevreañ',
639
-	'texte_inc_auth_3' => ', goude bezañ kuitaet hag adloc’het ho merdeer.',
640
-	'texte_inc_config' => '>Ul levezon vras o deus kemmoù ar bajenn-mañ war mont en-dro hollek al lec’hienn.
638
+    'texte_inc_auth_2' => 'adkevreañ',
639
+    'texte_inc_auth_3' => ', goude bezañ kuitaet hag adloc’het ho merdeer.',
640
+    'texte_inc_config' => '>Ul levezon vras o deus kemmoù ar bajenn-mañ war mont en-dro hollek al lec’hienn.
641 641
 Aliet oc’h da chom hep kemmañ tra ebet e-keit ha n’oc’h ket boas ouzh SPIP.
642 642
  <br /><br /><b>Aliet oc’h da lezel webmestr pennañ al lec’hienn ober war-dro ar pajennoù-mañ.</b>',
643
-	'texte_inc_meta_1' => 'Ur fazi zo bet en ur skrivañ war ar restr <code>@fichier@</code>. Dre ma’z oc’h merour al lec’hienn e rankit ',
644
-	'texte_inc_meta_2' => 'Gwiriañ ar gwirioù da skrivañ ',
645
-	'texte_inc_meta_3' => 'war ar c’havlec’h <code>@repertoire@</code>.',
646
-	'texte_statut_en_cours_redaction' => 'o skridaozañ',
647
-	'texte_statut_poubelle' => 'er pod-lastez',
648
-	'texte_statut_propose_evaluation' => 'kinniget ouzh an amprou',
649
-	'texte_statut_publie' => 'embannet',
650
-	'texte_statut_refuse' => 'nac’het',
651
-	'titre_ajouter_mot_cle' => 'OUZHPENNAÑ UR GER-STUR :',
652
-	'titre_cadre_raccourcis' => 'BERRADENNOÙ :',
653
-	'titre_changer_couleur_interface' => 'Kemm liv an etrefas',
654
-	'titre_image_admin_article' => 'Gallout a rit merañ ar pennad-mañ',
655
-	'titre_image_administrateur' => 'Merour',
656
-	'titre_image_aide' => 'Skoazell diwar-benn an elfenn-mañ',
657
-	'titre_image_auteur_supprime' => 'Skridaozer bet diverket',
658
-	'titre_image_redacteur' => 'Skridaozer hep aotre moned',
659
-	'titre_image_redacteur_02' => 'Skridaozer',
660
-	'titre_image_selecteur' => 'Diskouez al listenn',
661
-	'titre_image_visiteur' => 'Gweladenner',
662
-	'titre_joindre_document' => 'STAGAÑ UN TEUL',
663
-	'titre_mots_cles' => 'GERIOÙ-STUR',
664
-	'titre_probleme_technique' => 'Diwallit : abalamour d’ur gudenn deknikel (servijer SQL), n’eus ket tu da dizhout al lodenn-mañ eus al lec’hienn. Trugarez evit ho komprenezon.',
665
-	'titre_publier_document' => 'EMBANN UN TEUL ER RUBRIKENN-MAÑ',
666
-	'titre_signatures_attente' => 'Sinadurioù a c’hortoz bezañ kadarnaet',
667
-	'titre_signatures_confirmees' => 'Sinadurioù bet gwiriekaet',
668
-	'titre_statistiques' => 'Stadegoù al lec’hienn', # Stadegoù, termen skoueriekaet gant TermBret evit Statistiques.
669
-	'titre_titre_document' => 'Titl an teul :',
670
-	'todo' => 'da zont',
671
-	'trad_definir_reference' => 'Dibab "@titre@" evel dave an troidigezhioù',
672
-	'trad_reference' => '(Pennad diazez evit an troidigezhioù)',
643
+    'texte_inc_meta_1' => 'Ur fazi zo bet en ur skrivañ war ar restr <code>@fichier@</code>. Dre ma’z oc’h merour al lec’hienn e rankit ',
644
+    'texte_inc_meta_2' => 'Gwiriañ ar gwirioù da skrivañ ',
645
+    'texte_inc_meta_3' => 'war ar c’havlec’h <code>@repertoire@</code>.',
646
+    'texte_statut_en_cours_redaction' => 'o skridaozañ',
647
+    'texte_statut_poubelle' => 'er pod-lastez',
648
+    'texte_statut_propose_evaluation' => 'kinniget ouzh an amprou',
649
+    'texte_statut_publie' => 'embannet',
650
+    'texte_statut_refuse' => 'nac’het',
651
+    'titre_ajouter_mot_cle' => 'OUZHPENNAÑ UR GER-STUR :',
652
+    'titre_cadre_raccourcis' => 'BERRADENNOÙ :',
653
+    'titre_changer_couleur_interface' => 'Kemm liv an etrefas',
654
+    'titre_image_admin_article' => 'Gallout a rit merañ ar pennad-mañ',
655
+    'titre_image_administrateur' => 'Merour',
656
+    'titre_image_aide' => 'Skoazell diwar-benn an elfenn-mañ',
657
+    'titre_image_auteur_supprime' => 'Skridaozer bet diverket',
658
+    'titre_image_redacteur' => 'Skridaozer hep aotre moned',
659
+    'titre_image_redacteur_02' => 'Skridaozer',
660
+    'titre_image_selecteur' => 'Diskouez al listenn',
661
+    'titre_image_visiteur' => 'Gweladenner',
662
+    'titre_joindre_document' => 'STAGAÑ UN TEUL',
663
+    'titre_mots_cles' => 'GERIOÙ-STUR',
664
+    'titre_probleme_technique' => 'Diwallit : abalamour d’ur gudenn deknikel (servijer SQL), n’eus ket tu da dizhout al lodenn-mañ eus al lec’hienn. Trugarez evit ho komprenezon.',
665
+    'titre_publier_document' => 'EMBANN UN TEUL ER RUBRIKENN-MAÑ',
666
+    'titre_signatures_attente' => 'Sinadurioù a c’hortoz bezañ kadarnaet',
667
+    'titre_signatures_confirmees' => 'Sinadurioù bet gwiriekaet',
668
+    'titre_statistiques' => 'Stadegoù al lec’hienn', # Stadegoù, termen skoueriekaet gant TermBret evit Statistiques.
669
+    'titre_titre_document' => 'Titl an teul :',
670
+    'todo' => 'da zont',
671
+    'trad_definir_reference' => 'Dibab "@titre@" evel dave an troidigezhioù',
672
+    'trad_reference' => '(Pennad diazez evit an troidigezhioù)',
673 673
 
674
-	// U
675
-	'upload_limit' => 'Re bounner eo ar fichennaoueg-mañ evit ar servijer ; brasañ ment aotreet e <i>upload</i> a zo @max@.',
674
+    // U
675
+    'upload_limit' => 'Re bounner eo ar fichennaoueg-mañ evit ar servijer ; brasañ ment aotreet e <i>upload</i> a zo @max@.',
676 676
 
677
-	// Z
678
-	'zbug_balise_b_aval' => ' : balizenn B en ardraoñ',
679
-	'zbug_balise_inexistante' => 'Disklêriet-fall eo ar valizenn @balise@ evit @from@',
680
-	'zbug_balise_sans_argument' => 'Un arguzenn a vank er valizenn @balise@',
681
-	'zbug_boucle' => 'bouklenn',
682
-	'zbug_boucle_recursive_undef' => 'N’eo ket bet termenet ar vouklenn-mañ : @nom@',
683
-	'zbug_calcul' => 'jediñ',
684
-	'zbug_champ_hors_boucle' => 'Maezienn @champ@ e diavaez ar vouklenn',
685
-	'zbug_champ_hors_motif' => 'Maezienn @champ@ er-maez kendestenn @motif@',
686
-	'zbug_code' => 'kod',
687
-	'zbug_critere_inconnu' => 'Dezverk @critere@ dianav',
688
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} war un daolenn hep alc’hwez kentael atomek',
689
-	'zbug_distant_interdit' => 'N’eo ket posupl war un diaz roadoù diavaez',
690
-	'zbug_doublon_table_sans_cle_primaire' => 'Doublennoù war un diaz hep alc’hwez kentañ atomek',
691
-	'zbug_doublon_table_sans_index' => 'Doublenn war un diaz hep meneger',
692
-	'zbug_erreur_boucle_double' => 'Bouklenn @id@ bet termenet div wech',
693
-	'zbug_erreur_boucle_fermant' => 'Chomet eo digor ar vouklenn @id@',
694
-	'zbug_erreur_boucle_syntaxe' => 'Direizh eo ereadurezh  ar vouklenn  @id@',
695
-	'zbug_erreur_compilation' => 'Fazi kempunañ',
696
-	'zbug_erreur_execution_page' => 'Fazi erounit',
697
-	'zbug_erreur_filtre' => 'Sil @filtre@ didermenet',
698
-	'zbug_erreur_meme_parent' => 'n’hall an dezverk {meme_parent} bezañ implijet nemet war ar bouklennoù (FOROMOÙ) pe (RUBRIKENNOÙ)',
699
-	'zbug_erreur_squelette' => 'Fazi(où) er framm',
700
-	'zbug_hors_compilation' => 'Er-maez kempunad',
701
-	'zbug_info_erreur_squelette' => 'Fazi war al lec’hienn',
702
-	'zbug_inversion_ordre_inexistant' => 'Eilpennañ un urzh n’eus ket anezhañ',
703
-	'zbug_pagination_sans_critere' => 'N’eus dezverk ebet d’ar valizenn #PAJENNAOUIÑ, pe neuze eo implijet en ur vouken a dro warni hec’h-unan',
704
-	'zbug_parametres_inclus_incorrects' => 'Direizh eo an arventenn ensoc’hañ @param@',
705
-	'zbug_profile' => 'Amzer jediñ : @time@',
706
-	'zbug_resultat' => 'disoc’h',
707
-	'zbug_serveur_indefini' => 'Servijer SQL didermenet',
708
-	'zbug_statistiques' => 'Stadegoù ar goulennoù SQL urzhiet diouzh o fad',
709
-	'zbug_table_inconnue' => 'Taolenn SQL « @table@ » dianav',
710
-	'zxml_connus_attributs' => 'perzhioù anavezet',
711
-	'zxml_de' => 'da',
712
-	'zxml_inconnu_attribut' => 'perzh dianav',
713
-	'zxml_inconnu_balise' => 'balizenn dianav',
714
-	'zxml_inconnu_entite' => 'elfenn dianav',
715
-	'zxml_inconnu_id' => 'ID dianav',
716
-	'zxml_mais_de' => 'met eus',
717
-	'zxml_non_conforme' => 'ne glot ket gant an abeg',
718
-	'zxml_non_fils' => 'n’eo ket ur mab da',
719
-	'zxml_nonvide_balise' => 'balizenn ket goullo',
720
-	'zxml_obligatoire_attribut' => 'perzh rediet, met na gaver ket e',
721
-	'zxml_succession_fils_incorrecte' => 'heuliad ar vibien direizh',
722
-	'zxml_survoler' => 'tremen buan da welet ar re zo reizh',
723
-	'zxml_valeur_attribut' => 'talvoudegezh ar perzh',
724
-	'zxml_vide_balise' => 'balizenn c’houllo',
725
-	'zxml_vu' => 'bet gwelet a-raok'
677
+    // Z
678
+    'zbug_balise_b_aval' => ' : balizenn B en ardraoñ',
679
+    'zbug_balise_inexistante' => 'Disklêriet-fall eo ar valizenn @balise@ evit @from@',
680
+    'zbug_balise_sans_argument' => 'Un arguzenn a vank er valizenn @balise@',
681
+    'zbug_boucle' => 'bouklenn',
682
+    'zbug_boucle_recursive_undef' => 'N’eo ket bet termenet ar vouklenn-mañ : @nom@',
683
+    'zbug_calcul' => 'jediñ',
684
+    'zbug_champ_hors_boucle' => 'Maezienn @champ@ e diavaez ar vouklenn',
685
+    'zbug_champ_hors_motif' => 'Maezienn @champ@ er-maez kendestenn @motif@',
686
+    'zbug_code' => 'kod',
687
+    'zbug_critere_inconnu' => 'Dezverk @critere@ dianav',
688
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} war un daolenn hep alc’hwez kentael atomek',
689
+    'zbug_distant_interdit' => 'N’eo ket posupl war un diaz roadoù diavaez',
690
+    'zbug_doublon_table_sans_cle_primaire' => 'Doublennoù war un diaz hep alc’hwez kentañ atomek',
691
+    'zbug_doublon_table_sans_index' => 'Doublenn war un diaz hep meneger',
692
+    'zbug_erreur_boucle_double' => 'Bouklenn @id@ bet termenet div wech',
693
+    'zbug_erreur_boucle_fermant' => 'Chomet eo digor ar vouklenn @id@',
694
+    'zbug_erreur_boucle_syntaxe' => 'Direizh eo ereadurezh  ar vouklenn  @id@',
695
+    'zbug_erreur_compilation' => 'Fazi kempunañ',
696
+    'zbug_erreur_execution_page' => 'Fazi erounit',
697
+    'zbug_erreur_filtre' => 'Sil @filtre@ didermenet',
698
+    'zbug_erreur_meme_parent' => 'n’hall an dezverk {meme_parent} bezañ implijet nemet war ar bouklennoù (FOROMOÙ) pe (RUBRIKENNOÙ)',
699
+    'zbug_erreur_squelette' => 'Fazi(où) er framm',
700
+    'zbug_hors_compilation' => 'Er-maez kempunad',
701
+    'zbug_info_erreur_squelette' => 'Fazi war al lec’hienn',
702
+    'zbug_inversion_ordre_inexistant' => 'Eilpennañ un urzh n’eus ket anezhañ',
703
+    'zbug_pagination_sans_critere' => 'N’eus dezverk ebet d’ar valizenn #PAJENNAOUIÑ, pe neuze eo implijet en ur vouken a dro warni hec’h-unan',
704
+    'zbug_parametres_inclus_incorrects' => 'Direizh eo an arventenn ensoc’hañ @param@',
705
+    'zbug_profile' => 'Amzer jediñ : @time@',
706
+    'zbug_resultat' => 'disoc’h',
707
+    'zbug_serveur_indefini' => 'Servijer SQL didermenet',
708
+    'zbug_statistiques' => 'Stadegoù ar goulennoù SQL urzhiet diouzh o fad',
709
+    'zbug_table_inconnue' => 'Taolenn SQL « @table@ » dianav',
710
+    'zxml_connus_attributs' => 'perzhioù anavezet',
711
+    'zxml_de' => 'da',
712
+    'zxml_inconnu_attribut' => 'perzh dianav',
713
+    'zxml_inconnu_balise' => 'balizenn dianav',
714
+    'zxml_inconnu_entite' => 'elfenn dianav',
715
+    'zxml_inconnu_id' => 'ID dianav',
716
+    'zxml_mais_de' => 'met eus',
717
+    'zxml_non_conforme' => 'ne glot ket gant an abeg',
718
+    'zxml_non_fils' => 'n’eo ket ur mab da',
719
+    'zxml_nonvide_balise' => 'balizenn ket goullo',
720
+    'zxml_obligatoire_attribut' => 'perzh rediet, met na gaver ket e',
721
+    'zxml_succession_fils_incorrecte' => 'heuliad ar vibien direizh',
722
+    'zxml_survoler' => 'tremen buan da welet ar re zo reizh',
723
+    'zxml_valeur_attribut' => 'talvoudegezh ar perzh',
724
+    'zxml_vide_balise' => 'balizenn c’houllo',
725
+    'zxml_vu' => 'bet gwelet a-raok'
726 726
 );
Please login to merge, or discard this patch.
ecrire/iterateur/sql.php 1 patch
Indentation   +204 added lines, -204 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
@@ -27,210 +27,210 @@  discard block
 block discarded – undo
27 27
  * Permet d'itérer sur des données en base de données
28 28
  */
29 29
 class IterateurSQL implements Iterator {
30
-	/**
31
-	 * Ressource sql
32
-	 *
33
-	 * @var Object|bool
34
-	 */
35
-	protected $sqlresult = false;
36
-
37
-	/**
38
-	 * row sql courante
39
-	 *
40
-	 * @var array|null
41
-	 */
42
-	protected $row = null;
43
-
44
-	protected $firstseek = false;
45
-
46
-	/**
47
-	 * Erreur presente ?
48
-	 *
49
-	 * @var bool
50
-	 **/
51
-	public $err = false;
52
-
53
-	/**
54
-	 * Calcul du total des elements
55
-	 *
56
-	 * @var int|null
57
-	 **/
58
-	public $total = null;
59
-
60
-	/**
61
-	 * selectionner les donnees, ie faire la requete SQL
62
-	 *
63
-	 * @return void
64
-	 */
65
-	protected function select() {
66
-		$this->row = null;
67
-		$v = &$this->command;
68
-		$this->sqlresult = calculer_select(
69
-			$v['select'],
70
-			$v['from'],
71
-			$v['type'],
72
-			$v['where'],
73
-			$v['join'],
74
-			$v['groupby'],
75
-			$v['orderby'],
76
-			$v['limit'],
77
-			$v['having'],
78
-			$v['table'],
79
-			$v['id'],
80
-			$v['connect'],
81
-			$this->info
82
-		);
83
-		$this->err = !$this->sqlresult;
84
-		$this->firstseek = false;
85
-		$this->pos = -1;
86
-
87
-		// pas d'init a priori, le calcul ne sera fait qu'en cas de besoin (provoque une double requete souvent inutile en sqlite)
88
-		//$this->total = $this->count();
89
-	}
90
-
91
-	/*
30
+    /**
31
+     * Ressource sql
32
+     *
33
+     * @var Object|bool
34
+     */
35
+    protected $sqlresult = false;
36
+
37
+    /**
38
+     * row sql courante
39
+     *
40
+     * @var array|null
41
+     */
42
+    protected $row = null;
43
+
44
+    protected $firstseek = false;
45
+
46
+    /**
47
+     * Erreur presente ?
48
+     *
49
+     * @var bool
50
+     **/
51
+    public $err = false;
52
+
53
+    /**
54
+     * Calcul du total des elements
55
+     *
56
+     * @var int|null
57
+     **/
58
+    public $total = null;
59
+
60
+    /**
61
+     * selectionner les donnees, ie faire la requete SQL
62
+     *
63
+     * @return void
64
+     */
65
+    protected function select() {
66
+        $this->row = null;
67
+        $v = &$this->command;
68
+        $this->sqlresult = calculer_select(
69
+            $v['select'],
70
+            $v['from'],
71
+            $v['type'],
72
+            $v['where'],
73
+            $v['join'],
74
+            $v['groupby'],
75
+            $v['orderby'],
76
+            $v['limit'],
77
+            $v['having'],
78
+            $v['table'],
79
+            $v['id'],
80
+            $v['connect'],
81
+            $this->info
82
+        );
83
+        $this->err = !$this->sqlresult;
84
+        $this->firstseek = false;
85
+        $this->pos = -1;
86
+
87
+        // pas d'init a priori, le calcul ne sera fait qu'en cas de besoin (provoque une double requete souvent inutile en sqlite)
88
+        //$this->total = $this->count();
89
+    }
90
+
91
+    /*
92 92
 	 * array command: les commandes d'initialisation
93 93
 	 * array info: les infos sur le squelette
94 94
 	 */
95
-	public function __construct($command, $info = []) {
96
-		$this->type = 'SQL';
97
-		$this->command = $command;
98
-		$this->info = $info;
99
-		$this->select();
100
-	}
101
-
102
-	/**
103
-	 * Rembobiner
104
-	 *
105
-	 * @return bool
106
-	 */
107
-	public function rewind(): void {
108
-		if ($this->pos > 0) {
109
-			$this->seek(0);
110
-		}
111
-	}
112
-
113
-	/**
114
-	 * Verifier l'etat de l'iterateur
115
-	 *
116
-	 * @return bool
117
-	 */
118
-	public function valid(): bool {
119
-		if ($this->err) {
120
-			return false;
121
-		}
122
-		if (!$this->firstseek) {
123
-			$this->next();
124
-		}
125
-
126
-		return is_array($this->row);
127
-	}
128
-
129
-	/**
130
-	 * Valeurs sur la position courante
131
-	 *
132
-	 * @return array
133
-	 */
134
-	#[\ReturnTypeWillChange]
135
-	public function current() {
136
-		return $this->row;
137
-	}
138
-
139
-	#[\ReturnTypeWillChange]
140
-	public function key() {
141
-		return $this->pos;
142
-	}
143
-
144
-	/**
145
-	 * Sauter a une position absolue
146
-	 *
147
-	 * @param int $n
148
-	 * @param null|string $continue
149
-	 * @return bool
150
-	 */
151
-	public function seek($n = 0, $continue = null) {
152
-		if (!sql_seek($this->sqlresult, $n, $this->command['connect'], $continue)) {
153
-			// SQLite ne sait pas seek(), il faut relancer la query
154
-			// si la position courante est apres la position visee
155
-			// il faut relancer la requete
156
-			if ($this->pos > $n) {
157
-				$this->free();
158
-				$this->select();
159
-				$this->valid();
160
-			}
161
-			// et utiliser la methode par defaut pour se deplacer au bon endroit
162
-			// (sera fait en cas d'echec de cette fonction)
163
-			return false;
164
-		}
165
-		$this->row = sql_fetch($this->sqlresult, $this->command['connect']);
166
-		$this->pos = min($n, $this->count());
167
-
168
-		return true;
169
-	}
170
-
171
-	/**
172
-	 * Avancer d'un cran
173
-	 *
174
-	 * @return void
175
-	 */
176
-	public function next(): void {
177
-		$this->row = sql_fetch($this->sqlresult, $this->command['connect']);
178
-		$this->pos++;
179
-		$this->firstseek |= true;
180
-	}
181
-
182
-	/**
183
-	 * Avancer et retourner les donnees pour le nouvel element
184
-	 *
185
-	 * @return array|bool|null
186
-	 */
187
-	public function fetch() {
188
-		if ($this->valid()) {
189
-			$r = $this->current();
190
-			$this->next();
191
-		} else {
192
-			$r = false;
193
-		}
194
-
195
-		return $r;
196
-	}
197
-
198
-	/**
199
-	 * liberer les ressources
200
-	 *
201
-	 * @return bool
202
-	 */
203
-	public function free() {
204
-		if (!$this->sqlresult) {
205
-			return true;
206
-		}
207
-		$a = sql_free($this->sqlresult, $this->command['connect']);
208
-		$this->sqlresult = null;
209
-
210
-		return $a;
211
-	}
212
-
213
-	/**
214
-	 * Compter le nombre de resultats
215
-	 *
216
-	 * @return int
217
-	 */
218
-	public function count() {
219
-		if (is_null($this->total)) {
220
-			if (!$this->sqlresult) {
221
-				$this->total = 0;
222
-			} else {
223
-				# cas count(*)
224
-				if (in_array('count(*)', $this->command['select'])) {
225
-					$this->valid();
226
-					$s = $this->current();
227
-					$this->total = $s['count(*)'];
228
-				} else {
229
-					$this->total = sql_count($this->sqlresult, $this->command['connect']);
230
-				}
231
-			}
232
-		}
233
-
234
-		return $this->total;
235
-	}
95
+    public function __construct($command, $info = []) {
96
+        $this->type = 'SQL';
97
+        $this->command = $command;
98
+        $this->info = $info;
99
+        $this->select();
100
+    }
101
+
102
+    /**
103
+     * Rembobiner
104
+     *
105
+     * @return bool
106
+     */
107
+    public function rewind(): void {
108
+        if ($this->pos > 0) {
109
+            $this->seek(0);
110
+        }
111
+    }
112
+
113
+    /**
114
+     * Verifier l'etat de l'iterateur
115
+     *
116
+     * @return bool
117
+     */
118
+    public function valid(): bool {
119
+        if ($this->err) {
120
+            return false;
121
+        }
122
+        if (!$this->firstseek) {
123
+            $this->next();
124
+        }
125
+
126
+        return is_array($this->row);
127
+    }
128
+
129
+    /**
130
+     * Valeurs sur la position courante
131
+     *
132
+     * @return array
133
+     */
134
+    #[\ReturnTypeWillChange]
135
+    public function current() {
136
+        return $this->row;
137
+    }
138
+
139
+    #[\ReturnTypeWillChange]
140
+    public function key() {
141
+        return $this->pos;
142
+    }
143
+
144
+    /**
145
+     * Sauter a une position absolue
146
+     *
147
+     * @param int $n
148
+     * @param null|string $continue
149
+     * @return bool
150
+     */
151
+    public function seek($n = 0, $continue = null) {
152
+        if (!sql_seek($this->sqlresult, $n, $this->command['connect'], $continue)) {
153
+            // SQLite ne sait pas seek(), il faut relancer la query
154
+            // si la position courante est apres la position visee
155
+            // il faut relancer la requete
156
+            if ($this->pos > $n) {
157
+                $this->free();
158
+                $this->select();
159
+                $this->valid();
160
+            }
161
+            // et utiliser la methode par defaut pour se deplacer au bon endroit
162
+            // (sera fait en cas d'echec de cette fonction)
163
+            return false;
164
+        }
165
+        $this->row = sql_fetch($this->sqlresult, $this->command['connect']);
166
+        $this->pos = min($n, $this->count());
167
+
168
+        return true;
169
+    }
170
+
171
+    /**
172
+     * Avancer d'un cran
173
+     *
174
+     * @return void
175
+     */
176
+    public function next(): void {
177
+        $this->row = sql_fetch($this->sqlresult, $this->command['connect']);
178
+        $this->pos++;
179
+        $this->firstseek |= true;
180
+    }
181
+
182
+    /**
183
+     * Avancer et retourner les donnees pour le nouvel element
184
+     *
185
+     * @return array|bool|null
186
+     */
187
+    public function fetch() {
188
+        if ($this->valid()) {
189
+            $r = $this->current();
190
+            $this->next();
191
+        } else {
192
+            $r = false;
193
+        }
194
+
195
+        return $r;
196
+    }
197
+
198
+    /**
199
+     * liberer les ressources
200
+     *
201
+     * @return bool
202
+     */
203
+    public function free() {
204
+        if (!$this->sqlresult) {
205
+            return true;
206
+        }
207
+        $a = sql_free($this->sqlresult, $this->command['connect']);
208
+        $this->sqlresult = null;
209
+
210
+        return $a;
211
+    }
212
+
213
+    /**
214
+     * Compter le nombre de resultats
215
+     *
216
+     * @return int
217
+     */
218
+    public function count() {
219
+        if (is_null($this->total)) {
220
+            if (!$this->sqlresult) {
221
+                $this->total = 0;
222
+            } else {
223
+                # cas count(*)
224
+                if (in_array('count(*)', $this->command['select'])) {
225
+                    $this->valid();
226
+                    $s = $this->current();
227
+                    $this->total = $s['count(*)'];
228
+                } else {
229
+                    $this->total = sql_count($this->sqlresult, $this->command['connect']);
230
+                }
231
+            }
232
+        }
233
+
234
+        return $this->total;
235
+    }
236 236
 }
Please login to merge, or discard this patch.
ecrire/action/api_transmettre.php 2 patches
Indentation   +79 added lines, -79 removed lines patch added patch discarded remove patch
@@ -17,91 +17,91 @@
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
24 24
 function action_api_transmettre_dist($arg = null) {
25 25
 
26
-	// Obtenir l'argument 'id_auteur/cle/format/fond'
27
-	if (is_null($arg)) {
28
-		$arg = _request('arg');
29
-	}
30
-
31
-	$args = explode('/', $arg);
32
-
33
-	if (count($args) !== 4) {
34
-		action_api_transmettre_fail($arg);
35
-	}
36
-
37
-	[$id_auteur, $cle, $format, $fond] = $args;
38
-	$id_auteur = intval($id_auteur);
39
-
40
-	if (preg_match(',[^\w\\.-],', $format)) {
41
-		action_api_transmettre_fail("format $format ??");
42
-	}
43
-	if (preg_match(',[^\w\\.-],', $fond)) {
44
-		action_api_transmettre_fail("fond $fond ??");
45
-	}
46
-
47
-	// verifier la cle
48
-	//[(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})]
49
-	//[(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})]
50
-
51
-	$qs = $_SERVER['QUERY_STRING'];
52
-	// retirer action et arg de la qs
53
-	$contexte = [];
54
-	parse_str($qs, $contexte);
55
-	foreach ($contexte as $k => $v) {
56
-		if (in_array($k, ['action', 'arg', 'var_mode'])) {
57
-			unset($contexte[$k]);
58
-		}
59
-	}
60
-	$qs = http_build_query($contexte);
61
-	if (!securiser_acces_low_sec(intval($id_auteur), $cle, "transmettre/$format", $fond, $qs)) {
62
-		// si le autoriser low_sec n'est pas bon, on peut valider l'appel si l'auteur est identifie
63
-		include_spip('inc/autoriser');
64
-		$autoriser_type = preg_replace(',\W+,', '', "_{$format}{$fond}");
65
-		if (
66
-			!$id_auteur
67
-			or empty($GLOBALS['visiteur_session']['id_auteur'])
68
-			or $GLOBALS['visiteur_session']['id_auteur'] != $id_auteur
69
-			or !autoriser('transmettre', $autoriser_type, $id_auteur)
70
-		) {
71
-			action_api_transmettre_fail("auth QS $qs ??");
72
-		}
73
-	}
74
-
75
-	$contexte['id_auteur'] = $id_auteur;
76
-
77
-	$fond = "transmettre/$format/$fond";
78
-
79
-	if (!trouver_fond($fond)) {
80
-		$fond = "prive/$fond";
81
-	}
82
-
83
-	if (!trouver_fond($fond)) {
84
-		action_api_transmettre_fail("fond $fond ??");
85
-	}
86
-
87
-	$res = recuperer_fond($fond, $contexte, ['raw' => true]);
88
-	if (!empty($res['entetes'])) {
89
-		foreach ($res['entetes'] as $h => $v) {
90
-			header("$h: $v");
91
-		}
92
-	}
93
-
94
-	$res = ltrim($res['texte']);
95
-	if (empty($res)) {
96
-		spip_log("$arg $qs resultat vide", 'transmettre' . _LOG_INFO_IMPORTANTE);
97
-	}
98
-
99
-	echo $res;
100
-	exit();
26
+    // Obtenir l'argument 'id_auteur/cle/format/fond'
27
+    if (is_null($arg)) {
28
+        $arg = _request('arg');
29
+    }
30
+
31
+    $args = explode('/', $arg);
32
+
33
+    if (count($args) !== 4) {
34
+        action_api_transmettre_fail($arg);
35
+    }
36
+
37
+    [$id_auteur, $cle, $format, $fond] = $args;
38
+    $id_auteur = intval($id_auteur);
39
+
40
+    if (preg_match(',[^\w\\.-],', $format)) {
41
+        action_api_transmettre_fail("format $format ??");
42
+    }
43
+    if (preg_match(',[^\w\\.-],', $fond)) {
44
+        action_api_transmettre_fail("fond $fond ??");
45
+    }
46
+
47
+    // verifier la cle
48
+    //[(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})]
49
+    //[(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})]
50
+
51
+    $qs = $_SERVER['QUERY_STRING'];
52
+    // retirer action et arg de la qs
53
+    $contexte = [];
54
+    parse_str($qs, $contexte);
55
+    foreach ($contexte as $k => $v) {
56
+        if (in_array($k, ['action', 'arg', 'var_mode'])) {
57
+            unset($contexte[$k]);
58
+        }
59
+    }
60
+    $qs = http_build_query($contexte);
61
+    if (!securiser_acces_low_sec(intval($id_auteur), $cle, "transmettre/$format", $fond, $qs)) {
62
+        // si le autoriser low_sec n'est pas bon, on peut valider l'appel si l'auteur est identifie
63
+        include_spip('inc/autoriser');
64
+        $autoriser_type = preg_replace(',\W+,', '', "_{$format}{$fond}");
65
+        if (
66
+            !$id_auteur
67
+            or empty($GLOBALS['visiteur_session']['id_auteur'])
68
+            or $GLOBALS['visiteur_session']['id_auteur'] != $id_auteur
69
+            or !autoriser('transmettre', $autoriser_type, $id_auteur)
70
+        ) {
71
+            action_api_transmettre_fail("auth QS $qs ??");
72
+        }
73
+    }
74
+
75
+    $contexte['id_auteur'] = $id_auteur;
76
+
77
+    $fond = "transmettre/$format/$fond";
78
+
79
+    if (!trouver_fond($fond)) {
80
+        $fond = "prive/$fond";
81
+    }
82
+
83
+    if (!trouver_fond($fond)) {
84
+        action_api_transmettre_fail("fond $fond ??");
85
+    }
86
+
87
+    $res = recuperer_fond($fond, $contexte, ['raw' => true]);
88
+    if (!empty($res['entetes'])) {
89
+        foreach ($res['entetes'] as $h => $v) {
90
+            header("$h: $v");
91
+        }
92
+    }
93
+
94
+    $res = ltrim($res['texte']);
95
+    if (empty($res)) {
96
+        spip_log("$arg $qs resultat vide", 'transmettre' . _LOG_INFO_IMPORTANTE);
97
+    }
98
+
99
+    echo $res;
100
+    exit();
101 101
 }
102 102
 
103 103
 function action_api_transmettre_fail($arg) {
104
-	include_spip('inc/minipres');
105
-	echo minipres(_T('info_acces_interdit'), $arg);
106
-	exit;
104
+    include_spip('inc/minipres');
105
+    echo minipres(_T('info_acces_interdit'), $arg);
106
+    exit;
107 107
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -93,7 +93,7 @@
 block discarded – undo
93 93
 
94 94
 	$res = ltrim($res['texte']);
95 95
 	if (empty($res)) {
96
-		spip_log("$arg $qs resultat vide", 'transmettre' . _LOG_INFO_IMPORTANTE);
96
+		spip_log("$arg $qs resultat vide", 'transmettre'._LOG_INFO_IMPORTANTE);
97 97
 	}
98 98
 
99 99
 	echo $res;
Please login to merge, or discard this patch.
ecrire/inc/filtres.php 3 patches
Braces   +10 added lines, -20 removed lines patch added patch discarded remove patch
@@ -656,8 +656,7 @@  discard block
 block discarded – undo
656 656
 			if (!$srcSize) {
657 657
 				$poids_img[$src] = filesize($src);
658 658
 			}
659
-		}
660
-		elseif (strpos($src, '<svg') !== false) {
659
+		} elseif (strpos($src, '<svg') !== false) {
661 660
 			include_spip('inc/svg');
662 661
 			if ($attrs = svg_lire_attributs($src)) {
663 662
 				[$width, $height, $viewbox] = svg_getimagesize_from_attr($attrs);
@@ -3513,8 +3512,7 @@  discard block
 block discarded – undo
3513 3512
 	) {
3514 3513
 		if ($variante_svg_size = substr($variante_svg_generique, 0, -6) . $m[1] . '.svg' and file_exists($variante_svg_size)) {
3515 3514
 			$img_file = $variante_svg_size;
3516
-		}
3517
-		else {
3515
+		} else {
3518 3516
 			$img_file = $variante_svg_generique;
3519 3517
 		}
3520 3518
 	}
@@ -3546,8 +3544,7 @@  discard block
 block discarded – undo
3546 3544
 	}
3547 3545
 	if (!isset($options['chemin_image']) or $options['chemin_image'] == true) {
3548 3546
 		$img_file = chemin_image($img);
3549
-	}
3550
-	else {
3547
+	} else {
3551 3548
 		if (!isset($options['variante_svg_si_possible']) or $options['variante_svg_si_possible'] == true) {
3552 3549
 			$img_file = http_img_variante_svg_si_possible($img_file);
3553 3550
 		}
@@ -3577,11 +3574,9 @@  discard block
 block discarded – undo
3577 3574
 	}
3578 3575
 	if ($alt === false) {
3579 3576
 		$alt = '';
3580
-	}
3581
-	elseif ($alt or $alt === '') {
3577
+	} elseif ($alt or $alt === '') {
3582 3578
 		$alt = " alt='" . attribut_html($alt) . "'";
3583
-	}
3584
-	else {
3579
+	} else {
3585 3580
 		$alt = " alt='" . attribut_html($title) . "'";
3586 3581
 	}
3587 3582
 	return "<img src='$img_file'$alt"
@@ -3708,13 +3703,11 @@  discard block
 block discarded – undo
3708 3703
 		if (!is_null($class)) {
3709 3704
 			if (strlen($class)) {
3710 3705
 				$img = inserer_attribut($img, 'class', $class);
3711
-			}
3712
-			else {
3706
+			} else {
3713 3707
 				$img = vider_attribut($img, 'class');
3714 3708
 			}
3715 3709
 		}
3716
-	}
3717
-	else {
3710
+	} else {
3718 3711
 		$img = http_img_pack(
3719 3712
 			$img,
3720 3713
 			$alt,
@@ -3812,8 +3805,7 @@  discard block
 block discarded – undo
3812 3805
 	if (!is_null($class)) {
3813 3806
 		if (strlen($class)) {
3814 3807
 			$balise_svg = inserer_attribut($balise_svg, 'class', $class);
3815
-		}
3816
-		else {
3808
+		} else {
3817 3809
 			$balise_svg = vider_attribut($balise_svg, 'class');
3818 3810
 		}
3819 3811
 	}
@@ -3825,8 +3817,7 @@  discard block
 block discarded – undo
3825 3817
 		$balise_svg = inserer_attribut($balise_svg, 'aria-labelledby', $id);
3826 3818
 		$title = "<title id=\"$id\">" . entites_html($alt) . "</title>\n";
3827 3819
 		$balise_svg .= $title;
3828
-	}
3829
-	else {
3820
+	} else {
3830 3821
 		$balise_svg = inserer_attribut($balise_svg, 'aria-hidden', 'true');
3831 3822
 	}
3832 3823
 
@@ -5234,8 +5225,7 @@  discard block
 block discarded – undo
5234 5225
 	// reduit la variabilite du nom et donc le nombre de css concatenees possibles in fine
5235 5226
 	if (isset($options['hash_on_content']) and $options['hash_on_content']) {
5236 5227
 		$hash = md5($contexte_implicite['host'] . '::' . $cache);
5237
-	}
5238
-	else {
5228
+	} else {
5239 5229
 		unset($contexte_implicite['notes']); // pas pertinent pour signaler un changeemnt de contenu pour des css/js
5240 5230
 		ksort($contexte);
5241 5231
 		$hash = md5($fond . json_encode($contexte_implicite, JSON_THROW_ON_ERROR) . json_encode($contexte, JSON_THROW_ON_ERROR) . $connect);
Please login to merge, or discard this patch.
Spacing   +128 added lines, -129 removed lines patch added patch discarded remove patch
@@ -96,7 +96,7 @@  discard block
 block discarded – undo
96 96
 	}
97 97
 
98 98
 	include_fichiers_fonctions();
99
-	foreach (['filtre_' . $fonc, 'filtre_' . $fonc . '_dist', $fonc] as $f) {
99
+	foreach (['filtre_'.$fonc, 'filtre_'.$fonc.'_dist', $fonc] as $f) {
100 100
 		trouver_filtre_matrice($f); // charge des fichiers spécifiques éventuels
101 101
 		if (is_callable($f)) {
102 102
 			return $f;
@@ -234,7 +234,7 @@  discard block
 block discarded – undo
234 234
 	// affichage "GIT [master: abcdef]"
235 235
 	$commit = $desc['commit_short'] ?? $desc['commit'];
236 236
 	if ($desc['branch']) {
237
-		$commit = $desc['branch'] . ': ' . $commit;
237
+		$commit = $desc['branch'].': '.$commit;
238 238
 	}
239 239
 	return "{$desc['vcs']} [$commit]";
240 240
 }
@@ -253,9 +253,9 @@  discard block
 block discarded – undo
253 253
 	}
254 254
 
255 255
 	// version installee par GIT
256
-	if (lire_fichier($dir . '/.git/HEAD', $c)) {
256
+	if (lire_fichier($dir.'/.git/HEAD', $c)) {
257 257
 		$currentHead = trim(substr($c, 4));
258
-		if (lire_fichier($dir . '/.git/' . $currentHead, $hash)) {
258
+		if (lire_fichier($dir.'/.git/'.$currentHead, $hash)) {
259 259
 			return [
260 260
 				'vcs' => 'GIT',
261 261
 				'branch' => basename($currentHead),
@@ -282,8 +282,8 @@  discard block
 block discarded – undo
282 282
 		$dir = '.';
283 283
 	}
284 284
 	// version installee par SVN
285
-	if (file_exists($dir . '/.svn/wc.db') && class_exists(\SQLite3::class)) {
286
-		$db = new SQLite3($dir . '/.svn/wc.db');
285
+	if (file_exists($dir.'/.svn/wc.db') && class_exists(\SQLite3::class)) {
286
+		$db = new SQLite3($dir.'/.svn/wc.db');
287 287
 		$result = $db->query('SELECT changed_revision FROM nodes WHERE local_relpath = "" LIMIT 1');
288 288
 		if ($result) {
289 289
 			$row = $result->fetchArray();
@@ -301,12 +301,12 @@  discard block
 block discarded – undo
301 301
 
302 302
 // La matrice est necessaire pour ne filtrer _que_ des fonctions definies dans filtres_images
303 303
 // et laisser passer les fonctions personnelles baptisees image_...
304
-$GLOBALS['spip_matrice']['image_graver'] = true;//'inc/filtres_images_mini.php';
305
-$GLOBALS['spip_matrice']['image_select'] = true;//'inc/filtres_images_mini.php';
306
-$GLOBALS['spip_matrice']['image_reduire'] = true;//'inc/filtres_images_mini.php';
307
-$GLOBALS['spip_matrice']['image_reduire_par'] = true;//'inc/filtres_images_mini.php';
308
-$GLOBALS['spip_matrice']['image_passe_partout'] = true;//'inc/filtres_images_mini.php';
309
-$GLOBALS['spip_matrice']['image_recadre_avec_fallback'] = true;//'inc/filtres_images_mini.php';
304
+$GLOBALS['spip_matrice']['image_graver'] = true; //'inc/filtres_images_mini.php';
305
+$GLOBALS['spip_matrice']['image_select'] = true; //'inc/filtres_images_mini.php';
306
+$GLOBALS['spip_matrice']['image_reduire'] = true; //'inc/filtres_images_mini.php';
307
+$GLOBALS['spip_matrice']['image_reduire_par'] = true; //'inc/filtres_images_mini.php';
308
+$GLOBALS['spip_matrice']['image_passe_partout'] = true; //'inc/filtres_images_mini.php';
309
+$GLOBALS['spip_matrice']['image_recadre_avec_fallback'] = true; //'inc/filtres_images_mini.php';
310 310
 
311 311
 $GLOBALS['spip_matrice']['couleur_html_to_hex'] = 'inc/filtres_images_mini.php';
312 312
 $GLOBALS['spip_matrice']['couleur_hex_to_hsl'] = 'inc/filtres_images_mini.php';
@@ -465,8 +465,8 @@  discard block
 block discarded – undo
465 465
  */
466 466
 function filtre_debug($val, $key = null) {
467 467
 	$debug = (
468
-		is_null($key) ? '' : (var_export($key, true) . ' = ')
469
-		) . var_export($val, true);
468
+		is_null($key) ? '' : (var_export($key, true).' = ')
469
+		).var_export($val, true);
470 470
 
471 471
 	include_spip('inc/autoriser');
472 472
 	if (autoriser('webmestre')) {
@@ -522,7 +522,7 @@  discard block
 block discarded – undo
522 522
 		$is_file = false;
523 523
 	}
524 524
 	if ($is_file) {
525
-		$is_local_file = function ($path) {
525
+		$is_local_file = function($path) {
526 526
 			if (strpos($path, '?') !== false) {
527 527
 				$path = supprimer_timestamp($path);
528 528
 				// remove ?24px added by find_in_theme on .svg files
@@ -571,7 +571,7 @@  discard block
 block discarded – undo
571 571
 					if ($mouseover = extraire_attribut($reduit, 'onmouseover')) {
572 572
 						if (preg_match(",this[.]src=['\"]([^'\"]+)['\"],ims", $mouseover, $match)) {
573 573
 							$srcover = $match[1];
574
-							$srcover_filter = $filtre("<img src='" . $match[1] . "' />", ...$args);
574
+							$srcover_filter = $filtre("<img src='".$match[1]."' />", ...$args);
575 575
 							$srcover_filter = extraire_attribut($srcover_filter, 'src');
576 576
 							$reduit = str_replace($srcover, $srcover_filter, $reduit);
577 577
 						}
@@ -972,7 +972,7 @@  discard block
 block discarded – undo
972 972
 	// " -> &quot; et tout ce genre de choses
973 973
 	$u = $GLOBALS['meta']['pcre_u'];
974 974
 	$texte = str_replace('&nbsp;', ' ', $texte);
975
-	$texte = preg_replace('/\s{2,}/S' . $u, ' ', $texte);
975
+	$texte = preg_replace('/\s{2,}/S'.$u, ' ', $texte);
976 976
 	// ne pas echapper les sinqle quotes car certains outils de syndication gerent mal
977 977
 	$texte = entites_html($texte, false, false);
978 978
 	// mais bien echapper les double quotes !
@@ -1032,7 +1032,7 @@  discard block
 block discarded – undo
1032 1032
  **/
1033 1033
 function supprimer_numero($texte) {
1034 1034
 	return preg_replace(
1035
-		',^[[:space:]]*([0-9]+)([.)]|' . chr(194) . '?' . chr(176) . ')[[:space:]]+,S',
1035
+		',^[[:space:]]*([0-9]+)([.)]|'.chr(194).'?'.chr(176).')[[:space:]]+,S',
1036 1036
 		'',
1037 1037
 		$texte
1038 1038
 	);
@@ -1060,7 +1060,7 @@  discard block
 block discarded – undo
1060 1060
 function recuperer_numero($texte) {
1061 1061
 	if (
1062 1062
 		preg_match(
1063
-			',^[[:space:]]*([0-9]+)([.)]|' . chr(194) . '?' . chr(176) . ')[[:space:]]+,S',
1063
+			',^[[:space:]]*([0-9]+)([.)]|'.chr(194).'?'.chr(176).')[[:space:]]+,S',
1064 1064
 			$texte,
1065 1065
 			$regs
1066 1066
 		)
@@ -1151,8 +1151,8 @@  discard block
 block discarded – undo
1151 1151
  **/
1152 1152
 function textebrut($texte) {
1153 1153
 	$u = $GLOBALS['meta']['pcre_u'];
1154
-	$texte = preg_replace('/\s+/S' . $u, ' ', $texte);
1155
-	$texte = preg_replace('/<(p|br)( [^>]*)?' . '>/iS', "\n\n", $texte);
1154
+	$texte = preg_replace('/\s+/S'.$u, ' ', $texte);
1155
+	$texte = preg_replace('/<(p|br)( [^>]*)?'.'>/iS', "\n\n", $texte);
1156 1156
 	$texte = preg_replace("/^\n+/", '', $texte);
1157 1157
 	$texte = preg_replace("/\n+$/", '', $texte);
1158 1158
 	$texte = preg_replace("/\n +/", "\n", $texte);
@@ -1186,7 +1186,7 @@  discard block
 block discarded – undo
1186 1186
 		)
1187 1187
 	) {
1188 1188
 		foreach ($liens[0] as $a) {
1189
-			$rel = 'noopener noreferrer ' . extraire_attribut($a, 'rel');
1189
+			$rel = 'noopener noreferrer '.extraire_attribut($a, 'rel');
1190 1190
 			$ablank = inserer_attribut($a, 'rel', $rel);
1191 1191
 			$ablank = inserer_attribut($ablank, 'target', '_blank');
1192 1192
 			$texte = str_replace($a, $ablank, $texte);
@@ -1211,7 +1211,7 @@  discard block
 block discarded – undo
1211 1211
 		foreach ($regs[0] as $a) {
1212 1212
 			$rel = extraire_attribut($a, 'rel') ?? '';
1213 1213
 			if (strpos($rel, 'nofollow') === false) {
1214
-				$rel = 'nofollow' . ($rel ? " $rel" : '');
1214
+				$rel = 'nofollow'.($rel ? " $rel" : '');
1215 1215
 				$anofollow = inserer_attribut($a, 'rel', $rel);
1216 1216
 				$texte = str_replace($a, $anofollow, $texte);
1217 1217
 			}
@@ -1240,7 +1240,7 @@  discard block
 block discarded – undo
1240 1240
 	$u = $GLOBALS['meta']['pcre_u'];
1241 1241
 	$texte = preg_replace('@</p>@iS', "\n", $texte);
1242 1242
 	$texte = preg_replace("@<p\b.*>@UiS", '<br />', $texte);
1243
-	$texte = preg_replace('@^\s*<br />@S' . $u, '', $texte);
1243
+	$texte = preg_replace('@^\s*<br />@S'.$u, '', $texte);
1244 1244
 
1245 1245
 	return $texte;
1246 1246
 }
@@ -1271,7 +1271,7 @@  discard block
 block discarded – undo
1271 1271
 		return $texte;
1272 1272
 	}
1273 1273
 	include_spip('inc/texte');
1274
-	$tag = preg_match(',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS', $texte) ?
1274
+	$tag = preg_match(',</?('._BALISES_BLOCS.')[>[:space:]],iS', $texte) ?
1275 1275
 		'div' : 'span';
1276 1276
 
1277 1277
 	return "<$tag style='word-wrap:break-word;'>$texte</$tag>";
@@ -1383,7 +1383,7 @@  discard block
 block discarded – undo
1383 1383
 	}
1384 1384
 	$u = $GLOBALS['meta']['pcre_u'];
1385 1385
 	if ($textebrut) {
1386
-		$texte = preg_replace([",\n,", ',\s(?=\s),msS' . $u], [' ', ''], textebrut($texte));
1386
+		$texte = preg_replace([",\n,", ',\s(?=\s),msS'.$u], [' ', ''], textebrut($texte));
1387 1387
 	}
1388 1388
 	$texte = texte_backend($texte);
1389 1389
 	$texte = str_replace(["'", '"'], ['&#039;', '&#034;'], $texte);
@@ -1418,7 +1418,7 @@  discard block
 block discarded – undo
1418 1418
 	# un message pour abs_url
1419 1419
 	$GLOBALS['mode_abs_url'] = 'url';
1420 1420
 	$url = trim($url);
1421
-	$r = ',^(?:' . _PROTOCOLES_STD . '):?/?/?$,iS';
1421
+	$r = ',^(?:'._PROTOCOLES_STD.'):?/?/?$,iS';
1422 1422
 
1423 1423
 	return preg_match($r, $url) ? '' : ($entites ? entites_html($url) : $url);
1424 1424
 }
@@ -1618,14 +1618,14 @@  discard block
 block discarded – undo
1618 1618
 	if (strpos($texte, '<') !== false) {
1619 1619
 		include_spip('inc/lien');
1620 1620
 		if (defined('_PREG_MODELE')) {
1621
-			$preg_modeles = '@' . _PREG_MODELE . '@imsS';
1621
+			$preg_modeles = '@'._PREG_MODELE.'@imsS';
1622 1622
 			$texte = echappe_html($texte, '', true, $preg_modeles);
1623 1623
 		}
1624 1624
 	}
1625 1625
 
1626 1626
 	$debut = '';
1627 1627
 	$suite = $texte;
1628
-	while ($t = strpos('-' . $suite, "\n", 1)) {
1628
+	while ($t = strpos('-'.$suite, "\n", 1)) {
1629 1629
 		$debut .= substr($suite, 0, $t - 1);
1630 1630
 		$suite = substr($suite, $t);
1631 1631
 		$car = substr($suite, 0, 1);
@@ -1643,11 +1643,11 @@  discard block
 block discarded – undo
1643 1643
 			$suite = substr($suite, strlen($regs[0]));
1644 1644
 		}
1645 1645
 	}
1646
-	$texte = $debut . $suite;
1646
+	$texte = $debut.$suite;
1647 1647
 
1648 1648
 	$texte = echappe_retour($texte);
1649 1649
 
1650
-	return $texte . $fin;
1650
+	return $texte.$fin;
1651 1651
 }
1652 1652
 
1653 1653
 
@@ -1709,7 +1709,7 @@  discard block
 block discarded – undo
1709 1709
 		}
1710 1710
 
1711 1711
 		foreach ($regs as $reg) {
1712
-			$cle = ($reg[1] ? $reg[1] . ':' : '') . $reg[2];
1712
+			$cle = ($reg[1] ? $reg[1].':' : '').$reg[2];
1713 1713
 			$desc = $traduire($cle, $lang, true);
1714 1714
 			$l = $desc->langue;
1715 1715
 			// si pas de traduction, on laissera l'écriture de l'idiome entier dans le texte.
@@ -1823,9 +1823,9 @@  discard block
 block discarded – undo
1823 1823
 					// il ne faut pas echapper en div si propre produit un seul paragraphe
1824 1824
 					include_spip('inc/texte');
1825 1825
 					$trad_propre = preg_replace(',(^<p[^>]*>|</p>$),Uims', '', propre($trad));
1826
-					$mode = preg_match(',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS', $trad_propre) ? 'div' : 'span';
1826
+					$mode = preg_match(',</?('._BALISES_BLOCS.')[>[:space:]],iS', $trad_propre) ? 'div' : 'span';
1827 1827
 					if ($mode === 'div') {
1828
-						$trad = rtrim($trad) . "\n\n";
1828
+						$trad = rtrim($trad)."\n\n";
1829 1829
 					}
1830 1830
 					$trad = code_echappement($trad, 'multi', false, $mode);
1831 1831
 					$trad = str_replace("'", '"', inserer_attribut($trad, 'lang', $l));
@@ -2025,7 +2025,7 @@  discard block
 block discarded – undo
2025 2025
 	if (is_array($balise)) {
2026 2026
 		array_walk(
2027 2027
 			$balise,
2028
-			function (&$a, $key, $t) {
2028
+			function(&$a, $key, $t) {
2029 2029
 				$a = extraire_attribut($a, $t);
2030 2030
 			},
2031 2031
 			$attribut
@@ -2122,14 +2122,14 @@  discard block
 block discarded – undo
2122 2122
 
2123 2123
 	if ($old !== null) {
2124 2124
 		// Remplacer l'ancien attribut du meme nom
2125
-		$balise = $r[1] . $insert . $r[5];
2125
+		$balise = $r[1].$insert.$r[5];
2126 2126
 	} else {
2127 2127
 		// preferer une balise " />" (comme <img />)
2128 2128
 		if (preg_match(',/>,', $balise)) {
2129
-			$balise = preg_replace(',\s?/>,S', $insert . ' />', $balise, 1);
2129
+			$balise = preg_replace(',\s?/>,S', $insert.' />', $balise, 1);
2130 2130
 		} // sinon une balise <a ...> ... </a>
2131 2131
 		else {
2132
-			$balise = preg_replace(',\s?>,S', $insert . '>', $balise, 1);
2132
+			$balise = preg_replace(',\s?>,S', $insert.'>', $balise, 1);
2133 2133
 		}
2134 2134
 	}
2135 2135
 
@@ -2184,7 +2184,7 @@  discard block
 block discarded – undo
2184 2184
 		if (
2185 2185
 			$class_courante
2186 2186
 			and strpos($class_courante, (string) $c) !== false
2187
-			and preg_match('/(^|\s)' . preg_quote($c) . '($|\s)/', $class_courante)
2187
+			and preg_match('/(^|\s)'.preg_quote($c).'($|\s)/', $class_courante)
2188 2188
 		) {
2189 2189
 			$is_class_presente = true;
2190 2190
 		}
@@ -2192,12 +2192,12 @@  discard block
 block discarded – undo
2192 2192
 			in_array($operation, ['ajouter', 'commuter'])
2193 2193
 			and !$is_class_presente
2194 2194
 		) {
2195
-			$class_new = ltrim(rtrim($class_new ?? '') . ' ' . $c);
2195
+			$class_new = ltrim(rtrim($class_new ?? '').' '.$c);
2196 2196
 		} elseif (
2197 2197
 			in_array($operation, ['supprimer', 'commuter'])
2198 2198
 			and $is_class_presente
2199 2199
 		) {
2200
-			$class_new = trim(preg_replace('/(^|\s)' . preg_quote($c) . '($|\s)/', "\\1", $class_new));
2200
+			$class_new = trim(preg_replace('/(^|\s)'.preg_quote($c).'($|\s)/', "\\1", $class_new));
2201 2201
 		}
2202 2202
 	}
2203 2203
 
@@ -2260,7 +2260,7 @@  discard block
 block discarded – undo
2260 2260
 // Quelques fonctions de calcul arithmetique
2261 2261
 //
2262 2262
 function floatstr($a) {
2263
- return str_replace(',', '.', (string)floatval($a));
2263
+ return str_replace(',', '.', (string) floatval($a));
2264 2264
 }
2265 2265
 function strize($f, $a, $b) {
2266 2266
  return floatstr($f(floatstr($a), floatstr($b)));
@@ -2396,13 +2396,13 @@  discard block
 block discarded – undo
2396 2396
 	if (!defined('_TAGS_NOM_AUTEUR')) {
2397 2397
 		define('_TAGS_NOM_AUTEUR', '');
2398 2398
 	}
2399
-	$tags_acceptes = array_unique(explode(',', 'multi,' . _TAGS_NOM_AUTEUR));
2399
+	$tags_acceptes = array_unique(explode(',', 'multi,'._TAGS_NOM_AUTEUR));
2400 2400
 	foreach ($tags_acceptes as $tag) {
2401 2401
 		if (strlen($tag)) {
2402
-			$remp1[] = '<' . trim($tag) . '>';
2403
-			$remp1[] = '</' . trim($tag) . '>';
2404
-			$remp2[] = '\x60' . trim($tag) . '\x61';
2405
-			$remp2[] = '\x60/' . trim($tag) . '\x61';
2402
+			$remp1[] = '<'.trim($tag).'>';
2403
+			$remp1[] = '</'.trim($tag).'>';
2404
+			$remp2[] = '\x60'.trim($tag).'\x61';
2405
+			$remp2[] = '\x60/'.trim($tag).'\x61';
2406 2406
 		}
2407 2407
 	}
2408 2408
 	$v_nom = str_replace($remp2, $remp1, supprimer_tags(str_replace($remp1, $remp2, $nom)));
@@ -2522,10 +2522,10 @@  discard block
 block discarded – undo
2522 2522
 	$fichier = basename($url);
2523 2523
 
2524 2524
 	return '<a rel="enclosure"'
2525
-	. ($url ? ' href="' . spip_htmlspecialchars($url) . '"' : '')
2526
-	. ($type ? ' type="' . spip_htmlspecialchars($type) . '"' : '')
2527
-	. ($length ? ' title="' . spip_htmlspecialchars($length) . '"' : '')
2528
-	. '>' . $fichier . '</a>';
2525
+	. ($url ? ' href="'.spip_htmlspecialchars($url).'"' : '')
2526
+	. ($type ? ' type="'.spip_htmlspecialchars($type).'"' : '')
2527
+	. ($length ? ' title="'.spip_htmlspecialchars($length).'"' : '')
2528
+	. '>'.$fichier.'</a>';
2529 2529
 }
2530 2530
 
2531 2531
 /**
@@ -2553,9 +2553,9 @@  discard block
 block discarded – undo
2553 2553
 			} # vieux data
2554 2554
 			$fichier = basename($url);
2555 2555
 			$enclosures[] = '<enclosure'
2556
-				. ($url ? ' url="' . spip_htmlspecialchars($url) . '"' : '')
2557
-				. ($type ? ' type="' . spip_htmlspecialchars($type) . '"' : '')
2558
-				. ($length ? ' length="' . $length . '"' : '')
2556
+				. ($url ? ' url="'.spip_htmlspecialchars($url).'"' : '')
2557
+				. ($type ? ' type="'.spip_htmlspecialchars($type).'"' : '')
2558
+				. ($length ? ' length="'.$length.'"' : '')
2559 2559
 				. ' />';
2560 2560
 		}
2561 2561
 	}
@@ -2581,7 +2581,7 @@  discard block
 block discarded – undo
2581 2581
 		if (extraire_attribut($e, 'rel') == 'tag') {
2582 2582
 			$subjects .= '<dc:subject>'
2583 2583
 				. texte_backend(textebrut($e))
2584
-				. '</dc:subject>' . "\n";
2584
+				. '</dc:subject>'."\n";
2585 2585
 		}
2586 2586
 	}
2587 2587
 
@@ -2617,7 +2617,7 @@  discard block
 block discarded – undo
2617 2617
 	if (is_array($texte)) {
2618 2618
 		array_walk(
2619 2619
 			$texte,
2620
-			function (&$a, $key, $t) {
2620
+			function(&$a, $key, $t) {
2621 2621
 				$a = extraire_balise($a, $t);
2622 2622
 			},
2623 2623
 			$tag
@@ -2665,7 +2665,7 @@  discard block
 block discarded – undo
2665 2665
 	if (is_array($texte)) {
2666 2666
 		array_walk(
2667 2667
 			$texte,
2668
-			function (&$a, $key, $t) {
2668
+			function(&$a, $key, $t) {
2669 2669
 				$a = extraire_balises($a, $t);
2670 2670
 			},
2671 2671
 			$tag
@@ -2798,7 +2798,7 @@  discard block
 block discarded – undo
2798 2798
 		if ($fond != '404') {
2799 2799
 			$contexte = array_shift($p);
2800 2800
 			$contexte['page'] = $fond;
2801
-			$action = preg_replace('/([?]' . preg_quote($fond) . '[^&=]*[0-9]+)(&|$)/', '?&', $action);
2801
+			$action = preg_replace('/([?]'.preg_quote($fond).'[^&=]*[0-9]+)(&|$)/', '?&', $action);
2802 2802
 		}
2803 2803
 	}
2804 2804
 	// defaire ce qu'a injecte urls_decoder_url : a revoir en modifiant la signature de urls_decoder_url
@@ -2853,9 +2853,9 @@  discard block
 block discarded – undo
2853 2853
 			. '"'
2854 2854
 			. (is_null($val)
2855 2855
 				? ''
2856
-				: ' value="' . entites_html($val) . '"'
2856
+				: ' value="'.entites_html($val).'"'
2857 2857
 			)
2858
-			. ' type="hidden"' . "\n/>";
2858
+			. ' type="hidden"'."\n/>";
2859 2859
 	}
2860 2860
 
2861 2861
 	return join('', $hidden);
@@ -2965,7 +2965,7 @@  discard block
 block discarded – undo
2965 2965
 
2966 2966
 	return preg_replace_callback(
2967 2967
 		",url\s*\(\s*['\"]?([^'\"/#\s][^:]*)['\"]?\s*\),Uims",
2968
-		fn($x) => "url('" . suivre_lien($path, $x[1]) . "')",
2968
+		fn($x) => "url('".suivre_lien($path, $x[1])."')",
2969 2969
 		$contenu
2970 2970
 	);
2971 2971
 }
@@ -3026,14 +3026,14 @@  discard block
 block discarded – undo
3026 3026
 	) {
3027 3027
 		$distant = true;
3028 3028
 		$cssf = parse_url($css);
3029
-		$cssf = $cssf['path'] . ($cssf['query'] ? '?' . $cssf['query'] : '');
3029
+		$cssf = $cssf['path'].($cssf['query'] ? '?'.$cssf['query'] : '');
3030 3030
 		$cssf = preg_replace(',[?:&=],', '_', $cssf);
3031 3031
 	} else {
3032 3032
 		$distant = false;
3033 3033
 		$cssf = $css;
3034 3034
 		// 1. regarder d'abord si un fichier avec la bonne direction n'est pas aussi
3035 3035
 		//propose (rien a faire dans ce cas)
3036
-		$f = preg_replace(',(_rtl)?\.css$,i', '_' . $ndir . '.css', $css);
3036
+		$f = preg_replace(',(_rtl)?\.css$,i', '_'.$ndir.'.css', $css);
3037 3037
 		if (@file_exists($f)) {
3038 3038
 			return $f;
3039 3039
 		}
@@ -3043,7 +3043,7 @@  discard block
 block discarded – undo
3043 3043
 	$dir_var = sous_repertoire(_DIR_VAR, 'cache-css');
3044 3044
 	$f = $dir_var
3045 3045
 		. preg_replace(',.*/(.*?)(_rtl)?\.css,', '\1', $cssf)
3046
-		. '.' . substr(md5($cssf), 0, 4) . '_' . $ndir . '.css';
3046
+		. '.'.substr(md5($cssf), 0, 4).'_'.$ndir.'.css';
3047 3047
 
3048 3048
 	// la css peut etre distante (url absolue !)
3049 3049
 	if ($distant) {
@@ -3089,8 +3089,8 @@  discard block
 block discarded – undo
3089 3089
 		} // si la css_direction commence par $dir_var on la fait passer pour une absolue
3090 3090
 		elseif (substr($css_direction, 0, strlen($dir_var)) == $dir_var) {
3091 3091
 			$css_direction = substr($css_direction, strlen($dir_var));
3092
-			$src_faux_abs['/@@@@@@/' . $css_direction] = $css_direction;
3093
-			$css_direction = '/@@@@@@/' . $css_direction;
3092
+			$src_faux_abs['/@@@@@@/'.$css_direction] = $css_direction;
3093
+			$css_direction = '/@@@@@@/'.$css_direction;
3094 3094
 		}
3095 3095
 		$src[] = $regs[0][$k];
3096 3096
 		$src_direction_css[] = str_replace($import_css, $css_direction, $regs[0][$k]);
@@ -3139,7 +3139,7 @@  discard block
 block discarded – undo
3139 3139
 
3140 3140
 	$f = basename($css, '.css');
3141 3141
 	$f = sous_repertoire(_DIR_VAR, 'cache-css')
3142
-		. preg_replace(',(.*?)(_rtl|_ltr)?$,', "\\1-urlabs-" . substr(md5("$css-urlabs"), 0, 4) . "\\2", $f)
3142
+		. preg_replace(',(.*?)(_rtl|_ltr)?$,', "\\1-urlabs-".substr(md5("$css-urlabs"), 0, 4)."\\2", $f)
3143 3143
 		. '.css';
3144 3144
 
3145 3145
 	if ((@filemtime($f) > @filemtime($css)) and (_VAR_MODE != 'recalcul')) {
@@ -3149,7 +3149,7 @@  discard block
 block discarded – undo
3149 3149
 	if ($url_absolue_css == $css) {
3150 3150
 		if (
3151 3151
 			strncmp($GLOBALS['meta']['adresse_site'], $css, $l = strlen($GLOBALS['meta']['adresse_site'])) != 0
3152
-			or !lire_fichier(_DIR_RACINE . substr($css, $l), $contenu)
3152
+			or !lire_fichier(_DIR_RACINE.substr($css, $l), $contenu)
3153 3153
 		) {
3154 3154
 			include_spip('inc/distant');
3155 3155
 			$contenu = recuperer_url($css);
@@ -3261,7 +3261,7 @@  discard block
 block discarded – undo
3261 3261
 	$expression = str_replace('\/', '/', $expression);
3262 3262
 	$expression = str_replace('/', '\/', $expression);
3263 3263
 
3264
-	if (preg_match('/' . $expression . '/' . $modif, $texte ?? '', $r)) {
3264
+	if (preg_match('/'.$expression.'/'.$modif, $texte ?? '', $r)) {
3265 3265
 		if (isset($r[$capte])) {
3266 3266
 			return $r[$capte];
3267 3267
 		} else {
@@ -3299,7 +3299,7 @@  discard block
 block discarded – undo
3299 3299
 	$expression = str_replace('\/', '/', $expression);
3300 3300
 	$expression = str_replace('/', '\/', $expression);
3301 3301
 
3302
-	return preg_replace('/' . $expression . '/' . $modif, $replace, $texte);
3302
+	return preg_replace('/'.$expression.'/'.$modif, $replace, $texte);
3303 3303
 }
3304 3304
 
3305 3305
 
@@ -3318,7 +3318,7 @@  discard block
 block discarded – undo
3318 3318
 function traiter_doublons_documents(&$doublons, $letexte) {
3319 3319
 
3320 3320
 	// Verifier dans le texte & les notes (pas beau, helas)
3321
-	$t = $letexte . $GLOBALS['les_notes'];
3321
+	$t = $letexte.$GLOBALS['les_notes'];
3322 3322
 
3323 3323
 	if (
3324 3324
 		strstr($t, 'spip_document_') // evite le preg_match_all si inutile
@@ -3332,7 +3332,7 @@  discard block
 block discarded – undo
3332 3332
 		if (!isset($doublons['documents'])) {
3333 3333
 			$doublons['documents'] = '';
3334 3334
 		}
3335
-		$doublons['documents'] .= ',' . join(',', $matches[1]);
3335
+		$doublons['documents'] .= ','.join(',', $matches[1]);
3336 3336
 	}
3337 3337
 
3338 3338
 	return $letexte;
@@ -3389,7 +3389,7 @@  discard block
 block discarded – undo
3389 3389
 	if ($env) {
3390 3390
 		foreach ($env as $i => $j) {
3391 3391
 			if (is_string($j) and !in_array($i, $ignore_params)) {
3392
-				$texte .= "<param name='" . attribut_html($i) . "'\n\tvalue='" . attribut_html($j) . "' />";
3392
+				$texte .= "<param name='".attribut_html($i)."'\n\tvalue='".attribut_html($j)."' />";
3393 3393
 			}
3394 3394
 		}
3395 3395
 	}
@@ -3428,7 +3428,7 @@  discard block
 block discarded – undo
3428 3428
 	if ($env) {
3429 3429
 		foreach ($env as $i => $j) {
3430 3430
 			if (is_string($j) and !in_array($i, $ignore_params)) {
3431
-				$texte .= attribut_html($i) . "='" . attribut_html($j) . "' ";
3431
+				$texte .= attribut_html($i)."='".attribut_html($j)."' ";
3432 3432
 			}
3433 3433
 		}
3434 3434
 	}
@@ -3502,10 +3502,10 @@  discard block
 block discarded – undo
3502 3502
 	// si il y a un .svg a la bonne taille (-16.svg) a cote, on l'utilise en remplacement du -16.png
3503 3503
 	if (
3504 3504
 		preg_match(',-(\d+)[.](png|gif|svg)$,', $img_file, $m)
3505
-		and $variante_svg_generique = substr($img_file, 0, -strlen($m[0])) . '-xx.svg'
3505
+		and $variante_svg_generique = substr($img_file, 0, -strlen($m[0])).'-xx.svg'
3506 3506
 		and file_exists($variante_svg_generique)
3507 3507
 	) {
3508
-		if ($variante_svg_size = substr($variante_svg_generique, 0, -6) . $m[1] . '.svg' and file_exists($variante_svg_size)) {
3508
+		if ($variante_svg_size = substr($variante_svg_generique, 0, -6).$m[1].'.svg' and file_exists($variante_svg_size)) {
3509 3509
 			$img_file = $variante_svg_size;
3510 3510
 		}
3511 3511
 		else {
@@ -3563,7 +3563,7 @@  discard block
 block discarded – undo
3563 3563
 				return '';
3564 3564
 			}
3565 3565
 		}
3566
-		$atts .= " width='" . $largeur . "' height='" . $hauteur . "'";
3566
+		$atts .= " width='".$largeur."' height='".$hauteur."'";
3567 3567
 	}
3568 3568
 
3569 3569
 	if (file_exists($img_file)) {
@@ -3573,14 +3573,14 @@  discard block
 block discarded – undo
3573 3573
 		$alt = '';
3574 3574
 	}
3575 3575
 	elseif ($alt or $alt === '') {
3576
-		$alt = " alt='" . attribut_html($alt) . "'";
3576
+		$alt = " alt='".attribut_html($alt)."'";
3577 3577
 	}
3578 3578
 	else {
3579
-		$alt = " alt='" . attribut_html($title) . "'";
3579
+		$alt = " alt='".attribut_html($title)."'";
3580 3580
 	}
3581 3581
 	return "<img src='$img_file'$alt"
3582
-	. ($title ? ' title="' . attribut_html($title) . '"' : '')
3583
-	. ' ' . ltrim($atts)
3582
+	. ($title ? ' title="'.attribut_html($title).'"' : '')
3583
+	. ' '.ltrim($atts)
3584 3584
 	. ' />';
3585 3585
 }
3586 3586
 
@@ -3594,10 +3594,10 @@  discard block
 block discarded – undo
3594 3594
  */
3595 3595
 function http_style_background($img, $att = '', $size = null) {
3596 3596
 	if ($size and is_numeric($size)) {
3597
-		$size = trim($size) . 'px';
3597
+		$size = trim($size).'px';
3598 3598
 	}
3599
-	return " style='background" .
3600
-		($att ? '' : '-image') . ': url("' . chemin_image($img) . '")' . ($att ? (' ' . $att) : '') . ';'
3599
+	return " style='background".
3600
+		($att ? '' : '-image').': url("'.chemin_image($img).'")'.($att ? (' '.$att) : '').';'
3601 3601
 		. ($size ? "background-size:{$size};" : '')
3602 3602
 		. "'";
3603 3603
 }
@@ -3712,7 +3712,7 @@  discard block
 block discarded – undo
3712 3712
 		$img = http_img_pack(
3713 3713
 			$img,
3714 3714
 			$alt,
3715
-			$class ? " class='" . attribut_html($class) . "'" : '',
3715
+			$class ? " class='".attribut_html($class)."'" : '',
3716 3716
 			'',
3717 3717
 			['chemin_image' => false, 'utiliser_suffixe_size' => false]
3718 3718
 		);
@@ -3797,7 +3797,7 @@  discard block
 block discarded – undo
3797 3797
 	$balise_svg_source = $balise_svg;
3798 3798
 
3799 3799
 	// entete XML à supprimer
3800
-	$svg = preg_replace(',^\s*<\?xml[^>]*\?' . '>,', '', $svg);
3800
+	$svg = preg_replace(',^\s*<\?xml[^>]*\?'.'>,', '', $svg);
3801 3801
 
3802 3802
 	// IE est toujours mon ami
3803 3803
 	$balise_svg = inserer_attribut($balise_svg, 'focusable', 'false');
@@ -3815,9 +3815,9 @@  discard block
 block discarded – undo
3815 3815
 	// regler le alt
3816 3816
 	if ($alt) {
3817 3817
 		$balise_svg = inserer_attribut($balise_svg, 'role', 'img');
3818
-		$id = 'img-svg-title-' . substr(md5("$img_file:$svg:$alt"), 0, 4);
3818
+		$id = 'img-svg-title-'.substr(md5("$img_file:$svg:$alt"), 0, 4);
3819 3819
 		$balise_svg = inserer_attribut($balise_svg, 'aria-labelledby', $id);
3820
-		$title = "<title id=\"$id\">" . entites_html($alt) . "</title>\n";
3820
+		$title = "<title id=\"$id\">".entites_html($alt)."</title>\n";
3821 3821
 		$balise_svg .= $title;
3822 3822
 	}
3823 3823
 	else {
@@ -3865,7 +3865,7 @@  discard block
 block discarded – undo
3865 3865
 	if (is_array($tableau)) {
3866 3866
 		foreach ($tableau as $k => $v) {
3867 3867
 			$res = recuperer_fond(
3868
-				'modeles/' . $modele,
3868
+				'modeles/'.$modele,
3869 3869
 				array_merge(['cle' => $k], (is_array($v) ? $v : ['valeur' => $v]))
3870 3870
 			);
3871 3871
 			$texte .= $res;
@@ -4050,7 +4050,7 @@  discard block
 block discarded – undo
4050 4050
 	}
4051 4051
 
4052 4052
 	$c = serialize($c);
4053
-	$cle = calculer_cle_action($form . $c);
4053
+	$cle = calculer_cle_action($form.$c);
4054 4054
 	$c = "$cle:$c";
4055 4055
 
4056 4056
 	// on ne stocke pas les contextes dans des fichiers en cache
@@ -4108,15 +4108,15 @@  discard block
 block discarded – undo
4108 4108
 	}
4109 4109
 	// toujours encoder l'url source dans le bloc ajax
4110 4110
 	$r = self();
4111
-	$r = ' data-origin="' . $r . '"';
4111
+	$r = ' data-origin="'.$r.'"';
4112 4112
 	$class = 'ajaxbloc';
4113 4113
 	if ($ajaxid and is_string($ajaxid)) {
4114 4114
 		// ajaxid est normalement conforme a un nom de classe css
4115 4115
 		// on ne verifie pas la conformite, mais on passe entites_html par dessus par precaution
4116
-		$class .= ' ajax-id-' . entites_html($ajaxid);
4116
+		$class .= ' ajax-id-'.entites_html($ajaxid);
4117 4117
 	}
4118 4118
 
4119
-	return "<div class='$class' " . "data-ajax-env='$env'$r>\n$emboite</div><!--ajaxbloc-->\n";
4119
+	return "<div class='$class' "."data-ajax-env='$env'$r>\n$emboite</div><!--ajaxbloc-->\n";
4120 4120
 }
4121 4121
 
4122 4122
 /**
@@ -4160,7 +4160,7 @@  discard block
 block discarded – undo
4160 4160
 		$cle = substr($c, 0, $p);
4161 4161
 		$c = substr($c, $p + 1);
4162 4162
 
4163
-		if ($cle == calculer_cle_action($form . $c)) {
4163
+		if ($cle == calculer_cle_action($form.$c)) {
4164 4164
 			$env = @unserialize($c);
4165 4165
 			return $env;
4166 4166
 		}
@@ -4281,13 +4281,13 @@  discard block
 block discarded – undo
4281 4281
 				}
4282 4282
 			}
4283 4283
 		}
4284
-		$att .= 'class="' . ($class ? attribut_html($class) . ' ' : '') . (defined('_LIEN_OU_EXPOSE_CLASS_ON') ? _LIEN_OU_EXPOSE_CLASS_ON : 'on') . '"';
4284
+		$att .= 'class="'.($class ? attribut_html($class).' ' : '').(defined('_LIEN_OU_EXPOSE_CLASS_ON') ? _LIEN_OU_EXPOSE_CLASS_ON : 'on').'"';
4285 4285
 	} else {
4286 4286
 		$bal = 'a';
4287 4287
 		$att = "href='$url'"
4288
-			. ($title ? " title='" . attribut_html($title) . "'" : '')
4289
-			. ($class ? " class='" . attribut_html($class) . "'" : '')
4290
-			. ($rel ? " rel='" . attribut_html($rel) . "'" : '')
4288
+			. ($title ? " title='".attribut_html($title)."'" : '')
4289
+			. ($class ? " class='".attribut_html($class)."'" : '')
4290
+			. ($rel ? " rel='".attribut_html($rel)."'" : '')
4291 4291
 			. $evt;
4292 4292
 	}
4293 4293
 	if ($libelle === null) {
@@ -4426,7 +4426,7 @@  discard block
 block discarded – undo
4426 4426
 
4427 4427
 	// Icône
4428 4428
 	$icone = http_img_pack($fond, $alt, "width='$size' height='$size'");
4429
-	$icone = '<span class="icone-image' . ($fonction ? " icone-fonction icone-fonction-$fonction" : '') . "\">$icone</span>";
4429
+	$icone = '<span class="icone-image'.($fonction ? " icone-fonction icone-fonction-$fonction" : '')."\">$icone</span>";
4430 4430
 
4431 4431
 	// Markup final
4432 4432
 	if ($type == 'lien') {
@@ -4701,20 +4701,20 @@  discard block
 block discarded – undo
4701 4701
 		$class_form = 'ajax';
4702 4702
 		$class = str_replace('ajax', '', $class);
4703 4703
 	}
4704
-	$class_btn = 'submit ' . trim($class);
4704
+	$class_btn = 'submit '.trim($class);
4705 4705
 
4706 4706
 	if ($confirm) {
4707
-		$confirm = 'confirm("' . attribut_html($confirm) . '")';
4707
+		$confirm = 'confirm("'.attribut_html($confirm).'")';
4708 4708
 		if ($callback) {
4709 4709
 			$callback = "$confirm?($callback):false";
4710 4710
 		} else {
4711 4711
 			$callback = $confirm;
4712 4712
 		}
4713 4713
 	}
4714
-	$onclick = $callback ? " onclick='return " . addcslashes($callback, "'") . "'" : '';
4714
+	$onclick = $callback ? " onclick='return ".addcslashes($callback, "'")."'" : '';
4715 4715
 	$title = $title ? " title='$title'" : '';
4716 4716
 
4717
-	return "<form class='bouton_action_post $class_form' method='post' action='$url'><div>" . form_hidden($url)
4717
+	return "<form class='bouton_action_post $class_form' method='post' action='$url'><div>".form_hidden($url)
4718 4718
 	. "<button type='submit' class='$class_btn'$title$onclick>$libelle</button></div></form>";
4719 4719
 }
4720 4720
 
@@ -4779,14 +4779,14 @@  discard block
 block discarded – undo
4779 4779
 		$champ_titre = '';
4780 4780
 		if ($demande_titre) {
4781 4781
 			// si pas de titre declare mais champ titre, il sera peuple par le select *
4782
-			$champ_titre = (!empty($desc['titre'])) ? ', ' . $desc['titre'] : '';
4782
+			$champ_titre = (!empty($desc['titre'])) ? ', '.$desc['titre'] : '';
4783 4783
 		}
4784 4784
 		include_spip('base/abstract_sql');
4785 4785
 		include_spip('base/connect_sql');
4786 4786
 		$objets[$type_objet][$id_objet] = sql_fetsel(
4787
-			'*' . $champ_titre,
4787
+			'*'.$champ_titre,
4788 4788
 			$desc['table_sql'],
4789
-			id_table_objet($type_objet) . ' = ' . intval($id_objet)
4789
+			id_table_objet($type_objet).' = '.intval($id_objet)
4790 4790
 		);
4791 4791
 
4792 4792
 		// Toujours noter la longueur d'introduction, même si pas demandé cette fois-ci
@@ -4879,8 +4879,7 @@  discard block
 block discarded – undo
4879 4879
 	if (isset($ligne_sql['chapo'])) {
4880 4880
 		$chapo = $ligne_sql['chapo'];
4881 4881
 		$texte = strlen($descriptif) ?
4882
-			'' :
4883
-			"$chapo \n\n $texte";
4882
+			'' : "$chapo \n\n $texte";
4884 4883
 	}
4885 4884
 
4886 4885
 	// Longueur en paramètre, sinon celle renseignée dans la description de l'objet, sinon valeur en dur
@@ -4955,7 +4954,7 @@  discard block
 block discarded – undo
4955 4954
 		return $texte;
4956 4955
 	}
4957 4956
 
4958
-	$traitement = str_replace('%s', "'" . texte_script($texte) . "'", $traitement);
4957
+	$traitement = str_replace('%s', "'".texte_script($texte)."'", $traitement);
4959 4958
 
4960 4959
 	// signaler qu'on est dans l'espace prive pour les filtres qui se servent de ce flag
4961 4960
 	if (test_espace_prive()) {
@@ -4994,7 +4993,7 @@  discard block
 block discarded – undo
4994 4993
 	}
4995 4994
 	$url = generer_objet_url($id_objet, $objet, '', '', null, '', $connect);
4996 4995
 
4997
-	return "<a href='$url' class='$objet'>" . couper($titre, $longueur) . '</a>';
4996
+	return "<a href='$url' class='$objet'>".couper($titre, $longueur).'</a>';
4998 4997
 }
4999 4998
 
5000 4999
 /**
@@ -5020,10 +5019,10 @@  discard block
 block discarded – undo
5020 5019
 function wrap($texte, $wrap) {
5021 5020
 	$balises = extraire_balises($wrap);
5022 5021
 	if (preg_match_all(",<([a-z]\w*)\b[^>]*>,UimsS", $wrap, $regs, PREG_PATTERN_ORDER)) {
5023
-		$texte = $wrap . $texte;
5022
+		$texte = $wrap.$texte;
5024 5023
 		$regs = array_reverse($regs[1]);
5025
-		$wrap = '</' . implode('></', $regs) . '>';
5026
-		$texte = $texte . $wrap;
5024
+		$wrap = '</'.implode('></', $regs).'>';
5025
+		$texte = $texte.$wrap;
5027 5026
 	}
5028 5027
 
5029 5028
 	return $texte;
@@ -5054,7 +5053,7 @@  discard block
 block discarded – undo
5054 5053
 
5055 5054
 	// caster $u en array si besoin
5056 5055
 	if (is_object($u)) {
5057
-		$u = (array)$u;
5056
+		$u = (array) $u;
5058 5057
 	}
5059 5058
 
5060 5059
 	if (is_array($u)) {
@@ -5076,7 +5075,7 @@  discard block
 block discarded – undo
5076 5075
 		// sinon on passe a la ligne et on indente
5077 5076
 		$i_str = str_pad('', $indent, ' ');
5078 5077
 		foreach ($u as $k => $v) {
5079
-			$out .= $join . $i_str . "$k: " . filtre_print_dist($v, $join, $indent + 2);
5078
+			$out .= $join.$i_str."$k: ".filtre_print_dist($v, $join, $indent + 2);
5080 5079
 		}
5081 5080
 
5082 5081
 		return $out;
@@ -5130,7 +5129,7 @@  discard block
 block discarded – undo
5130 5129
  * @return string
5131 5130
  */
5132 5131
 function objet_icone($objet, $taille = 24, $class = '') {
5133
-	$icone = objet_info($objet, 'icone_objet') . '-' . $taille . '.png';
5132
+	$icone = objet_info($objet, 'icone_objet').'-'.$taille.'.png';
5134 5133
 	$icone = chemin_image($icone);
5135 5134
 	$balise_img = charger_filtre('balise_img');
5136 5135
 
@@ -5156,7 +5155,7 @@  discard block
 block discarded – undo
5156 5155
  */
5157 5156
 function objet_T($objet, $chaine, $args = [], $options = []) {
5158 5157
 	$chaine = explode(':', $chaine);
5159
-	if ($t = _T($objet . ':' . end($chaine), $args, array_merge($options, ['force' => false]))) {
5158
+	if ($t = _T($objet.':'.end($chaine), $args, array_merge($options, ['force' => false]))) {
5160 5159
 		return $t;
5161 5160
 	}
5162 5161
 	$chaine = implode(':', $chaine);
@@ -5222,7 +5221,7 @@  discard block
 block discarded – undo
5222 5221
 	$cache = recuperer_fond($fond, $contexte, $options, $connect);
5223 5222
 
5224 5223
 	// calculer le nom de la css
5225
-	$dir_var = sous_repertoire(_DIR_VAR, 'cache-' . $extension);
5224
+	$dir_var = sous_repertoire(_DIR_VAR, 'cache-'.$extension);
5226 5225
 	$nom_safe = preg_replace(',\W,', '_', str_replace('.', '_', $fond));
5227 5226
 	$contexte_implicite = calculer_contexte_implicite();
5228 5227
 
@@ -5230,14 +5229,14 @@  discard block
 block discarded – undo
5230 5229
 	// mais on peut hasher selon le contenu a la demande, si plusieurs contextes produisent un meme contenu
5231 5230
 	// reduit la variabilite du nom et donc le nombre de css concatenees possibles in fine
5232 5231
 	if (isset($options['hash_on_content']) and $options['hash_on_content']) {
5233
-		$hash = md5($contexte_implicite['host'] . '::' . $cache);
5232
+		$hash = md5($contexte_implicite['host'].'::'.$cache);
5234 5233
 	}
5235 5234
 	else {
5236 5235
 		unset($contexte_implicite['notes']); // pas pertinent pour signaler un changeemnt de contenu pour des css/js
5237 5236
 		ksort($contexte);
5238
-		$hash = md5($fond . json_encode($contexte_implicite, JSON_THROW_ON_ERROR) . json_encode($contexte, JSON_THROW_ON_ERROR) . $connect);
5237
+		$hash = md5($fond.json_encode($contexte_implicite, JSON_THROW_ON_ERROR).json_encode($contexte, JSON_THROW_ON_ERROR).$connect);
5239 5238
 	}
5240
-	$filename = $dir_var . $extension . "dyn-$nom_safe-" . substr($hash, 0, 8) . ".$extension";
5239
+	$filename = $dir_var.$extension."dyn-$nom_safe-".substr($hash, 0, 8).".$extension";
5241 5240
 
5242 5241
 	// mettre a jour le fichier si il n'existe pas
5243 5242
 	// ou trop ancien
@@ -5245,8 +5244,8 @@  discard block
 block discarded – undo
5245 5244
 	// et recopie sur le fichier cible uniquement si il change
5246 5245
 	if (
5247 5246
 		!file_exists($filename)
5248
-		or !file_exists($filename . '.last')
5249
-		or (isset($cache['lastmodified']) and $cache['lastmodified'] and filemtime($filename . '.last') < $cache['lastmodified'])
5247
+		or !file_exists($filename.'.last')
5248
+		or (isset($cache['lastmodified']) and $cache['lastmodified'] and filemtime($filename.'.last') < $cache['lastmodified'])
5250 5249
 		or (defined('_VAR_MODE') and _VAR_MODE == 'recalcul')
5251 5250
 	) {
5252 5251
 		$contenu = $cache['texte'];
@@ -5270,10 +5269,10 @@  discard block
 block discarded – undo
5270 5269
 			}
5271 5270
 			// pas de date dans le commentaire car sinon ca invalide le md5 et force la maj
5272 5271
 			// mais on peut mettre un md5 du contenu, ce qui donne un aperu rapide si la feuille a change ou non
5273
-			$comment .= "}\n   md5:" . md5($contenu) . " */\n";
5272
+			$comment .= "}\n   md5:".md5($contenu)." */\n";
5274 5273
 		}
5275 5274
 		// et ecrire le fichier si il change
5276
-		ecrire_fichier_calcule_si_modifie($filename, $comment . $contenu, false, true);
5275
+		ecrire_fichier_calcule_si_modifie($filename, $comment.$contenu, false, true);
5277 5276
 	}
5278 5277
 
5279 5278
 	return timestamp($filename);
@@ -5506,7 +5505,7 @@  discard block
 block discarded – undo
5506 5505
 	if ($e > 0 and strlen($mid) > 8) {
5507 5506
 		$mid = '***...***';
5508 5507
 	}
5509
-	return substr($passe, 0, $e) . $mid . ($e > 0 ? substr($passe, -$e) : '');
5508
+	return substr($passe, 0, $e).$mid.($e > 0 ? substr($passe, -$e) : '');
5510 5509
 }
5511 5510
 
5512 5511
 
@@ -5568,7 +5567,7 @@  discard block
 block discarded – undo
5568 5567
 		case 'id':
5569 5568
 		case 'anchor':
5570 5569
 			if (preg_match(',^\d,', $texte)) {
5571
-				$texte = substr($type, 0, 1) . $texte;
5570
+				$texte = substr($type, 0, 1).$texte;
5572 5571
 			}
5573 5572
 	}
5574 5573
 
@@ -5578,9 +5577,9 @@  discard block
 block discarded – undo
5578 5577
 
5579 5578
 	if (strlen($texte) < $longueur_mini and $longueur_mini < $longueur_maxi) {
5580 5579
 		if (preg_match(',^\d,', $texte)) {
5581
-			$texte = ($type ? substr($type, 0, 1) : 's') . $texte;
5580
+			$texte = ($type ? substr($type, 0, 1) : 's').$texte;
5582 5581
 		}
5583
-		$texte .= $separateur . md5($original);
5582
+		$texte .= $separateur.md5($original);
5584 5583
 		$texte = substr($texte, 0, $longueur_mini);
5585 5584
 	}
5586 5585
 
Please login to merge, or discard this patch.
Indentation   +2476 added lines, -2476 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Filtres
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/charsets');
@@ -42,8 +42,8 @@  discard block
 block discarded – undo
42 42
  * @return string Fonction PHP correspondante du filtre
43 43
  */
44 44
 function charger_filtre($fonc, $default = 'filtre_identite_dist') {
45
-	include_fichiers_fonctions(); // inclure les fichiers fonctions
46
-	return chercher_filtre($fonc, $default);
45
+    include_fichiers_fonctions(); // inclure les fichiers fonctions
46
+    return chercher_filtre($fonc, $default);
47 47
 }
48 48
 
49 49
 /**
@@ -53,7 +53,7 @@  discard block
 block discarded – undo
53 53
  * @return string Texte
54 54
  **/
55 55
 function filtre_identite_dist($texte) {
56
- return $texte;
56
+    return $texte;
57 57
 }
58 58
 
59 59
 /**
@@ -77,33 +77,33 @@  discard block
 block discarded – undo
77 77
  *     Fonction PHP correspondante du filtre demandé
78 78
  */
79 79
 function chercher_filtre($fonc, $default = null) {
80
-	if (!$fonc) {
81
-		return $default;
82
-	}
83
-	// Cas des types mime, sans confondre avec les appels de fonction de classe
84
-	// Foo::Bar
85
-	// qui peuvent etre avec un namespace : space\Foo::Bar
86
-	if (preg_match(',^[\w]+/,', $fonc)) {
87
-		$nom = preg_replace(',\W,', '_', $fonc);
88
-		$f = chercher_filtre($nom);
89
-		// cas du sous-type MIME sans filtre associe, passer au type:
90
-		// si filtre_text_plain pas defini, passe a filtre_text
91
-		if (!$f and $nom !== $fonc) {
92
-			$f = chercher_filtre(preg_replace(',\W.*$,', '', $fonc));
93
-		}
94
-
95
-		return $f;
96
-	}
97
-
98
-	include_fichiers_fonctions();
99
-	foreach (['filtre_' . $fonc, 'filtre_' . $fonc . '_dist', $fonc] as $f) {
100
-		trouver_filtre_matrice($f); // charge des fichiers spécifiques éventuels
101
-		if (is_callable($f)) {
102
-			return $f;
103
-		}
104
-	}
105
-
106
-	return $default;
80
+    if (!$fonc) {
81
+        return $default;
82
+    }
83
+    // Cas des types mime, sans confondre avec les appels de fonction de classe
84
+    // Foo::Bar
85
+    // qui peuvent etre avec un namespace : space\Foo::Bar
86
+    if (preg_match(',^[\w]+/,', $fonc)) {
87
+        $nom = preg_replace(',\W,', '_', $fonc);
88
+        $f = chercher_filtre($nom);
89
+        // cas du sous-type MIME sans filtre associe, passer au type:
90
+        // si filtre_text_plain pas defini, passe a filtre_text
91
+        if (!$f and $nom !== $fonc) {
92
+            $f = chercher_filtre(preg_replace(',\W.*$,', '', $fonc));
93
+        }
94
+
95
+        return $f;
96
+    }
97
+
98
+    include_fichiers_fonctions();
99
+    foreach (['filtre_' . $fonc, 'filtre_' . $fonc . '_dist', $fonc] as $f) {
100
+        trouver_filtre_matrice($f); // charge des fichiers spécifiques éventuels
101
+        if (is_callable($f)) {
102
+            return $f;
103
+        }
104
+    }
105
+
106
+    return $default;
107 107
 }
108 108
 
109 109
 /**
@@ -147,8 +147,8 @@  discard block
 block discarded – undo
147 147
  *     Chaîne vide sinon.
148 148
  **/
149 149
 function appliquer_filtre($arg, $filtre) {
150
-	$args = func_get_args();
151
-	return appliquer_filtre_sinon($arg, $filtre, $args, '');
150
+    $args = func_get_args();
151
+    return appliquer_filtre_sinon($arg, $filtre, $args, '');
152 152
 }
153 153
 
154 154
 /**
@@ -173,8 +173,8 @@  discard block
 block discarded – undo
173 173
  *     Texte d'origine sinon
174 174
  **/
175 175
 function appliquer_si_filtre($arg, $filtre) {
176
-	$args = func_get_args();
177
-	return appliquer_filtre_sinon($arg, $filtre, $args, $arg);
176
+    $args = func_get_args();
177
+    return appliquer_filtre_sinon($arg, $filtre, $args, $arg);
178 178
 }
179 179
 
180 180
 /**
@@ -190,12 +190,12 @@  discard block
 block discarded – undo
190 190
  *     Version de SPIP
191 191
  **/
192 192
 function spip_version() {
193
-	$version = $GLOBALS['spip_version_affichee'];
194
-	if ($vcs_version = version_vcs_courante(_DIR_RACINE)) {
195
-		$version .= " $vcs_version";
196
-	}
193
+    $version = $GLOBALS['spip_version_affichee'];
194
+    if ($vcs_version = version_vcs_courante(_DIR_RACINE)) {
195
+        $version .= " $vcs_version";
196
+    }
197 197
 
198
-	return $version;
198
+    return $version;
199 199
 }
200 200
 
201 201
 /**
@@ -207,11 +207,11 @@  discard block
 block discarded – undo
207 207
  * @return string
208 208
  */
209 209
 function header_silencieux($version): string {
210
-	if (isset($GLOBALS['spip_header_silencieux']) && (bool) $GLOBALS['spip_header_silencieux']) {
211
-		$version = '';
212
-	}
210
+    if (isset($GLOBALS['spip_header_silencieux']) && (bool) $GLOBALS['spip_header_silencieux']) {
211
+        $version = '';
212
+    }
213 213
 
214
-	return (string) $version;
214
+    return (string) $version;
215 215
 }
216 216
 
217 217
 /**
@@ -224,19 +224,19 @@  discard block
 block discarded – undo
224 224
  *    - string|null si $raw = false
225 225
  */
226 226
 function version_vcs_courante($dir, $raw = false) {
227
-	$desc = decrire_version_git($dir);
228
-	if ($desc === null) {
229
-		$desc = decrire_version_svn($dir);
230
-	}
231
-	if ($desc === null or $raw) {
232
-		return $desc;
233
-	}
234
-	// affichage "GIT [master: abcdef]"
235
-	$commit = $desc['commit_short'] ?? $desc['commit'];
236
-	if ($desc['branch']) {
237
-		$commit = $desc['branch'] . ': ' . $commit;
238
-	}
239
-	return "{$desc['vcs']} [$commit]";
227
+    $desc = decrire_version_git($dir);
228
+    if ($desc === null) {
229
+        $desc = decrire_version_svn($dir);
230
+    }
231
+    if ($desc === null or $raw) {
232
+        return $desc;
233
+    }
234
+    // affichage "GIT [master: abcdef]"
235
+    $commit = $desc['commit_short'] ?? $desc['commit'];
236
+    if ($desc['branch']) {
237
+        $commit = $desc['branch'] . ': ' . $commit;
238
+    }
239
+    return "{$desc['vcs']} [$commit]";
240 240
 }
241 241
 
242 242
 /**
@@ -248,24 +248,24 @@  discard block
 block discarded – undo
248 248
  *      array ['branch' => xx, 'commit' => yy] sinon.
249 249
  **/
250 250
 function decrire_version_git($dir) {
251
-	if (!$dir) {
252
-		$dir = '.';
253
-	}
251
+    if (!$dir) {
252
+        $dir = '.';
253
+    }
254 254
 
255
-	// version installee par GIT
256
-	if (lire_fichier($dir . '/.git/HEAD', $c)) {
257
-		$currentHead = trim(substr($c, 4));
258
-		if (lire_fichier($dir . '/.git/' . $currentHead, $hash)) {
259
-			return [
260
-				'vcs' => 'GIT',
261
-				'branch' => basename($currentHead),
262
-				'commit' => trim($hash),
263
-				'commit_short' => substr(trim($hash), 0, 8),
264
-			];
265
-		}
266
-	}
255
+    // version installee par GIT
256
+    if (lire_fichier($dir . '/.git/HEAD', $c)) {
257
+        $currentHead = trim(substr($c, 4));
258
+        if (lire_fichier($dir . '/.git/' . $currentHead, $hash)) {
259
+            return [
260
+                'vcs' => 'GIT',
261
+                'branch' => basename($currentHead),
262
+                'commit' => trim($hash),
263
+                'commit_short' => substr(trim($hash), 0, 8),
264
+            ];
265
+        }
266
+    }
267 267
 
268
-	return null;
268
+    return null;
269 269
 }
270 270
 
271 271
 
@@ -278,25 +278,25 @@  discard block
 block discarded – undo
278 278
  *      array ['commit' => yy, 'date' => xx, 'author' => xx] sinon.
279 279
  **/
280 280
 function decrire_version_svn($dir) {
281
-	if (!$dir) {
282
-		$dir = '.';
283
-	}
284
-	// version installee par SVN
285
-	if (file_exists($dir . '/.svn/wc.db') && class_exists(\SQLite3::class)) {
286
-		$db = new SQLite3($dir . '/.svn/wc.db');
287
-		$result = $db->query('SELECT changed_revision FROM nodes WHERE local_relpath = "" LIMIT 1');
288
-		if ($result) {
289
-			$row = $result->fetchArray();
290
-			if ($row['changed_revision'] != '') {
291
-				return [
292
-					'vcs' => 'SVN',
293
-					'branch' => '',
294
-					'commit' => $row['changed_revision'],
295
-				];
296
-			}
297
-		}
298
-	}
299
-	return null;
281
+    if (!$dir) {
282
+        $dir = '.';
283
+    }
284
+    // version installee par SVN
285
+    if (file_exists($dir . '/.svn/wc.db') && class_exists(\SQLite3::class)) {
286
+        $db = new SQLite3($dir . '/.svn/wc.db');
287
+        $result = $db->query('SELECT changed_revision FROM nodes WHERE local_relpath = "" LIMIT 1');
288
+        if ($result) {
289
+            $row = $result->fetchArray();
290
+            if ($row['changed_revision'] != '') {
291
+                return [
292
+                    'vcs' => 'SVN',
293
+                    'branch' => '',
294
+                    'commit' => $row['changed_revision'],
295
+                ];
296
+            }
297
+        }
298
+    }
299
+    return null;
300 300
 }
301 301
 
302 302
 // La matrice est necessaire pour ne filtrer _que_ des fonctions definies dans filtres_images
@@ -343,18 +343,18 @@  discard block
 block discarded – undo
343 343
  *     Code HTML retourné par le filtre
344 344
  **/
345 345
 function filtrer($filtre) {
346
-	$tous = func_get_args();
347
-	if (trouver_filtre_matrice($filtre) and substr($filtre, 0, 6) == 'image_') {
348
-		return image_filtrer($tous);
349
-	} elseif ($f = chercher_filtre($filtre)) {
350
-		array_shift($tous);
351
-		return $f(...$tous);
352
-	} else {
353
-		// le filtre n'existe pas, on provoque une erreur
354
-		$msg = ['zbug_erreur_filtre', ['filtre' => texte_script($filtre)]];
355
-		erreur_squelette($msg);
356
-		return '';
357
-	}
346
+    $tous = func_get_args();
347
+    if (trouver_filtre_matrice($filtre) and substr($filtre, 0, 6) == 'image_') {
348
+        return image_filtrer($tous);
349
+    } elseif ($f = chercher_filtre($filtre)) {
350
+        array_shift($tous);
351
+        return $f(...$tous);
352
+    } else {
353
+        // le filtre n'existe pas, on provoque une erreur
354
+        $msg = ['zbug_erreur_filtre', ['filtre' => texte_script($filtre)]];
355
+        erreur_squelette($msg);
356
+        return '';
357
+    }
358 358
 }
359 359
 
360 360
 /**
@@ -371,11 +371,11 @@  discard block
 block discarded – undo
371 371
  * @return bool true si on trouve le filtre dans la matrice, false sinon.
372 372
  */
373 373
 function trouver_filtre_matrice($filtre) {
374
-	if (isset($GLOBALS['spip_matrice'][$filtre]) and is_string($f = $GLOBALS['spip_matrice'][$filtre])) {
375
-		find_in_path($f, '', true);
376
-		$GLOBALS['spip_matrice'][$filtre] = true;
377
-	}
378
-	return !empty($GLOBALS['spip_matrice'][$filtre]);
374
+    if (isset($GLOBALS['spip_matrice'][$filtre]) and is_string($f = $GLOBALS['spip_matrice'][$filtre])) {
375
+        find_in_path($f, '', true);
376
+        $GLOBALS['spip_matrice'][$filtre] = true;
377
+    }
378
+    return !empty($GLOBALS['spip_matrice'][$filtre]);
379 379
 }
380 380
 
381 381
 
@@ -403,8 +403,8 @@  discard block
 block discarded – undo
403 403
  * @return mixed
404 404
  */
405 405
 function filtre_set(&$Pile, $val, $key, $continue = null) {
406
-	$Pile['vars'][$key] = $val;
407
-	return $continue ? $val : '';
406
+    $Pile['vars'][$key] = $val;
407
+    return $continue ? $val : '';
408 408
 }
409 409
 
410 410
 /**
@@ -430,8 +430,8 @@  discard block
 block discarded – undo
430 430
  * @return string|mixed Retourne `$val` si `$continue` présent, sinon ''.
431 431
  */
432 432
 function filtre_setenv(&$Pile, $val, $key, $continue = null) {
433
-	$Pile[0][$key] = $val;
434
-	return $continue ? $val : '';
433
+    $Pile[0][$key] = $val;
434
+    return $continue ? $val : '';
435 435
 }
436 436
 
437 437
 /**
@@ -440,8 +440,8 @@  discard block
 block discarded – undo
440 440
  * @return string
441 441
  */
442 442
 function filtre_sanitize_env(&$Pile, $keys) {
443
-	$Pile[0] = spip_sanitize_from_request($Pile[0], $keys);
444
-	return '';
443
+    $Pile[0] = spip_sanitize_from_request($Pile[0], $keys);
444
+    return '';
445 445
 }
446 446
 
447 447
 
@@ -464,18 +464,18 @@  discard block
 block discarded – undo
464 464
  * @return mixed Retourne la valeur (sans la modifier).
465 465
  */
466 466
 function filtre_debug($val, $key = null) {
467
-	$debug = (
468
-		is_null($key) ? '' : (var_export($key, true) . ' = ')
469
-		) . var_export($val, true);
467
+    $debug = (
468
+        is_null($key) ? '' : (var_export($key, true) . ' = ')
469
+        ) . var_export($val, true);
470 470
 
471
-	include_spip('inc/autoriser');
472
-	if (autoriser('webmestre')) {
473
-		echo "<div class='spip_debug'>\n", $debug, "</div>\n";
474
-	}
471
+    include_spip('inc/autoriser');
472
+    if (autoriser('webmestre')) {
473
+        echo "<div class='spip_debug'>\n", $debug, "</div>\n";
474
+    }
475 475
 
476
-	spip_log($debug, 'debug');
476
+    spip_log($debug, 'debug');
477 477
 
478
-	return $val;
478
+    return $val;
479 479
 }
480 480
 
481 481
 
@@ -505,84 +505,84 @@  discard block
 block discarded – undo
505 505
  *     Texte qui a reçu les filtres
506 506
  **/
507 507
 function image_filtrer($args) {
508
-	$filtre = array_shift($args); # enlever $filtre
509
-	$texte = array_shift($args);
510
-	if ($texte === null || !strlen($texte)) {
511
-		return '';
512
-	}
513
-	find_in_path('filtres_images_mini.php', 'inc/', true);
514
-	statut_effacer_images_temporaires(true); // activer la suppression des images temporaires car le compilo finit la chaine par un image_graver
515
-	// Cas du nom de fichier local
516
-	$is_file = trim($texte);
517
-	if (
518
-		strpos(substr($is_file, strlen(_DIR_RACINE)), '..') !== false
519
-		  or strpbrk($is_file, "<>\n\r\t") !== false
520
-		  or strpos($is_file, '/') === 0
521
-	) {
522
-		$is_file = false;
523
-	}
524
-	if ($is_file) {
525
-		$is_local_file = function ($path) {
526
-			if (strpos($path, '?') !== false) {
527
-				$path = supprimer_timestamp($path);
528
-				// remove ?24px added by find_in_theme on .svg files
529
-				$path = preg_replace(',\?[[:digit:]]+(px)$,', '', $path);
530
-			}
531
-			return file_exists($path);
532
-		};
533
-		if ($is_local_file($is_file) or tester_url_absolue($is_file)) {
534
-			$res = $filtre("<img src='$is_file' />", ...$args);
535
-			statut_effacer_images_temporaires(false); // desactiver pour les appels hors compilo
536
-			return $res;
537
-		}
538
-	}
539
-
540
-	// Cas general : trier toutes les images, avec eventuellement leur <span>
541
-	if (
542
-		preg_match_all(
543
-			',(<([a-z]+) [^<>]*spip_documents[^<>]*>)?\s*(<img\s.*>),UimsS',
544
-			$texte,
545
-			$tags,
546
-			PREG_SET_ORDER
547
-		)
548
-	) {
549
-		foreach ($tags as $tag) {
550
-			$class = extraire_attribut($tag[3], 'class');
551
-			if (
552
-				!$class or
553
-				(strpos($class, 'filtre_inactif') === false
554
-					// compat historique a virer en 3.2
555
-					and strpos($class, 'no_image_filtrer') === false)
556
-			) {
557
-				if ($reduit = $filtre($tag[3], ...$args)) {
558
-					// En cas de span spip_documents, modifier le style=...width:
559
-					if ($tag[1]) {
560
-						$w = extraire_attribut($reduit, 'width');
561
-						if (!$w and preg_match(',width:\s*(\d+)px,S', extraire_attribut($reduit, 'style'), $regs)) {
562
-							$w = $regs[1];
563
-						}
564
-						if ($w and ($style = extraire_attribut($tag[1], 'style'))) {
565
-							$style = preg_replace(',width:\s*\d+px,S', "width:${w}px", $style);
566
-							$replace = inserer_attribut($tag[1], 'style', $style);
567
-							$texte = str_replace($tag[1], $replace, $texte);
568
-						}
569
-					}
570
-					// traiter aussi un eventuel mouseover
571
-					if ($mouseover = extraire_attribut($reduit, 'onmouseover')) {
572
-						if (preg_match(",this[.]src=['\"]([^'\"]+)['\"],ims", $mouseover, $match)) {
573
-							$srcover = $match[1];
574
-							$srcover_filter = $filtre("<img src='" . $match[1] . "' />", ...$args);
575
-							$srcover_filter = extraire_attribut($srcover_filter, 'src');
576
-							$reduit = str_replace($srcover, $srcover_filter, $reduit);
577
-						}
578
-					}
579
-					$texte = str_replace($tag[3], $reduit, $texte);
580
-				}
581
-			}
582
-		}
583
-	}
584
-	statut_effacer_images_temporaires(false); // desactiver pour les appels hors compilo
585
-	return $texte;
508
+    $filtre = array_shift($args); # enlever $filtre
509
+    $texte = array_shift($args);
510
+    if ($texte === null || !strlen($texte)) {
511
+        return '';
512
+    }
513
+    find_in_path('filtres_images_mini.php', 'inc/', true);
514
+    statut_effacer_images_temporaires(true); // activer la suppression des images temporaires car le compilo finit la chaine par un image_graver
515
+    // Cas du nom de fichier local
516
+    $is_file = trim($texte);
517
+    if (
518
+        strpos(substr($is_file, strlen(_DIR_RACINE)), '..') !== false
519
+          or strpbrk($is_file, "<>\n\r\t") !== false
520
+          or strpos($is_file, '/') === 0
521
+    ) {
522
+        $is_file = false;
523
+    }
524
+    if ($is_file) {
525
+        $is_local_file = function ($path) {
526
+            if (strpos($path, '?') !== false) {
527
+                $path = supprimer_timestamp($path);
528
+                // remove ?24px added by find_in_theme on .svg files
529
+                $path = preg_replace(',\?[[:digit:]]+(px)$,', '', $path);
530
+            }
531
+            return file_exists($path);
532
+        };
533
+        if ($is_local_file($is_file) or tester_url_absolue($is_file)) {
534
+            $res = $filtre("<img src='$is_file' />", ...$args);
535
+            statut_effacer_images_temporaires(false); // desactiver pour les appels hors compilo
536
+            return $res;
537
+        }
538
+    }
539
+
540
+    // Cas general : trier toutes les images, avec eventuellement leur <span>
541
+    if (
542
+        preg_match_all(
543
+            ',(<([a-z]+) [^<>]*spip_documents[^<>]*>)?\s*(<img\s.*>),UimsS',
544
+            $texte,
545
+            $tags,
546
+            PREG_SET_ORDER
547
+        )
548
+    ) {
549
+        foreach ($tags as $tag) {
550
+            $class = extraire_attribut($tag[3], 'class');
551
+            if (
552
+                !$class or
553
+                (strpos($class, 'filtre_inactif') === false
554
+                    // compat historique a virer en 3.2
555
+                    and strpos($class, 'no_image_filtrer') === false)
556
+            ) {
557
+                if ($reduit = $filtre($tag[3], ...$args)) {
558
+                    // En cas de span spip_documents, modifier le style=...width:
559
+                    if ($tag[1]) {
560
+                        $w = extraire_attribut($reduit, 'width');
561
+                        if (!$w and preg_match(',width:\s*(\d+)px,S', extraire_attribut($reduit, 'style'), $regs)) {
562
+                            $w = $regs[1];
563
+                        }
564
+                        if ($w and ($style = extraire_attribut($tag[1], 'style'))) {
565
+                            $style = preg_replace(',width:\s*\d+px,S', "width:${w}px", $style);
566
+                            $replace = inserer_attribut($tag[1], 'style', $style);
567
+                            $texte = str_replace($tag[1], $replace, $texte);
568
+                        }
569
+                    }
570
+                    // traiter aussi un eventuel mouseover
571
+                    if ($mouseover = extraire_attribut($reduit, 'onmouseover')) {
572
+                        if (preg_match(",this[.]src=['\"]([^'\"]+)['\"],ims", $mouseover, $match)) {
573
+                            $srcover = $match[1];
574
+                            $srcover_filter = $filtre("<img src='" . $match[1] . "' />", ...$args);
575
+                            $srcover_filter = extraire_attribut($srcover_filter, 'src');
576
+                            $reduit = str_replace($srcover, $srcover_filter, $reduit);
577
+                        }
578
+                    }
579
+                    $texte = str_replace($tag[3], $reduit, $texte);
580
+                }
581
+            }
582
+        }
583
+    }
584
+    statut_effacer_images_temporaires(false); // desactiver pour les appels hors compilo
585
+    return $texte;
586 586
 }
587 587
 
588 588
 /**
@@ -599,91 +599,91 @@  discard block
 block discarded – undo
599 599
  **/
600 600
 function infos_image($img, $force_refresh = false) {
601 601
 
602
-	static $largeur_img = [], $hauteur_img = [], $poids_img = [];
603
-	$srcWidth = 0;
604
-	$srcHeight = 0;
605
-	$srcSize = null;
606
-
607
-	$src = extraire_attribut($img, 'src');
608
-
609
-	if (!$src) {
610
-		$src = $img;
611
-	} else {
612
-		$srcWidth = extraire_attribut($img, 'width');
613
-		$srcHeight = extraire_attribut($img, 'height');
614
-	}
615
-
616
-	// ne jamais operer directement sur une image distante pour des raisons de perfo
617
-	// la copie locale a toutes les chances d'etre la ou de resservir
618
-	if (tester_url_absolue($src)) {
619
-		include_spip('inc/distant');
620
-		$fichier = copie_locale($src);
621
-		$src = $fichier ? _DIR_RACINE . $fichier : $src;
622
-	}
623
-	if (($p = strpos($src, '?')) !== false) {
624
-		$src = substr($src, 0, $p);
625
-	}
626
-
627
-	$imagesize = false;
628
-	if (isset($largeur_img[$src]) and !$force_refresh) {
629
-		$srcWidth = $largeur_img[$src];
630
-	}
631
-	if (isset($hauteur_img[$src]) and !$force_refresh) {
632
-		$srcHeight = $hauteur_img[$src];
633
-	}
634
-	if (isset($poids_img[$src]) and !$force_refresh) {
635
-		$srcSize = $poids_img[$src];
636
-	}
637
-	if (!$srcWidth or !$srcHeight or is_null($srcSize)) {
638
-		if (
639
-			file_exists($src)
640
-			and $imagesize = spip_getimagesize($src)
641
-		) {
642
-			if (!$srcWidth) {
643
-				$largeur_img[$src] = $srcWidth = $imagesize[0];
644
-			}
645
-			if (!$srcHeight) {
646
-				$hauteur_img[$src] = $srcHeight = $imagesize[1];
647
-			}
648
-			if (!$srcSize) {
649
-				$poids_img[$src] = filesize($src);
650
-			}
651
-		}
652
-		elseif (strpos($src, '<svg') !== false) {
653
-			include_spip('inc/svg');
654
-			if ($attrs = svg_lire_attributs($src)) {
655
-				[$width, $height, $viewbox] = svg_getimagesize_from_attr($attrs);
656
-				if (!$srcWidth) {
657
-					$largeur_img[$src] = $srcWidth = $width;
658
-				}
659
-				if (!$srcHeight) {
660
-					$hauteur_img[$src] = $srcHeight = $height;
661
-				}
662
-				if (!$srcSize) {
663
-					$poids_img[$src] = $srcSize = strlen($src);
664
-				}
665
-			}
666
-		}
667
-		// $src peut etre une reference a une image temporaire dont a n'a que le log .src
668
-		// on s'y refere, l'image sera reconstruite en temps utile si necessaire
669
-		elseif (
670
-			@file_exists($f = "$src.src")
671
-			and lire_fichier($f, $valeurs)
672
-			and $valeurs = unserialize($valeurs)
673
-		) {
674
-			if (!$srcWidth) {
675
-				$largeur_img[$src] = $srcWidth = $valeurs['largeur_dest'];
676
-			}
677
-			if (!$srcHeight) {
678
-				$hauteur_img[$src] = $srcHeight = $valeurs['hauteur_dest'];
679
-			}
680
-			if (!$srcSize) {
681
-				$poids_img[$src] = $srcSize = 0;
682
-			}
683
-		}
684
-	}
685
-
686
-	return ['hauteur' => $srcHeight, 'largeur' => $srcWidth, 'poids' => $srcSize];
602
+    static $largeur_img = [], $hauteur_img = [], $poids_img = [];
603
+    $srcWidth = 0;
604
+    $srcHeight = 0;
605
+    $srcSize = null;
606
+
607
+    $src = extraire_attribut($img, 'src');
608
+
609
+    if (!$src) {
610
+        $src = $img;
611
+    } else {
612
+        $srcWidth = extraire_attribut($img, 'width');
613
+        $srcHeight = extraire_attribut($img, 'height');
614
+    }
615
+
616
+    // ne jamais operer directement sur une image distante pour des raisons de perfo
617
+    // la copie locale a toutes les chances d'etre la ou de resservir
618
+    if (tester_url_absolue($src)) {
619
+        include_spip('inc/distant');
620
+        $fichier = copie_locale($src);
621
+        $src = $fichier ? _DIR_RACINE . $fichier : $src;
622
+    }
623
+    if (($p = strpos($src, '?')) !== false) {
624
+        $src = substr($src, 0, $p);
625
+    }
626
+
627
+    $imagesize = false;
628
+    if (isset($largeur_img[$src]) and !$force_refresh) {
629
+        $srcWidth = $largeur_img[$src];
630
+    }
631
+    if (isset($hauteur_img[$src]) and !$force_refresh) {
632
+        $srcHeight = $hauteur_img[$src];
633
+    }
634
+    if (isset($poids_img[$src]) and !$force_refresh) {
635
+        $srcSize = $poids_img[$src];
636
+    }
637
+    if (!$srcWidth or !$srcHeight or is_null($srcSize)) {
638
+        if (
639
+            file_exists($src)
640
+            and $imagesize = spip_getimagesize($src)
641
+        ) {
642
+            if (!$srcWidth) {
643
+                $largeur_img[$src] = $srcWidth = $imagesize[0];
644
+            }
645
+            if (!$srcHeight) {
646
+                $hauteur_img[$src] = $srcHeight = $imagesize[1];
647
+            }
648
+            if (!$srcSize) {
649
+                $poids_img[$src] = filesize($src);
650
+            }
651
+        }
652
+        elseif (strpos($src, '<svg') !== false) {
653
+            include_spip('inc/svg');
654
+            if ($attrs = svg_lire_attributs($src)) {
655
+                [$width, $height, $viewbox] = svg_getimagesize_from_attr($attrs);
656
+                if (!$srcWidth) {
657
+                    $largeur_img[$src] = $srcWidth = $width;
658
+                }
659
+                if (!$srcHeight) {
660
+                    $hauteur_img[$src] = $srcHeight = $height;
661
+                }
662
+                if (!$srcSize) {
663
+                    $poids_img[$src] = $srcSize = strlen($src);
664
+                }
665
+            }
666
+        }
667
+        // $src peut etre une reference a une image temporaire dont a n'a que le log .src
668
+        // on s'y refere, l'image sera reconstruite en temps utile si necessaire
669
+        elseif (
670
+            @file_exists($f = "$src.src")
671
+            and lire_fichier($f, $valeurs)
672
+            and $valeurs = unserialize($valeurs)
673
+        ) {
674
+            if (!$srcWidth) {
675
+                $largeur_img[$src] = $srcWidth = $valeurs['largeur_dest'];
676
+            }
677
+            if (!$srcHeight) {
678
+                $hauteur_img[$src] = $srcHeight = $valeurs['hauteur_dest'];
679
+            }
680
+            if (!$srcSize) {
681
+                $poids_img[$src] = $srcSize = 0;
682
+            }
683
+        }
684
+    }
685
+
686
+    return ['hauteur' => $srcHeight, 'largeur' => $srcWidth, 'poids' => $srcSize];
687 687
 }
688 688
 
689 689
 /**
@@ -699,13 +699,13 @@  discard block
 block discarded – undo
699 699
  *     poids
700 700
  **/
701 701
 function poids_image($img, $force_refresh = false) {
702
-	$infos = infos_image($img, $force_refresh);
703
-	return $infos['poids'];
702
+    $infos = infos_image($img, $force_refresh);
703
+    return $infos['poids'];
704 704
 }
705 705
 
706 706
 function taille_image($img, $force_refresh = false) {
707
-	$infos = infos_image($img, $force_refresh);
708
-	return [$infos['hauteur'], $infos['largeur']];
707
+    $infos = infos_image($img, $force_refresh);
708
+    return [$infos['hauteur'], $infos['largeur']];
709 709
 }
710 710
 
711 711
 /**
@@ -722,12 +722,12 @@  discard block
 block discarded – undo
722 722
  *     Largeur en pixels, NULL ou 0 si aucune image.
723 723
  **/
724 724
 function largeur($img) {
725
-	if (!$img) {
726
-		return;
727
-	}
728
-	[$h, $l] = taille_image($img);
725
+    if (!$img) {
726
+        return;
727
+    }
728
+    [$h, $l] = taille_image($img);
729 729
 
730
-	return $l;
730
+    return $l;
731 731
 }
732 732
 
733 733
 /**
@@ -744,12 +744,12 @@  discard block
 block discarded – undo
744 744
  *     Hauteur en pixels, NULL ou 0 si aucune image.
745 745
  **/
746 746
 function hauteur($img) {
747
-	if (!$img) {
748
-		return;
749
-	}
750
-	[$h, $l] = taille_image($img);
747
+    if (!$img) {
748
+        return;
749
+    }
750
+    [$h, $l] = taille_image($img);
751 751
 
752
-	return $h;
752
+    return $h;
753 753
 }
754 754
 
755 755
 
@@ -769,11 +769,11 @@  discard block
 block discarded – undo
769 769
  * @return string
770 770
  **/
771 771
 function corriger_entites_html($texte) {
772
-	if (strpos($texte, '&amp;') === false) {
773
-		return $texte;
774
-	}
772
+    if (strpos($texte, '&amp;') === false) {
773
+        return $texte;
774
+    }
775 775
 
776
-	return preg_replace(',&amp;(#[0-9][0-9][0-9]+;|amp;),iS', '&\1', $texte);
776
+    return preg_replace(',&amp;(#[0-9][0-9][0-9]+;|amp;),iS', '&\1', $texte);
777 777
 }
778 778
 
779 779
 /**
@@ -788,11 +788,11 @@  discard block
 block discarded – undo
788 788
  * @return string
789 789
  **/
790 790
 function corriger_toutes_entites_html($texte) {
791
-	if (strpos($texte, '&amp;') === false) {
792
-		return $texte;
793
-	}
791
+    if (strpos($texte, '&amp;') === false) {
792
+        return $texte;
793
+    }
794 794
 
795
-	return preg_replace(',&amp;(#?[a-z0-9]+;),iS', '&\1', $texte);
795
+    return preg_replace(',&amp;(#?[a-z0-9]+;),iS', '&\1', $texte);
796 796
 }
797 797
 
798 798
 /**
@@ -802,7 +802,7 @@  discard block
 block discarded – undo
802 802
  * @return string
803 803
  **/
804 804
 function proteger_amp($texte) {
805
-	return str_replace('&', '&amp;', $texte);
805
+    return str_replace('&', '&amp;', $texte);
806 806
 }
807 807
 
808 808
 
@@ -833,21 +833,21 @@  discard block
 block discarded – undo
833 833
  * @return mixed|string
834 834
  */
835 835
 function entites_html($texte, $tout = false, $quote = true) {
836
-	if (
837
-		!is_string($texte) or !$texte
838
-		or strpbrk($texte, "&\"'<>") == false
839
-	) {
840
-		return $texte;
841
-	}
842
-	include_spip('inc/texte');
843
-	$flags = ($quote ? ENT_QUOTES : ENT_NOQUOTES);
844
-	$flags |= ENT_HTML401;
845
-	$texte = spip_htmlspecialchars(echappe_retour(echappe_html($texte, '', true), '', 'proteger_amp'), $flags);
846
-	if ($tout) {
847
-		return corriger_toutes_entites_html($texte);
848
-	} else {
849
-		return corriger_entites_html($texte);
850
-	}
836
+    if (
837
+        !is_string($texte) or !$texte
838
+        or strpbrk($texte, "&\"'<>") == false
839
+    ) {
840
+        return $texte;
841
+    }
842
+    include_spip('inc/texte');
843
+    $flags = ($quote ? ENT_QUOTES : ENT_NOQUOTES);
844
+    $flags |= ENT_HTML401;
845
+    $texte = spip_htmlspecialchars(echappe_retour(echappe_html($texte, '', true), '', 'proteger_amp'), $flags);
846
+    if ($tout) {
847
+        return corriger_toutes_entites_html($texte);
848
+    } else {
849
+        return corriger_entites_html($texte);
850
+    }
851 851
 }
852 852
 
853 853
 /**
@@ -866,37 +866,37 @@  discard block
 block discarded – undo
866 866
  *     Texte converti
867 867
  **/
868 868
 function filtrer_entites($texte) {
869
-	if (strpos($texte, '&') === false) {
870
-		return $texte;
871
-	}
872
-	// filtrer
873
-	$texte = html2unicode($texte);
874
-	// remettre le tout dans le charset cible
875
-	$texte = unicode2charset($texte);
876
-	// cas particulier des " et ' qu'il faut filtrer aussi
877
-	// (on le faisait deja avec un &quot;)
878
-	if (strpos($texte, '&#') !== false) {
879
-		$texte = str_replace(['&#039;', '&#39;', '&#034;', '&#34;'], ["'", "'", '"', '"'], $texte);
880
-	}
869
+    if (strpos($texte, '&') === false) {
870
+        return $texte;
871
+    }
872
+    // filtrer
873
+    $texte = html2unicode($texte);
874
+    // remettre le tout dans le charset cible
875
+    $texte = unicode2charset($texte);
876
+    // cas particulier des " et ' qu'il faut filtrer aussi
877
+    // (on le faisait deja avec un &quot;)
878
+    if (strpos($texte, '&#') !== false) {
879
+        $texte = str_replace(['&#039;', '&#39;', '&#034;', '&#34;'], ["'", "'", '"', '"'], $texte);
880
+    }
881 881
 
882
-	return $texte;
882
+    return $texte;
883 883
 }
884 884
 
885 885
 
886 886
 if (!function_exists('filtre_filtrer_entites_dist')) {
887
-	/**
888
-	 * Version sécurisée de filtrer_entites
889
-	 *
890
-	 * @uses interdire_scripts()
891
-	 * @uses filtrer_entites()
892
-	 *
893
-	 * @param string $t
894
-	 * @return string
895
-	 */
896
-	function filtre_filtrer_entites_dist($t) {
897
-		include_spip('inc/texte');
898
-		return interdire_scripts(filtrer_entites($t));
899
-	}
887
+    /**
888
+     * Version sécurisée de filtrer_entites
889
+     *
890
+     * @uses interdire_scripts()
891
+     * @uses filtrer_entites()
892
+     *
893
+     * @param string $t
894
+     * @return string
895
+     */
896
+    function filtre_filtrer_entites_dist($t) {
897
+        include_spip('inc/texte');
898
+        return interdire_scripts(filtrer_entites($t));
899
+    }
900 900
 }
901 901
 
902 902
 
@@ -911,18 +911,18 @@  discard block
 block discarded – undo
911 911
  * @return string|array
912 912
  **/
913 913
 function supprimer_caracteres_illegaux($texte) {
914
-	static $from = "\x0\x1\x2\x3\x4\x5\x6\x7\x8\xB\xC\xE\xF\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
915
-	static $to = null;
914
+    static $from = "\x0\x1\x2\x3\x4\x5\x6\x7\x8\xB\xC\xE\xF\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
915
+    static $to = null;
916 916
 
917
-	if (is_array($texte)) {
918
-		return array_map('supprimer_caracteres_illegaux', $texte);
919
-	}
917
+    if (is_array($texte)) {
918
+        return array_map('supprimer_caracteres_illegaux', $texte);
919
+    }
920 920
 
921
-	if (!$to) {
922
-		$to = str_repeat('-', strlen($from));
923
-	}
921
+    if (!$to) {
922
+        $to = str_repeat('-', strlen($from));
923
+    }
924 924
 
925
-	return strtr($texte, $from, $to);
925
+    return strtr($texte, $from, $to);
926 926
 }
927 927
 
928 928
 /**
@@ -934,10 +934,10 @@  discard block
 block discarded – undo
934 934
  * @return string|array
935 935
  **/
936 936
 function corriger_caracteres($texte) {
937
-	$texte = corriger_caracteres_windows($texte);
938
-	$texte = supprimer_caracteres_illegaux($texte);
937
+    $texte = corriger_caracteres_windows($texte);
938
+    $texte = supprimer_caracteres_illegaux($texte);
939 939
 
940
-	return $texte;
940
+    return $texte;
941 941
 }
942 942
 
943 943
 /**
@@ -954,44 +954,44 @@  discard block
 block discarded – undo
954 954
  *     Texte encodé pour XML
955 955
  */
956 956
 function texte_backend(string $texte): string {
957
-	if ($texte === '') {
958
-		return '';
959
-	}
957
+    if ($texte === '') {
958
+        return '';
959
+    }
960 960
 
961
-	static $apostrophe = ['&#8217;', "'"]; # n'allouer qu'une fois
961
+    static $apostrophe = ['&#8217;', "'"]; # n'allouer qu'une fois
962 962
 
963
-	// si on a des liens ou des images, les passer en absolu
964
-	$texte = liens_absolus($texte);
963
+    // si on a des liens ou des images, les passer en absolu
964
+    $texte = liens_absolus($texte);
965 965
 
966
-	// echapper les tags &gt; &lt;
967
-	$texte = preg_replace(',&(gt|lt);,S', '&amp;\1;', $texte);
966
+    // echapper les tags &gt; &lt;
967
+    $texte = preg_replace(',&(gt|lt);,S', '&amp;\1;', $texte);
968 968
 
969
-	// importer les &eacute;
970
-	$texte = filtrer_entites($texte);
969
+    // importer les &eacute;
970
+    $texte = filtrer_entites($texte);
971 971
 
972
-	// " -> &quot; et tout ce genre de choses
973
-	$u = $GLOBALS['meta']['pcre_u'];
974
-	$texte = str_replace('&nbsp;', ' ', $texte);
975
-	$texte = preg_replace('/\s{2,}/S' . $u, ' ', $texte);
976
-	// ne pas echapper les sinqle quotes car certains outils de syndication gerent mal
977
-	$texte = entites_html($texte, false, false);
978
-	// mais bien echapper les double quotes !
979
-	$texte = str_replace('"', '&#034;', $texte);
972
+    // " -> &quot; et tout ce genre de choses
973
+    $u = $GLOBALS['meta']['pcre_u'];
974
+    $texte = str_replace('&nbsp;', ' ', $texte);
975
+    $texte = preg_replace('/\s{2,}/S' . $u, ' ', $texte);
976
+    // ne pas echapper les sinqle quotes car certains outils de syndication gerent mal
977
+    $texte = entites_html($texte, false, false);
978
+    // mais bien echapper les double quotes !
979
+    $texte = str_replace('"', '&#034;', $texte);
980 980
 
981
-	// verifier le charset
982
-	$texte = charset2unicode($texte);
981
+    // verifier le charset
982
+    $texte = charset2unicode($texte);
983 983
 
984
-	// Caracteres problematiques en iso-latin 1
985
-	if (isset($GLOBALS['meta']['charset']) and $GLOBALS['meta']['charset'] == 'iso-8859-1') {
986
-		$texte = str_replace(chr(156), '&#156;', $texte);
987
-		$texte = str_replace(chr(140), '&#140;', $texte);
988
-		$texte = str_replace(chr(159), '&#159;', $texte);
989
-	}
984
+    // Caracteres problematiques en iso-latin 1
985
+    if (isset($GLOBALS['meta']['charset']) and $GLOBALS['meta']['charset'] == 'iso-8859-1') {
986
+        $texte = str_replace(chr(156), '&#156;', $texte);
987
+        $texte = str_replace(chr(140), '&#140;', $texte);
988
+        $texte = str_replace(chr(159), '&#159;', $texte);
989
+    }
990 990
 
991
-	// l'apostrophe curly pose probleme a certains lecteure de RSS
992
-	// et le caractere apostrophe alourdit les squelettes avec PHP
993
-	// ==> on les remplace par l'entite HTML
994
-	return str_replace($apostrophe, "'", $texte);
991
+    // l'apostrophe curly pose probleme a certains lecteure de RSS
992
+    // et le caractere apostrophe alourdit les squelettes avec PHP
993
+    // ==> on les remplace par l'entite HTML
994
+    return str_replace($apostrophe, "'", $texte);
995 995
 }
996 996
 
997 997
 /**
@@ -1008,7 +1008,7 @@  discard block
 block discarded – undo
1008 1008
  *     Texte encodé et quote pour XML
1009 1009
  */
1010 1010
 function texte_backendq(string $texte): string {
1011
-	return addslashes(texte_backend($texte));
1011
+    return addslashes(texte_backend($texte));
1012 1012
 }
1013 1013
 
1014 1014
 
@@ -1031,11 +1031,11 @@  discard block
 block discarded – undo
1031 1031
  *     Numéro de titre, sinon chaîne vide
1032 1032
  **/
1033 1033
 function supprimer_numero($texte) {
1034
-	return preg_replace(
1035
-		',^[[:space:]]*([0-9]+)([.)]|' . chr(194) . '?' . chr(176) . ')[[:space:]]+,S',
1036
-		'',
1037
-		$texte
1038
-	);
1034
+    return preg_replace(
1035
+        ',^[[:space:]]*([0-9]+)([.)]|' . chr(194) . '?' . chr(176) . ')[[:space:]]+,S',
1036
+        '',
1037
+        $texte
1038
+    );
1039 1039
 }
1040 1040
 
1041 1041
 /**
@@ -1058,17 +1058,17 @@  discard block
 block discarded – undo
1058 1058
  *     Numéro de titre, sinon chaîne vide
1059 1059
  **/
1060 1060
 function recuperer_numero($texte) {
1061
-	if (
1062
-		preg_match(
1063
-			',^[[:space:]]*([0-9]+)([.)]|' . chr(194) . '?' . chr(176) . ')[[:space:]]+,S',
1064
-			$texte,
1065
-			$regs
1066
-		)
1067
-	) {
1068
-		return strval($regs[1]);
1069
-	} else {
1070
-		return '';
1071
-	}
1061
+    if (
1062
+        preg_match(
1063
+            ',^[[:space:]]*([0-9]+)([.)]|' . chr(194) . '?' . chr(176) . ')[[:space:]]+,S',
1064
+            $texte,
1065
+            $regs
1066
+        )
1067
+    ) {
1068
+        return strval($regs[1]);
1069
+    } else {
1070
+        return '';
1071
+    }
1072 1072
 }
1073 1073
 
1074 1074
 /**
@@ -1095,16 +1095,16 @@  discard block
 block discarded – undo
1095 1095
  *     Texte ou tableau de textes converti
1096 1096
  **/
1097 1097
 function supprimer_tags($texte, $rempl = '') {
1098
-	if ($texte === null) {
1099
-		return '';
1100
-	}
1101
-	$texte = preg_replace(',<(!--|\w|/|!\[endif|!\[if)[^>]*>,US', $rempl, $texte);
1102
-	// ne pas oublier un < final non ferme car coupe
1103
-	$texte = preg_replace(',<(!--|\w|/).*$,US', $rempl, $texte);
1104
-	// mais qui peut aussi etre un simple signe plus petit que
1105
-	$texte = str_replace('<', '&lt;', $texte);
1098
+    if ($texte === null) {
1099
+        return '';
1100
+    }
1101
+    $texte = preg_replace(',<(!--|\w|/|!\[endif|!\[if)[^>]*>,US', $rempl, $texte);
1102
+    // ne pas oublier un < final non ferme car coupe
1103
+    $texte = preg_replace(',<(!--|\w|/).*$,US', $rempl, $texte);
1104
+    // mais qui peut aussi etre un simple signe plus petit que
1105
+    $texte = str_replace('<', '&lt;', $texte);
1106 1106
 
1107
-	return $texte;
1107
+    return $texte;
1108 1108
 }
1109 1109
 
1110 1110
 /**
@@ -1127,9 +1127,9 @@  discard block
 block discarded – undo
1127 1127
  *     Texte converti
1128 1128
  **/
1129 1129
 function echapper_tags($texte, $rempl = '') {
1130
-	$texte = preg_replace('/<([^>]*)>/', "&lt;\\1&gt;", $texte);
1130
+    $texte = preg_replace('/<([^>]*)>/', "&lt;\\1&gt;", $texte);
1131 1131
 
1132
-	return $texte;
1132
+    return $texte;
1133 1133
 }
1134 1134
 
1135 1135
 /**
@@ -1150,18 +1150,18 @@  discard block
 block discarded – undo
1150 1150
  *     Texte converti
1151 1151
  **/
1152 1152
 function textebrut($texte) {
1153
-	$u = $GLOBALS['meta']['pcre_u'];
1154
-	$texte = preg_replace('/\s+/S' . $u, ' ', $texte);
1155
-	$texte = preg_replace('/<(p|br)( [^>]*)?' . '>/iS', "\n\n", $texte);
1156
-	$texte = preg_replace("/^\n+/", '', $texte);
1157
-	$texte = preg_replace("/\n+$/", '', $texte);
1158
-	$texte = preg_replace("/\n +/", "\n", $texte);
1159
-	$texte = supprimer_tags($texte);
1160
-	$texte = preg_replace('/(&nbsp;| )+/S', ' ', $texte);
1161
-	// nettoyer l'apostrophe curly qui pose probleme a certains rss-readers, lecteurs de mail...
1162
-	$texte = str_replace('&#8217;', "'", $texte);
1153
+    $u = $GLOBALS['meta']['pcre_u'];
1154
+    $texte = preg_replace('/\s+/S' . $u, ' ', $texte);
1155
+    $texte = preg_replace('/<(p|br)( [^>]*)?' . '>/iS', "\n\n", $texte);
1156
+    $texte = preg_replace("/^\n+/", '', $texte);
1157
+    $texte = preg_replace("/\n+$/", '', $texte);
1158
+    $texte = preg_replace("/\n +/", "\n", $texte);
1159
+    $texte = supprimer_tags($texte);
1160
+    $texte = preg_replace('/(&nbsp;| )+/S', ' ', $texte);
1161
+    // nettoyer l'apostrophe curly qui pose probleme a certains rss-readers, lecteurs de mail...
1162
+    $texte = str_replace('&#8217;', "'", $texte);
1163 1163
 
1164
-	return $texte;
1164
+    return $texte;
1165 1165
 }
1166 1166
 
1167 1167
 
@@ -1177,23 +1177,23 @@  discard block
 block discarded – undo
1177 1177
  *     Texte avec liens ouvrants
1178 1178
  **/
1179 1179
 function liens_ouvrants($texte) {
1180
-	if (
1181
-		preg_match_all(
1182
-			",(<a\s+[^>]*https?://[^>]*class=[\"']spip_(out|url)\b[^>]+>),imsS",
1183
-			$texte,
1184
-			$liens,
1185
-			PREG_PATTERN_ORDER
1186
-		)
1187
-	) {
1188
-		foreach ($liens[0] as $a) {
1189
-			$rel = 'noopener noreferrer ' . extraire_attribut($a, 'rel');
1190
-			$ablank = inserer_attribut($a, 'rel', $rel);
1191
-			$ablank = inserer_attribut($ablank, 'target', '_blank');
1192
-			$texte = str_replace($a, $ablank, $texte);
1193
-		}
1194
-	}
1195
-
1196
-	return $texte;
1180
+    if (
1181
+        preg_match_all(
1182
+            ",(<a\s+[^>]*https?://[^>]*class=[\"']spip_(out|url)\b[^>]+>),imsS",
1183
+            $texte,
1184
+            $liens,
1185
+            PREG_PATTERN_ORDER
1186
+        )
1187
+    ) {
1188
+        foreach ($liens[0] as $a) {
1189
+            $rel = 'noopener noreferrer ' . extraire_attribut($a, 'rel');
1190
+            $ablank = inserer_attribut($a, 'rel', $rel);
1191
+            $ablank = inserer_attribut($ablank, 'target', '_blank');
1192
+            $texte = str_replace($a, $ablank, $texte);
1193
+        }
1194
+    }
1195
+
1196
+    return $texte;
1197 1197
 }
1198 1198
 
1199 1199
 /**
@@ -1203,22 +1203,22 @@  discard block
 block discarded – undo
1203 1203
  * @return string
1204 1204
  */
1205 1205
 function liens_nofollow($texte) {
1206
-	if (stripos($texte, '<a') === false) {
1207
-		return $texte;
1208
-	}
1206
+    if (stripos($texte, '<a') === false) {
1207
+        return $texte;
1208
+    }
1209 1209
 
1210
-	if (preg_match_all(",<a\b[^>]*>,UimsS", $texte, $regs, PREG_PATTERN_ORDER)) {
1211
-		foreach ($regs[0] as $a) {
1212
-			$rel = extraire_attribut($a, 'rel') ?? '';
1213
-			if (strpos($rel, 'nofollow') === false) {
1214
-				$rel = 'nofollow' . ($rel ? " $rel" : '');
1215
-				$anofollow = inserer_attribut($a, 'rel', $rel);
1216
-				$texte = str_replace($a, $anofollow, $texte);
1217
-			}
1218
-		}
1219
-	}
1210
+    if (preg_match_all(",<a\b[^>]*>,UimsS", $texte, $regs, PREG_PATTERN_ORDER)) {
1211
+        foreach ($regs[0] as $a) {
1212
+            $rel = extraire_attribut($a, 'rel') ?? '';
1213
+            if (strpos($rel, 'nofollow') === false) {
1214
+                $rel = 'nofollow' . ($rel ? " $rel" : '');
1215
+                $anofollow = inserer_attribut($a, 'rel', $rel);
1216
+                $texte = str_replace($a, $anofollow, $texte);
1217
+            }
1218
+        }
1219
+    }
1220 1220
 
1221
-	return $texte;
1221
+    return $texte;
1222 1222
 }
1223 1223
 
1224 1224
 /**
@@ -1237,12 +1237,12 @@  discard block
 block discarded – undo
1237 1237
  *     Texte sans paraghaphes
1238 1238
  **/
1239 1239
 function PtoBR($texte) {
1240
-	$u = $GLOBALS['meta']['pcre_u'];
1241
-	$texte = preg_replace('@</p>@iS', "\n", $texte);
1242
-	$texte = preg_replace("@<p\b.*>@UiS", '<br />', $texte);
1243
-	$texte = preg_replace('@^\s*<br />@S' . $u, '', $texte);
1240
+    $u = $GLOBALS['meta']['pcre_u'];
1241
+    $texte = preg_replace('@</p>@iS', "\n", $texte);
1242
+    $texte = preg_replace("@<p\b.*>@UiS", '<br />', $texte);
1243
+    $texte = preg_replace('@^\s*<br />@S' . $u, '', $texte);
1244 1244
 
1245
-	return $texte;
1245
+    return $texte;
1246 1246
 }
1247 1247
 
1248 1248
 
@@ -1267,14 +1267,14 @@  discard block
 block discarded – undo
1267 1267
  * @return string Texte encadré du style CSS
1268 1268
  */
1269 1269
 function lignes_longues($texte) {
1270
-	if (!strlen(trim($texte))) {
1271
-		return $texte;
1272
-	}
1273
-	include_spip('inc/texte');
1274
-	$tag = preg_match(',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS', $texte) ?
1275
-		'div' : 'span';
1270
+    if (!strlen(trim($texte))) {
1271
+        return $texte;
1272
+    }
1273
+    include_spip('inc/texte');
1274
+    $tag = preg_match(',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS', $texte) ?
1275
+        'div' : 'span';
1276 1276
 
1277
-	return "<$tag style='word-wrap:break-word;'>$texte</$tag>";
1277
+    return "<$tag style='word-wrap:break-word;'>$texte</$tag>";
1278 1278
 }
1279 1279
 
1280 1280
 /**
@@ -1293,30 +1293,30 @@  discard block
 block discarded – undo
1293 1293
  * @return string Texte en majuscule
1294 1294
  */
1295 1295
 function majuscules($texte) {
1296
-	if (!strlen($texte)) {
1297
-		return '';
1298
-	}
1296
+    if (!strlen($texte)) {
1297
+        return '';
1298
+    }
1299 1299
 
1300
-	// Cas du turc
1301
-	if ($GLOBALS['spip_lang'] == 'tr') {
1302
-		# remplacer hors des tags et des entites
1303
-		if (preg_match_all(',<[^<>]+>|&[^;]+;,S', $texte, $regs, PREG_SET_ORDER)) {
1304
-			foreach ($regs as $n => $match) {
1305
-				$texte = str_replace($match[0], "@@SPIP_TURC$n@@", $texte);
1306
-			}
1307
-		}
1300
+    // Cas du turc
1301
+    if ($GLOBALS['spip_lang'] == 'tr') {
1302
+        # remplacer hors des tags et des entites
1303
+        if (preg_match_all(',<[^<>]+>|&[^;]+;,S', $texte, $regs, PREG_SET_ORDER)) {
1304
+            foreach ($regs as $n => $match) {
1305
+                $texte = str_replace($match[0], "@@SPIP_TURC$n@@", $texte);
1306
+            }
1307
+        }
1308 1308
 
1309
-		$texte = str_replace('i', '&#304;', $texte);
1309
+        $texte = str_replace('i', '&#304;', $texte);
1310 1310
 
1311
-		if ($regs) {
1312
-			foreach ($regs as $n => $match) {
1313
-				$texte = str_replace("@@SPIP_TURC$n@@", $match[0], $texte);
1314
-			}
1315
-		}
1316
-	}
1311
+        if ($regs) {
1312
+            foreach ($regs as $n => $match) {
1313
+                $texte = str_replace("@@SPIP_TURC$n@@", $match[0], $texte);
1314
+            }
1315
+        }
1316
+    }
1317 1317
 
1318
-	// Cas general
1319
-	return "<span style='text-transform: uppercase;'>$texte</span>";
1318
+    // Cas general
1319
+    return "<span style='text-transform: uppercase;'>$texte</span>";
1320 1320
 }
1321 1321
 
1322 1322
 /**
@@ -1334,29 +1334,29 @@  discard block
 block discarded – undo
1334 1334
  * @return string
1335 1335
  **/
1336 1336
 function taille_en_octets($taille) {
1337
-	if (!defined('_KILOBYTE')) {
1338
-		/**
1339
-		 * Définit le nombre d'octets dans un Kilobyte
1340
-		 *
1341
-		 * @var int
1342
-		 **/
1343
-		define('_KILOBYTE', 1024);
1344
-	}
1337
+    if (!defined('_KILOBYTE')) {
1338
+        /**
1339
+         * Définit le nombre d'octets dans un Kilobyte
1340
+         *
1341
+         * @var int
1342
+         **/
1343
+        define('_KILOBYTE', 1024);
1344
+    }
1345 1345
 
1346
-	if ($taille < 1) {
1347
-		return '';
1348
-	}
1349
-	if ($taille < _KILOBYTE) {
1350
-		$taille = _T('taille_octets', ['taille' => $taille]);
1351
-	} elseif ($taille < _KILOBYTE * _KILOBYTE) {
1352
-		$taille = _T('taille_ko', ['taille' => round($taille / _KILOBYTE, 1)]);
1353
-	} elseif ($taille < _KILOBYTE * _KILOBYTE * _KILOBYTE) {
1354
-		$taille = _T('taille_mo', ['taille' => round($taille / _KILOBYTE / _KILOBYTE, 1)]);
1355
-	} else {
1356
-		$taille = _T('taille_go', ['taille' => round($taille / _KILOBYTE / _KILOBYTE / _KILOBYTE, 2)]);
1357
-	}
1346
+    if ($taille < 1) {
1347
+        return '';
1348
+    }
1349
+    if ($taille < _KILOBYTE) {
1350
+        $taille = _T('taille_octets', ['taille' => $taille]);
1351
+    } elseif ($taille < _KILOBYTE * _KILOBYTE) {
1352
+        $taille = _T('taille_ko', ['taille' => round($taille / _KILOBYTE, 1)]);
1353
+    } elseif ($taille < _KILOBYTE * _KILOBYTE * _KILOBYTE) {
1354
+        $taille = _T('taille_mo', ['taille' => round($taille / _KILOBYTE / _KILOBYTE, 1)]);
1355
+    } else {
1356
+        $taille = _T('taille_go', ['taille' => round($taille / _KILOBYTE / _KILOBYTE / _KILOBYTE, 2)]);
1357
+    }
1358 1358
 
1359
-	return $taille;
1359
+    return $taille;
1360 1360
 }
1361 1361
 
1362 1362
 
@@ -1378,21 +1378,21 @@  discard block
 block discarded – undo
1378 1378
  *     Texte prêt pour être utilisé en attribut HTML
1379 1379
  **/
1380 1380
 function attribut_html(?string $texte, $textebrut = true): string {
1381
-	if ($texte === null) {
1382
-		return '';
1383
-	}
1384
-	$u = $GLOBALS['meta']['pcre_u'];
1385
-	if ($textebrut) {
1386
-		$texte = preg_replace([",\n,", ',\s(?=\s),msS' . $u], [' ', ''], textebrut($texte));
1387
-	}
1388
-	$texte = texte_backend($texte);
1389
-	$texte = str_replace(["'", '"'], ['&#039;', '&#034;'], $texte);
1381
+    if ($texte === null) {
1382
+        return '';
1383
+    }
1384
+    $u = $GLOBALS['meta']['pcre_u'];
1385
+    if ($textebrut) {
1386
+        $texte = preg_replace([",\n,", ',\s(?=\s),msS' . $u], [' ', ''], textebrut($texte));
1387
+    }
1388
+    $texte = texte_backend($texte);
1389
+    $texte = str_replace(["'", '"'], ['&#039;', '&#034;'], $texte);
1390 1390
 
1391
-	return preg_replace(
1392
-		['/&(amp;|#38;)/', '/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,5};)/'],
1393
-		['&', '&#38;'],
1394
-		$texte
1395
-	);
1391
+    return preg_replace(
1392
+        ['/&(amp;|#38;)/', '/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,5};)/'],
1393
+        ['&', '&#38;'],
1394
+        $texte
1395
+    );
1396 1396
 }
1397 1397
 
1398 1398
 
@@ -1412,15 +1412,15 @@  discard block
 block discarded – undo
1412 1412
  *     URL ou chaîne vide
1413 1413
  **/
1414 1414
 function vider_url(?string $url, $entites = true): string {
1415
-	if ($url === null) {
1416
-		return '';
1417
-	}
1418
-	# un message pour abs_url
1419
-	$GLOBALS['mode_abs_url'] = 'url';
1420
-	$url = trim($url);
1421
-	$r = ',^(?:' . _PROTOCOLES_STD . '):?/?/?$,iS';
1415
+    if ($url === null) {
1416
+        return '';
1417
+    }
1418
+    # un message pour abs_url
1419
+    $GLOBALS['mode_abs_url'] = 'url';
1420
+    $url = trim($url);
1421
+    $r = ',^(?:' . _PROTOCOLES_STD . '):?/?/?$,iS';
1422 1422
 
1423
-	return preg_match($r, $url) ? '' : ($entites ? entites_html($url) : $url);
1423
+    return preg_match($r, $url) ? '' : ($entites ? entites_html($url) : $url);
1424 1424
 }
1425 1425
 
1426 1426
 
@@ -1435,10 +1435,10 @@  discard block
 block discarded – undo
1435 1435
  * @return string Adresse email maquillée
1436 1436
  **/
1437 1437
 function antispam($texte) {
1438
-	include_spip('inc/acces');
1439
-	$masque = creer_pass_aleatoire(3);
1438
+    include_spip('inc/acces');
1439
+    $masque = creer_pass_aleatoire(3);
1440 1440
 
1441
-	return preg_replace('/@/', " $masque ", $texte);
1441
+    return preg_replace('/@/', " $masque ", $texte);
1442 1442
 }
1443 1443
 
1444 1444
 /**
@@ -1470,8 +1470,8 @@  discard block
 block discarded – undo
1470 1470
  *     True si on a le droit d'accès, false sinon.
1471 1471
  **/
1472 1472
 function filtre_securiser_acces_dist($id_auteur, $cle, $dir, $op = '', $args = '') {
1473
-	include_spip('inc/acces');
1474
-	return securiser_acces_low_sec($id_auteur, $cle, $op ? "$dir $op $args" : $dir);
1473
+    include_spip('inc/acces');
1474
+    return securiser_acces_low_sec($id_auteur, $cle, $op ? "$dir $op $args" : $dir);
1475 1475
 }
1476 1476
 
1477 1477
 /**
@@ -1496,13 +1496,13 @@  discard block
 block discarded – undo
1496 1496
  *     Retourne $texte, sinon $sinon.
1497 1497
  **/
1498 1498
 function sinon($texte, $sinon = '') {
1499
-	if ($texte) {
1500
-		return $texte;
1501
-	} elseif (is_scalar($texte) and strlen($texte)) {
1502
-		return $texte;
1503
-	} else {
1504
-		return $sinon;
1505
-	}
1499
+    if ($texte) {
1500
+        return $texte;
1501
+    } elseif (is_scalar($texte) and strlen($texte)) {
1502
+        return $texte;
1503
+    } else {
1504
+        return $sinon;
1505
+    }
1506 1506
 }
1507 1507
 
1508 1508
 /**
@@ -1526,7 +1526,7 @@  discard block
 block discarded – undo
1526 1526
  * @return mixed
1527 1527
  **/
1528 1528
 function choixsivide($a, $vide, $pasvide) {
1529
-	return $a ? $pasvide : $vide;
1529
+    return $a ? $pasvide : $vide;
1530 1530
 }
1531 1531
 
1532 1532
 /**
@@ -1550,7 +1550,7 @@  discard block
 block discarded – undo
1550 1550
  * @return mixed
1551 1551
  **/
1552 1552
 function choixsiegal($a1, $a2, $v, $f) {
1553
-	return ($a1 == $a2) ? $v : $f;
1553
+    return ($a1 == $a2) ? $v : $f;
1554 1554
 }
1555 1555
 
1556 1556
 //
@@ -1569,13 +1569,13 @@  discard block
 block discarded – undo
1569 1569
  * @return string
1570 1570
  **/
1571 1571
 function filtrer_ical($texte) {
1572
-	#include_spip('inc/charsets');
1573
-	$texte = html2unicode($texte);
1574
-	$texte = unicode2charset(charset2unicode($texte, $GLOBALS['meta']['charset']), 'utf-8');
1575
-	$texte = preg_replace("/\n/", ' ', $texte);
1576
-	$texte = preg_replace('/,/', '\,', $texte);
1572
+    #include_spip('inc/charsets');
1573
+    $texte = html2unicode($texte);
1574
+    $texte = unicode2charset(charset2unicode($texte, $GLOBALS['meta']['charset']), 'utf-8');
1575
+    $texte = preg_replace("/\n/", ' ', $texte);
1576
+    $texte = preg_replace('/,/', '\,', $texte);
1577 1577
 
1578
-	return $texte;
1578
+    return $texte;
1579 1579
 }
1580 1580
 
1581 1581
 
@@ -1600,54 +1600,54 @@  discard block
 block discarded – undo
1600 1600
  * @return string
1601 1601
  **/
1602 1602
 function post_autobr($texte, $delim = "\n_ ") {
1603
-	if (!function_exists('echappe_html')) {
1604
-		include_spip('inc/texte_mini');
1605
-	}
1606
-	$texte = str_replace("\r\n", "\r", $texte);
1607
-	$texte = str_replace("\r", "\n", $texte);
1608
-
1609
-	if (preg_match(",\n+$,", $texte, $fin)) {
1610
-		$texte = substr($texte, 0, -strlen($fin = $fin[0]));
1611
-	} else {
1612
-		$fin = '';
1613
-	}
1614
-
1615
-	$texte = echappe_html($texte, '', true);
1616
-
1617
-	// echapper les modeles
1618
-	if (strpos($texte, '<') !== false) {
1619
-		include_spip('inc/lien');
1620
-		if (defined('_PREG_MODELE')) {
1621
-			$preg_modeles = '@' . _PREG_MODELE . '@imsS';
1622
-			$texte = echappe_html($texte, '', true, $preg_modeles);
1623
-		}
1624
-	}
1625
-
1626
-	$debut = '';
1627
-	$suite = $texte;
1628
-	while ($t = strpos('-' . $suite, "\n", 1)) {
1629
-		$debut .= substr($suite, 0, $t - 1);
1630
-		$suite = substr($suite, $t);
1631
-		$car = substr($suite, 0, 1);
1632
-		if (
1633
-			($car <> '-') and ($car <> '_') and ($car <> "\n") and ($car <> '|') and ($car <> '}')
1634
-			and !preg_match(',^\s*(\n|</?(quote|div|dl|dt|dd)|$),S', ($suite))
1635
-			and !preg_match(',</?(quote|div|dl|dt|dd)> *$,iS', $debut)
1636
-		) {
1637
-			$debut .= $delim;
1638
-		} else {
1639
-			$debut .= "\n";
1640
-		}
1641
-		if (preg_match(",^\n+,", $suite, $regs)) {
1642
-			$debut .= $regs[0];
1643
-			$suite = substr($suite, strlen($regs[0]));
1644
-		}
1645
-	}
1646
-	$texte = $debut . $suite;
1647
-
1648
-	$texte = echappe_retour($texte);
1649
-
1650
-	return $texte . $fin;
1603
+    if (!function_exists('echappe_html')) {
1604
+        include_spip('inc/texte_mini');
1605
+    }
1606
+    $texte = str_replace("\r\n", "\r", $texte);
1607
+    $texte = str_replace("\r", "\n", $texte);
1608
+
1609
+    if (preg_match(",\n+$,", $texte, $fin)) {
1610
+        $texte = substr($texte, 0, -strlen($fin = $fin[0]));
1611
+    } else {
1612
+        $fin = '';
1613
+    }
1614
+
1615
+    $texte = echappe_html($texte, '', true);
1616
+
1617
+    // echapper les modeles
1618
+    if (strpos($texte, '<') !== false) {
1619
+        include_spip('inc/lien');
1620
+        if (defined('_PREG_MODELE')) {
1621
+            $preg_modeles = '@' . _PREG_MODELE . '@imsS';
1622
+            $texte = echappe_html($texte, '', true, $preg_modeles);
1623
+        }
1624
+    }
1625
+
1626
+    $debut = '';
1627
+    $suite = $texte;
1628
+    while ($t = strpos('-' . $suite, "\n", 1)) {
1629
+        $debut .= substr($suite, 0, $t - 1);
1630
+        $suite = substr($suite, $t);
1631
+        $car = substr($suite, 0, 1);
1632
+        if (
1633
+            ($car <> '-') and ($car <> '_') and ($car <> "\n") and ($car <> '|') and ($car <> '}')
1634
+            and !preg_match(',^\s*(\n|</?(quote|div|dl|dt|dd)|$),S', ($suite))
1635
+            and !preg_match(',</?(quote|div|dl|dt|dd)> *$,iS', $debut)
1636
+        ) {
1637
+            $debut .= $delim;
1638
+        } else {
1639
+            $debut .= "\n";
1640
+        }
1641
+        if (preg_match(",^\n+,", $suite, $regs)) {
1642
+            $debut .= $regs[0];
1643
+            $suite = substr($suite, strlen($regs[0]));
1644
+        }
1645
+    }
1646
+    $texte = $debut . $suite;
1647
+
1648
+    $texte = echappe_retour($texte);
1649
+
1650
+    return $texte . $fin;
1651 1651
 }
1652 1652
 
1653 1653
 
@@ -1688,47 +1688,47 @@  discard block
 block discarded – undo
1688 1688
  * @return string
1689 1689
  **/
1690 1690
 function extraire_idiome($letexte, $lang = null, $options = []) {
1691
-	static $traduire = false;
1692
-	if (
1693
-		$letexte
1694
-		and preg_match_all(_EXTRAIRE_IDIOME, $letexte, $regs, PREG_SET_ORDER)
1695
-	) {
1696
-		if (!$traduire) {
1697
-			$traduire = charger_fonction('traduire', 'inc');
1698
-			include_spip('inc/lang');
1699
-		}
1700
-		if (!$lang) {
1701
-			$lang = $GLOBALS['spip_lang'];
1702
-		}
1703
-		// Compatibilité avec le prototype de fonction précédente qui utilisait un boolean
1704
-		if (is_bool($options)) {
1705
-			$options = ['echappe_span' => $options];
1706
-		}
1707
-		if (!isset($options['echappe_span'])) {
1708
-			$options = array_merge($options, ['echappe_span' => false]);
1709
-		}
1710
-
1711
-		foreach ($regs as $reg) {
1712
-			$cle = ($reg[1] ? $reg[1] . ':' : '') . $reg[2];
1713
-			$desc = $traduire($cle, $lang, true);
1714
-			$l = $desc->langue;
1715
-			// si pas de traduction, on laissera l'écriture de l'idiome entier dans le texte.
1716
-			if (strlen($desc->texte ?? '')) {
1717
-				$trad = code_echappement($desc->texte, 'idiome', false);
1718
-				if ($l !== $lang) {
1719
-					$trad = str_replace("'", '"', inserer_attribut($trad, 'lang', $l));
1720
-				}
1721
-				if (lang_dir($l) !== lang_dir($lang)) {
1722
-					$trad = str_replace("'", '"', inserer_attribut($trad, 'dir', lang_dir($l)));
1723
-				}
1724
-				if (!$options['echappe_span']) {
1725
-					$trad = echappe_retour($trad, 'idiome');
1726
-				}
1727
-				$letexte = str_replace($reg[0], $trad, $letexte);
1728
-			}
1729
-		}
1730
-	}
1731
-	return $letexte;
1691
+    static $traduire = false;
1692
+    if (
1693
+        $letexte
1694
+        and preg_match_all(_EXTRAIRE_IDIOME, $letexte, $regs, PREG_SET_ORDER)
1695
+    ) {
1696
+        if (!$traduire) {
1697
+            $traduire = charger_fonction('traduire', 'inc');
1698
+            include_spip('inc/lang');
1699
+        }
1700
+        if (!$lang) {
1701
+            $lang = $GLOBALS['spip_lang'];
1702
+        }
1703
+        // Compatibilité avec le prototype de fonction précédente qui utilisait un boolean
1704
+        if (is_bool($options)) {
1705
+            $options = ['echappe_span' => $options];
1706
+        }
1707
+        if (!isset($options['echappe_span'])) {
1708
+            $options = array_merge($options, ['echappe_span' => false]);
1709
+        }
1710
+
1711
+        foreach ($regs as $reg) {
1712
+            $cle = ($reg[1] ? $reg[1] . ':' : '') . $reg[2];
1713
+            $desc = $traduire($cle, $lang, true);
1714
+            $l = $desc->langue;
1715
+            // si pas de traduction, on laissera l'écriture de l'idiome entier dans le texte.
1716
+            if (strlen($desc->texte ?? '')) {
1717
+                $trad = code_echappement($desc->texte, 'idiome', false);
1718
+                if ($l !== $lang) {
1719
+                    $trad = str_replace("'", '"', inserer_attribut($trad, 'lang', $l));
1720
+                }
1721
+                if (lang_dir($l) !== lang_dir($lang)) {
1722
+                    $trad = str_replace("'", '"', inserer_attribut($trad, 'dir', lang_dir($l)));
1723
+                }
1724
+                if (!$options['echappe_span']) {
1725
+                    $trad = echappe_retour($trad, 'idiome');
1726
+                }
1727
+                $letexte = str_replace($reg[0], $trad, $letexte);
1728
+            }
1729
+        }
1730
+    }
1731
+    return $letexte;
1732 1732
 }
1733 1733
 
1734 1734
 /**
@@ -1780,68 +1780,68 @@  discard block
 block discarded – undo
1780 1780
  **/
1781 1781
 function extraire_multi($letexte, $lang = null, $options = []) {
1782 1782
 
1783
-	if (
1784
-		$letexte
1785
-		and preg_match_all(_EXTRAIRE_MULTI, $letexte, $regs, PREG_SET_ORDER)
1786
-	) {
1787
-		if (!$lang) {
1788
-			$lang = $GLOBALS['spip_lang'];
1789
-		}
1790
-
1791
-		// Compatibilité avec le prototype de fonction précédente qui utilisait un boolean
1792
-		if (is_bool($options)) {
1793
-			$options = ['echappe_span' => $options, 'lang_defaut' => _LANGUE_PAR_DEFAUT];
1794
-		}
1795
-		if (!isset($options['echappe_span'])) {
1796
-			$options = array_merge($options, ['echappe_span' => false]);
1797
-		}
1798
-		if (!isset($options['lang_defaut'])) {
1799
-			$options = array_merge($options, ['lang_defaut' => _LANGUE_PAR_DEFAUT]);
1800
-		}
1801
-
1802
-		include_spip('inc/lang');
1803
-		foreach ($regs as $reg) {
1804
-			// chercher la version de la langue courante
1805
-			$trads = extraire_trads($reg[1]);
1806
-			if ($l = approcher_langue($trads, $lang)) {
1807
-				$trad = $trads[$l];
1808
-			} else {
1809
-				if ($options['lang_defaut'] == 'aucune') {
1810
-					$trad = '';
1811
-				} else {
1812
-					// langue absente, prendre le fr ou une langue précisée (meme comportement que inc/traduire.php)
1813
-					// ou la premiere dispo
1814
-					// mais typographier le texte selon les regles de celle-ci
1815
-					// Attention aux blocs multi sur plusieurs lignes
1816
-					if (!$l = approcher_langue($trads, $options['lang_defaut'])) {
1817
-						$l = key($trads);
1818
-					}
1819
-					$trad = $trads[$l];
1820
-					$typographie = charger_fonction(lang_typo($l), 'typographie');
1821
-					$trad = $typographie($trad);
1822
-					// Tester si on echappe en span ou en div
1823
-					// il ne faut pas echapper en div si propre produit un seul paragraphe
1824
-					include_spip('inc/texte');
1825
-					$trad_propre = preg_replace(',(^<p[^>]*>|</p>$),Uims', '', propre($trad));
1826
-					$mode = preg_match(',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS', $trad_propre) ? 'div' : 'span';
1827
-					if ($mode === 'div') {
1828
-						$trad = rtrim($trad) . "\n\n";
1829
-					}
1830
-					$trad = code_echappement($trad, 'multi', false, $mode);
1831
-					$trad = str_replace("'", '"', inserer_attribut($trad, 'lang', $l));
1832
-					if (lang_dir($l) !== lang_dir($lang)) {
1833
-						$trad = str_replace("'", '"', inserer_attribut($trad, 'dir', lang_dir($l)));
1834
-					}
1835
-					if (!$options['echappe_span']) {
1836
-						$trad = echappe_retour($trad, 'multi');
1837
-					}
1838
-				}
1839
-			}
1840
-			$letexte = str_replace($reg[0], $trad, $letexte);
1841
-		}
1842
-	}
1843
-
1844
-	return $letexte;
1783
+    if (
1784
+        $letexte
1785
+        and preg_match_all(_EXTRAIRE_MULTI, $letexte, $regs, PREG_SET_ORDER)
1786
+    ) {
1787
+        if (!$lang) {
1788
+            $lang = $GLOBALS['spip_lang'];
1789
+        }
1790
+
1791
+        // Compatibilité avec le prototype de fonction précédente qui utilisait un boolean
1792
+        if (is_bool($options)) {
1793
+            $options = ['echappe_span' => $options, 'lang_defaut' => _LANGUE_PAR_DEFAUT];
1794
+        }
1795
+        if (!isset($options['echappe_span'])) {
1796
+            $options = array_merge($options, ['echappe_span' => false]);
1797
+        }
1798
+        if (!isset($options['lang_defaut'])) {
1799
+            $options = array_merge($options, ['lang_defaut' => _LANGUE_PAR_DEFAUT]);
1800
+        }
1801
+
1802
+        include_spip('inc/lang');
1803
+        foreach ($regs as $reg) {
1804
+            // chercher la version de la langue courante
1805
+            $trads = extraire_trads($reg[1]);
1806
+            if ($l = approcher_langue($trads, $lang)) {
1807
+                $trad = $trads[$l];
1808
+            } else {
1809
+                if ($options['lang_defaut'] == 'aucune') {
1810
+                    $trad = '';
1811
+                } else {
1812
+                    // langue absente, prendre le fr ou une langue précisée (meme comportement que inc/traduire.php)
1813
+                    // ou la premiere dispo
1814
+                    // mais typographier le texte selon les regles de celle-ci
1815
+                    // Attention aux blocs multi sur plusieurs lignes
1816
+                    if (!$l = approcher_langue($trads, $options['lang_defaut'])) {
1817
+                        $l = key($trads);
1818
+                    }
1819
+                    $trad = $trads[$l];
1820
+                    $typographie = charger_fonction(lang_typo($l), 'typographie');
1821
+                    $trad = $typographie($trad);
1822
+                    // Tester si on echappe en span ou en div
1823
+                    // il ne faut pas echapper en div si propre produit un seul paragraphe
1824
+                    include_spip('inc/texte');
1825
+                    $trad_propre = preg_replace(',(^<p[^>]*>|</p>$),Uims', '', propre($trad));
1826
+                    $mode = preg_match(',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS', $trad_propre) ? 'div' : 'span';
1827
+                    if ($mode === 'div') {
1828
+                        $trad = rtrim($trad) . "\n\n";
1829
+                    }
1830
+                    $trad = code_echappement($trad, 'multi', false, $mode);
1831
+                    $trad = str_replace("'", '"', inserer_attribut($trad, 'lang', $l));
1832
+                    if (lang_dir($l) !== lang_dir($lang)) {
1833
+                        $trad = str_replace("'", '"', inserer_attribut($trad, 'dir', lang_dir($l)));
1834
+                    }
1835
+                    if (!$options['echappe_span']) {
1836
+                        $trad = echappe_retour($trad, 'multi');
1837
+                    }
1838
+                }
1839
+            }
1840
+            $letexte = str_replace($reg[0], $trad, $letexte);
1841
+        }
1842
+    }
1843
+
1844
+    return $letexte;
1845 1845
 }
1846 1846
 
1847 1847
 /**
@@ -1857,21 +1857,21 @@  discard block
 block discarded – undo
1857 1857
  *     Peut retourner un code de langue vide, lorsqu'un texte par défaut est indiqué.
1858 1858
  **/
1859 1859
 function extraire_trads($bloc) {
1860
-	$trads = [];
1861
-	$lang = '';
1860
+    $trads = [];
1861
+    $lang = '';
1862 1862
 // ce reg fait planter l'analyse multi s'il y a de l'{italique} dans le champ
1863 1863
 //	while (preg_match("/^(.*?)[{\[]([a-z_]+)[}\]]/siS", $bloc, $regs)) {
1864
-	while (preg_match('/^(.*?)[\[]([a-z_]+)[\]]/siS', $bloc, $regs)) {
1865
-		$texte = trim($regs[1]);
1866
-		if ($texte or $lang) {
1867
-			$trads[$lang] = $texte;
1868
-		}
1869
-		$bloc = substr($bloc, strlen($regs[0]));
1870
-		$lang = $regs[2];
1871
-	}
1872
-	$trads[$lang] = $bloc;
1864
+    while (preg_match('/^(.*?)[\[]([a-z_]+)[\]]/siS', $bloc, $regs)) {
1865
+        $texte = trim($regs[1]);
1866
+        if ($texte or $lang) {
1867
+            $trads[$lang] = $texte;
1868
+        }
1869
+        $bloc = substr($bloc, strlen($regs[0]));
1870
+        $lang = $regs[2];
1871
+    }
1872
+    $trads[$lang] = $bloc;
1873 1873
 
1874
-	return $trads;
1874
+    return $trads;
1875 1875
 }
1876 1876
 
1877 1877
 
@@ -1882,7 +1882,7 @@  discard block
 block discarded – undo
1882 1882
  * @return string L'initiale en majuscule
1883 1883
  */
1884 1884
 function filtre_initiale($nom) {
1885
-	return spip_substr(trim(strtoupper(extraire_multi($nom))), 0, 1);
1885
+    return spip_substr(trim(strtoupper(extraire_multi($nom))), 0, 1);
1886 1886
 }
1887 1887
 
1888 1888
 
@@ -1927,33 +1927,33 @@  discard block
 block discarded – undo
1927 1927
  *      - null (interne) : si on empile
1928 1928
  **/
1929 1929
 function unique($donnee, $famille = '', $cpt = false) {
1930
-	static $mem = [];
1931
-	// permettre de vider la pile et de la restaurer
1932
-	// pour le calcul de introduction...
1933
-	if ($famille == '_spip_raz_') {
1934
-		$tmp = $mem;
1935
-		$mem = [];
1936
-
1937
-		return $tmp;
1938
-	} elseif ($famille == '_spip_set_') {
1939
-		$mem = $donnee;
1940
-
1941
-		return;
1942
-	}
1943
-	// eviter une notice
1944
-	if (!isset($mem[$famille])) {
1945
-		$mem[$famille] = [];
1946
-	}
1947
-	if ($cpt) {
1948
-		return is_countable($mem[$famille]) ? count($mem[$famille]) : 0;
1949
-	}
1950
-	// eviter une notice
1951
-	if (!isset($mem[$famille][$donnee])) {
1952
-		$mem[$famille][$donnee] = 0;
1953
-	}
1954
-	if (!($mem[$famille][$donnee]++)) {
1955
-		return $donnee;
1956
-	}
1930
+    static $mem = [];
1931
+    // permettre de vider la pile et de la restaurer
1932
+    // pour le calcul de introduction...
1933
+    if ($famille == '_spip_raz_') {
1934
+        $tmp = $mem;
1935
+        $mem = [];
1936
+
1937
+        return $tmp;
1938
+    } elseif ($famille == '_spip_set_') {
1939
+        $mem = $donnee;
1940
+
1941
+        return;
1942
+    }
1943
+    // eviter une notice
1944
+    if (!isset($mem[$famille])) {
1945
+        $mem[$famille] = [];
1946
+    }
1947
+    if ($cpt) {
1948
+        return is_countable($mem[$famille]) ? count($mem[$famille]) : 0;
1949
+    }
1950
+    // eviter une notice
1951
+    if (!isset($mem[$famille][$donnee])) {
1952
+        $mem[$famille][$donnee] = 0;
1953
+    }
1954
+    if (!($mem[$famille][$donnee]++)) {
1955
+        return $donnee;
1956
+    }
1957 1957
 }
1958 1958
 
1959 1959
 
@@ -1983,20 +1983,20 @@  discard block
 block discarded – undo
1983 1983
  *     Une des valeurs en fonction du compteur.
1984 1984
  **/
1985 1985
 function alterner($i, ...$args) {
1986
-	// recuperer les arguments (attention fonctions un peu space)
1987
-	$num = count($args);
1986
+    // recuperer les arguments (attention fonctions un peu space)
1987
+    $num = count($args);
1988 1988
 
1989
-	if ($num === 1 && is_array($args[0])) {
1990
-		// un tableau de valeur dont les cles sont numerotees de 0 a num
1991
-		$args = array_values($args[0]);
1992
-		$num = count($args);
1993
-	}
1989
+    if ($num === 1 && is_array($args[0])) {
1990
+        // un tableau de valeur dont les cles sont numerotees de 0 a num
1991
+        $args = array_values($args[0]);
1992
+        $num = count($args);
1993
+    }
1994 1994
 
1995
-	// un index compris entre 0 et num exclus
1996
-	$i = ((intval($i) - 1) % $num); // dans ]-$num;$num[
1997
-	$i = ($i + $num) % $num; // dans [0;$num[
1998
-	// renvoyer le i-ieme argument, modulo le nombre d'arguments
1999
-	return $args[$i];
1995
+    // un index compris entre 0 et num exclus
1996
+    $i = ((intval($i) - 1) % $num); // dans ]-$num;$num[
1997
+    $i = ($i + $num) % $num; // dans [0;$num[
1998
+    // renvoyer le i-ieme argument, modulo le nombre d'arguments
1999
+    return $args[$i];
2000 2000
 }
2001 2001
 
2002 2002
 
@@ -2022,51 +2022,51 @@  discard block
 block discarded – undo
2022 2022
  *     - null lorsque l’attribut n’existe pas.
2023 2023
  **/
2024 2024
 function extraire_attribut($balise, $attribut, $complet = false) {
2025
-	if (is_array($balise)) {
2026
-		array_walk(
2027
-			$balise,
2028
-			function (&$a, $key, $t) {
2029
-				$a = extraire_attribut($a, $t);
2030
-			},
2031
-			$attribut
2032
-		);
2033
-
2034
-		return $balise;
2035
-	}
2036
-	if (
2037
-		$balise
2038
-		&& preg_match(
2039
-			',(^.*?<(?:(?>\s*)(?>[\w:.-]+)(?>(?:=(?:"[^"]*"|\'[^\']*\'|[^\'"]\S*))?))*?)(\s+'
2040
-			. $attribut
2041
-			. '(?:=\s*("[^"]*"|\'[^\']*\'|[^\'"]\S*))?)()((?:[\s/][^>]*)?>.*),isS',
2042
-			$balise,
2043
-			$r
2044
-		)
2045
-	) {
2046
-		if (isset($r[3][0]) and ($r[3][0] == '"' || $r[3][0] == "'")) {
2047
-			$r[4] = substr($r[3], 1, -1);
2048
-			$r[3] = $r[3][0];
2049
-		} elseif ($r[3] !== '') {
2050
-			$r[4] = $r[3];
2051
-			$r[3] = '';
2052
-		} else {
2053
-			$r[4] = trim($r[2]);
2054
-		}
2055
-		$att = $r[4];
2056
-		if (strpos($att, '&#') !== false) {
2057
-			$att = str_replace(['&#039;', '&#39;', '&#034;', '&#34;'], ["'", "'", '"', '"'], $att);
2058
-		}
2059
-		$att = filtrer_entites($att);
2060
-	} else {
2061
-		$att = null;
2062
-		$r = [];
2063
-	}
2064
-
2065
-	if ($complet) {
2066
-		return [$att, $r];
2067
-	} else {
2068
-		return $att;
2069
-	}
2025
+    if (is_array($balise)) {
2026
+        array_walk(
2027
+            $balise,
2028
+            function (&$a, $key, $t) {
2029
+                $a = extraire_attribut($a, $t);
2030
+            },
2031
+            $attribut
2032
+        );
2033
+
2034
+        return $balise;
2035
+    }
2036
+    if (
2037
+        $balise
2038
+        && preg_match(
2039
+            ',(^.*?<(?:(?>\s*)(?>[\w:.-]+)(?>(?:=(?:"[^"]*"|\'[^\']*\'|[^\'"]\S*))?))*?)(\s+'
2040
+            . $attribut
2041
+            . '(?:=\s*("[^"]*"|\'[^\']*\'|[^\'"]\S*))?)()((?:[\s/][^>]*)?>.*),isS',
2042
+            $balise,
2043
+            $r
2044
+        )
2045
+    ) {
2046
+        if (isset($r[3][0]) and ($r[3][0] == '"' || $r[3][0] == "'")) {
2047
+            $r[4] = substr($r[3], 1, -1);
2048
+            $r[3] = $r[3][0];
2049
+        } elseif ($r[3] !== '') {
2050
+            $r[4] = $r[3];
2051
+            $r[3] = '';
2052
+        } else {
2053
+            $r[4] = trim($r[2]);
2054
+        }
2055
+        $att = $r[4];
2056
+        if (strpos($att, '&#') !== false) {
2057
+            $att = str_replace(['&#039;', '&#39;', '&#034;', '&#34;'], ["'", "'", '"', '"'], $att);
2058
+        }
2059
+        $att = filtrer_entites($att);
2060
+    } else {
2061
+        $att = null;
2062
+        $r = [];
2063
+    }
2064
+
2065
+    if ($complet) {
2066
+        return [$att, $r];
2067
+    } else {
2068
+        return $att;
2069
+    }
2070 2070
 }
2071 2071
 
2072 2072
 /**
@@ -2099,41 +2099,41 @@  discard block
 block discarded – undo
2099 2099
  **/
2100 2100
 function inserer_attribut(?string $balise, string $attribut, string $val, bool $proteger = true, bool $vider = false): string {
2101 2101
 
2102
-	if ($balise === null or $balise === '') {
2103
-		return '';
2104
-	}
2102
+    if ($balise === null or $balise === '') {
2103
+        return '';
2104
+    }
2105 2105
 
2106
-	// preparer l'attribut
2107
-	// supprimer les &nbsp; etc mais pas les balises html
2108
-	// qui ont un sens dans un attribut value d'un input
2109
-	if ($proteger) {
2110
-		$val = attribut_html($val, false);
2111
-	}
2106
+    // preparer l'attribut
2107
+    // supprimer les &nbsp; etc mais pas les balises html
2108
+    // qui ont un sens dans un attribut value d'un input
2109
+    if ($proteger) {
2110
+        $val = attribut_html($val, false);
2111
+    }
2112 2112
 
2113
-	// echapper les ' pour eviter tout bug
2114
-	$val = str_replace("'", '&#039;', $val);
2115
-	if ($vider and strlen($val) === 0) {
2116
-		$insert = '';
2117
-	} else {
2118
-		$insert = " $attribut='$val'";
2119
-	}
2113
+    // echapper les ' pour eviter tout bug
2114
+    $val = str_replace("'", '&#039;', $val);
2115
+    if ($vider and strlen($val) === 0) {
2116
+        $insert = '';
2117
+    } else {
2118
+        $insert = " $attribut='$val'";
2119
+    }
2120 2120
 
2121
-	[$old, $r] = extraire_attribut($balise, $attribut, true);
2121
+    [$old, $r] = extraire_attribut($balise, $attribut, true);
2122 2122
 
2123
-	if ($old !== null) {
2124
-		// Remplacer l'ancien attribut du meme nom
2125
-		$balise = $r[1] . $insert . $r[5];
2126
-	} else {
2127
-		// preferer une balise " />" (comme <img />)
2128
-		if (preg_match(',/>,', $balise)) {
2129
-			$balise = preg_replace(',\s?/>,S', $insert . ' />', $balise, 1);
2130
-		} // sinon une balise <a ...> ... </a>
2131
-		else {
2132
-			$balise = preg_replace(',\s?>,S', $insert . '>', $balise, 1);
2133
-		}
2134
-	}
2123
+    if ($old !== null) {
2124
+        // Remplacer l'ancien attribut du meme nom
2125
+        $balise = $r[1] . $insert . $r[5];
2126
+    } else {
2127
+        // preferer une balise " />" (comme <img />)
2128
+        if (preg_match(',/>,', $balise)) {
2129
+            $balise = preg_replace(',\s?/>,S', $insert . ' />', $balise, 1);
2130
+        } // sinon une balise <a ...> ... </a>
2131
+        else {
2132
+            $balise = preg_replace(',\s?>,S', $insert . '>', $balise, 1);
2133
+        }
2134
+    }
2135 2135
 
2136
-	return $balise;
2136
+    return $balise;
2137 2137
 }
2138 2138
 
2139 2139
 /**
@@ -2151,7 +2151,7 @@  discard block
 block discarded – undo
2151 2151
  * @return string Code HTML sans l'attribut
2152 2152
  **/
2153 2153
 function vider_attribut(?string $balise, string $attribut): string {
2154
-	return inserer_attribut($balise, $attribut, '', false, true);
2154
+    return inserer_attribut($balise, $attribut, '', false, true);
2155 2155
 }
2156 2156
 
2157 2157
 /**
@@ -2163,53 +2163,53 @@  discard block
 block discarded – undo
2163 2163
  * @return string
2164 2164
  */
2165 2165
 function modifier_class($balise, $class, $operation = 'ajouter') {
2166
-	if (is_string($class)) {
2167
-		$class = explode(' ', trim($class));
2168
-	}
2169
-	$class = array_filter($class);
2170
-	$class = array_unique($class);
2171
-	if (!$class) {
2172
-		return $balise;
2173
-	}
2174
-
2175
-	// si la ou les classes ont des caracteres invalides on ne fait rien
2176
-	if (preg_match(',[^\w-],', implode('', $class))) {
2177
-		return $balise;
2178
-	}
2179
-
2180
-	$class_courante = extraire_attribut($balise, 'class');
2181
-	$class_new = $class_courante;
2182
-	foreach ($class as $c) {
2183
-		$is_class_presente = false;
2184
-		if (
2185
-			$class_courante
2186
-			and strpos($class_courante, (string) $c) !== false
2187
-			and preg_match('/(^|\s)' . preg_quote($c) . '($|\s)/', $class_courante)
2188
-		) {
2189
-			$is_class_presente = true;
2190
-		}
2191
-		if (
2192
-			in_array($operation, ['ajouter', 'commuter'])
2193
-			and !$is_class_presente
2194
-		) {
2195
-			$class_new = ltrim(rtrim($class_new ?? '') . ' ' . $c);
2196
-		} elseif (
2197
-			in_array($operation, ['supprimer', 'commuter'])
2198
-			and $is_class_presente
2199
-		) {
2200
-			$class_new = trim(preg_replace('/(^|\s)' . preg_quote($c) . '($|\s)/', "\\1", $class_new));
2201
-		}
2202
-	}
2203
-
2204
-	if ($class_new !== $class_courante) {
2205
-		if (strlen($class_new)) {
2206
-			$balise = inserer_attribut($balise, 'class', $class_new);
2207
-		} elseif ($class_courante) {
2208
-			$balise = vider_attribut($balise, 'class');
2209
-		}
2210
-	}
2211
-
2212
-	return $balise;
2166
+    if (is_string($class)) {
2167
+        $class = explode(' ', trim($class));
2168
+    }
2169
+    $class = array_filter($class);
2170
+    $class = array_unique($class);
2171
+    if (!$class) {
2172
+        return $balise;
2173
+    }
2174
+
2175
+    // si la ou les classes ont des caracteres invalides on ne fait rien
2176
+    if (preg_match(',[^\w-],', implode('', $class))) {
2177
+        return $balise;
2178
+    }
2179
+
2180
+    $class_courante = extraire_attribut($balise, 'class');
2181
+    $class_new = $class_courante;
2182
+    foreach ($class as $c) {
2183
+        $is_class_presente = false;
2184
+        if (
2185
+            $class_courante
2186
+            and strpos($class_courante, (string) $c) !== false
2187
+            and preg_match('/(^|\s)' . preg_quote($c) . '($|\s)/', $class_courante)
2188
+        ) {
2189
+            $is_class_presente = true;
2190
+        }
2191
+        if (
2192
+            in_array($operation, ['ajouter', 'commuter'])
2193
+            and !$is_class_presente
2194
+        ) {
2195
+            $class_new = ltrim(rtrim($class_new ?? '') . ' ' . $c);
2196
+        } elseif (
2197
+            in_array($operation, ['supprimer', 'commuter'])
2198
+            and $is_class_presente
2199
+        ) {
2200
+            $class_new = trim(preg_replace('/(^|\s)' . preg_quote($c) . '($|\s)/', "\\1", $class_new));
2201
+        }
2202
+    }
2203
+
2204
+    if ($class_new !== $class_courante) {
2205
+        if (strlen($class_new)) {
2206
+            $balise = inserer_attribut($balise, 'class', $class_new);
2207
+        } elseif ($class_courante) {
2208
+            $balise = vider_attribut($balise, 'class');
2209
+        }
2210
+    }
2211
+
2212
+    return $balise;
2213 2213
 }
2214 2214
 
2215 2215
 /**
@@ -2219,7 +2219,7 @@  discard block
 block discarded – undo
2219 2219
  * @return string
2220 2220
  */
2221 2221
 function ajouter_class($balise, $class) {
2222
-	return modifier_class($balise, $class, 'ajouter');
2222
+    return modifier_class($balise, $class, 'ajouter');
2223 2223
 }
2224 2224
 
2225 2225
 /**
@@ -2229,7 +2229,7 @@  discard block
 block discarded – undo
2229 2229
  * @return string
2230 2230
  */
2231 2231
 function supprimer_class($balise, $class) {
2232
-	return modifier_class($balise, $class, 'supprimer');
2232
+    return modifier_class($balise, $class, 'supprimer');
2233 2233
 }
2234 2234
 
2235 2235
 /**
@@ -2240,7 +2240,7 @@  discard block
 block discarded – undo
2240 2240
  * @return string
2241 2241
  */
2242 2242
 function commuter_class($balise, $class) {
2243
-	return modifier_class($balise, $class, 'commuter');
2243
+    return modifier_class($balise, $class, 'commuter');
2244 2244
 }
2245 2245
 
2246 2246
 /**
@@ -2251,19 +2251,19 @@  discard block
 block discarded – undo
2251 2251
  * @return string
2252 2252
  */
2253 2253
 function tester_config($id, $mode = '') {
2254
-	include_spip('action/inscrire_auteur');
2254
+    include_spip('action/inscrire_auteur');
2255 2255
 
2256
-	return tester_statut_inscription($mode, $id);
2256
+    return tester_statut_inscription($mode, $id);
2257 2257
 }
2258 2258
 
2259 2259
 //
2260 2260
 // Quelques fonctions de calcul arithmetique
2261 2261
 //
2262 2262
 function floatstr($a) {
2263
- return str_replace(',', '.', (string)floatval($a));
2263
+    return str_replace(',', '.', (string)floatval($a));
2264 2264
 }
2265 2265
 function strize($f, $a, $b) {
2266
- return floatstr($f(floatstr($a), floatstr($b)));
2266
+    return floatstr($f(floatstr($a), floatstr($b)));
2267 2267
 }
2268 2268
 
2269 2269
 /**
@@ -2282,7 +2282,7 @@  discard block
 block discarded – undo
2282 2282
  * @return int $a+$b
2283 2283
  **/
2284 2284
 function plus($a, $b) {
2285
-	return $a + $b;
2285
+    return $a + $b;
2286 2286
 }
2287 2287
 function strplus($a, $b) {
2288 2288
 return strize('plus', $a, $b);
@@ -2303,7 +2303,7 @@  discard block
 block discarded – undo
2303 2303
  * @return int $a-$b
2304 2304
  **/
2305 2305
 function moins($a, $b) {
2306
-	return $a - $b;
2306
+    return $a - $b;
2307 2307
 }
2308 2308
 function strmoins($a, $b) {
2309 2309
 return strize('moins', $a, $b);
@@ -2326,7 +2326,7 @@  discard block
 block discarded – undo
2326 2326
  * @return int $a*$b
2327 2327
  **/
2328 2328
 function mult($a, $b) {
2329
-	return $a * $b;
2329
+    return $a * $b;
2330 2330
 }
2331 2331
 function strmult($a, $b) {
2332 2332
 return strize('mult', $a, $b);
@@ -2349,7 +2349,7 @@  discard block
 block discarded – undo
2349 2349
  * @return int $a/$b (ou 0 si $b est nul)
2350 2350
  **/
2351 2351
 function div($a, $b) {
2352
-	return $b ? $a / $b : 0;
2352
+    return $b ? $a / $b : 0;
2353 2353
 }
2354 2354
 function strdiv($a, $b) {
2355 2355
 return strize('div', $a, $b);
@@ -2373,7 +2373,7 @@  discard block
 block discarded – undo
2373 2373
  * @return int ($nb % $mod) + $add
2374 2374
  **/
2375 2375
 function modulo($nb, $mod, $add = 0) {
2376
-	return ($mod ? $nb % $mod : 0) + $add;
2376
+    return ($mod ? $nb % $mod : 0) + $add;
2377 2377
 }
2378 2378
 
2379 2379
 
@@ -2388,26 +2388,26 @@  discard block
 block discarded – undo
2388 2388
  *      - true sinon
2389 2389
  **/
2390 2390
 function nom_acceptable($nom) {
2391
-	$remp2 = [];
2392
-	$remp1 = [];
2393
-	if (!is_string($nom)) {
2394
-		return false;
2395
-	}
2396
-	if (!defined('_TAGS_NOM_AUTEUR')) {
2397
-		define('_TAGS_NOM_AUTEUR', '');
2398
-	}
2399
-	$tags_acceptes = array_unique(explode(',', 'multi,' . _TAGS_NOM_AUTEUR));
2400
-	foreach ($tags_acceptes as $tag) {
2401
-		if (strlen($tag)) {
2402
-			$remp1[] = '<' . trim($tag) . '>';
2403
-			$remp1[] = '</' . trim($tag) . '>';
2404
-			$remp2[] = '\x60' . trim($tag) . '\x61';
2405
-			$remp2[] = '\x60/' . trim($tag) . '\x61';
2406
-		}
2407
-	}
2408
-	$v_nom = str_replace($remp2, $remp1, supprimer_tags(str_replace($remp1, $remp2, $nom)));
2409
-
2410
-	return str_replace('&lt;', '<', $v_nom) == $nom;
2391
+    $remp2 = [];
2392
+    $remp1 = [];
2393
+    if (!is_string($nom)) {
2394
+        return false;
2395
+    }
2396
+    if (!defined('_TAGS_NOM_AUTEUR')) {
2397
+        define('_TAGS_NOM_AUTEUR', '');
2398
+    }
2399
+    $tags_acceptes = array_unique(explode(',', 'multi,' . _TAGS_NOM_AUTEUR));
2400
+    foreach ($tags_acceptes as $tag) {
2401
+        if (strlen($tag)) {
2402
+            $remp1[] = '<' . trim($tag) . '>';
2403
+            $remp1[] = '</' . trim($tag) . '>';
2404
+            $remp2[] = '\x60' . trim($tag) . '\x61';
2405
+            $remp2[] = '\x60/' . trim($tag) . '\x61';
2406
+        }
2407
+    }
2408
+    $v_nom = str_replace($remp2, $remp1, supprimer_tags(str_replace($remp1, $remp2, $nom)));
2409
+
2410
+    return str_replace('&lt;', '<', $v_nom) == $nom;
2411 2411
 }
2412 2412
 
2413 2413
 
@@ -2423,14 +2423,14 @@  discard block
 block discarded – undo
2423 2423
  *      - renvoie un tableau si l'entree est un tableau
2424 2424
  **/
2425 2425
 function email_valide($adresses) {
2426
-	if (is_array($adresses)) {
2427
-		$adresses = array_map('email_valide', $adresses);
2428
-		$adresses = array_filter($adresses);
2429
-		return $adresses;
2430
-	}
2426
+    if (is_array($adresses)) {
2427
+        $adresses = array_map('email_valide', $adresses);
2428
+        $adresses = array_filter($adresses);
2429
+        return $adresses;
2430
+    }
2431 2431
 
2432
-	$email_valide = charger_fonction('email_valide', 'inc');
2433
-	return $email_valide($adresses);
2432
+    $email_valide = charger_fonction('email_valide', 'inc');
2433
+    return $email_valide($adresses);
2434 2434
 }
2435 2435
 
2436 2436
 /**
@@ -2444,29 +2444,29 @@  discard block
 block discarded – undo
2444 2444
  * @return string Texte
2445 2445
  **/
2446 2446
 function afficher_enclosures($tags) {
2447
-	$s = [];
2448
-	foreach (extraire_balises($tags, 'a') as $tag) {
2449
-		if (
2450
-			extraire_attribut($tag, 'rel') == 'enclosure'
2451
-			and $t = extraire_attribut($tag, 'href')
2452
-		) {
2453
-			$s[] = preg_replace(
2454
-				',>[^<]+</a>,S',
2455
-				'>'
2456
-				. http_img_pack(
2457
-					'attachment-16.png',
2458
-					$t,
2459
-					'',
2460
-					$t,
2461
-					['utiliser_suffixe_size' => true]
2462
-				)
2463
-				. '</a>',
2464
-				$tag
2465
-			);
2466
-		}
2467
-	}
2468
-
2469
-	return join('&nbsp;', $s);
2447
+    $s = [];
2448
+    foreach (extraire_balises($tags, 'a') as $tag) {
2449
+        if (
2450
+            extraire_attribut($tag, 'rel') == 'enclosure'
2451
+            and $t = extraire_attribut($tag, 'href')
2452
+        ) {
2453
+            $s[] = preg_replace(
2454
+                ',>[^<]+</a>,S',
2455
+                '>'
2456
+                . http_img_pack(
2457
+                    'attachment-16.png',
2458
+                    $t,
2459
+                    '',
2460
+                    $t,
2461
+                    ['utiliser_suffixe_size' => true]
2462
+                )
2463
+                . '</a>',
2464
+                $tag
2465
+            );
2466
+        }
2467
+    }
2468
+
2469
+    return join('&nbsp;', $s);
2470 2470
 }
2471 2471
 
2472 2472
 /**
@@ -2481,15 +2481,15 @@  discard block
 block discarded – undo
2481 2481
  * @return string Liens trouvés
2482 2482
  **/
2483 2483
 function afficher_tags($tags, $rels = 'tag,directory') {
2484
-	$s = [];
2485
-	foreach (extraire_balises($tags, 'a') as $tag) {
2486
-		$rel = extraire_attribut($tag, 'rel');
2487
-		if (strstr(",$rels,", (string) ",$rel,")) {
2488
-			$s[] = $tag;
2489
-		}
2490
-	}
2484
+    $s = [];
2485
+    foreach (extraire_balises($tags, 'a') as $tag) {
2486
+        $rel = extraire_attribut($tag, 'rel');
2487
+        if (strstr(",$rels,", (string) ",$rel,")) {
2488
+            $s[] = $tag;
2489
+        }
2490
+    }
2491 2491
 
2492
-	return join(', ', $s);
2492
+    return join(', ', $s);
2493 2493
 }
2494 2494
 
2495 2495
 
@@ -2511,21 +2511,21 @@  discard block
 block discarded – undo
2511 2511
  * @return string Tag HTML `<a>` avec microformat.
2512 2512
  **/
2513 2513
 function enclosure2microformat($e) {
2514
-	if (!$url = filtrer_entites(extraire_attribut($e, 'url'))) {
2515
-		$url = filtrer_entites(extraire_attribut($e, 'href'));
2516
-	}
2517
-	$type = extraire_attribut($e, 'type');
2518
-	if (!$length = extraire_attribut($e, 'length')) {
2519
-		# <media:content : longeur dans fileSize. On tente.
2520
-		$length = extraire_attribut($e, 'fileSize');
2521
-	}
2522
-	$fichier = basename($url);
2514
+    if (!$url = filtrer_entites(extraire_attribut($e, 'url'))) {
2515
+        $url = filtrer_entites(extraire_attribut($e, 'href'));
2516
+    }
2517
+    $type = extraire_attribut($e, 'type');
2518
+    if (!$length = extraire_attribut($e, 'length')) {
2519
+        # <media:content : longeur dans fileSize. On tente.
2520
+        $length = extraire_attribut($e, 'fileSize');
2521
+    }
2522
+    $fichier = basename($url);
2523 2523
 
2524
-	return '<a rel="enclosure"'
2525
-	. ($url ? ' href="' . spip_htmlspecialchars($url) . '"' : '')
2526
-	. ($type ? ' type="' . spip_htmlspecialchars($type) . '"' : '')
2527
-	. ($length ? ' title="' . spip_htmlspecialchars($length) . '"' : '')
2528
-	. '>' . $fichier . '</a>';
2524
+    return '<a rel="enclosure"'
2525
+    . ($url ? ' href="' . spip_htmlspecialchars($url) . '"' : '')
2526
+    . ($type ? ' type="' . spip_htmlspecialchars($type) . '"' : '')
2527
+    . ($length ? ' title="' . spip_htmlspecialchars($length) . '"' : '')
2528
+    . '>' . $fichier . '</a>';
2529 2529
 }
2530 2530
 
2531 2531
 /**
@@ -2543,24 +2543,24 @@  discard block
 block discarded – undo
2543 2543
  * @return string Tags RSS `<enclosure>`.
2544 2544
  **/
2545 2545
 function microformat2enclosure($tags) {
2546
-	$enclosures = [];
2547
-	foreach (extraire_balises($tags, 'a') as $e) {
2548
-		if (extraire_attribut($e, 'rel') == 'enclosure') {
2549
-			$url = filtrer_entites(extraire_attribut($e, 'href'));
2550
-			$type = extraire_attribut($e, 'type');
2551
-			if (!$length = intval(extraire_attribut($e, 'title'))) {
2552
-				$length = intval(extraire_attribut($e, 'length'));
2553
-			} # vieux data
2554
-			$fichier = basename($url);
2555
-			$enclosures[] = '<enclosure'
2556
-				. ($url ? ' url="' . spip_htmlspecialchars($url) . '"' : '')
2557
-				. ($type ? ' type="' . spip_htmlspecialchars($type) . '"' : '')
2558
-				. ($length ? ' length="' . $length . '"' : '')
2559
-				. ' />';
2560
-		}
2561
-	}
2546
+    $enclosures = [];
2547
+    foreach (extraire_balises($tags, 'a') as $e) {
2548
+        if (extraire_attribut($e, 'rel') == 'enclosure') {
2549
+            $url = filtrer_entites(extraire_attribut($e, 'href'));
2550
+            $type = extraire_attribut($e, 'type');
2551
+            if (!$length = intval(extraire_attribut($e, 'title'))) {
2552
+                $length = intval(extraire_attribut($e, 'length'));
2553
+            } # vieux data
2554
+            $fichier = basename($url);
2555
+            $enclosures[] = '<enclosure'
2556
+                . ($url ? ' url="' . spip_htmlspecialchars($url) . '"' : '')
2557
+                . ($type ? ' type="' . spip_htmlspecialchars($type) . '"' : '')
2558
+                . ($length ? ' length="' . $length . '"' : '')
2559
+                . ' />';
2560
+        }
2561
+    }
2562 2562
 
2563
-	return join("\n", $enclosures);
2563
+    return join("\n", $enclosures);
2564 2564
 }
2565 2565
 
2566 2566
 
@@ -2576,16 +2576,16 @@  discard block
 block discarded – undo
2576 2576
  * @return string Tags RSS Atom `<dc:subject>`.
2577 2577
  **/
2578 2578
 function tags2dcsubject($tags) {
2579
-	$subjects = '';
2580
-	foreach (extraire_balises($tags, 'a') as $e) {
2581
-		if (extraire_attribut($e, 'rel') == 'tag') {
2582
-			$subjects .= '<dc:subject>'
2583
-				. texte_backend(textebrut($e))
2584
-				. '</dc:subject>' . "\n";
2585
-		}
2586
-	}
2579
+    $subjects = '';
2580
+    foreach (extraire_balises($tags, 'a') as $e) {
2581
+        if (extraire_attribut($e, 'rel') == 'tag') {
2582
+            $subjects .= '<dc:subject>'
2583
+                . texte_backend(textebrut($e))
2584
+                . '</dc:subject>' . "\n";
2585
+        }
2586
+    }
2587 2587
 
2588
-	return $subjects;
2588
+    return $subjects;
2589 2589
 }
2590 2590
 
2591 2591
 /**
@@ -2614,27 +2614,27 @@  discard block
 block discarded – undo
2614 2614
  *     - Tableau de résultats, si tableau en entrée.
2615 2615
  **/
2616 2616
 function extraire_balise($texte, $tag = 'a') {
2617
-	if (is_array($texte)) {
2618
-		array_walk(
2619
-			$texte,
2620
-			function (&$a, $key, $t) {
2621
-				$a = extraire_balise($a, $t);
2622
-			},
2623
-			$tag
2624
-		);
2625
-
2626
-		return $texte;
2627
-	}
2628
-
2629
-	if (
2630
-		preg_match(
2631
-			",<$tag\b[^>]*(/>|>.*</$tag\b[^>]*>|>),UimsS",
2632
-			$texte,
2633
-			$regs
2634
-		)
2635
-	) {
2636
-		return $regs[0];
2637
-	}
2617
+    if (is_array($texte)) {
2618
+        array_walk(
2619
+            $texte,
2620
+            function (&$a, $key, $t) {
2621
+                $a = extraire_balise($a, $t);
2622
+            },
2623
+            $tag
2624
+        );
2625
+
2626
+        return $texte;
2627
+    }
2628
+
2629
+    if (
2630
+        preg_match(
2631
+            ",<$tag\b[^>]*(/>|>.*</$tag\b[^>]*>|>),UimsS",
2632
+            $texte,
2633
+            $regs
2634
+        )
2635
+    ) {
2636
+        return $regs[0];
2637
+    }
2638 2638
 }
2639 2639
 
2640 2640
 /**
@@ -2662,30 +2662,30 @@  discard block
 block discarded – undo
2662 2662
  *     - Tableau de résultats, si tableau en entrée.
2663 2663
  **/
2664 2664
 function extraire_balises($texte, $tag = 'a') {
2665
-	if (is_array($texte)) {
2666
-		array_walk(
2667
-			$texte,
2668
-			function (&$a, $key, $t) {
2669
-				$a = extraire_balises($a, $t);
2670
-			},
2671
-			$tag
2672
-		);
2673
-
2674
-		return $texte;
2675
-	}
2676
-
2677
-	if (
2678
-		preg_match_all(
2679
-			",<${tag}\b[^>]*(/>|>.*</${tag}\b[^>]*>|>),UimsS",
2680
-			$texte,
2681
-			$regs,
2682
-			PREG_PATTERN_ORDER
2683
-		)
2684
-	) {
2685
-		return $regs[0];
2686
-	} else {
2687
-		return [];
2688
-	}
2665
+    if (is_array($texte)) {
2666
+        array_walk(
2667
+            $texte,
2668
+            function (&$a, $key, $t) {
2669
+                $a = extraire_balises($a, $t);
2670
+            },
2671
+            $tag
2672
+        );
2673
+
2674
+        return $texte;
2675
+    }
2676
+
2677
+    if (
2678
+        preg_match_all(
2679
+            ",<${tag}\b[^>]*(/>|>.*</${tag}\b[^>]*>|>),UimsS",
2680
+            $texte,
2681
+            $regs,
2682
+            PREG_PATTERN_ORDER
2683
+        )
2684
+    ) {
2685
+        return $regs[0];
2686
+    } else {
2687
+        return [];
2688
+    }
2689 2689
 }
2690 2690
 
2691 2691
 /**
@@ -2714,11 +2714,11 @@  discard block
 block discarded – undo
2714 2714
  *     - `$def` si on n'a pas transmis de tableau
2715 2715
  **/
2716 2716
 function in_any($val, $vals, $def = '') {
2717
-	if (!is_array($vals) and $vals and $v = unserialize($vals)) {
2718
-		$vals = $v;
2719
-	}
2717
+    if (!is_array($vals) and $vals and $v = unserialize($vals)) {
2718
+        $vals = $v;
2719
+    }
2720 2720
 
2721
-	return (!is_array($vals) ? $def : (in_array($val, $vals) ? ' ' : ''));
2721
+    return (!is_array($vals) ? $def : (in_array($val, $vals) ? ' ' : ''));
2722 2722
 }
2723 2723
 
2724 2724
 
@@ -2739,12 +2739,12 @@  discard block
 block discarded – undo
2739 2739
  *     Résultat du calcul
2740 2740
  **/
2741 2741
 function valeur_numerique($expr) {
2742
-	$a = 0;
2743
-	if (preg_match(',^[0-9]+(\s*[+*-]\s*[0-9]+)*$,S', trim($expr))) {
2744
-		eval("\$a = $expr;");
2745
-	}
2742
+    $a = 0;
2743
+    if (preg_match(',^[0-9]+(\s*[+*-]\s*[0-9]+)*$,S', trim($expr))) {
2744
+        eval("\$a = $expr;");
2745
+    }
2746 2746
 
2747
-	return intval($a);
2747
+    return intval($a);
2748 2748
 }
2749 2749
 
2750 2750
 /**
@@ -2763,7 +2763,7 @@  discard block
 block discarded – undo
2763 2763
  *      Retourne `$a*$b/$c`
2764 2764
  **/
2765 2765
 function regledetrois($a, $b, $c) {
2766
-	return round($a * $b / $c);
2766
+    return round($a * $b / $c);
2767 2767
 }
2768 2768
 
2769 2769
 
@@ -2786,79 +2786,79 @@  discard block
 block discarded – undo
2786 2786
  * @return string Suite de champs input hidden
2787 2787
  **/
2788 2788
 function form_hidden(?string $action = ''): string {
2789
-	$action ??= '';
2790
-
2791
-	$contexte = [];
2792
-	include_spip('inc/urls');
2793
-	if (
2794
-		$p = urls_decoder_url($action, '')
2795
-		and reset($p)
2796
-	) {
2797
-		$fond = array_shift($p);
2798
-		if ($fond != '404') {
2799
-			$contexte = array_shift($p);
2800
-			$contexte['page'] = $fond;
2801
-			$action = preg_replace('/([?]' . preg_quote($fond) . '[^&=]*[0-9]+)(&|$)/', '?&', $action);
2802
-		}
2803
-	}
2804
-	// defaire ce qu'a injecte urls_decoder_url : a revoir en modifiant la signature de urls_decoder_url
2805
-	if (defined('_DEFINIR_CONTEXTE_TYPE') and _DEFINIR_CONTEXTE_TYPE) {
2806
-		unset($contexte['type']);
2807
-	}
2808
-	if (!defined('_DEFINIR_CONTEXTE_TYPE_PAGE') or _DEFINIR_CONTEXTE_TYPE_PAGE) {
2809
-		unset($contexte['type-page']);
2810
-	}
2811
-
2812
-	// on va remplir un tableau de valeurs en prenant bien soin de ne pas
2813
-	// ecraser les elements de la forme mots[]=1&mots[]=2
2814
-	$values = [];
2815
-
2816
-	// d'abord avec celles de l'url
2817
-	if (false !== ($p = strpos($action, '?'))) {
2818
-		foreach (preg_split('/&(amp;)?/S', substr($action, $p + 1)) as $c) {
2819
-			$c = explode('=', $c, 2);
2820
-			$var = array_shift($c);
2821
-			$val = array_shift($c) ?? '';
2822
-			if ($var) {
2823
-				$val = rawurldecode($val);
2824
-				$var = rawurldecode($var); // decoder les [] eventuels
2825
-				if (preg_match(',\[\]$,S', $var)) {
2826
-					$values[] = [$var, $val];
2827
-				} else {
2828
-					if (!isset($values[$var])) {
2829
-						$values[$var] = [$var, $val];
2830
-					}
2831
-				}
2832
-			}
2833
-		}
2834
-	}
2835
-
2836
-	// ensuite avec celles du contexte, sans doublonner !
2837
-	foreach ($contexte as $var => $val) {
2838
-		if (preg_match(',\[\]$,S', $var)) {
2839
-			$values[] = [$var, $val];
2840
-		} else {
2841
-			if (!isset($values[$var])) {
2842
-				$values[$var] = [$var, $val];
2843
-			}
2844
-		}
2845
-	}
2846
-
2847
-	// puis on rassemble le tout
2848
-	$hidden = [];
2849
-	foreach ($values as $value) {
2850
-		[$var, $val] = $value;
2851
-		$hidden[] = '<input name="'
2852
-			. entites_html($var)
2853
-			. '"'
2854
-			. (is_null($val)
2855
-				? ''
2856
-				: ' value="' . entites_html($val) . '"'
2857
-			)
2858
-			. ' type="hidden"' . "\n/>";
2859
-	}
2860
-
2861
-	return join('', $hidden);
2789
+    $action ??= '';
2790
+
2791
+    $contexte = [];
2792
+    include_spip('inc/urls');
2793
+    if (
2794
+        $p = urls_decoder_url($action, '')
2795
+        and reset($p)
2796
+    ) {
2797
+        $fond = array_shift($p);
2798
+        if ($fond != '404') {
2799
+            $contexte = array_shift($p);
2800
+            $contexte['page'] = $fond;
2801
+            $action = preg_replace('/([?]' . preg_quote($fond) . '[^&=]*[0-9]+)(&|$)/', '?&', $action);
2802
+        }
2803
+    }
2804
+    // defaire ce qu'a injecte urls_decoder_url : a revoir en modifiant la signature de urls_decoder_url
2805
+    if (defined('_DEFINIR_CONTEXTE_TYPE') and _DEFINIR_CONTEXTE_TYPE) {
2806
+        unset($contexte['type']);
2807
+    }
2808
+    if (!defined('_DEFINIR_CONTEXTE_TYPE_PAGE') or _DEFINIR_CONTEXTE_TYPE_PAGE) {
2809
+        unset($contexte['type-page']);
2810
+    }
2811
+
2812
+    // on va remplir un tableau de valeurs en prenant bien soin de ne pas
2813
+    // ecraser les elements de la forme mots[]=1&mots[]=2
2814
+    $values = [];
2815
+
2816
+    // d'abord avec celles de l'url
2817
+    if (false !== ($p = strpos($action, '?'))) {
2818
+        foreach (preg_split('/&(amp;)?/S', substr($action, $p + 1)) as $c) {
2819
+            $c = explode('=', $c, 2);
2820
+            $var = array_shift($c);
2821
+            $val = array_shift($c) ?? '';
2822
+            if ($var) {
2823
+                $val = rawurldecode($val);
2824
+                $var = rawurldecode($var); // decoder les [] eventuels
2825
+                if (preg_match(',\[\]$,S', $var)) {
2826
+                    $values[] = [$var, $val];
2827
+                } else {
2828
+                    if (!isset($values[$var])) {
2829
+                        $values[$var] = [$var, $val];
2830
+                    }
2831
+                }
2832
+            }
2833
+        }
2834
+    }
2835
+
2836
+    // ensuite avec celles du contexte, sans doublonner !
2837
+    foreach ($contexte as $var => $val) {
2838
+        if (preg_match(',\[\]$,S', $var)) {
2839
+            $values[] = [$var, $val];
2840
+        } else {
2841
+            if (!isset($values[$var])) {
2842
+                $values[$var] = [$var, $val];
2843
+            }
2844
+        }
2845
+    }
2846
+
2847
+    // puis on rassemble le tout
2848
+    $hidden = [];
2849
+    foreach ($values as $value) {
2850
+        [$var, $val] = $value;
2851
+        $hidden[] = '<input name="'
2852
+            . entites_html($var)
2853
+            . '"'
2854
+            . (is_null($val)
2855
+                ? ''
2856
+                : ' value="' . entites_html($val) . '"'
2857
+            )
2858
+            . ' type="hidden"' . "\n/>";
2859
+    }
2860
+
2861
+    return join('', $hidden);
2862 2862
 }
2863 2863
 
2864 2864
 
@@ -2880,7 +2880,7 @@  discard block
 block discarded – undo
2880 2880
  *    - la première valeur du tableau sinon.
2881 2881
  **/
2882 2882
 function filtre_reset($array) {
2883
-	return !is_array($array) ? null : reset($array);
2883
+    return !is_array($array) ? null : reset($array);
2884 2884
 }
2885 2885
 
2886 2886
 /**
@@ -2901,7 +2901,7 @@  discard block
 block discarded – undo
2901 2901
  *    - la dernière valeur du tableau sinon.
2902 2902
  **/
2903 2903
 function filtre_end($array) {
2904
-	return !is_array($array) ? null : end($array);
2904
+    return !is_array($array) ? null : end($array);
2905 2905
 }
2906 2906
 
2907 2907
 /**
@@ -2921,11 +2921,11 @@  discard block
 block discarded – undo
2921 2921
  *
2922 2922
  **/
2923 2923
 function filtre_push($array, $val) {
2924
-	if (!is_array($array) or !array_push($array, $val)) {
2925
-		return '';
2926
-	}
2924
+    if (!is_array($array) or !array_push($array, $val)) {
2925
+        return '';
2926
+    }
2927 2927
 
2928
-	return $array;
2928
+    return $array;
2929 2929
 }
2930 2930
 
2931 2931
 /**
@@ -2944,7 +2944,7 @@  discard block
 block discarded – undo
2944 2944
  *     - `true` si la valeur existe dans le tableau, `false` sinon.
2945 2945
  **/
2946 2946
 function filtre_find($array, $val) {
2947
-	return (is_array($array) and in_array($val, $array));
2947
+    return (is_array($array) and in_array($val, $array));
2948 2948
 }
2949 2949
 
2950 2950
 
@@ -2961,13 +2961,13 @@  discard block
 block discarded – undo
2961 2961
  *     Contenu avec urls en absolus
2962 2962
  **/
2963 2963
 function urls_absolues_css($contenu, $source) {
2964
-	$path = suivre_lien(url_absolue($source), './');
2964
+    $path = suivre_lien(url_absolue($source), './');
2965 2965
 
2966
-	return preg_replace_callback(
2967
-		",url\s*\(\s*['\"]?([^'\"/#\s][^:]*)['\"]?\s*\),Uims",
2968
-		fn($x) => "url('" . suivre_lien($path, $x[1]) . "')",
2969
-		$contenu
2970
-	);
2966
+    return preg_replace_callback(
2967
+        ",url\s*\(\s*['\"]?([^'\"/#\s][^:]*)['\"]?\s*\),Uims",
2968
+        fn($x) => "url('" . suivre_lien($path, $x[1]) . "')",
2969
+        $contenu
2970
+    );
2971 2971
 }
2972 2972
 
2973 2973
 
@@ -2996,119 +2996,119 @@  discard block
 block discarded – undo
2996 2996
  *     Chemin du fichier CSS inversé
2997 2997
  **/
2998 2998
 function direction_css($css, $voulue = '') {
2999
-	if (!preg_match(',(_rtl)?\.css$,i', $css, $r)) {
3000
-		return $css;
3001
-	}
3002
-	include_spip('inc/lang');
3003
-	// si on a precise le sens voulu en argument, le prendre en compte
3004
-	if ($voulue = strtolower($voulue)) {
3005
-		if ($voulue != 'rtl' and $voulue != 'ltr') {
3006
-			$voulue = lang_dir($voulue);
3007
-		}
3008
-	} else {
3009
-		$voulue = lang_dir();
3010
-	}
3011
-
3012
-	$r = count($r) > 1;
3013
-	$right = $r ? 'left' : 'right'; // 'right' de la css lue en entree
3014
-	$dir = $r ? 'rtl' : 'ltr';
3015
-	$ndir = $r ? 'ltr' : 'rtl';
3016
-
3017
-	if ($voulue == $dir) {
3018
-		return $css;
3019
-	}
3020
-
3021
-	if (
3022
-		// url absolue
3023
-		preg_match(',^https?:,i', $css)
3024
-		// ou qui contient un ?
3025
-		or (($p = strpos($css, '?')) !== false)
3026
-	) {
3027
-		$distant = true;
3028
-		$cssf = parse_url($css);
3029
-		$cssf = $cssf['path'] . ($cssf['query'] ? '?' . $cssf['query'] : '');
3030
-		$cssf = preg_replace(',[?:&=],', '_', $cssf);
3031
-	} else {
3032
-		$distant = false;
3033
-		$cssf = $css;
3034
-		// 1. regarder d'abord si un fichier avec la bonne direction n'est pas aussi
3035
-		//propose (rien a faire dans ce cas)
3036
-		$f = preg_replace(',(_rtl)?\.css$,i', '_' . $ndir . '.css', $css);
3037
-		if (@file_exists($f)) {
3038
-			return $f;
3039
-		}
3040
-	}
3041
-
3042
-	// 2.
3043
-	$dir_var = sous_repertoire(_DIR_VAR, 'cache-css');
3044
-	$f = $dir_var
3045
-		. preg_replace(',.*/(.*?)(_rtl)?\.css,', '\1', $cssf)
3046
-		. '.' . substr(md5($cssf), 0, 4) . '_' . $ndir . '.css';
3047
-
3048
-	// la css peut etre distante (url absolue !)
3049
-	if ($distant) {
3050
-		include_spip('inc/distant');
3051
-		$res = recuperer_url($css);
3052
-		if (!$res or !$contenu = $res['page']) {
3053
-			return $css;
3054
-		}
3055
-	} else {
3056
-		if (
3057
-			(@filemtime($f) > @filemtime($css))
3058
-			and (_VAR_MODE != 'recalcul')
3059
-		) {
3060
-			return $f;
3061
-		}
3062
-		if (!lire_fichier($css, $contenu)) {
3063
-			return $css;
3064
-		}
3065
-	}
3066
-
3067
-
3068
-	// Inverser la direction gauche-droite en utilisant CSSTidy qui gere aussi les shorthands
3069
-	include_spip('lib/csstidy/class.csstidy');
3070
-	$parser = new csstidy();
3071
-	$parser->set_cfg('optimise_shorthands', 0);
3072
-	$parser->set_cfg('reverse_left_and_right', true);
3073
-	$parser->parse($contenu);
3074
-
3075
-	$contenu = $parser->print->plain();
3076
-
3077
-
3078
-	// reperer les @import auxquels il faut propager le direction_css
3079
-	preg_match_all(",\@import\s*url\s*\(\s*['\"]?([^'\"/][^:]*)['\"]?\s*\),Uims", $contenu, $regs);
3080
-	$src = [];
3081
-	$src_direction_css = [];
3082
-	$src_faux_abs = [];
3083
-	$d = dirname($css);
3084
-	foreach ($regs[1] as $k => $import_css) {
3085
-		$css_direction = direction_css("$d/$import_css", $voulue);
3086
-		// si la css_direction est dans le meme path que la css d'origine, on tronque le path, elle sera passee en absolue
3087
-		if (substr($css_direction, 0, strlen($d) + 1) == "$d/") {
3088
-			$css_direction = substr($css_direction, strlen($d) + 1);
3089
-		} // si la css_direction commence par $dir_var on la fait passer pour une absolue
3090
-		elseif (substr($css_direction, 0, strlen($dir_var)) == $dir_var) {
3091
-			$css_direction = substr($css_direction, strlen($dir_var));
3092
-			$src_faux_abs['/@@@@@@/' . $css_direction] = $css_direction;
3093
-			$css_direction = '/@@@@@@/' . $css_direction;
3094
-		}
3095
-		$src[] = $regs[0][$k];
3096
-		$src_direction_css[] = str_replace($import_css, $css_direction, $regs[0][$k]);
3097
-	}
3098
-	$contenu = str_replace($src, $src_direction_css, $contenu);
3099
-
3100
-	$contenu = urls_absolues_css($contenu, $css);
3101
-
3102
-	// virer les fausses url absolues que l'on a mis dans les import
3103
-	if (count($src_faux_abs)) {
3104
-		$contenu = str_replace(array_keys($src_faux_abs), $src_faux_abs, $contenu);
3105
-	}
3106
-
3107
-	if (!ecrire_fichier($f, $contenu)) {
3108
-		return $css;
3109
-	}
3110
-
3111
-	return $f;
2999
+    if (!preg_match(',(_rtl)?\.css$,i', $css, $r)) {
3000
+        return $css;
3001
+    }
3002
+    include_spip('inc/lang');
3003
+    // si on a precise le sens voulu en argument, le prendre en compte
3004
+    if ($voulue = strtolower($voulue)) {
3005
+        if ($voulue != 'rtl' and $voulue != 'ltr') {
3006
+            $voulue = lang_dir($voulue);
3007
+        }
3008
+    } else {
3009
+        $voulue = lang_dir();
3010
+    }
3011
+
3012
+    $r = count($r) > 1;
3013
+    $right = $r ? 'left' : 'right'; // 'right' de la css lue en entree
3014
+    $dir = $r ? 'rtl' : 'ltr';
3015
+    $ndir = $r ? 'ltr' : 'rtl';
3016
+
3017
+    if ($voulue == $dir) {
3018
+        return $css;
3019
+    }
3020
+
3021
+    if (
3022
+        // url absolue
3023
+        preg_match(',^https?:,i', $css)
3024
+        // ou qui contient un ?
3025
+        or (($p = strpos($css, '?')) !== false)
3026
+    ) {
3027
+        $distant = true;
3028
+        $cssf = parse_url($css);
3029
+        $cssf = $cssf['path'] . ($cssf['query'] ? '?' . $cssf['query'] : '');
3030
+        $cssf = preg_replace(',[?:&=],', '_', $cssf);
3031
+    } else {
3032
+        $distant = false;
3033
+        $cssf = $css;
3034
+        // 1. regarder d'abord si un fichier avec la bonne direction n'est pas aussi
3035
+        //propose (rien a faire dans ce cas)
3036
+        $f = preg_replace(',(_rtl)?\.css$,i', '_' . $ndir . '.css', $css);
3037
+        if (@file_exists($f)) {
3038
+            return $f;
3039
+        }
3040
+    }
3041
+
3042
+    // 2.
3043
+    $dir_var = sous_repertoire(_DIR_VAR, 'cache-css');
3044
+    $f = $dir_var
3045
+        . preg_replace(',.*/(.*?)(_rtl)?\.css,', '\1', $cssf)
3046
+        . '.' . substr(md5($cssf), 0, 4) . '_' . $ndir . '.css';
3047
+
3048
+    // la css peut etre distante (url absolue !)
3049
+    if ($distant) {
3050
+        include_spip('inc/distant');
3051
+        $res = recuperer_url($css);
3052
+        if (!$res or !$contenu = $res['page']) {
3053
+            return $css;
3054
+        }
3055
+    } else {
3056
+        if (
3057
+            (@filemtime($f) > @filemtime($css))
3058
+            and (_VAR_MODE != 'recalcul')
3059
+        ) {
3060
+            return $f;
3061
+        }
3062
+        if (!lire_fichier($css, $contenu)) {
3063
+            return $css;
3064
+        }
3065
+    }
3066
+
3067
+
3068
+    // Inverser la direction gauche-droite en utilisant CSSTidy qui gere aussi les shorthands
3069
+    include_spip('lib/csstidy/class.csstidy');
3070
+    $parser = new csstidy();
3071
+    $parser->set_cfg('optimise_shorthands', 0);
3072
+    $parser->set_cfg('reverse_left_and_right', true);
3073
+    $parser->parse($contenu);
3074
+
3075
+    $contenu = $parser->print->plain();
3076
+
3077
+
3078
+    // reperer les @import auxquels il faut propager le direction_css
3079
+    preg_match_all(",\@import\s*url\s*\(\s*['\"]?([^'\"/][^:]*)['\"]?\s*\),Uims", $contenu, $regs);
3080
+    $src = [];
3081
+    $src_direction_css = [];
3082
+    $src_faux_abs = [];
3083
+    $d = dirname($css);
3084
+    foreach ($regs[1] as $k => $import_css) {
3085
+        $css_direction = direction_css("$d/$import_css", $voulue);
3086
+        // si la css_direction est dans le meme path que la css d'origine, on tronque le path, elle sera passee en absolue
3087
+        if (substr($css_direction, 0, strlen($d) + 1) == "$d/") {
3088
+            $css_direction = substr($css_direction, strlen($d) + 1);
3089
+        } // si la css_direction commence par $dir_var on la fait passer pour une absolue
3090
+        elseif (substr($css_direction, 0, strlen($dir_var)) == $dir_var) {
3091
+            $css_direction = substr($css_direction, strlen($dir_var));
3092
+            $src_faux_abs['/@@@@@@/' . $css_direction] = $css_direction;
3093
+            $css_direction = '/@@@@@@/' . $css_direction;
3094
+        }
3095
+        $src[] = $regs[0][$k];
3096
+        $src_direction_css[] = str_replace($import_css, $css_direction, $regs[0][$k]);
3097
+    }
3098
+    $contenu = str_replace($src, $src_direction_css, $contenu);
3099
+
3100
+    $contenu = urls_absolues_css($contenu, $css);
3101
+
3102
+    // virer les fausses url absolues que l'on a mis dans les import
3103
+    if (count($src_faux_abs)) {
3104
+        $contenu = str_replace(array_keys($src_faux_abs), $src_faux_abs, $contenu);
3105
+    }
3106
+
3107
+    if (!ecrire_fichier($f, $contenu)) {
3108
+        return $css;
3109
+    }
3110
+
3111
+    return $f;
3112 3112
 }
3113 3113
 
3114 3114
 
@@ -3131,46 +3131,46 @@  discard block
 block discarded – undo
3131 3131
  *     - Chemin ou URL du fichier CSS source sinon.
3132 3132
  **/
3133 3133
 function url_absolue_css($css) {
3134
-	if (!preg_match(',\.css$,i', $css, $r)) {
3135
-		return $css;
3136
-	}
3134
+    if (!preg_match(',\.css$,i', $css, $r)) {
3135
+        return $css;
3136
+    }
3137 3137
 
3138
-	$url_absolue_css = url_absolue($css);
3138
+    $url_absolue_css = url_absolue($css);
3139 3139
 
3140
-	$f = basename($css, '.css');
3141
-	$f = sous_repertoire(_DIR_VAR, 'cache-css')
3142
-		. preg_replace(',(.*?)(_rtl|_ltr)?$,', "\\1-urlabs-" . substr(md5("$css-urlabs"), 0, 4) . "\\2", $f)
3143
-		. '.css';
3140
+    $f = basename($css, '.css');
3141
+    $f = sous_repertoire(_DIR_VAR, 'cache-css')
3142
+        . preg_replace(',(.*?)(_rtl|_ltr)?$,', "\\1-urlabs-" . substr(md5("$css-urlabs"), 0, 4) . "\\2", $f)
3143
+        . '.css';
3144 3144
 
3145
-	if ((@filemtime($f) > @filemtime($css)) and (_VAR_MODE != 'recalcul')) {
3146
-		return $f;
3147
-	}
3145
+    if ((@filemtime($f) > @filemtime($css)) and (_VAR_MODE != 'recalcul')) {
3146
+        return $f;
3147
+    }
3148 3148
 
3149
-	if ($url_absolue_css == $css) {
3150
-		if (
3151
-			strncmp($GLOBALS['meta']['adresse_site'], $css, $l = strlen($GLOBALS['meta']['adresse_site'])) != 0
3152
-			or !lire_fichier(_DIR_RACINE . substr($css, $l), $contenu)
3153
-		) {
3154
-			include_spip('inc/distant');
3155
-			$contenu = recuperer_url($css);
3156
-			$contenu = $contenu['page'] ?? '';
3157
-			if (!$contenu) {
3158
-				return $css;
3159
-			}
3160
-		}
3161
-	} elseif (!lire_fichier($css, $contenu)) {
3162
-		return $css;
3163
-	}
3149
+    if ($url_absolue_css == $css) {
3150
+        if (
3151
+            strncmp($GLOBALS['meta']['adresse_site'], $css, $l = strlen($GLOBALS['meta']['adresse_site'])) != 0
3152
+            or !lire_fichier(_DIR_RACINE . substr($css, $l), $contenu)
3153
+        ) {
3154
+            include_spip('inc/distant');
3155
+            $contenu = recuperer_url($css);
3156
+            $contenu = $contenu['page'] ?? '';
3157
+            if (!$contenu) {
3158
+                return $css;
3159
+            }
3160
+        }
3161
+    } elseif (!lire_fichier($css, $contenu)) {
3162
+        return $css;
3163
+    }
3164 3164
 
3165
-	// passer les url relatives a la css d'origine en url absolues
3166
-	$contenu = urls_absolues_css($contenu, $css);
3165
+    // passer les url relatives a la css d'origine en url absolues
3166
+    $contenu = urls_absolues_css($contenu, $css);
3167 3167
 
3168
-	// ecrire la css
3169
-	if (!ecrire_fichier($f, $contenu)) {
3170
-		return $css;
3171
-	}
3168
+    // ecrire la css
3169
+    if (!ecrire_fichier($f, $contenu)) {
3170
+        return $css;
3171
+    }
3172 3172
 
3173
-	return $f;
3173
+    return $f;
3174 3174
 }
3175 3175
 
3176 3176
 
@@ -3204,24 +3204,24 @@  discard block
 block discarded – undo
3204 3204
  *     Valeur trouvée ou valeur par défaut.
3205 3205
  **/
3206 3206
 function table_valeur($table, $cle, $defaut = '', $conserver_null = false) {
3207
-	foreach (explode('/', $cle) as $k) {
3208
-		$table = (is_string($table) ? @unserialize($table) : $table);
3207
+    foreach (explode('/', $cle) as $k) {
3208
+        $table = (is_string($table) ? @unserialize($table) : $table);
3209 3209
 
3210
-		if (is_object($table)) {
3211
-			$table = (($k !== '') and isset($table->$k)) ? $table->$k : $defaut;
3212
-		} elseif (is_array($table)) {
3213
-			if ($conserver_null) {
3214
-				$table = array_key_exists($k, $table) ? $table[$k] : $defaut;
3215
-			} else {
3216
-				$table = ($table[$k] ?? $defaut);
3217
-			}
3218
-		} else {
3219
-			$table = $defaut;
3220
-			break;
3221
-		}
3222
-	}
3210
+        if (is_object($table)) {
3211
+            $table = (($k !== '') and isset($table->$k)) ? $table->$k : $defaut;
3212
+        } elseif (is_array($table)) {
3213
+            if ($conserver_null) {
3214
+                $table = array_key_exists($k, $table) ? $table[$k] : $defaut;
3215
+            } else {
3216
+                $table = ($table[$k] ?? $defaut);
3217
+            }
3218
+        } else {
3219
+            $table = $defaut;
3220
+            break;
3221
+        }
3222
+    }
3223 3223
 
3224
-	return $table;
3224
+    return $table;
3225 3225
 }
3226 3226
 
3227 3227
 /**
@@ -3254,22 +3254,22 @@  discard block
 block discarded – undo
3254 3254
  *     - string : expression trouvée.
3255 3255
  **/
3256 3256
 function filtre_match_dist(?string $texte, $expression, $modif = 'UimsS', $capte = 0) {
3257
-	if (intval($modif) and $capte == 0) {
3258
-		$capte = $modif;
3259
-		$modif = 'UimsS';
3260
-	}
3261
-	$expression = str_replace('\/', '/', $expression);
3262
-	$expression = str_replace('/', '\/', $expression);
3257
+    if (intval($modif) and $capte == 0) {
3258
+        $capte = $modif;
3259
+        $modif = 'UimsS';
3260
+    }
3261
+    $expression = str_replace('\/', '/', $expression);
3262
+    $expression = str_replace('/', '\/', $expression);
3263 3263
 
3264
-	if (preg_match('/' . $expression . '/' . $modif, $texte ?? '', $r)) {
3265
-		if (isset($r[$capte])) {
3266
-			return $r[$capte];
3267
-		} else {
3268
-			return true;
3269
-		}
3270
-	}
3264
+    if (preg_match('/' . $expression . '/' . $modif, $texte ?? '', $r)) {
3265
+        if (isset($r[$capte])) {
3266
+            return $r[$capte];
3267
+        } else {
3268
+            return true;
3269
+        }
3270
+    }
3271 3271
 
3272
-	return false;
3272
+    return false;
3273 3273
 }
3274 3274
 
3275 3275
 
@@ -3296,10 +3296,10 @@  discard block
 block discarded – undo
3296 3296
  *     Texte
3297 3297
  **/
3298 3298
 function replace($texte, $expression, $replace = '', $modif = 'UimsS') {
3299
-	$expression = str_replace('\/', '/', $expression);
3300
-	$expression = str_replace('/', '\/', $expression);
3299
+    $expression = str_replace('\/', '/', $expression);
3300
+    $expression = str_replace('/', '\/', $expression);
3301 3301
 
3302
-	return preg_replace('/' . $expression . '/' . $modif, $replace, $texte);
3302
+    return preg_replace('/' . $expression . '/' . $modif, $replace, $texte);
3303 3303
 }
3304 3304
 
3305 3305
 
@@ -3317,25 +3317,25 @@  discard block
 block discarded – undo
3317 3317
  **/
3318 3318
 function traiter_doublons_documents(&$doublons, $letexte) {
3319 3319
 
3320
-	// Verifier dans le texte & les notes (pas beau, helas)
3321
-	$t = $letexte . $GLOBALS['les_notes'];
3320
+    // Verifier dans le texte & les notes (pas beau, helas)
3321
+    $t = $letexte . $GLOBALS['les_notes'];
3322 3322
 
3323
-	if (
3324
-		strstr($t, 'spip_document_') // evite le preg_match_all si inutile
3325
-		and preg_match_all(
3326
-			',<[^>]+\sclass=["\']spip_document_([0-9]+)[\s"\'],imsS',
3327
-			$t,
3328
-			$matches,
3329
-			PREG_PATTERN_ORDER
3330
-		)
3331
-	) {
3332
-		if (!isset($doublons['documents'])) {
3333
-			$doublons['documents'] = '';
3334
-		}
3335
-		$doublons['documents'] .= ',' . join(',', $matches[1]);
3336
-	}
3323
+    if (
3324
+        strstr($t, 'spip_document_') // evite le preg_match_all si inutile
3325
+        and preg_match_all(
3326
+            ',<[^>]+\sclass=["\']spip_document_([0-9]+)[\s"\'],imsS',
3327
+            $t,
3328
+            $matches,
3329
+            PREG_PATTERN_ORDER
3330
+        )
3331
+    ) {
3332
+        if (!isset($doublons['documents'])) {
3333
+            $doublons['documents'] = '';
3334
+        }
3335
+        $doublons['documents'] .= ',' . join(',', $matches[1]);
3336
+    }
3337 3337
 
3338
-	return $letexte;
3338
+    return $letexte;
3339 3339
 }
3340 3340
 
3341 3341
 /**
@@ -3349,7 +3349,7 @@  discard block
 block discarded – undo
3349 3349
  * @return string Chaîne vide
3350 3350
  **/
3351 3351
 function vide($texte) {
3352
-	return '';
3352
+    return '';
3353 3353
 }
3354 3354
 
3355 3355
 //
@@ -3378,23 +3378,23 @@  discard block
 block discarded – undo
3378 3378
  *      Code HTML résultant
3379 3379
  **/
3380 3380
 function env_to_params($env, $ignore_params = []) {
3381
-	$ignore_params = array_merge(
3382
-		['id', 'lang', 'id_document', 'date', 'date_redac', 'align', 'fond', '', 'recurs', 'emb', 'dir_racine'],
3383
-		$ignore_params
3384
-	);
3385
-	if (!is_array($env)) {
3386
-		$env = unserialize($env);
3387
-	}
3388
-	$texte = '';
3389
-	if ($env) {
3390
-		foreach ($env as $i => $j) {
3391
-			if (is_string($j) and !in_array($i, $ignore_params)) {
3392
-				$texte .= "<param name='" . attribut_html($i) . "'\n\tvalue='" . attribut_html($j) . "' />";
3393
-			}
3394
-		}
3395
-	}
3396
-
3397
-	return $texte;
3381
+    $ignore_params = array_merge(
3382
+        ['id', 'lang', 'id_document', 'date', 'date_redac', 'align', 'fond', '', 'recurs', 'emb', 'dir_racine'],
3383
+        $ignore_params
3384
+    );
3385
+    if (!is_array($env)) {
3386
+        $env = unserialize($env);
3387
+    }
3388
+    $texte = '';
3389
+    if ($env) {
3390
+        foreach ($env as $i => $j) {
3391
+            if (is_string($j) and !in_array($i, $ignore_params)) {
3392
+                $texte .= "<param name='" . attribut_html($i) . "'\n\tvalue='" . attribut_html($j) . "' />";
3393
+            }
3394
+        }
3395
+    }
3396
+
3397
+    return $texte;
3398 3398
 }
3399 3399
 
3400 3400
 /**
@@ -3417,23 +3417,23 @@  discard block
 block discarded – undo
3417 3417
  *      Code HTML résultant
3418 3418
  **/
3419 3419
 function env_to_attributs($env, $ignore_params = []) {
3420
-	$ignore_params = array_merge(
3421
-		['id', 'lang', 'id_document', 'date', 'date_redac', 'align', 'fond', '', 'recurs', 'emb', 'dir_racine'],
3422
-		$ignore_params
3423
-	);
3424
-	if (!is_array($env)) {
3425
-		$env = unserialize($env);
3426
-	}
3427
-	$texte = '';
3428
-	if ($env) {
3429
-		foreach ($env as $i => $j) {
3430
-			if (is_string($j) and !in_array($i, $ignore_params)) {
3431
-				$texte .= attribut_html($i) . "='" . attribut_html($j) . "' ";
3432
-			}
3433
-		}
3434
-	}
3420
+    $ignore_params = array_merge(
3421
+        ['id', 'lang', 'id_document', 'date', 'date_redac', 'align', 'fond', '', 'recurs', 'emb', 'dir_racine'],
3422
+        $ignore_params
3423
+    );
3424
+    if (!is_array($env)) {
3425
+        $env = unserialize($env);
3426
+    }
3427
+    $texte = '';
3428
+    if ($env) {
3429
+        foreach ($env as $i => $j) {
3430
+            if (is_string($j) and !in_array($i, $ignore_params)) {
3431
+                $texte .= attribut_html($i) . "='" . attribut_html($j) . "' ";
3432
+            }
3433
+        }
3434
+    }
3435 3435
 
3436
-	return $texte;
3436
+    return $texte;
3437 3437
 }
3438 3438
 
3439 3439
 
@@ -3451,7 +3451,7 @@  discard block
 block discarded – undo
3451 3451
  * @return string Chaînes concaténés
3452 3452
  **/
3453 3453
 function concat(...$args): string {
3454
-	return join('', $args);
3454
+    return join('', $args);
3455 3455
 }
3456 3456
 
3457 3457
 
@@ -3471,23 +3471,23 @@  discard block
 block discarded – undo
3471 3471
  *     Contenu du ou des fichiers, concaténé
3472 3472
  **/
3473 3473
 function charge_scripts($files, $script = true) {
3474
-	$flux = '';
3475
-	foreach (is_array($files) ? $files : explode('|', $files) as $file) {
3476
-		if (!is_string($file)) {
3477
-			continue;
3478
-		}
3479
-		if ($script) {
3480
-			$file = preg_match(',^\w+$,', $file) ? "javascript/$file.js" : '';
3481
-		}
3482
-		if ($file) {
3483
-			$path = find_in_path($file);
3484
-			if ($path) {
3485
-				$flux .= spip_file_get_contents($path);
3486
-			}
3487
-		}
3488
-	}
3489
-
3490
-	return $flux;
3474
+    $flux = '';
3475
+    foreach (is_array($files) ? $files : explode('|', $files) as $file) {
3476
+        if (!is_string($file)) {
3477
+            continue;
3478
+        }
3479
+        if ($script) {
3480
+            $file = preg_match(',^\w+$,', $file) ? "javascript/$file.js" : '';
3481
+        }
3482
+        if ($file) {
3483
+            $path = find_in_path($file);
3484
+            if ($path) {
3485
+                $flux .= spip_file_get_contents($path);
3486
+            }
3487
+        }
3488
+    }
3489
+
3490
+    return $flux;
3491 3491
 }
3492 3492
 
3493 3493
 /**
@@ -3498,22 +3498,22 @@  discard block
 block discarded – undo
3498 3498
  * @return string
3499 3499
  */
3500 3500
 function http_img_variante_svg_si_possible($img_file) {
3501
-	// on peut fournir une icone generique -xx.svg qui fera le job dans toutes les tailles, et qui est prioritaire sur le png
3502
-	// si il y a un .svg a la bonne taille (-16.svg) a cote, on l'utilise en remplacement du -16.png
3503
-	if (
3504
-		preg_match(',-(\d+)[.](png|gif|svg)$,', $img_file, $m)
3505
-		and $variante_svg_generique = substr($img_file, 0, -strlen($m[0])) . '-xx.svg'
3506
-		and file_exists($variante_svg_generique)
3507
-	) {
3508
-		if ($variante_svg_size = substr($variante_svg_generique, 0, -6) . $m[1] . '.svg' and file_exists($variante_svg_size)) {
3509
-			$img_file = $variante_svg_size;
3510
-		}
3511
-		else {
3512
-			$img_file = $variante_svg_generique;
3513
-		}
3514
-	}
3501
+    // on peut fournir une icone generique -xx.svg qui fera le job dans toutes les tailles, et qui est prioritaire sur le png
3502
+    // si il y a un .svg a la bonne taille (-16.svg) a cote, on l'utilise en remplacement du -16.png
3503
+    if (
3504
+        preg_match(',-(\d+)[.](png|gif|svg)$,', $img_file, $m)
3505
+        and $variante_svg_generique = substr($img_file, 0, -strlen($m[0])) . '-xx.svg'
3506
+        and file_exists($variante_svg_generique)
3507
+    ) {
3508
+        if ($variante_svg_size = substr($variante_svg_generique, 0, -6) . $m[1] . '.svg' and file_exists($variante_svg_size)) {
3509
+            $img_file = $variante_svg_size;
3510
+        }
3511
+        else {
3512
+            $img_file = $variante_svg_generique;
3513
+        }
3514
+    }
3515 3515
 
3516
-	return $img_file;
3516
+    return $img_file;
3517 3517
 }
3518 3518
 
3519 3519
 /**
@@ -3534,54 +3534,54 @@  discard block
 block discarded – undo
3534 3534
  */
3535 3535
 function http_img_pack($img, $alt, $atts = '', $title = '', $options = []) {
3536 3536
 
3537
-	$img_file = $img;
3538
-	if ($p = strpos($img_file, '?')) {
3539
-		$img_file = substr($img_file, 0, $p);
3540
-	}
3541
-	if (!isset($options['chemin_image']) or $options['chemin_image'] == true) {
3542
-		$img_file = chemin_image($img);
3543
-	}
3544
-	else {
3545
-		if (!isset($options['variante_svg_si_possible']) or $options['variante_svg_si_possible'] == true) {
3546
-			$img_file = http_img_variante_svg_si_possible($img_file);
3547
-		}
3548
-	}
3549
-	if (stripos($atts, 'width') === false) {
3550
-		// utiliser directement l'info de taille presente dans le nom
3551
-		if (
3552
-			(!isset($options['utiliser_suffixe_size'])
3553
-				or $options['utiliser_suffixe_size'] == true
3554
-			  or strpos($img_file, '-xx.svg') !== false)
3555
-			and (preg_match(',-([0-9]+)[.](png|gif|svg)$,', $img, $regs)
3556
-					 or preg_match(',\?([0-9]+)px$,', $img, $regs))
3557
-		) {
3558
-			$largeur = $hauteur = intval($regs[1]);
3559
-		} else {
3560
-			$taille = taille_image($img_file);
3561
-			[$hauteur, $largeur] = $taille;
3562
-			if (!$hauteur or !$largeur) {
3563
-				return '';
3564
-			}
3565
-		}
3566
-		$atts .= " width='" . $largeur . "' height='" . $hauteur . "'";
3567
-	}
3568
-
3569
-	if (file_exists($img_file)) {
3570
-		$img_file = timestamp($img_file);
3571
-	}
3572
-	if ($alt === false) {
3573
-		$alt = '';
3574
-	}
3575
-	elseif ($alt or $alt === '') {
3576
-		$alt = " alt='" . attribut_html($alt) . "'";
3577
-	}
3578
-	else {
3579
-		$alt = " alt='" . attribut_html($title) . "'";
3580
-	}
3581
-	return "<img src='$img_file'$alt"
3582
-	. ($title ? ' title="' . attribut_html($title) . '"' : '')
3583
-	. ' ' . ltrim($atts)
3584
-	. ' />';
3537
+    $img_file = $img;
3538
+    if ($p = strpos($img_file, '?')) {
3539
+        $img_file = substr($img_file, 0, $p);
3540
+    }
3541
+    if (!isset($options['chemin_image']) or $options['chemin_image'] == true) {
3542
+        $img_file = chemin_image($img);
3543
+    }
3544
+    else {
3545
+        if (!isset($options['variante_svg_si_possible']) or $options['variante_svg_si_possible'] == true) {
3546
+            $img_file = http_img_variante_svg_si_possible($img_file);
3547
+        }
3548
+    }
3549
+    if (stripos($atts, 'width') === false) {
3550
+        // utiliser directement l'info de taille presente dans le nom
3551
+        if (
3552
+            (!isset($options['utiliser_suffixe_size'])
3553
+                or $options['utiliser_suffixe_size'] == true
3554
+              or strpos($img_file, '-xx.svg') !== false)
3555
+            and (preg_match(',-([0-9]+)[.](png|gif|svg)$,', $img, $regs)
3556
+                     or preg_match(',\?([0-9]+)px$,', $img, $regs))
3557
+        ) {
3558
+            $largeur = $hauteur = intval($regs[1]);
3559
+        } else {
3560
+            $taille = taille_image($img_file);
3561
+            [$hauteur, $largeur] = $taille;
3562
+            if (!$hauteur or !$largeur) {
3563
+                return '';
3564
+            }
3565
+        }
3566
+        $atts .= " width='" . $largeur . "' height='" . $hauteur . "'";
3567
+    }
3568
+
3569
+    if (file_exists($img_file)) {
3570
+        $img_file = timestamp($img_file);
3571
+    }
3572
+    if ($alt === false) {
3573
+        $alt = '';
3574
+    }
3575
+    elseif ($alt or $alt === '') {
3576
+        $alt = " alt='" . attribut_html($alt) . "'";
3577
+    }
3578
+    else {
3579
+        $alt = " alt='" . attribut_html($title) . "'";
3580
+    }
3581
+    return "<img src='$img_file'$alt"
3582
+    . ($title ? ' title="' . attribut_html($title) . '"' : '')
3583
+    . ' ' . ltrim($atts)
3584
+    . ' />';
3585 3585
 }
3586 3586
 
3587 3587
 /**
@@ -3593,70 +3593,70 @@  discard block
 block discarded – undo
3593 3593
  * @return string
3594 3594
  */
3595 3595
 function http_style_background($img, $att = '', $size = null) {
3596
-	if ($size and is_numeric($size)) {
3597
-		$size = trim($size) . 'px';
3598
-	}
3599
-	return " style='background" .
3600
-		($att ? '' : '-image') . ': url("' . chemin_image($img) . '")' . ($att ? (' ' . $att) : '') . ';'
3601
-		. ($size ? "background-size:{$size};" : '')
3602
-		. "'";
3596
+    if ($size and is_numeric($size)) {
3597
+        $size = trim($size) . 'px';
3598
+    }
3599
+    return " style='background" .
3600
+        ($att ? '' : '-image') . ': url("' . chemin_image($img) . '")' . ($att ? (' ' . $att) : '') . ';'
3601
+        . ($size ? "background-size:{$size};" : '')
3602
+        . "'";
3603 3603
 }
3604 3604
 
3605 3605
 
3606 3606
 function helper_filtre_balise_img_svg_arguments($alt_or_size, $class_or_size, $size) {
3607
-	$args = [$alt_or_size, $class_or_size, $size];
3608
-	while (is_null(end($args)) and count($args)) {
3609
-		array_pop($args);
3610
-	}
3611
-	if (!count($args)) {
3612
-		return [null, null, null];
3613
-	}
3614
-	if (count($args) < 3) {
3615
-		$maybe_size = array_pop($args);
3616
-		// @2x
3617
-		// @1.5x
3618
-		// 512
3619
-		// 512x*
3620
-		// 512x300
3621
-		if (
3622
-			!strlen($maybe_size)
3623
-			or !preg_match(',^(@\d+(\.\d+)?x|\d+(x\*)?|\d+x\d+)$,', trim($maybe_size))
3624
-		) {
3625
-			$args[] = $maybe_size;
3626
-			$maybe_size = null;
3627
-		}
3628
-		while (count($args) < 2) {
3629
-			$args[] = null; // default alt or class
3630
-		}
3631
-		$args[] = $maybe_size;
3632
-	}
3633
-	return $args;
3607
+    $args = [$alt_or_size, $class_or_size, $size];
3608
+    while (is_null(end($args)) and count($args)) {
3609
+        array_pop($args);
3610
+    }
3611
+    if (!count($args)) {
3612
+        return [null, null, null];
3613
+    }
3614
+    if (count($args) < 3) {
3615
+        $maybe_size = array_pop($args);
3616
+        // @2x
3617
+        // @1.5x
3618
+        // 512
3619
+        // 512x*
3620
+        // 512x300
3621
+        if (
3622
+            !strlen($maybe_size)
3623
+            or !preg_match(',^(@\d+(\.\d+)?x|\d+(x\*)?|\d+x\d+)$,', trim($maybe_size))
3624
+        ) {
3625
+            $args[] = $maybe_size;
3626
+            $maybe_size = null;
3627
+        }
3628
+        while (count($args) < 2) {
3629
+            $args[] = null; // default alt or class
3630
+        }
3631
+        $args[] = $maybe_size;
3632
+    }
3633
+    return $args;
3634 3634
 }
3635 3635
 
3636 3636
 function helper_filtre_balise_img_svg_size($img, $size) {
3637
-	// si size est de la forme '@2x' c'est un coeff multiplicateur sur la densite
3638
-	if (strpos($size, '@') === 0 and substr($size, -1) === 'x') {
3639
-		$coef = floatval(substr($size, 1, -1));
3640
-		[$h, $w] = taille_image($img);
3641
-		$height = intval(round($h / $coef));
3642
-		$width = intval(round($w / $coef));
3643
-	}
3644
-	// sinon c'est une valeur seule si image caree ou largeurxhauteur
3645
-	else {
3646
-		$size = explode('x', $size, 2);
3647
-		$size = array_map('trim', $size);
3648
-		$height = $width = intval(array_shift($size));
3649
-
3650
-		if (count($size) and reset($size)) {
3651
-			$height = array_shift($size);
3652
-			if ($height === '*') {
3653
-				[$h, $w] = taille_image($img);
3654
-				$height = intval(round($h * $width / $w));
3655
-			}
3656
-		}
3657
-	}
3658
-
3659
-	return [$width, $height];
3637
+    // si size est de la forme '@2x' c'est un coeff multiplicateur sur la densite
3638
+    if (strpos($size, '@') === 0 and substr($size, -1) === 'x') {
3639
+        $coef = floatval(substr($size, 1, -1));
3640
+        [$h, $w] = taille_image($img);
3641
+        $height = intval(round($h / $coef));
3642
+        $width = intval(round($w / $coef));
3643
+    }
3644
+    // sinon c'est une valeur seule si image caree ou largeurxhauteur
3645
+    else {
3646
+        $size = explode('x', $size, 2);
3647
+        $size = array_map('trim', $size);
3648
+        $height = $width = intval(array_shift($size));
3649
+
3650
+        if (count($size) and reset($size)) {
3651
+            $height = array_shift($size);
3652
+            if ($height === '*') {
3653
+                [$h, $w] = taille_image($img);
3654
+                $height = intval(round($h * $width / $w));
3655
+            }
3656
+        }
3657
+    }
3658
+
3659
+    return [$width, $height];
3660 3660
 }
3661 3661
 
3662 3662
 /**
@@ -3692,43 +3692,43 @@  discard block
 block discarded – undo
3692 3692
  */
3693 3693
 function filtre_balise_img_dist($img, $alt = '', $class = null, $size = null) {
3694 3694
 
3695
-	[$alt, $class, $size] = helper_filtre_balise_img_svg_arguments($alt, $class, $size);
3696
-
3697
-	$img = trim((string) $img);
3698
-	if (strpos($img, '<img') === 0) {
3699
-		if (!is_null($alt)) {
3700
-			$img = inserer_attribut($img, 'alt', $alt);
3701
-		}
3702
-		if (!is_null($class)) {
3703
-			if (strlen($class)) {
3704
-				$img = inserer_attribut($img, 'class', $class);
3705
-			}
3706
-			else {
3707
-				$img = vider_attribut($img, 'class');
3708
-			}
3709
-		}
3710
-	}
3711
-	else {
3712
-		$img = http_img_pack(
3713
-			$img,
3714
-			$alt,
3715
-			$class ? " class='" . attribut_html($class) . "'" : '',
3716
-			'',
3717
-			['chemin_image' => false, 'utiliser_suffixe_size' => false]
3718
-		);
3719
-		if (is_null($alt)) {
3720
-			$img = vider_attribut($img, 'alt');
3721
-		}
3722
-	}
3723
-
3724
-	if ($img and !is_null($size) and strlen($size = trim($size))) {
3725
-		[$width, $height] = helper_filtre_balise_img_svg_size($img, $size);
3726
-
3727
-		$img = inserer_attribut($img, 'width', $width);
3728
-		$img = inserer_attribut($img, 'height', $height);
3729
-	}
3730
-
3731
-	return $img;
3695
+    [$alt, $class, $size] = helper_filtre_balise_img_svg_arguments($alt, $class, $size);
3696
+
3697
+    $img = trim((string) $img);
3698
+    if (strpos($img, '<img') === 0) {
3699
+        if (!is_null($alt)) {
3700
+            $img = inserer_attribut($img, 'alt', $alt);
3701
+        }
3702
+        if (!is_null($class)) {
3703
+            if (strlen($class)) {
3704
+                $img = inserer_attribut($img, 'class', $class);
3705
+            }
3706
+            else {
3707
+                $img = vider_attribut($img, 'class');
3708
+            }
3709
+        }
3710
+    }
3711
+    else {
3712
+        $img = http_img_pack(
3713
+            $img,
3714
+            $alt,
3715
+            $class ? " class='" . attribut_html($class) . "'" : '',
3716
+            '',
3717
+            ['chemin_image' => false, 'utiliser_suffixe_size' => false]
3718
+        );
3719
+        if (is_null($alt)) {
3720
+            $img = vider_attribut($img, 'alt');
3721
+        }
3722
+    }
3723
+
3724
+    if ($img and !is_null($size) and strlen($size = trim($size))) {
3725
+        [$width, $height] = helper_filtre_balise_img_svg_size($img, $size);
3726
+
3727
+        $img = inserer_attribut($img, 'width', $width);
3728
+        $img = inserer_attribut($img, 'height', $height);
3729
+    }
3730
+
3731
+    return $img;
3732 3732
 }
3733 3733
 
3734 3734
 
@@ -3762,80 +3762,80 @@  discard block
 block discarded – undo
3762 3762
  */
3763 3763
 function filtre_balise_svg_dist($img, $alt = '', $class = null, $size = null) {
3764 3764
 
3765
-	$svg = null;
3766
-	$img = trim($img);
3767
-	$img_file = $img;
3768
-	if (strpos($img, '<svg') === false) {
3769
-		if ($p = strpos($img_file, '?')) {
3770
-			$img_file = substr($img_file, 0, $p);
3771
-		}
3772
-
3773
-		// ne jamais operer directement sur une image distante pour des raisons de perfo
3774
-		// la copie locale a toutes les chances d'etre la ou de resservir
3775
-		if (tester_url_absolue($img_file)) {
3776
-			include_spip('inc/distant');
3777
-			$fichier = copie_locale($img_file);
3778
-			$img_file = ($fichier ? _DIR_RACINE . $fichier : $img_file);
3779
-		}
3780
-
3781
-		if (
3782
-			!$img_file
3783
-			or !file_exists($img_file)
3784
-			or !$svg = file_get_contents($img_file)
3785
-		) {
3786
-			return '';
3787
-		}
3788
-	}
3789
-
3790
-	if (!preg_match(",<svg\b[^>]*>,UimsS", $svg, $match)) {
3791
-		return '';
3792
-	}
3793
-
3794
-	[$alt, $class, $size] = helper_filtre_balise_img_svg_arguments($alt, $class, $size);
3795
-
3796
-	$balise_svg = $match[0];
3797
-	$balise_svg_source = $balise_svg;
3798
-
3799
-	// entete XML à supprimer
3800
-	$svg = preg_replace(',^\s*<\?xml[^>]*\?' . '>,', '', $svg);
3801
-
3802
-	// IE est toujours mon ami
3803
-	$balise_svg = inserer_attribut($balise_svg, 'focusable', 'false');
3804
-
3805
-	// regler la classe
3806
-	if (!is_null($class)) {
3807
-		if (strlen($class)) {
3808
-			$balise_svg = inserer_attribut($balise_svg, 'class', $class);
3809
-		}
3810
-		else {
3811
-			$balise_svg = vider_attribut($balise_svg, 'class');
3812
-		}
3813
-	}
3814
-
3815
-	// regler le alt
3816
-	if ($alt) {
3817
-		$balise_svg = inserer_attribut($balise_svg, 'role', 'img');
3818
-		$id = 'img-svg-title-' . substr(md5("$img_file:$svg:$alt"), 0, 4);
3819
-		$balise_svg = inserer_attribut($balise_svg, 'aria-labelledby', $id);
3820
-		$title = "<title id=\"$id\">" . entites_html($alt) . "</title>\n";
3821
-		$balise_svg .= $title;
3822
-	}
3823
-	else {
3824
-		$balise_svg = inserer_attribut($balise_svg, 'aria-hidden', 'true');
3825
-	}
3826
-
3827
-	$svg = str_replace($balise_svg_source, $balise_svg, $svg);
3828
-
3829
-	if (!is_null($size) and strlen($size = trim($size))) {
3830
-		[$width, $height] = helper_filtre_balise_img_svg_size($svg, $size);
3831
-
3832
-		if (!function_exists('svg_redimensionner')) {
3833
-			include_spip('inc/svg');
3834
-		}
3835
-		$svg = svg_redimensionner($svg, $width, $height);
3836
-	}
3837
-
3838
-	return $svg;
3765
+    $svg = null;
3766
+    $img = trim($img);
3767
+    $img_file = $img;
3768
+    if (strpos($img, '<svg') === false) {
3769
+        if ($p = strpos($img_file, '?')) {
3770
+            $img_file = substr($img_file, 0, $p);
3771
+        }
3772
+
3773
+        // ne jamais operer directement sur une image distante pour des raisons de perfo
3774
+        // la copie locale a toutes les chances d'etre la ou de resservir
3775
+        if (tester_url_absolue($img_file)) {
3776
+            include_spip('inc/distant');
3777
+            $fichier = copie_locale($img_file);
3778
+            $img_file = ($fichier ? _DIR_RACINE . $fichier : $img_file);
3779
+        }
3780
+
3781
+        if (
3782
+            !$img_file
3783
+            or !file_exists($img_file)
3784
+            or !$svg = file_get_contents($img_file)
3785
+        ) {
3786
+            return '';
3787
+        }
3788
+    }
3789
+
3790
+    if (!preg_match(",<svg\b[^>]*>,UimsS", $svg, $match)) {
3791
+        return '';
3792
+    }
3793
+
3794
+    [$alt, $class, $size] = helper_filtre_balise_img_svg_arguments($alt, $class, $size);
3795
+
3796
+    $balise_svg = $match[0];
3797
+    $balise_svg_source = $balise_svg;
3798
+
3799
+    // entete XML à supprimer
3800
+    $svg = preg_replace(',^\s*<\?xml[^>]*\?' . '>,', '', $svg);
3801
+
3802
+    // IE est toujours mon ami
3803
+    $balise_svg = inserer_attribut($balise_svg, 'focusable', 'false');
3804
+
3805
+    // regler la classe
3806
+    if (!is_null($class)) {
3807
+        if (strlen($class)) {
3808
+            $balise_svg = inserer_attribut($balise_svg, 'class', $class);
3809
+        }
3810
+        else {
3811
+            $balise_svg = vider_attribut($balise_svg, 'class');
3812
+        }
3813
+    }
3814
+
3815
+    // regler le alt
3816
+    if ($alt) {
3817
+        $balise_svg = inserer_attribut($balise_svg, 'role', 'img');
3818
+        $id = 'img-svg-title-' . substr(md5("$img_file:$svg:$alt"), 0, 4);
3819
+        $balise_svg = inserer_attribut($balise_svg, 'aria-labelledby', $id);
3820
+        $title = "<title id=\"$id\">" . entites_html($alt) . "</title>\n";
3821
+        $balise_svg .= $title;
3822
+    }
3823
+    else {
3824
+        $balise_svg = inserer_attribut($balise_svg, 'aria-hidden', 'true');
3825
+    }
3826
+
3827
+    $svg = str_replace($balise_svg_source, $balise_svg, $svg);
3828
+
3829
+    if (!is_null($size) and strlen($size = trim($size))) {
3830
+        [$width, $height] = helper_filtre_balise_img_svg_size($svg, $size);
3831
+
3832
+        if (!function_exists('svg_redimensionner')) {
3833
+            include_spip('inc/svg');
3834
+        }
3835
+        $svg = svg_redimensionner($svg, $width, $height);
3836
+    }
3837
+
3838
+    return $svg;
3839 3839
 }
3840 3840
 
3841 3841
 
@@ -3861,18 +3861,18 @@  discard block
 block discarded – undo
3861 3861
  *     Code HTML résultant
3862 3862
  **/
3863 3863
 function filtre_foreach_dist($tableau, $modele = 'foreach') {
3864
-	$texte = '';
3865
-	if (is_array($tableau)) {
3866
-		foreach ($tableau as $k => $v) {
3867
-			$res = recuperer_fond(
3868
-				'modeles/' . $modele,
3869
-				array_merge(['cle' => $k], (is_array($v) ? $v : ['valeur' => $v]))
3870
-			);
3871
-			$texte .= $res;
3872
-		}
3873
-	}
3864
+    $texte = '';
3865
+    if (is_array($tableau)) {
3866
+        foreach ($tableau as $k => $v) {
3867
+            $res = recuperer_fond(
3868
+                'modeles/' . $modele,
3869
+                array_merge(['cle' => $k], (is_array($v) ? $v : ['valeur' => $v]))
3870
+            );
3871
+            $texte .= $res;
3872
+        }
3873
+    }
3874 3874
 
3875
-	return $texte;
3875
+    return $texte;
3876 3876
 }
3877 3877
 
3878 3878
 
@@ -3897,37 +3897,37 @@  discard block
 block discarded – undo
3897 3897
  *         - tout : retourne toutes les informations du plugin actif
3898 3898
  **/
3899 3899
 function filtre_info_plugin_dist($plugin, $type_info, $reload = false) {
3900
-	include_spip('inc/plugin');
3901
-	$plugin = strtoupper($plugin);
3902
-	$plugins_actifs = liste_plugin_actifs();
3903
-
3904
-	if (!$plugin) {
3905
-		return serialize(array_keys($plugins_actifs));
3906
-	} elseif (empty($plugins_actifs[$plugin]) and !$reload) {
3907
-		return '';
3908
-	} elseif (($type_info == 'est_actif') and !$reload) {
3909
-		return $plugins_actifs[$plugin] ? 1 : 0;
3910
-	} elseif (isset($plugins_actifs[$plugin][$type_info]) and !$reload) {
3911
-		return $plugins_actifs[$plugin][$type_info];
3912
-	} else {
3913
-		$get_infos = charger_fonction('get_infos', 'plugins');
3914
-		// On prend en compte les extensions
3915
-		if (!is_dir($plugins_actifs[$plugin]['dir_type'])) {
3916
-			$dir_plugins = constant($plugins_actifs[$plugin]['dir_type']);
3917
-		} else {
3918
-			$dir_plugins = $plugins_actifs[$plugin]['dir_type'];
3919
-		}
3920
-		if (!$infos = $get_infos($plugins_actifs[$plugin]['dir'], $reload, $dir_plugins)) {
3921
-			return '';
3922
-		}
3923
-		if ($type_info == 'tout') {
3924
-			return $infos;
3925
-		} elseif ($type_info == 'est_actif') {
3926
-			return $infos ? 1 : 0;
3927
-		} else {
3928
-			return strval($infos[$type_info]);
3929
-		}
3930
-	}
3900
+    include_spip('inc/plugin');
3901
+    $plugin = strtoupper($plugin);
3902
+    $plugins_actifs = liste_plugin_actifs();
3903
+
3904
+    if (!$plugin) {
3905
+        return serialize(array_keys($plugins_actifs));
3906
+    } elseif (empty($plugins_actifs[$plugin]) and !$reload) {
3907
+        return '';
3908
+    } elseif (($type_info == 'est_actif') and !$reload) {
3909
+        return $plugins_actifs[$plugin] ? 1 : 0;
3910
+    } elseif (isset($plugins_actifs[$plugin][$type_info]) and !$reload) {
3911
+        return $plugins_actifs[$plugin][$type_info];
3912
+    } else {
3913
+        $get_infos = charger_fonction('get_infos', 'plugins');
3914
+        // On prend en compte les extensions
3915
+        if (!is_dir($plugins_actifs[$plugin]['dir_type'])) {
3916
+            $dir_plugins = constant($plugins_actifs[$plugin]['dir_type']);
3917
+        } else {
3918
+            $dir_plugins = $plugins_actifs[$plugin]['dir_type'];
3919
+        }
3920
+        if (!$infos = $get_infos($plugins_actifs[$plugin]['dir'], $reload, $dir_plugins)) {
3921
+            return '';
3922
+        }
3923
+        if ($type_info == 'tout') {
3924
+            return $infos;
3925
+        } elseif ($type_info == 'est_actif') {
3926
+            return $infos ? 1 : 0;
3927
+        } else {
3928
+            return strval($infos[$type_info]);
3929
+        }
3930
+    }
3931 3931
 }
3932 3932
 
3933 3933
 
@@ -3954,9 +3954,9 @@  discard block
 block discarded – undo
3954 3954
  *     Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
3955 3955
  */
3956 3956
 function puce_changement_statut($id_objet, $statut, $id_rubrique, $type, $ajax = false) {
3957
-	$puce_statut = charger_fonction('puce_statut', 'inc');
3957
+    $puce_statut = charger_fonction('puce_statut', 'inc');
3958 3958
 
3959
-	return $puce_statut($id_objet, $statut, $id_rubrique, $type, $ajax);
3959
+    return $puce_statut($id_objet, $statut, $id_rubrique, $type, $ajax);
3960 3960
 }
3961 3961
 
3962 3962
 
@@ -3986,19 +3986,19 @@  discard block
 block discarded – undo
3986 3986
  *     Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
3987 3987
  */
3988 3988
 function filtre_puce_statut_dist($statut, $objet, $id_objet = 0, $id_parent = 0) {
3989
-	static $puce_statut = null;
3990
-	if (!$puce_statut) {
3991
-		$puce_statut = charger_fonction('puce_statut', 'inc');
3992
-	}
3989
+    static $puce_statut = null;
3990
+    if (!$puce_statut) {
3991
+        $puce_statut = charger_fonction('puce_statut', 'inc');
3992
+    }
3993 3993
 
3994
-	return $puce_statut(
3995
-		$id_objet,
3996
-		$statut,
3997
-		$id_parent,
3998
-		$objet,
3999
-		false,
4000
-		objet_info($objet, 'editable') ? _ACTIVER_PUCE_RAPIDE : false
4001
-	);
3994
+    return $puce_statut(
3995
+        $id_objet,
3996
+        $statut,
3997
+        $id_parent,
3998
+        $objet,
3999
+        false,
4000
+        objet_info($objet, 'editable') ? _ACTIVER_PUCE_RAPIDE : false
4001
+    );
4002 4002
 }
4003 4003
 
4004 4004
 
@@ -4025,98 +4025,98 @@  discard block
 block discarded – undo
4025 4025
  *   hash du contexte
4026 4026
  */
4027 4027
 function encoder_contexte_ajax($c, $form = '', $emboite = null, $ajaxid = '') {
4028
-	$env = null;
4029
-	if (
4030
-		is_string($c)
4031
-		and @unserialize($c) !== false
4032
-	) {
4033
-		$c = unserialize($c);
4034
-	}
4035
-
4036
-	// supprimer les parametres debut_x
4037
-	// pour que la pagination ajax ne soit pas plantee
4038
-	// si on charge la page &debut_x=1 : car alors en cliquant sur l'item 0,
4039
-	// le debut_x=0 n'existe pas, et on resterait sur 1
4040
-	if (is_array($c)) {
4041
-		foreach ($c as $k => $v) {
4042
-			if (strpos($k, 'debut_') === 0) {
4043
-				unset($c[$k]);
4044
-			}
4045
-		}
4046
-	}
4047
-
4048
-	if (!function_exists('calculer_cle_action')) {
4049
-		include_spip('inc/securiser_action');
4050
-	}
4051
-
4052
-	$c = serialize($c);
4053
-	$cle = calculer_cle_action($form . $c);
4054
-	$c = "$cle:$c";
4055
-
4056
-	// on ne stocke pas les contextes dans des fichiers en cache
4057
-	// par defaut, sauf si cette configuration a été forcée
4058
-	// OU que la longueur de l’argument géneré est plus long
4059
-	// que ce qui est toléré.
4060
-	$cache_contextes_ajax = (defined('_CACHE_CONTEXTES_AJAX') and _CACHE_CONTEXTES_AJAX);
4061
-	if (!$cache_contextes_ajax) {
4062
-		$env = $c;
4063
-		if (function_exists('gzdeflate') && function_exists('gzinflate')) {
4064
-			$env = gzdeflate($env);
4065
-		}
4066
-		$env = _xor($env);
4067
-		$env = base64_encode($env);
4068
-		$len = strlen($env);
4069
-		// Si l’url est trop longue pour le navigateur
4070
-		$max_len = _CACHE_CONTEXTES_AJAX_SUR_LONGUEUR;
4071
-		if ($len > $max_len) {
4072
-			$cache_contextes_ajax = true;
4073
-			spip_log(
4074
-				'Contextes AJAX forces en fichiers !'
4075
-				. ' Cela arrive lorsque la valeur du contexte'
4076
-				. " depasse la longueur maximale autorisee ($max_len). Ici : $len.",
4077
-				_LOG_AVERTISSEMENT
4078
-			);
4079
-		}
4080
-		// Sinon si Suhosin est actif et a une la valeur maximale des variables en GET...
4081
-		elseif (
4082
-			$max_len = @ini_get('suhosin.get.max_value_length')
4083
-			and $max_len < $len
4084
-		) {
4085
-			$cache_contextes_ajax = true;
4086
-			spip_log('Contextes AJAX forces en fichiers !'
4087
-				. ' Cela arrive lorsque la valeur du contexte'
4088
-				. ' depasse la longueur maximale autorisee par Suhosin'
4089
-				. " ($max_len) dans 'suhosin.get.max_value_length'. Ici : $len."
4090
-				. ' Vous devriez modifier les parametres de Suhosin'
4091
-				. ' pour accepter au moins 1024 caracteres.', _LOG_AVERTISSEMENT);
4092
-		}
4093
-	}
4094
-
4095
-	if ($cache_contextes_ajax) {
4096
-		$dir = sous_repertoire(_DIR_CACHE, 'contextes');
4097
-		// stocker les contextes sur disque et ne passer qu'un hash dans l'url
4098
-		$md5 = md5($c);
4099
-		ecrire_fichier("$dir/c$md5", $c);
4100
-		$env = $md5;
4101
-	}
4102
-
4103
-	if ($emboite === null) {
4104
-		return $env;
4105
-	}
4106
-	if (!trim($emboite)) {
4107
-		return '';
4108
-	}
4109
-	// toujours encoder l'url source dans le bloc ajax
4110
-	$r = self();
4111
-	$r = ' data-origin="' . $r . '"';
4112
-	$class = 'ajaxbloc';
4113
-	if ($ajaxid and is_string($ajaxid)) {
4114
-		// ajaxid est normalement conforme a un nom de classe css
4115
-		// on ne verifie pas la conformite, mais on passe entites_html par dessus par precaution
4116
-		$class .= ' ajax-id-' . entites_html($ajaxid);
4117
-	}
4118
-
4119
-	return "<div class='$class' " . "data-ajax-env='$env'$r>\n$emboite</div><!--ajaxbloc-->\n";
4028
+    $env = null;
4029
+    if (
4030
+        is_string($c)
4031
+        and @unserialize($c) !== false
4032
+    ) {
4033
+        $c = unserialize($c);
4034
+    }
4035
+
4036
+    // supprimer les parametres debut_x
4037
+    // pour que la pagination ajax ne soit pas plantee
4038
+    // si on charge la page &debut_x=1 : car alors en cliquant sur l'item 0,
4039
+    // le debut_x=0 n'existe pas, et on resterait sur 1
4040
+    if (is_array($c)) {
4041
+        foreach ($c as $k => $v) {
4042
+            if (strpos($k, 'debut_') === 0) {
4043
+                unset($c[$k]);
4044
+            }
4045
+        }
4046
+    }
4047
+
4048
+    if (!function_exists('calculer_cle_action')) {
4049
+        include_spip('inc/securiser_action');
4050
+    }
4051
+
4052
+    $c = serialize($c);
4053
+    $cle = calculer_cle_action($form . $c);
4054
+    $c = "$cle:$c";
4055
+
4056
+    // on ne stocke pas les contextes dans des fichiers en cache
4057
+    // par defaut, sauf si cette configuration a été forcée
4058
+    // OU que la longueur de l’argument géneré est plus long
4059
+    // que ce qui est toléré.
4060
+    $cache_contextes_ajax = (defined('_CACHE_CONTEXTES_AJAX') and _CACHE_CONTEXTES_AJAX);
4061
+    if (!$cache_contextes_ajax) {
4062
+        $env = $c;
4063
+        if (function_exists('gzdeflate') && function_exists('gzinflate')) {
4064
+            $env = gzdeflate($env);
4065
+        }
4066
+        $env = _xor($env);
4067
+        $env = base64_encode($env);
4068
+        $len = strlen($env);
4069
+        // Si l’url est trop longue pour le navigateur
4070
+        $max_len = _CACHE_CONTEXTES_AJAX_SUR_LONGUEUR;
4071
+        if ($len > $max_len) {
4072
+            $cache_contextes_ajax = true;
4073
+            spip_log(
4074
+                'Contextes AJAX forces en fichiers !'
4075
+                . ' Cela arrive lorsque la valeur du contexte'
4076
+                . " depasse la longueur maximale autorisee ($max_len). Ici : $len.",
4077
+                _LOG_AVERTISSEMENT
4078
+            );
4079
+        }
4080
+        // Sinon si Suhosin est actif et a une la valeur maximale des variables en GET...
4081
+        elseif (
4082
+            $max_len = @ini_get('suhosin.get.max_value_length')
4083
+            and $max_len < $len
4084
+        ) {
4085
+            $cache_contextes_ajax = true;
4086
+            spip_log('Contextes AJAX forces en fichiers !'
4087
+                . ' Cela arrive lorsque la valeur du contexte'
4088
+                . ' depasse la longueur maximale autorisee par Suhosin'
4089
+                . " ($max_len) dans 'suhosin.get.max_value_length'. Ici : $len."
4090
+                . ' Vous devriez modifier les parametres de Suhosin'
4091
+                . ' pour accepter au moins 1024 caracteres.', _LOG_AVERTISSEMENT);
4092
+        }
4093
+    }
4094
+
4095
+    if ($cache_contextes_ajax) {
4096
+        $dir = sous_repertoire(_DIR_CACHE, 'contextes');
4097
+        // stocker les contextes sur disque et ne passer qu'un hash dans l'url
4098
+        $md5 = md5($c);
4099
+        ecrire_fichier("$dir/c$md5", $c);
4100
+        $env = $md5;
4101
+    }
4102
+
4103
+    if ($emboite === null) {
4104
+        return $env;
4105
+    }
4106
+    if (!trim($emboite)) {
4107
+        return '';
4108
+    }
4109
+    // toujours encoder l'url source dans le bloc ajax
4110
+    $r = self();
4111
+    $r = ' data-origin="' . $r . '"';
4112
+    $class = 'ajaxbloc';
4113
+    if ($ajaxid and is_string($ajaxid)) {
4114
+        // ajaxid est normalement conforme a un nom de classe css
4115
+        // on ne verifie pas la conformite, mais on passe entites_html par dessus par precaution
4116
+        $class .= ' ajax-id-' . entites_html($ajaxid);
4117
+    }
4118
+
4119
+    return "<div class='$class' " . "data-ajax-env='$env'$r>\n$emboite</div><!--ajaxbloc-->\n";
4120 4120
 }
4121 4121
 
4122 4122
 /**
@@ -4136,37 +4136,37 @@  discard block
 block discarded – undo
4136 4136
  *   - false : erreur de décodage
4137 4137
  */
4138 4138
 function decoder_contexte_ajax($c, $form = '') {
4139
-	if (!function_exists('calculer_cle_action')) {
4140
-		include_spip('inc/securiser_action');
4141
-	}
4142
-	if (
4143
-		((defined('_CACHE_CONTEXTES_AJAX') and _CACHE_CONTEXTES_AJAX) or strlen($c) == 32)
4144
-		and $dir = sous_repertoire(_DIR_CACHE, 'contextes')
4145
-		and lire_fichier("$dir/c$c", $contexte)
4146
-	) {
4147
-		$c = $contexte;
4148
-	} else {
4149
-		$c = @base64_decode($c);
4150
-		$c = _xor($c);
4151
-		if (function_exists('gzdeflate') && function_exists('gzinflate')) {
4152
-			$c = @gzinflate($c);
4153
-		}
4154
-	}
4155
-
4156
-	// extraire la signature en debut de contexte
4157
-	// et la verifier avant de deserializer
4158
-	// format : signature:donneesserializees
4159
-	if ($p = strpos($c, ':')) {
4160
-		$cle = substr($c, 0, $p);
4161
-		$c = substr($c, $p + 1);
4162
-
4163
-		if ($cle == calculer_cle_action($form . $c)) {
4164
-			$env = @unserialize($c);
4165
-			return $env;
4166
-		}
4167
-	}
4168
-
4169
-	return false;
4139
+    if (!function_exists('calculer_cle_action')) {
4140
+        include_spip('inc/securiser_action');
4141
+    }
4142
+    if (
4143
+        ((defined('_CACHE_CONTEXTES_AJAX') and _CACHE_CONTEXTES_AJAX) or strlen($c) == 32)
4144
+        and $dir = sous_repertoire(_DIR_CACHE, 'contextes')
4145
+        and lire_fichier("$dir/c$c", $contexte)
4146
+    ) {
4147
+        $c = $contexte;
4148
+    } else {
4149
+        $c = @base64_decode($c);
4150
+        $c = _xor($c);
4151
+        if (function_exists('gzdeflate') && function_exists('gzinflate')) {
4152
+            $c = @gzinflate($c);
4153
+        }
4154
+    }
4155
+
4156
+    // extraire la signature en debut de contexte
4157
+    // et la verifier avant de deserializer
4158
+    // format : signature:donneesserializees
4159
+    if ($p = strpos($c, ':')) {
4160
+        $cle = substr($c, 0, $p);
4161
+        $c = substr($c, $p + 1);
4162
+
4163
+        if ($cle == calculer_cle_action($form . $c)) {
4164
+            $env = @unserialize($c);
4165
+            return $env;
4166
+        }
4167
+    }
4168
+
4169
+    return false;
4170 4170
 }
4171 4171
 
4172 4172
 
@@ -4184,20 +4184,20 @@  discard block
 block discarded – undo
4184 4184
  *    Message décrypté ou encrypté
4185 4185
  **/
4186 4186
 function _xor($message, $key = null) {
4187
-	if (is_null($key)) {
4188
-		if (!function_exists('calculer_cle_action')) {
4189
-			include_spip('inc/securiser_action');
4190
-		}
4191
-		$key = pack('H*', calculer_cle_action('_xor'));
4192
-	}
4187
+    if (is_null($key)) {
4188
+        if (!function_exists('calculer_cle_action')) {
4189
+            include_spip('inc/securiser_action');
4190
+        }
4191
+        $key = pack('H*', calculer_cle_action('_xor'));
4192
+    }
4193 4193
 
4194
-	$keylen = strlen($key);
4195
-	$messagelen = strlen($message);
4196
-	for ($i = 0; $i < $messagelen; $i++) {
4197
-		$message[$i] = ~($message[$i] ^ $key[$i % $keylen]);
4198
-	}
4194
+    $keylen = strlen($key);
4195
+    $messagelen = strlen($message);
4196
+    for ($i = 0; $i < $messagelen; $i++) {
4197
+        $message[$i] = ~($message[$i] ^ $key[$i % $keylen]);
4198
+    }
4199 4199
 
4200
-	return $message;
4200
+    return $message;
4201 4201
 }
4202 4202
 
4203 4203
 /**
@@ -4211,7 +4211,7 @@  discard block
 block discarded – undo
4211 4211
  * @return string
4212 4212
  */
4213 4213
 function url_reponse_forum($texte) {
4214
- return $texte;
4214
+    return $texte;
4215 4215
 }
4216 4216
 
4217 4217
 /**
@@ -4225,7 +4225,7 @@  discard block
 block discarded – undo
4225 4225
  * @return string
4226 4226
  */
4227 4227
 function url_rss_forum($texte) {
4228
- return $texte;
4228
+    return $texte;
4229 4229
 }
4230 4230
 
4231 4231
 
@@ -4264,37 +4264,37 @@  discard block
 block discarded – undo
4264 4264
  *   Code HTML
4265 4265
  */
4266 4266
 function lien_ou_expose($url, $libelle = null, $on = false, $class = '', $title = '', $rel = '', $evt = '') {
4267
-	if ($on) {
4268
-		$bal = 'strong';
4269
-		$class = '';
4270
-		$att = '';
4271
-		// si $on passe la balise et optionnelement une ou ++classe
4272
-		// a.active span.selected.active etc....
4273
-		if (is_string($on) and (strncmp($on, 'a', 1) == 0 or strncmp($on, 'span', 4) == 0 or strncmp($on, 'strong', 6) == 0)) {
4274
-			$on = explode('.', $on);
4275
-			// on verifie que c'est exactement une des 3 balises a, span ou strong
4276
-			if (in_array(reset($on), ['a', 'span', 'strong'])) {
4277
-				$bal = array_shift($on);
4278
-				$class = implode(' ', $on);
4279
-				if ($bal == 'a') {
4280
-					$att = 'href="#" ';
4281
-				}
4282
-			}
4283
-		}
4284
-		$att .= 'class="' . ($class ? attribut_html($class) . ' ' : '') . (defined('_LIEN_OU_EXPOSE_CLASS_ON') ? _LIEN_OU_EXPOSE_CLASS_ON : 'on') . '"';
4285
-	} else {
4286
-		$bal = 'a';
4287
-		$att = "href='$url'"
4288
-			. ($title ? " title='" . attribut_html($title) . "'" : '')
4289
-			. ($class ? " class='" . attribut_html($class) . "'" : '')
4290
-			. ($rel ? " rel='" . attribut_html($rel) . "'" : '')
4291
-			. $evt;
4292
-	}
4293
-	if ($libelle === null) {
4294
-		$libelle = $url;
4295
-	}
4296
-
4297
-	return "<$bal $att>$libelle</$bal>";
4267
+    if ($on) {
4268
+        $bal = 'strong';
4269
+        $class = '';
4270
+        $att = '';
4271
+        // si $on passe la balise et optionnelement une ou ++classe
4272
+        // a.active span.selected.active etc....
4273
+        if (is_string($on) and (strncmp($on, 'a', 1) == 0 or strncmp($on, 'span', 4) == 0 or strncmp($on, 'strong', 6) == 0)) {
4274
+            $on = explode('.', $on);
4275
+            // on verifie que c'est exactement une des 3 balises a, span ou strong
4276
+            if (in_array(reset($on), ['a', 'span', 'strong'])) {
4277
+                $bal = array_shift($on);
4278
+                $class = implode(' ', $on);
4279
+                if ($bal == 'a') {
4280
+                    $att = 'href="#" ';
4281
+                }
4282
+            }
4283
+        }
4284
+        $att .= 'class="' . ($class ? attribut_html($class) . ' ' : '') . (defined('_LIEN_OU_EXPOSE_CLASS_ON') ? _LIEN_OU_EXPOSE_CLASS_ON : 'on') . '"';
4285
+    } else {
4286
+        $bal = 'a';
4287
+        $att = "href='$url'"
4288
+            . ($title ? " title='" . attribut_html($title) . "'" : '')
4289
+            . ($class ? " class='" . attribut_html($class) . "'" : '')
4290
+            . ($rel ? " rel='" . attribut_html($rel) . "'" : '')
4291
+            . $evt;
4292
+    }
4293
+    if ($libelle === null) {
4294
+        $libelle = $url;
4295
+    }
4296
+
4297
+    return "<$bal $att>$libelle</$bal>";
4298 4298
 }
4299 4299
 
4300 4300
 
@@ -4311,39 +4311,39 @@  discard block
 block discarded – undo
4311 4311
  * @return string : la chaine de langue finale en utilisant la fonction _T()
4312 4312
  */
4313 4313
 function singulier_ou_pluriel($nb, $chaine_un, $chaine_plusieurs, $var = 'nb', $vars = []) {
4314
-	static $local_singulier_ou_pluriel = [];
4315
-
4316
-	// si nb=0 ou pas de $vars valide on retourne une chaine vide, a traiter par un |sinon
4317
-	if (!is_numeric($nb) or $nb == 0) {
4318
-		return '';
4319
-	}
4320
-	if (!is_array($vars)) {
4321
-		return '';
4322
-	}
4323
-
4324
-	$langue = $GLOBALS['spip_lang'];
4325
-	if (!isset($local_singulier_ou_pluriel[$langue])) {
4326
-		$local_singulier_ou_pluriel[$langue] = false;
4327
-		if (
4328
-			$f = charger_fonction("singulier_ou_pluriel_${langue}", 'inc', true)
4329
-			or $f = charger_fonction('singulier_ou_pluriel', 'inc', true)
4330
-		) {
4331
-			$local_singulier_ou_pluriel[$langue] = $f;
4332
-		}
4333
-	}
4334
-
4335
-	// si on a une surcharge on l'utilise
4336
-	if ($local_singulier_ou_pluriel[$langue]) {
4337
-		return ($local_singulier_ou_pluriel[$langue])($nb, $chaine_un, $chaine_plusieurs, $var, $vars);
4338
-	}
4339
-
4340
-	// sinon traitement par defaut
4341
-	$vars[$var] = $nb;
4342
-	if ($nb >= 2) {
4343
-		return _T($chaine_plusieurs, $vars);
4344
-	} else {
4345
-		return _T($chaine_un, $vars);
4346
-	}
4314
+    static $local_singulier_ou_pluriel = [];
4315
+
4316
+    // si nb=0 ou pas de $vars valide on retourne une chaine vide, a traiter par un |sinon
4317
+    if (!is_numeric($nb) or $nb == 0) {
4318
+        return '';
4319
+    }
4320
+    if (!is_array($vars)) {
4321
+        return '';
4322
+    }
4323
+
4324
+    $langue = $GLOBALS['spip_lang'];
4325
+    if (!isset($local_singulier_ou_pluriel[$langue])) {
4326
+        $local_singulier_ou_pluriel[$langue] = false;
4327
+        if (
4328
+            $f = charger_fonction("singulier_ou_pluriel_${langue}", 'inc', true)
4329
+            or $f = charger_fonction('singulier_ou_pluriel', 'inc', true)
4330
+        ) {
4331
+            $local_singulier_ou_pluriel[$langue] = $f;
4332
+        }
4333
+    }
4334
+
4335
+    // si on a une surcharge on l'utilise
4336
+    if ($local_singulier_ou_pluriel[$langue]) {
4337
+        return ($local_singulier_ou_pluriel[$langue])($nb, $chaine_un, $chaine_plusieurs, $var, $vars);
4338
+    }
4339
+
4340
+    // sinon traitement par defaut
4341
+    $vars[$var] = $nb;
4342
+    if ($nb >= 2) {
4343
+        return _T($chaine_plusieurs, $vars);
4344
+    } else {
4345
+        return _T($chaine_un, $vars);
4346
+    }
4347 4347
 }
4348 4348
 
4349 4349
 
@@ -4371,73 +4371,73 @@  discard block
 block discarded – undo
4371 4371
  */
4372 4372
 function prepare_icone_base($type, $lien, $texte, $fond, $fonction = '', $class = '', $javascript = '') {
4373 4373
 
4374
-	$class_lien = $class_bouton = $class;
4375
-
4376
-	// Normaliser la fonction et compléter la classe en fonction
4377
-	if (in_array($fonction, ['del', 'supprimer.gif'])) {
4378
-		$class_lien .= ' danger';
4379
-		$class_bouton .= ' btn_danger';
4380
-	} elseif ($fonction == 'rien.gif') {
4381
-		$fonction = '';
4382
-	} elseif ($fonction == 'delsafe') {
4383
-		$fonction = 'del';
4384
-	}
4385
-
4386
-	$fond_origine = $fond;
4387
-	// Remappage des icone : article-24.png+new => article-new-24.png
4388
-	if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
4389
-		[$fond, $fonction] = $icone_renommer($fond, $fonction);
4390
-	}
4391
-
4392
-	// Ajouter le type d'objet dans la classe
4393
-	$objet_type = substr(basename($fond), 0, -4);
4394
-	$class_lien .= " $objet_type";
4395
-	$class_bouton .= " $objet_type";
4396
-
4397
-	// Texte
4398
-	$alt = attribut_html($texte);
4399
-	$title = " title=\"$alt\""; // est-ce pertinent de doubler le alt par un title ?
4400
-
4401
-	// Liens : préparer les classes ajax
4402
-	$ajax = '';
4403
-	if ($type === 'lien') {
4404
-		if (strpos($class_lien, 'ajax') !== false) {
4405
-			$ajax = 'ajax';
4406
-			if (strpos($class_lien, 'preload') !== false) {
4407
-				$ajax .= ' preload';
4408
-			}
4409
-			if (strpos($class_lien, 'nocache') !== false) {
4410
-				$ajax .= ' nocache';
4411
-			}
4412
-			$ajax = " class='$ajax'";
4413
-		}
4414
-	}
4415
-
4416
-	// Repérer la taille et l'ajouter dans la classe
4417
-	$size = 24;
4418
-	if (
4419
-		preg_match('/-([0-9]{1,3})[.](gif|png|svg)$/i', $fond, $match)
4420
-		or preg_match('/-([0-9]{1,3})([.](gif|png|svg))?$/i', $fond_origine, $match)
4421
-	) {
4422
-		$size = $match[1];
4423
-	}
4424
-	$class_lien .= " s$size";
4425
-	$class_bouton .= " s$size";
4426
-
4427
-	// Icône
4428
-	$icone = http_img_pack($fond, $alt, "width='$size' height='$size'");
4429
-	$icone = '<span class="icone-image' . ($fonction ? " icone-fonction icone-fonction-$fonction" : '') . "\">$icone</span>";
4430
-
4431
-	// Markup final
4432
-	if ($type == 'lien') {
4433
-		return "<span class='icone $class_lien'>"
4434
-		. "<a href='$lien'$title$ajax$javascript>"
4435
-		. $icone
4436
-		. "<b>$texte</b>"
4437
-		. "</a></span>\n";
4438
-	} else {
4439
-		return bouton_action("$icone $texte", $lien, $class_bouton, $javascript, $alt);
4440
-	}
4374
+    $class_lien = $class_bouton = $class;
4375
+
4376
+    // Normaliser la fonction et compléter la classe en fonction
4377
+    if (in_array($fonction, ['del', 'supprimer.gif'])) {
4378
+        $class_lien .= ' danger';
4379
+        $class_bouton .= ' btn_danger';
4380
+    } elseif ($fonction == 'rien.gif') {
4381
+        $fonction = '';
4382
+    } elseif ($fonction == 'delsafe') {
4383
+        $fonction = 'del';
4384
+    }
4385
+
4386
+    $fond_origine = $fond;
4387
+    // Remappage des icone : article-24.png+new => article-new-24.png
4388
+    if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
4389
+        [$fond, $fonction] = $icone_renommer($fond, $fonction);
4390
+    }
4391
+
4392
+    // Ajouter le type d'objet dans la classe
4393
+    $objet_type = substr(basename($fond), 0, -4);
4394
+    $class_lien .= " $objet_type";
4395
+    $class_bouton .= " $objet_type";
4396
+
4397
+    // Texte
4398
+    $alt = attribut_html($texte);
4399
+    $title = " title=\"$alt\""; // est-ce pertinent de doubler le alt par un title ?
4400
+
4401
+    // Liens : préparer les classes ajax
4402
+    $ajax = '';
4403
+    if ($type === 'lien') {
4404
+        if (strpos($class_lien, 'ajax') !== false) {
4405
+            $ajax = 'ajax';
4406
+            if (strpos($class_lien, 'preload') !== false) {
4407
+                $ajax .= ' preload';
4408
+            }
4409
+            if (strpos($class_lien, 'nocache') !== false) {
4410
+                $ajax .= ' nocache';
4411
+            }
4412
+            $ajax = " class='$ajax'";
4413
+        }
4414
+    }
4415
+
4416
+    // Repérer la taille et l'ajouter dans la classe
4417
+    $size = 24;
4418
+    if (
4419
+        preg_match('/-([0-9]{1,3})[.](gif|png|svg)$/i', $fond, $match)
4420
+        or preg_match('/-([0-9]{1,3})([.](gif|png|svg))?$/i', $fond_origine, $match)
4421
+    ) {
4422
+        $size = $match[1];
4423
+    }
4424
+    $class_lien .= " s$size";
4425
+    $class_bouton .= " s$size";
4426
+
4427
+    // Icône
4428
+    $icone = http_img_pack($fond, $alt, "width='$size' height='$size'");
4429
+    $icone = '<span class="icone-image' . ($fonction ? " icone-fonction icone-fonction-$fonction" : '') . "\">$icone</span>";
4430
+
4431
+    // Markup final
4432
+    if ($type == 'lien') {
4433
+        return "<span class='icone $class_lien'>"
4434
+        . "<a href='$lien'$title$ajax$javascript>"
4435
+        . $icone
4436
+        . "<b>$texte</b>"
4437
+        . "</a></span>\n";
4438
+    } else {
4439
+        return bouton_action("$icone $texte", $lien, $class_bouton, $javascript, $alt);
4440
+    }
4441 4441
 }
4442 4442
 
4443 4443
 /**
@@ -4461,7 +4461,7 @@  discard block
 block discarded – undo
4461 4461
  *     Code HTML du lien
4462 4462
  **/
4463 4463
 function icone_base($lien, $texte, $fond, $fonction = '', $class = '', $javascript = '') {
4464
-	return prepare_icone_base('lien', $lien, $texte, $fond, $fonction, $class, $javascript);
4464
+    return prepare_icone_base('lien', $lien, $texte, $fond, $fonction, $class, $javascript);
4465 4465
 }
4466 4466
 
4467 4467
 /**
@@ -4496,7 +4496,7 @@  discard block
 block discarded – undo
4496 4496
  *     Code HTML du lien
4497 4497
  **/
4498 4498
 function filtre_icone_verticale_dist($lien, $texte, $fond, $fonction = '', $class = '', $javascript = '') {
4499
-	return icone_base($lien, $texte, $fond, $fonction, "verticale $class", $javascript);
4499
+    return icone_base($lien, $texte, $fond, $fonction, "verticale $class", $javascript);
4500 4500
 }
4501 4501
 
4502 4502
 /**
@@ -4541,7 +4541,7 @@  discard block
 block discarded – undo
4541 4541
  *     Code HTML du lien
4542 4542
  **/
4543 4543
 function filtre_icone_horizontale_dist($lien, $texte, $fond, $fonction = '', $class = '', $javascript = '') {
4544
-	return icone_base($lien, $texte, $fond, $fonction, "horizontale $class", $javascript);
4544
+    return icone_base($lien, $texte, $fond, $fonction, "horizontale $class", $javascript);
4545 4545
 }
4546 4546
 
4547 4547
 /**
@@ -4572,7 +4572,7 @@  discard block
 block discarded – undo
4572 4572
  *     Code HTML du lien
4573 4573
  **/
4574 4574
 function filtre_bouton_action_horizontal_dist($lien, $texte, $fond, $fonction = '', $class = '', $confirm = '') {
4575
-	return prepare_icone_base('bouton', $lien, $texte, $fond, $fonction, $class, $confirm);
4575
+    return prepare_icone_base('bouton', $lien, $texte, $fond, $fonction, $class, $confirm);
4576 4576
 }
4577 4577
 
4578 4578
 /**
@@ -4603,7 +4603,7 @@  discard block
 block discarded – undo
4603 4603
  *     Code HTML du lien
4604 4604
  */
4605 4605
 function filtre_icone_dist($lien, $texte, $fond, $align = '', $fonction = '', $class = '', $javascript = '') {
4606
-	return icone_base($lien, $texte, $fond, $fonction, "verticale $align $class", $javascript);
4606
+    return icone_base($lien, $texte, $fond, $fonction, "verticale $align $class", $javascript);
4607 4607
 }
4608 4608
 
4609 4609
 
@@ -4625,7 +4625,7 @@  discard block
 block discarded – undo
4625 4625
  * @return array Liste des éléments
4626 4626
  */
4627 4627
 function filtre_explode_dist($a, $b) {
4628
-	return explode($b, (string) $a);
4628
+    return explode($b, (string) $a);
4629 4629
 }
4630 4630
 
4631 4631
 /**
@@ -4646,7 +4646,7 @@  discard block
 block discarded – undo
4646 4646
  * @return string Texte
4647 4647
  */
4648 4648
 function filtre_implode_dist($a, $b) {
4649
-	return is_array($a) ? implode($b, $a) : $a;
4649
+    return is_array($a) ? implode($b, $a) : $a;
4650 4650
 }
4651 4651
 
4652 4652
 /**
@@ -4655,22 +4655,22 @@  discard block
 block discarded – undo
4655 4655
  * @return string Code CSS
4656 4656
  */
4657 4657
 function bando_images_background() {
4658
-	include_spip('inc/bandeau');
4659
-	// recuperer tous les boutons et leurs images
4660
-	$boutons = definir_barre_boutons(definir_barre_contexte(), true, false);
4658
+    include_spip('inc/bandeau');
4659
+    // recuperer tous les boutons et leurs images
4660
+    $boutons = definir_barre_boutons(definir_barre_contexte(), true, false);
4661 4661
 
4662
-	$res = '';
4663
-	foreach ($boutons as $page => $detail) {
4664
-		$selecteur = (in_array($page, ['outils_rapides', 'outils_collaboratifs']) ? '' : '.navigation_avec_icones ');
4665
-		foreach ($detail->sousmenu as $souspage => $sousdetail) {
4666
-			if ($sousdetail->icone and strlen(trim($sousdetail->icone))) {
4667
-				$img = http_img_variante_svg_si_possible($sousdetail->icone);
4668
-				$res .= "\n$selecteur.bando2_$souspage {background-image:url($img);}";
4669
-			}
4670
-		}
4671
-	}
4662
+    $res = '';
4663
+    foreach ($boutons as $page => $detail) {
4664
+        $selecteur = (in_array($page, ['outils_rapides', 'outils_collaboratifs']) ? '' : '.navigation_avec_icones ');
4665
+        foreach ($detail->sousmenu as $souspage => $sousdetail) {
4666
+            if ($sousdetail->icone and strlen(trim($sousdetail->icone))) {
4667
+                $img = http_img_variante_svg_si_possible($sousdetail->icone);
4668
+                $res .= "\n$selecteur.bando2_$souspage {background-image:url($img);}";
4669
+            }
4670
+        }
4671
+    }
4672 4672
 
4673
-	return $res;
4673
+    return $res;
4674 4674
 }
4675 4675
 
4676 4676
 /**
@@ -4695,27 +4695,27 @@  discard block
 block discarded – undo
4695 4695
  */
4696 4696
 function bouton_action($libelle, $url, $class = '', $confirm = '', $title = '', $callback = '') {
4697 4697
 
4698
-	// Classes : dispatcher `ajax` sur le formulaire
4699
-	$class_form = '';
4700
-	if (strpos($class, 'ajax') !== false) {
4701
-		$class_form = 'ajax';
4702
-		$class = str_replace('ajax', '', $class);
4703
-	}
4704
-	$class_btn = 'submit ' . trim($class);
4698
+    // Classes : dispatcher `ajax` sur le formulaire
4699
+    $class_form = '';
4700
+    if (strpos($class, 'ajax') !== false) {
4701
+        $class_form = 'ajax';
4702
+        $class = str_replace('ajax', '', $class);
4703
+    }
4704
+    $class_btn = 'submit ' . trim($class);
4705 4705
 
4706
-	if ($confirm) {
4707
-		$confirm = 'confirm("' . attribut_html($confirm) . '")';
4708
-		if ($callback) {
4709
-			$callback = "$confirm?($callback):false";
4710
-		} else {
4711
-			$callback = $confirm;
4712
-		}
4713
-	}
4714
-	$onclick = $callback ? " onclick='return " . addcslashes($callback, "'") . "'" : '';
4715
-	$title = $title ? " title='$title'" : '';
4706
+    if ($confirm) {
4707
+        $confirm = 'confirm("' . attribut_html($confirm) . '")';
4708
+        if ($callback) {
4709
+            $callback = "$confirm?($callback):false";
4710
+        } else {
4711
+            $callback = $confirm;
4712
+        }
4713
+    }
4714
+    $onclick = $callback ? " onclick='return " . addcslashes($callback, "'") . "'" : '';
4715
+    $title = $title ? " title='$title'" : '';
4716 4716
 
4717
-	return "<form class='bouton_action_post $class_form' method='post' action='$url'><div>" . form_hidden($url)
4718
-	. "<button type='submit' class='$class_btn'$title$onclick>$libelle</button></div></form>";
4717
+    return "<form class='bouton_action_post $class_form' method='post' action='$url'><div>" . form_hidden($url)
4718
+    . "<button type='submit' class='$class_btn'$title$onclick>$libelle</button></div></form>";
4719 4719
 }
4720 4720
 
4721 4721
 /**
@@ -4738,101 +4738,101 @@  discard block
 block discarded – undo
4738 4738
  * @return string
4739 4739
  */
4740 4740
 function generer_objet_info($id_objet, string $type_objet, string $info, string $etoile = '', array $params = []): string {
4741
-	static $trouver_table = null;
4742
-	static $objets;
4743
-
4744
-	// On verifie qu'on a tout ce qu'il faut
4745
-	$id_objet = intval($id_objet);
4746
-	if (!($id_objet and $type_objet and $info)) {
4747
-		return '';
4748
-	}
4749
-
4750
-	// si on a deja note que l'objet n'existe pas, ne pas aller plus loin
4751
-	if (isset($objets[$type_objet]) and $objets[$type_objet] === false) {
4752
-		return '';
4753
-	}
4754
-
4755
-	// Si on demande l'url, on retourne direct la fonction
4756
-	if ($info == 'url') {
4757
-		return generer_objet_url($id_objet, $type_objet, ...$params);
4758
-	}
4759
-
4760
-	// Sinon on va tout chercher dans la table et on garde en memoire
4761
-	$demande_titre = ($info === 'titre');
4762
-	$demande_introduction = ($info === 'introduction');
4763
-
4764
-	// On ne fait la requete que si on a pas deja l'objet ou si on demande le titre mais qu'on ne l'a pas encore
4765
-	if (
4766
-		!isset($objets[$type_objet][$id_objet])
4767
-		or
4768
-		($demande_titre and !isset($objets[$type_objet][$id_objet]['titre']))
4769
-	) {
4770
-		if (!$trouver_table) {
4771
-			$trouver_table = charger_fonction('trouver_table', 'base');
4772
-		}
4773
-		$desc = $trouver_table(table_objet_sql($type_objet));
4774
-		if (!$desc) {
4775
-			return $objets[$type_objet] = false;
4776
-		}
4777
-
4778
-		// Si on demande le titre, on le gere en interne
4779
-		$champ_titre = '';
4780
-		if ($demande_titre) {
4781
-			// si pas de titre declare mais champ titre, il sera peuple par le select *
4782
-			$champ_titre = (!empty($desc['titre'])) ? ', ' . $desc['titre'] : '';
4783
-		}
4784
-		include_spip('base/abstract_sql');
4785
-		include_spip('base/connect_sql');
4786
-		$objets[$type_objet][$id_objet] = sql_fetsel(
4787
-			'*' . $champ_titre,
4788
-			$desc['table_sql'],
4789
-			id_table_objet($type_objet) . ' = ' . intval($id_objet)
4790
-		);
4791
-
4792
-		// Toujours noter la longueur d'introduction, même si pas demandé cette fois-ci
4793
-		$objets[$type_objet]['introduction_longueur'] = $desc['introduction_longueur'] ?? null;
4794
-	}
4795
-
4796
-	// Pour les fonction generer_xxx, si on demande l'introduction,
4797
-	// ajouter la longueur au début des params supplémentaires
4798
-	if ($demande_introduction) {
4799
-		$introduction_longueur = $objets[$type_objet]['introduction_longueur'];
4800
-		array_unshift($params, $introduction_longueur);
4801
-	}
4802
-
4803
-	// Si la fonction generer_TYPE_TRUC existe, on l'utilise pour formater $info_generee
4804
-	if (
4805
-		$generer = charger_fonction("generer_${type_objet}_${info}", '', true)
4806
-		// @deprecated 4.1 generer_TRUC_TYPE
4807
-		or $generer = charger_fonction("generer_${info}_${type_objet}", '', true)
4808
-	) {
4809
-		$info_generee = $generer($id_objet, $objets[$type_objet][$id_objet], ...$params);
4810
-	}
4811
-	// Si la fonction generer_objet_TRUC existe, on l'utilise pour formater $info_generee
4812
-	elseif (
4813
-		$generer = charger_fonction("generer_objet_${info}", '', true)
4814
-		// @deprecated 4.1 generer_TRUC_entite
4815
-		or $generer = charger_fonction("generer_${info}_entite", '', true)
4816
-	) {
4817
-		$info_generee = $generer($id_objet, $type_objet, $objets[$type_objet][$id_objet], ...$params);
4818
-	} // Sinon on prend directement le champ SQL tel quel
4819
-	else {
4820
-		$info_generee = ($objets[$type_objet][$id_objet][$info] ?? '');
4821
-	}
4822
-
4823
-	// On va ensuite appliquer les traitements automatiques si besoin
4824
-	if (!$etoile) {
4825
-		// FIXME: on fournit un ENV minimum avec id et type et connect=''
4826
-		// mais ce fonctionnement est a ameliorer !
4827
-		$info_generee = appliquer_traitement_champ(
4828
-			$info_generee,
4829
-			$info,
4830
-			table_objet($type_objet),
4831
-			['id_objet' => $id_objet, 'objet' => $type_objet, '']
4832
-		);
4833
-	}
4834
-
4835
-	return $info_generee;
4741
+    static $trouver_table = null;
4742
+    static $objets;
4743
+
4744
+    // On verifie qu'on a tout ce qu'il faut
4745
+    $id_objet = intval($id_objet);
4746
+    if (!($id_objet and $type_objet and $info)) {
4747
+        return '';
4748
+    }
4749
+
4750
+    // si on a deja note que l'objet n'existe pas, ne pas aller plus loin
4751
+    if (isset($objets[$type_objet]) and $objets[$type_objet] === false) {
4752
+        return '';
4753
+    }
4754
+
4755
+    // Si on demande l'url, on retourne direct la fonction
4756
+    if ($info == 'url') {
4757
+        return generer_objet_url($id_objet, $type_objet, ...$params);
4758
+    }
4759
+
4760
+    // Sinon on va tout chercher dans la table et on garde en memoire
4761
+    $demande_titre = ($info === 'titre');
4762
+    $demande_introduction = ($info === 'introduction');
4763
+
4764
+    // On ne fait la requete que si on a pas deja l'objet ou si on demande le titre mais qu'on ne l'a pas encore
4765
+    if (
4766
+        !isset($objets[$type_objet][$id_objet])
4767
+        or
4768
+        ($demande_titre and !isset($objets[$type_objet][$id_objet]['titre']))
4769
+    ) {
4770
+        if (!$trouver_table) {
4771
+            $trouver_table = charger_fonction('trouver_table', 'base');
4772
+        }
4773
+        $desc = $trouver_table(table_objet_sql($type_objet));
4774
+        if (!$desc) {
4775
+            return $objets[$type_objet] = false;
4776
+        }
4777
+
4778
+        // Si on demande le titre, on le gere en interne
4779
+        $champ_titre = '';
4780
+        if ($demande_titre) {
4781
+            // si pas de titre declare mais champ titre, il sera peuple par le select *
4782
+            $champ_titre = (!empty($desc['titre'])) ? ', ' . $desc['titre'] : '';
4783
+        }
4784
+        include_spip('base/abstract_sql');
4785
+        include_spip('base/connect_sql');
4786
+        $objets[$type_objet][$id_objet] = sql_fetsel(
4787
+            '*' . $champ_titre,
4788
+            $desc['table_sql'],
4789
+            id_table_objet($type_objet) . ' = ' . intval($id_objet)
4790
+        );
4791
+
4792
+        // Toujours noter la longueur d'introduction, même si pas demandé cette fois-ci
4793
+        $objets[$type_objet]['introduction_longueur'] = $desc['introduction_longueur'] ?? null;
4794
+    }
4795
+
4796
+    // Pour les fonction generer_xxx, si on demande l'introduction,
4797
+    // ajouter la longueur au début des params supplémentaires
4798
+    if ($demande_introduction) {
4799
+        $introduction_longueur = $objets[$type_objet]['introduction_longueur'];
4800
+        array_unshift($params, $introduction_longueur);
4801
+    }
4802
+
4803
+    // Si la fonction generer_TYPE_TRUC existe, on l'utilise pour formater $info_generee
4804
+    if (
4805
+        $generer = charger_fonction("generer_${type_objet}_${info}", '', true)
4806
+        // @deprecated 4.1 generer_TRUC_TYPE
4807
+        or $generer = charger_fonction("generer_${info}_${type_objet}", '', true)
4808
+    ) {
4809
+        $info_generee = $generer($id_objet, $objets[$type_objet][$id_objet], ...$params);
4810
+    }
4811
+    // Si la fonction generer_objet_TRUC existe, on l'utilise pour formater $info_generee
4812
+    elseif (
4813
+        $generer = charger_fonction("generer_objet_${info}", '', true)
4814
+        // @deprecated 4.1 generer_TRUC_entite
4815
+        or $generer = charger_fonction("generer_${info}_entite", '', true)
4816
+    ) {
4817
+        $info_generee = $generer($id_objet, $type_objet, $objets[$type_objet][$id_objet], ...$params);
4818
+    } // Sinon on prend directement le champ SQL tel quel
4819
+    else {
4820
+        $info_generee = ($objets[$type_objet][$id_objet][$info] ?? '');
4821
+    }
4822
+
4823
+    // On va ensuite appliquer les traitements automatiques si besoin
4824
+    if (!$etoile) {
4825
+        // FIXME: on fournit un ENV minimum avec id et type et connect=''
4826
+        // mais ce fonctionnement est a ameliorer !
4827
+        $info_generee = appliquer_traitement_champ(
4828
+            $info_generee,
4829
+            $info,
4830
+            table_objet($type_objet),
4831
+            ['id_objet' => $id_objet, 'objet' => $type_objet, '']
4832
+        );
4833
+    }
4834
+
4835
+    return $info_generee;
4836 4836
 }
4837 4837
 
4838 4838
 /**
@@ -4840,7 +4840,7 @@  discard block
 block discarded – undo
4840 4840
  * @see generer_objet_info
4841 4841
  */
4842 4842
 function generer_info_entite($id_objet, $type_objet, $info, $etoile = '', $params = []) {
4843
-	return generer_objet_info(intval($id_objet), $type_objet, $info, $etoile, $params);
4843
+    return generer_objet_info(intval($id_objet), $type_objet, $info, $etoile, $params);
4844 4844
 }
4845 4845
 
4846 4846
 /**
@@ -4873,36 +4873,36 @@  discard block
 block discarded – undo
4873 4873
  */
4874 4874
 function generer_objet_introduction(int $id_objet, string $type_objet, array $ligne_sql, ?int $introduction_longueur = null, $longueur_ou_suite = null, ?string $suite = null, string $connect = ''): string {
4875 4875
 
4876
-	$descriptif = $ligne_sql['descriptif'] ?? '';
4877
-	$texte = $ligne_sql['texte'] ?? '';
4878
-	// En absence de descriptif, on se rabat sur chapo + texte
4879
-	if (isset($ligne_sql['chapo'])) {
4880
-		$chapo = $ligne_sql['chapo'];
4881
-		$texte = strlen($descriptif) ?
4882
-			'' :
4883
-			"$chapo \n\n $texte";
4884
-	}
4876
+    $descriptif = $ligne_sql['descriptif'] ?? '';
4877
+    $texte = $ligne_sql['texte'] ?? '';
4878
+    // En absence de descriptif, on se rabat sur chapo + texte
4879
+    if (isset($ligne_sql['chapo'])) {
4880
+        $chapo = $ligne_sql['chapo'];
4881
+        $texte = strlen($descriptif) ?
4882
+            '' :
4883
+            "$chapo \n\n $texte";
4884
+    }
4885 4885
 
4886
-	// Longueur en paramètre, sinon celle renseignée dans la description de l'objet, sinon valeur en dur
4887
-	if (!intval($longueur_ou_suite)) {
4888
-		$longueur = intval($introduction_longueur ?: 600);
4889
-	} else {
4890
-		$longueur = intval($longueur_ou_suite);
4891
-	}
4886
+    // Longueur en paramètre, sinon celle renseignée dans la description de l'objet, sinon valeur en dur
4887
+    if (!intval($longueur_ou_suite)) {
4888
+        $longueur = intval($introduction_longueur ?: 600);
4889
+    } else {
4890
+        $longueur = intval($longueur_ou_suite);
4891
+    }
4892 4892
 
4893
-	// On peut optionnellement passer la suite en 1er paramètre de la balise
4894
-	// Ex : #INTRODUCTION{...}
4895
-	if (
4896
-		is_null($suite)
4897
-		and !intval($longueur_ou_suite)
4898
-	) {
4899
-		$suite = $longueur_ou_suite;
4900
-	}
4893
+    // On peut optionnellement passer la suite en 1er paramètre de la balise
4894
+    // Ex : #INTRODUCTION{...}
4895
+    if (
4896
+        is_null($suite)
4897
+        and !intval($longueur_ou_suite)
4898
+    ) {
4899
+        $suite = $longueur_ou_suite;
4900
+    }
4901 4901
 
4902
-	$f = chercher_filtre('introduction');
4903
-	$introduction = $f($descriptif, $texte, $longueur, $connect, $suite);
4902
+    $f = chercher_filtre('introduction');
4903
+    $introduction = $f($descriptif, $texte, $longueur, $connect, $suite);
4904 4904
 
4905
-	return $introduction;
4905
+    return $introduction;
4906 4906
 }
4907 4907
 
4908 4908
 /**
@@ -4910,7 +4910,7 @@  discard block
 block discarded – undo
4910 4910
  * @see generer_objet_introduction
4911 4911
  */
4912 4912
 function generer_introduction_entite($id_objet, $type_objet, $ligne_sql, $introduction_longueur = null, $longueur_ou_suite = null, $suite = null, string $connect = '') {
4913
-	return generer_objet_introduction(intval($id_objet), $type_objet, $ligne_sql, $introduction_longueur, $longueur_ou_suite, $suite, $connect);
4913
+    return generer_objet_introduction(intval($id_objet), $type_objet, $ligne_sql, $introduction_longueur, $longueur_ou_suite, $suite, $connect);
4914 4914
 }
4915 4915
 
4916 4916
 /**
@@ -4924,49 +4924,49 @@  discard block
 block discarded – undo
4924 4924
  * @return string
4925 4925
  */
4926 4926
 function appliquer_traitement_champ($texte, $champ, $table_objet = '', $env = [], string $connect = '') {
4927
-	if (!$champ) {
4928
-		return $texte;
4929
-	}
4927
+    if (!$champ) {
4928
+        return $texte;
4929
+    }
4930 4930
 
4931
-	// On charge les définitions des traitements (inc/texte et fichiers de fonctions)
4932
-	// car il ne faut pas partir du principe que c'est déjà chargé (form ajax, etc)
4933
-	include_fichiers_fonctions();
4931
+    // On charge les définitions des traitements (inc/texte et fichiers de fonctions)
4932
+    // car il ne faut pas partir du principe que c'est déjà chargé (form ajax, etc)
4933
+    include_fichiers_fonctions();
4934 4934
 
4935
-	$champ = strtoupper($champ);
4936
-	$traitements = $GLOBALS['table_des_traitements'][$champ] ?? false;
4937
-	if (!$traitements or !is_array($traitements)) {
4938
-		return $texte;
4939
-	}
4935
+    $champ = strtoupper($champ);
4936
+    $traitements = $GLOBALS['table_des_traitements'][$champ] ?? false;
4937
+    if (!$traitements or !is_array($traitements)) {
4938
+        return $texte;
4939
+    }
4940 4940
 
4941
-	$traitement = '';
4942
-	if ($table_objet and (!isset($traitements[0]) or count($traitements) > 1)) {
4943
-		// necessaire pour prendre en charge les vieux appels avec un table_objet_sql en 3e arg
4944
-		$table_objet = table_objet($table_objet);
4945
-		if (isset($traitements[$table_objet])) {
4946
-			$traitement = $traitements[$table_objet];
4947
-		}
4948
-	}
4949
-	if (!$traitement and isset($traitements[0])) {
4950
-		$traitement = $traitements[0];
4951
-	}
4952
-	// (sinon prendre le premier de la liste par defaut ?)
4941
+    $traitement = '';
4942
+    if ($table_objet and (!isset($traitements[0]) or count($traitements) > 1)) {
4943
+        // necessaire pour prendre en charge les vieux appels avec un table_objet_sql en 3e arg
4944
+        $table_objet = table_objet($table_objet);
4945
+        if (isset($traitements[$table_objet])) {
4946
+            $traitement = $traitements[$table_objet];
4947
+        }
4948
+    }
4949
+    if (!$traitement and isset($traitements[0])) {
4950
+        $traitement = $traitements[0];
4951
+    }
4952
+    // (sinon prendre le premier de la liste par defaut ?)
4953 4953
 
4954
-	if (!$traitement) {
4955
-		return $texte;
4956
-	}
4954
+    if (!$traitement) {
4955
+        return $texte;
4956
+    }
4957 4957
 
4958
-	$traitement = str_replace('%s', "'" . texte_script($texte) . "'", $traitement);
4958
+    $traitement = str_replace('%s', "'" . texte_script($texte) . "'", $traitement);
4959 4959
 
4960
-	// signaler qu'on est dans l'espace prive pour les filtres qui se servent de ce flag
4961
-	if (test_espace_prive()) {
4962
-		$env['espace_prive'] = 1;
4963
-	}
4960
+    // signaler qu'on est dans l'espace prive pour les filtres qui se servent de ce flag
4961
+    if (test_espace_prive()) {
4962
+        $env['espace_prive'] = 1;
4963
+    }
4964 4964
 
4965
-	// Fournir $connect et $Pile[0] au traitement si besoin
4966
-	$Pile = [0 => $env];
4967
-	eval("\$texte = $traitement;");
4965
+    // Fournir $connect et $Pile[0] au traitement si besoin
4966
+    $Pile = [0 => $env];
4967
+    eval("\$texte = $traitement;");
4968 4968
 
4969
-	return $texte;
4969
+    return $texte;
4970 4970
 }
4971 4971
 
4972 4972
 
@@ -4980,21 +4980,21 @@  discard block
 block discarded – undo
4980 4980
  * @return string
4981 4981
  */
4982 4982
 function generer_objet_lien(int $id_objet, string $objet, int $longueur = 80, string $connect = ''): string {
4983
-	include_spip('inc/liens');
4984
-	$titre = traiter_raccourci_titre($id_objet, $objet, $connect);
4985
-	// lorsque l'objet n'est plus declare (plugin desactive par exemple)
4986
-	// le raccourcis n'est plus valide
4987
-	$titre = typo($titre['titre'] ?? '');
4988
-	// on essaye avec generer_info_entite ?
4989
-	if (!strlen($titre) and !$connect) {
4990
-		$titre = generer_objet_info($id_objet, $objet, 'titre');
4991
-	}
4992
-	if (!strlen($titre)) {
4993
-		$titre = _T('info_sans_titre');
4994
-	}
4995
-	$url = generer_objet_url($id_objet, $objet, '', '', null, '', $connect);
4983
+    include_spip('inc/liens');
4984
+    $titre = traiter_raccourci_titre($id_objet, $objet, $connect);
4985
+    // lorsque l'objet n'est plus declare (plugin desactive par exemple)
4986
+    // le raccourcis n'est plus valide
4987
+    $titre = typo($titre['titre'] ?? '');
4988
+    // on essaye avec generer_info_entite ?
4989
+    if (!strlen($titre) and !$connect) {
4990
+        $titre = generer_objet_info($id_objet, $objet, 'titre');
4991
+    }
4992
+    if (!strlen($titre)) {
4993
+        $titre = _T('info_sans_titre');
4994
+    }
4995
+    $url = generer_objet_url($id_objet, $objet, '', '', null, '', $connect);
4996 4996
 
4997
-	return "<a href='$url' class='$objet'>" . couper($titre, $longueur) . '</a>';
4997
+    return "<a href='$url' class='$objet'>" . couper($titre, $longueur) . '</a>';
4998 4998
 }
4999 4999
 
5000 5000
 /**
@@ -5002,7 +5002,7 @@  discard block
 block discarded – undo
5002 5002
  * @see generer_objet_lien
5003 5003
  */
5004 5004
 function generer_lien_entite($id_objet, $objet, $longueur = 80, $connect = null) {
5005
-	return generer_objet_lien(intval($id_objet), $objet, $longueur, $connect ?? '');
5005
+    return generer_objet_lien(intval($id_objet), $objet, $longueur, $connect ?? '');
5006 5006
 }
5007 5007
 
5008 5008
 /**
@@ -5018,15 +5018,15 @@  discard block
 block discarded – undo
5018 5018
  * @return string
5019 5019
  */
5020 5020
 function wrap($texte, $wrap) {
5021
-	$balises = extraire_balises($wrap);
5022
-	if (preg_match_all(",<([a-z]\w*)\b[^>]*>,UimsS", $wrap, $regs, PREG_PATTERN_ORDER)) {
5023
-		$texte = $wrap . $texte;
5024
-		$regs = array_reverse($regs[1]);
5025
-		$wrap = '</' . implode('></', $regs) . '>';
5026
-		$texte = $texte . $wrap;
5027
-	}
5021
+    $balises = extraire_balises($wrap);
5022
+    if (preg_match_all(",<([a-z]\w*)\b[^>]*>,UimsS", $wrap, $regs, PREG_PATTERN_ORDER)) {
5023
+        $texte = $wrap . $texte;
5024
+        $regs = array_reverse($regs[1]);
5025
+        $wrap = '</' . implode('></', $regs) . '>';
5026
+        $texte = $texte . $wrap;
5027
+    }
5028 5028
 
5029
-	return $texte;
5029
+    return $texte;
5030 5030
 }
5031 5031
 
5032 5032
 
@@ -5046,44 +5046,44 @@  discard block
 block discarded – undo
5046 5046
  * @return array|mixed|string
5047 5047
  */
5048 5048
 function filtre_print_dist($u, $join = '<br />', $indent = 0) {
5049
-	if (is_string($u)) {
5050
-		$u = typo($u);
5049
+    if (is_string($u)) {
5050
+        $u = typo($u);
5051 5051
 
5052
-		return $u;
5053
-	}
5052
+        return $u;
5053
+    }
5054 5054
 
5055
-	// caster $u en array si besoin
5056
-	if (is_object($u)) {
5057
-		$u = (array)$u;
5058
-	}
5055
+    // caster $u en array si besoin
5056
+    if (is_object($u)) {
5057
+        $u = (array)$u;
5058
+    }
5059 5059
 
5060
-	if (is_array($u)) {
5061
-		$out = '';
5062
-		// toutes les cles sont numeriques ?
5063
-		// et aucun enfant n'est un tableau
5064
-		// liste simple separee par des virgules
5065
-		$numeric_keys = array_map('is_numeric', array_keys($u));
5066
-		$array_values = array_map('is_array', $u);
5067
-		$object_values = array_map('is_object', $u);
5068
-		if (
5069
-			array_sum($numeric_keys) == count($numeric_keys)
5070
-			and !array_sum($array_values)
5071
-			and !array_sum($object_values)
5072
-		) {
5073
-			return join(', ', array_map('filtre_print_dist', $u));
5074
-		}
5060
+    if (is_array($u)) {
5061
+        $out = '';
5062
+        // toutes les cles sont numeriques ?
5063
+        // et aucun enfant n'est un tableau
5064
+        // liste simple separee par des virgules
5065
+        $numeric_keys = array_map('is_numeric', array_keys($u));
5066
+        $array_values = array_map('is_array', $u);
5067
+        $object_values = array_map('is_object', $u);
5068
+        if (
5069
+            array_sum($numeric_keys) == count($numeric_keys)
5070
+            and !array_sum($array_values)
5071
+            and !array_sum($object_values)
5072
+        ) {
5073
+            return join(', ', array_map('filtre_print_dist', $u));
5074
+        }
5075 5075
 
5076
-		// sinon on passe a la ligne et on indente
5077
-		$i_str = str_pad('', $indent, ' ');
5078
-		foreach ($u as $k => $v) {
5079
-			$out .= $join . $i_str . "$k: " . filtre_print_dist($v, $join, $indent + 2);
5080
-		}
5076
+        // sinon on passe a la ligne et on indente
5077
+        $i_str = str_pad('', $indent, ' ');
5078
+        foreach ($u as $k => $v) {
5079
+            $out .= $join . $i_str . "$k: " . filtre_print_dist($v, $join, $indent + 2);
5080
+        }
5081 5081
 
5082
-		return $out;
5083
-	}
5082
+        return $out;
5083
+    }
5084 5084
 
5085
-	// on sait pas quoi faire...
5086
-	return $u;
5085
+    // on sait pas quoi faire...
5086
+    return $u;
5087 5087
 }
5088 5088
 
5089 5089
 
@@ -5096,10 +5096,10 @@  discard block
 block discarded – undo
5096 5096
  * @return string|array
5097 5097
  */
5098 5098
 function objet_info($objet, $info) {
5099
-	$table = table_objet_sql($objet);
5100
-	$infos = lister_tables_objets_sql($table);
5099
+    $table = table_objet_sql($objet);
5100
+    $infos = lister_tables_objets_sql($table);
5101 5101
 
5102
-	return ($infos[$info] ?? '');
5102
+    return ($infos[$info] ?? '');
5103 5103
 }
5104 5104
 
5105 5105
 /**
@@ -5114,11 +5114,11 @@  discard block
 block discarded – undo
5114 5114
  *     Texte traduit du comptage, tel que '3 articles'
5115 5115
  */
5116 5116
 function objet_afficher_nb($nb, $objet) {
5117
-	if (!$nb) {
5118
-		return _T(objet_info($objet, 'info_aucun_objet'));
5119
-	} else {
5120
-		return _T(objet_info($objet, $nb == 1 ? 'info_1_objet' : 'info_nb_objets'), ['nb' => $nb]);
5121
-	}
5117
+    if (!$nb) {
5118
+        return _T(objet_info($objet, 'info_aucun_objet'));
5119
+    } else {
5120
+        return _T(objet_info($objet, $nb == 1 ? 'info_1_objet' : 'info_nb_objets'), ['nb' => $nb]);
5121
+    }
5122 5122
 }
5123 5123
 
5124 5124
 /**
@@ -5130,11 +5130,11 @@  discard block
 block discarded – undo
5130 5130
  * @return string
5131 5131
  */
5132 5132
 function objet_icone($objet, $taille = 24, $class = '') {
5133
-	$icone = objet_info($objet, 'icone_objet') . '-' . $taille . '.png';
5134
-	$icone = chemin_image($icone);
5135
-	$balise_img = charger_filtre('balise_img');
5133
+    $icone = objet_info($objet, 'icone_objet') . '-' . $taille . '.png';
5134
+    $icone = chemin_image($icone);
5135
+    $balise_img = charger_filtre('balise_img');
5136 5136
 
5137
-	return $icone ? $balise_img($icone, _T(objet_info($objet, 'texte_objet')), $class, $taille) : '';
5137
+    return $icone ? $balise_img($icone, _T(objet_info($objet, 'texte_objet')), $class, $taille) : '';
5138 5138
 }
5139 5139
 
5140 5140
 /**
@@ -5155,12 +5155,12 @@  discard block
 block discarded – undo
5155 5155
  * @return string
5156 5156
  */
5157 5157
 function objet_T($objet, $chaine, $args = [], $options = []) {
5158
-	$chaine = explode(':', $chaine);
5159
-	if ($t = _T($objet . ':' . end($chaine), $args, array_merge($options, ['force' => false]))) {
5160
-		return $t;
5161
-	}
5162
-	$chaine = implode(':', $chaine);
5163
-	return _T($chaine, $args, $options);
5158
+    $chaine = explode(':', $chaine);
5159
+    if ($t = _T($objet . ':' . end($chaine), $args, array_merge($options, ['force' => false]))) {
5160
+        return $t;
5161
+    }
5162
+    $chaine = implode(':', $chaine);
5163
+    return _T($chaine, $args, $options);
5164 5164
 }
5165 5165
 
5166 5166
 /**
@@ -5174,18 +5174,18 @@  discard block
 block discarded – undo
5174 5174
  * @return string      Code HTML
5175 5175
  */
5176 5176
 function insert_head_css_conditionnel($flux) {
5177
-	if (
5178
-		strpos($flux, '<!-- insert_head_css -->') === false
5179
-		and $p = strpos($flux, '<!-- insert_head -->')
5180
-	) {
5181
-		// plutot avant le premier js externe (jquery) pour etre non bloquant
5182
-		if ($p1 = stripos($flux, '<script src=') and $p1 < $p) {
5183
-			$p = $p1;
5184
-		}
5185
-		$flux = substr_replace($flux, pipeline('insert_head_css', '<!-- insert_head_css -->'), $p, 0);
5186
-	}
5177
+    if (
5178
+        strpos($flux, '<!-- insert_head_css -->') === false
5179
+        and $p = strpos($flux, '<!-- insert_head -->')
5180
+    ) {
5181
+        // plutot avant le premier js externe (jquery) pour etre non bloquant
5182
+        if ($p1 = stripos($flux, '<script src=') and $p1 < $p) {
5183
+            $p = $p1;
5184
+        }
5185
+        $flux = substr_replace($flux, pipeline('insert_head_css', '<!-- insert_head_css -->'), $p, 0);
5186
+    }
5187 5187
 
5188
-	return $flux;
5188
+    return $flux;
5189 5189
 }
5190 5190
 
5191 5191
 /**
@@ -5208,75 +5208,75 @@  discard block
 block discarded – undo
5208 5208
  * @return string
5209 5209
  */
5210 5210
 function produire_fond_statique($fond, $contexte = [], $options = [], string $connect = '') {
5211
-	if (isset($contexte['format'])) {
5212
-		$extension = $contexte['format'];
5213
-		unset($contexte['format']);
5214
-	} else {
5215
-		$extension = 'html';
5216
-		if (preg_match(',[.](css|js|json|xml|svg)$,', $fond, $m)) {
5217
-			$extension = $m[1];
5218
-		}
5219
-	}
5220
-	// recuperer le contenu produit par le squelette
5221
-	$options['raw'] = true;
5222
-	$cache = recuperer_fond($fond, $contexte, $options, $connect);
5223
-
5224
-	// calculer le nom de la css
5225
-	$dir_var = sous_repertoire(_DIR_VAR, 'cache-' . $extension);
5226
-	$nom_safe = preg_replace(',\W,', '_', str_replace('.', '_', $fond));
5227
-	$contexte_implicite = calculer_contexte_implicite();
5228
-
5229
-	// par defaut on hash selon les contextes qui sont a priori moins variables
5230
-	// mais on peut hasher selon le contenu a la demande, si plusieurs contextes produisent un meme contenu
5231
-	// reduit la variabilite du nom et donc le nombre de css concatenees possibles in fine
5232
-	if (isset($options['hash_on_content']) and $options['hash_on_content']) {
5233
-		$hash = md5($contexte_implicite['host'] . '::' . $cache);
5234
-	}
5235
-	else {
5236
-		unset($contexte_implicite['notes']); // pas pertinent pour signaler un changeemnt de contenu pour des css/js
5237
-		ksort($contexte);
5238
-		$hash = md5($fond . json_encode($contexte_implicite, JSON_THROW_ON_ERROR) . json_encode($contexte, JSON_THROW_ON_ERROR) . $connect);
5239
-	}
5240
-	$filename = $dir_var . $extension . "dyn-$nom_safe-" . substr($hash, 0, 8) . ".$extension";
5241
-
5242
-	// mettre a jour le fichier si il n'existe pas
5243
-	// ou trop ancien
5244
-	// le dernier fichier produit est toujours suffixe par .last
5245
-	// et recopie sur le fichier cible uniquement si il change
5246
-	if (
5247
-		!file_exists($filename)
5248
-		or !file_exists($filename . '.last')
5249
-		or (isset($cache['lastmodified']) and $cache['lastmodified'] and filemtime($filename . '.last') < $cache['lastmodified'])
5250
-		or (defined('_VAR_MODE') and _VAR_MODE == 'recalcul')
5251
-	) {
5252
-		$contenu = $cache['texte'];
5253
-		// passer les urls en absolu si c'est une css
5254
-		if ($extension == 'css') {
5255
-			$contenu = urls_absolues_css(
5256
-				$contenu,
5257
-				test_espace_prive() ? generer_url_ecrire('accueil') : generer_url_public($fond)
5258
-			);
5259
-		}
5260
-
5261
-		$comment = '';
5262
-		// ne pas insérer de commentaire sur certains formats
5263
-		if (!in_array($extension, ['json', 'xml', 'svg'])) {
5264
-			$comment = "/* #PRODUIRE{fond=$fond";
5265
-			foreach ($contexte as $k => $v) {
5266
-				if (is_array($v)) {
5267
-					$v = var_export($v, true);
5268
-				}
5269
-				$comment .= ",$k=$v";
5270
-			}
5271
-			// pas de date dans le commentaire car sinon ca invalide le md5 et force la maj
5272
-			// mais on peut mettre un md5 du contenu, ce qui donne un aperu rapide si la feuille a change ou non
5273
-			$comment .= "}\n   md5:" . md5($contenu) . " */\n";
5274
-		}
5275
-		// et ecrire le fichier si il change
5276
-		ecrire_fichier_calcule_si_modifie($filename, $comment . $contenu, false, true);
5277
-	}
5278
-
5279
-	return timestamp($filename);
5211
+    if (isset($contexte['format'])) {
5212
+        $extension = $contexte['format'];
5213
+        unset($contexte['format']);
5214
+    } else {
5215
+        $extension = 'html';
5216
+        if (preg_match(',[.](css|js|json|xml|svg)$,', $fond, $m)) {
5217
+            $extension = $m[1];
5218
+        }
5219
+    }
5220
+    // recuperer le contenu produit par le squelette
5221
+    $options['raw'] = true;
5222
+    $cache = recuperer_fond($fond, $contexte, $options, $connect);
5223
+
5224
+    // calculer le nom de la css
5225
+    $dir_var = sous_repertoire(_DIR_VAR, 'cache-' . $extension);
5226
+    $nom_safe = preg_replace(',\W,', '_', str_replace('.', '_', $fond));
5227
+    $contexte_implicite = calculer_contexte_implicite();
5228
+
5229
+    // par defaut on hash selon les contextes qui sont a priori moins variables
5230
+    // mais on peut hasher selon le contenu a la demande, si plusieurs contextes produisent un meme contenu
5231
+    // reduit la variabilite du nom et donc le nombre de css concatenees possibles in fine
5232
+    if (isset($options['hash_on_content']) and $options['hash_on_content']) {
5233
+        $hash = md5($contexte_implicite['host'] . '::' . $cache);
5234
+    }
5235
+    else {
5236
+        unset($contexte_implicite['notes']); // pas pertinent pour signaler un changeemnt de contenu pour des css/js
5237
+        ksort($contexte);
5238
+        $hash = md5($fond . json_encode($contexte_implicite, JSON_THROW_ON_ERROR) . json_encode($contexte, JSON_THROW_ON_ERROR) . $connect);
5239
+    }
5240
+    $filename = $dir_var . $extension . "dyn-$nom_safe-" . substr($hash, 0, 8) . ".$extension";
5241
+
5242
+    // mettre a jour le fichier si il n'existe pas
5243
+    // ou trop ancien
5244
+    // le dernier fichier produit est toujours suffixe par .last
5245
+    // et recopie sur le fichier cible uniquement si il change
5246
+    if (
5247
+        !file_exists($filename)
5248
+        or !file_exists($filename . '.last')
5249
+        or (isset($cache['lastmodified']) and $cache['lastmodified'] and filemtime($filename . '.last') < $cache['lastmodified'])
5250
+        or (defined('_VAR_MODE') and _VAR_MODE == 'recalcul')
5251
+    ) {
5252
+        $contenu = $cache['texte'];
5253
+        // passer les urls en absolu si c'est une css
5254
+        if ($extension == 'css') {
5255
+            $contenu = urls_absolues_css(
5256
+                $contenu,
5257
+                test_espace_prive() ? generer_url_ecrire('accueil') : generer_url_public($fond)
5258
+            );
5259
+        }
5260
+
5261
+        $comment = '';
5262
+        // ne pas insérer de commentaire sur certains formats
5263
+        if (!in_array($extension, ['json', 'xml', 'svg'])) {
5264
+            $comment = "/* #PRODUIRE{fond=$fond";
5265
+            foreach ($contexte as $k => $v) {
5266
+                if (is_array($v)) {
5267
+                    $v = var_export($v, true);
5268
+                }
5269
+                $comment .= ",$k=$v";
5270
+            }
5271
+            // pas de date dans le commentaire car sinon ca invalide le md5 et force la maj
5272
+            // mais on peut mettre un md5 du contenu, ce qui donne un aperu rapide si la feuille a change ou non
5273
+            $comment .= "}\n   md5:" . md5($contenu) . " */\n";
5274
+        }
5275
+        // et ecrire le fichier si il change
5276
+        ecrire_fichier_calcule_si_modifie($filename, $comment . $contenu, false, true);
5277
+    }
5278
+
5279
+    return timestamp($filename);
5280 5280
 }
5281 5281
 
5282 5282
 /**
@@ -5289,15 +5289,15 @@  discard block
 block discarded – undo
5289 5289
  *    $fichier auquel on a ajouté le timestamp
5290 5290
  */
5291 5291
 function timestamp($fichier) {
5292
-	if (
5293
-		!$fichier
5294
-		or !file_exists($fichier)
5295
-		or !$m = filemtime($fichier)
5296
-	) {
5297
-		return $fichier;
5298
-	}
5292
+    if (
5293
+        !$fichier
5294
+        or !file_exists($fichier)
5295
+        or !$m = filemtime($fichier)
5296
+    ) {
5297
+        return $fichier;
5298
+    }
5299 5299
 
5300
-	return "$fichier?$m";
5300
+    return "$fichier?$m";
5301 5301
 }
5302 5302
 
5303 5303
 /**
@@ -5307,11 +5307,11 @@  discard block
 block discarded – undo
5307 5307
  * @return string
5308 5308
  */
5309 5309
 function supprimer_timestamp($url) {
5310
-	if (strpos($url, '?') === false) {
5311
-		return $url;
5312
-	}
5310
+    if (strpos($url, '?') === false) {
5311
+        return $url;
5312
+    }
5313 5313
 
5314
-	return preg_replace(',\?[[:digit:]]+$,', '', $url);
5314
+    return preg_replace(',\?[[:digit:]]+$,', '', $url);
5315 5315
 }
5316 5316
 
5317 5317
 /**
@@ -5326,15 +5326,15 @@  discard block
 block discarded – undo
5326 5326
  * @return string
5327 5327
  */
5328 5328
 function filtre_nettoyer_titre_email_dist($titre) {
5329
-	include_spip('inc/envoyer_mail');
5329
+    include_spip('inc/envoyer_mail');
5330 5330
 
5331
-	$titre = nettoyer_titre_email($titre);
5332
-	// on est dans un squelette : securiser le retour
5333
-	if (strpos($titre, '<') !== false) {
5334
-		$titre = interdire_scripts($titre);
5335
-	}
5331
+    $titre = nettoyer_titre_email($titre);
5332
+    // on est dans un squelette : securiser le retour
5333
+    if (strpos($titre, '<') !== false) {
5334
+        $titre = interdire_scripts($titre);
5335
+    }
5336 5336
 
5337
-	return $titre;
5337
+    return $titre;
5338 5338
 }
5339 5339
 
5340 5340
 /**
@@ -5356,27 +5356,27 @@  discard block
 block discarded – undo
5356 5356
  * @return string
5357 5357
  */
5358 5358
 function filtre_chercher_rubrique_dist(
5359
-	$titre,
5360
-	$id_objet,
5361
-	$id_parent,
5362
-	$objet,
5363
-	$id_secteur,
5364
-	$restreint,
5365
-	$actionable = false,
5366
-	$retour_sans_cadre = false
5359
+    $titre,
5360
+    $id_objet,
5361
+    $id_parent,
5362
+    $objet,
5363
+    $id_secteur,
5364
+    $restreint,
5365
+    $actionable = false,
5366
+    $retour_sans_cadre = false
5367 5367
 ) {
5368
-	include_spip('inc/filtres_ecrire');
5368
+    include_spip('inc/filtres_ecrire');
5369 5369
 
5370
-	return chercher_rubrique(
5371
-		$titre,
5372
-		$id_objet,
5373
-		$id_parent,
5374
-		$objet,
5375
-		$id_secteur,
5376
-		$restreint,
5377
-		$actionable,
5378
-		$retour_sans_cadre
5379
-	);
5370
+    return chercher_rubrique(
5371
+        $titre,
5372
+        $id_objet,
5373
+        $id_parent,
5374
+        $objet,
5375
+        $id_secteur,
5376
+        $restreint,
5377
+        $actionable,
5378
+        $retour_sans_cadre
5379
+    );
5380 5380
 }
5381 5381
 
5382 5382
 /**
@@ -5405,56 +5405,56 @@  discard block
 block discarded – undo
5405 5405
  *     Chaîne vide si l'accès est autorisé
5406 5406
  */
5407 5407
 function sinon_interdire_acces($ok = false, $url = '', $statut = 0, $message = null) {
5408
-	if ($ok) {
5409
-		return '';
5410
-	}
5411
-
5412
-	// Vider tous les tampons
5413
-	$level = @ob_get_level();
5414
-	while ($level--) {
5415
-		@ob_end_clean();
5416
-	}
5417
-
5418
-	include_spip('inc/headers');
5419
-
5420
-	// S'il y a une URL, on redirige (si pas de statut, la fonction mettra 302 par défaut)
5421
-	if ($url) {
5422
-		redirige_par_entete($url, '', $statut);
5423
-	}
5424
-
5425
-	// ecriture simplifiee avec message en 3eme argument (= statut 403)
5426
-	if (!is_numeric($statut) and is_null($message)) {
5427
-		$message = $statut;
5428
-		$statut = 0;
5429
-	}
5430
-	if (!$message) {
5431
-		$message = '';
5432
-	}
5433
-	$statut = intval($statut);
5434
-
5435
-	// Si on est dans l'espace privé, on génère du 403 Forbidden par defaut ou du 404
5436
-	if (test_espace_prive()) {
5437
-		if (!$statut or !in_array($statut, [404, 403])) {
5438
-			$statut = 403;
5439
-		}
5440
-		http_response_code(403);
5441
-		$echec = charger_fonction('403', 'exec');
5442
-		$echec($message);
5443
-	} else {
5444
-		// Sinon dans l'espace public on redirige vers une 404 par défaut, car elle toujours présente normalement
5445
-		if (!$statut) {
5446
-			$statut = 404;
5447
-		}
5448
-		// Dans tous les cas on modifie l'entité avec ce qui est demandé
5449
-		http_response_code($statut);
5450
-		// Si le statut est une erreur et qu'il n'y a pas de redirection on va chercher le squelette du même nom
5451
-		if ($statut >= 400) {
5452
-			echo recuperer_fond("$statut", ['erreur' => $message]);
5453
-		}
5454
-	}
5455
-
5456
-
5457
-	exit;
5408
+    if ($ok) {
5409
+        return '';
5410
+    }
5411
+
5412
+    // Vider tous les tampons
5413
+    $level = @ob_get_level();
5414
+    while ($level--) {
5415
+        @ob_end_clean();
5416
+    }
5417
+
5418
+    include_spip('inc/headers');
5419
+
5420
+    // S'il y a une URL, on redirige (si pas de statut, la fonction mettra 302 par défaut)
5421
+    if ($url) {
5422
+        redirige_par_entete($url, '', $statut);
5423
+    }
5424
+
5425
+    // ecriture simplifiee avec message en 3eme argument (= statut 403)
5426
+    if (!is_numeric($statut) and is_null($message)) {
5427
+        $message = $statut;
5428
+        $statut = 0;
5429
+    }
5430
+    if (!$message) {
5431
+        $message = '';
5432
+    }
5433
+    $statut = intval($statut);
5434
+
5435
+    // Si on est dans l'espace privé, on génère du 403 Forbidden par defaut ou du 404
5436
+    if (test_espace_prive()) {
5437
+        if (!$statut or !in_array($statut, [404, 403])) {
5438
+            $statut = 403;
5439
+        }
5440
+        http_response_code(403);
5441
+        $echec = charger_fonction('403', 'exec');
5442
+        $echec($message);
5443
+    } else {
5444
+        // Sinon dans l'espace public on redirige vers une 404 par défaut, car elle toujours présente normalement
5445
+        if (!$statut) {
5446
+            $statut = 404;
5447
+        }
5448
+        // Dans tous les cas on modifie l'entité avec ce qui est demandé
5449
+        http_response_code($statut);
5450
+        // Si le statut est une erreur et qu'il n'y a pas de redirection on va chercher le squelette du même nom
5451
+        if ($statut >= 400) {
5452
+            echo recuperer_fond("$statut", ['erreur' => $message]);
5453
+        }
5454
+    }
5455
+
5456
+
5457
+    exit;
5458 5458
 }
5459 5459
 
5460 5460
 /**
@@ -5465,11 +5465,11 @@  discard block
 block discarded – undo
5465 5465
  * @return string
5466 5466
  */
5467 5467
 function filtre_compacte_dist($source, $format = null) {
5468
-	if (function_exists('minifier')) {
5469
-		return minifier($source, $format);
5470
-	}
5468
+    if (function_exists('minifier')) {
5469
+        return minifier($source, $format);
5470
+    }
5471 5471
 
5472
-	return $source;
5472
+    return $source;
5473 5473
 }
5474 5474
 
5475 5475
 
@@ -5481,32 +5481,32 @@  discard block
 block discarded – undo
5481 5481
  * @return string
5482 5482
  */
5483 5483
 function spip_affiche_mot_de_passe_masque(?string $passe, bool $afficher_partiellement = false, ?int $portion_pourcent = null): string {
5484
-	$passe ??= '';
5485
-	$l = strlen($passe);
5486
-
5487
-	if ($l <= 8 or !$afficher_partiellement) {
5488
-		if (!$l) {
5489
-			return ''; // montrer qu'il y a pas de mot de passe si il y en a pas
5490
-		}
5491
-		return str_pad('', $afficher_partiellement ? $l : 16, '*');
5492
-	}
5493
-
5494
-	if (is_null($portion_pourcent)) {
5495
-		if (!defined('_SPIP_AFFICHE_MOT_DE_PASSE_MASQUE_PERCENT')) {
5496
-			define('_SPIP_AFFICHE_MOT_DE_PASSE_MASQUE_PERCENT', 20); // 20%
5497
-		}
5498
-		$portion_pourcent = _SPIP_AFFICHE_MOT_DE_PASSE_MASQUE_PERCENT;
5499
-	}
5500
-	if ($portion_pourcent >= 100) {
5501
-		return $passe;
5502
-	}
5503
-	$e = intval(ceil($l * $portion_pourcent / 100 / 2));
5504
-	$e = max($e, 0);
5505
-	$mid = str_pad('', $l - 2 * $e, '*');
5506
-	if ($e > 0 and strlen($mid) > 8) {
5507
-		$mid = '***...***';
5508
-	}
5509
-	return substr($passe, 0, $e) . $mid . ($e > 0 ? substr($passe, -$e) : '');
5484
+    $passe ??= '';
5485
+    $l = strlen($passe);
5486
+
5487
+    if ($l <= 8 or !$afficher_partiellement) {
5488
+        if (!$l) {
5489
+            return ''; // montrer qu'il y a pas de mot de passe si il y en a pas
5490
+        }
5491
+        return str_pad('', $afficher_partiellement ? $l : 16, '*');
5492
+    }
5493
+
5494
+    if (is_null($portion_pourcent)) {
5495
+        if (!defined('_SPIP_AFFICHE_MOT_DE_PASSE_MASQUE_PERCENT')) {
5496
+            define('_SPIP_AFFICHE_MOT_DE_PASSE_MASQUE_PERCENT', 20); // 20%
5497
+        }
5498
+        $portion_pourcent = _SPIP_AFFICHE_MOT_DE_PASSE_MASQUE_PERCENT;
5499
+    }
5500
+    if ($portion_pourcent >= 100) {
5501
+        return $passe;
5502
+    }
5503
+    $e = intval(ceil($l * $portion_pourcent / 100 / 2));
5504
+    $e = max($e, 0);
5505
+    $mid = str_pad('', $l - 2 * $e, '*');
5506
+    if ($e > 0 and strlen($mid) > 8) {
5507
+        $mid = '***...***';
5508
+    }
5509
+    return substr($passe, 0, $e) . $mid . ($e > 0 ? substr($passe, -$e) : '');
5510 5510
 }
5511 5511
 
5512 5512
 
@@ -5527,64 +5527,64 @@  discard block
 block discarded – undo
5527 5527
  */
5528 5528
 function identifiant_slug($texte, $type = '', $options = []) {
5529 5529
 
5530
-	$original = $texte;
5531
-	$separateur = ($options['separateur'] ?? '_');
5532
-	$longueur_maxi = ($options['longueur_maxi'] ?? 60);
5533
-	$longueur_mini = ($options['longueur_mini'] ?? 0);
5530
+    $original = $texte;
5531
+    $separateur = ($options['separateur'] ?? '_');
5532
+    $longueur_maxi = ($options['longueur_maxi'] ?? 60);
5533
+    $longueur_mini = ($options['longueur_mini'] ?? 0);
5534 5534
 
5535
-	if (!function_exists('translitteration')) {
5536
-		include_spip('inc/charsets');
5537
-	}
5535
+    if (!function_exists('translitteration')) {
5536
+        include_spip('inc/charsets');
5537
+    }
5538 5538
 
5539
-	// pas de balise html
5540
-	if (strpos($texte, '<') !== false) {
5541
-		$texte = strip_tags($texte);
5542
-	}
5543
-	if (strpos($texte, '&') !== false) {
5544
-		$texte = unicode2charset($texte);
5545
-	}
5546
-	// On enlève les espaces indésirables
5547
-	$texte = trim($texte);
5539
+    // pas de balise html
5540
+    if (strpos($texte, '<') !== false) {
5541
+        $texte = strip_tags($texte);
5542
+    }
5543
+    if (strpos($texte, '&') !== false) {
5544
+        $texte = unicode2charset($texte);
5545
+    }
5546
+    // On enlève les espaces indésirables
5547
+    $texte = trim($texte);
5548 5548
 
5549
-	// On enlève les accents et cie
5550
-	$texte = translitteration($texte);
5549
+    // On enlève les accents et cie
5550
+    $texte = translitteration($texte);
5551 5551
 
5552
-	// On remplace tout ce qui n'est pas un mot par un séparateur
5553
-	$texte = preg_replace(',[\W_]+,ms', $separateur, $texte);
5552
+    // On remplace tout ce qui n'est pas un mot par un séparateur
5553
+    $texte = preg_replace(',[\W_]+,ms', $separateur, $texte);
5554 5554
 
5555
-	// nettoyer les doubles occurences du separateur si besoin
5556
-	while (strpos($texte, (string) "$separateur$separateur") !== false) {
5557
-		$texte = str_replace("$separateur$separateur", $separateur, $texte);
5558
-	}
5555
+    // nettoyer les doubles occurences du separateur si besoin
5556
+    while (strpos($texte, (string) "$separateur$separateur") !== false) {
5557
+        $texte = str_replace("$separateur$separateur", $separateur, $texte);
5558
+    }
5559 5559
 
5560
-	// pas de separateur au debut ni a la fin
5561
-	$texte = trim($texte, $separateur);
5560
+    // pas de separateur au debut ni a la fin
5561
+    $texte = trim($texte, $separateur);
5562 5562
 
5563
-	// en minuscules
5564
-	$texte = strtolower($texte);
5563
+    // en minuscules
5564
+    $texte = strtolower($texte);
5565 5565
 
5566
-	switch ($type) {
5567
-		case 'class':
5568
-		case 'id':
5569
-		case 'anchor':
5570
-			if (preg_match(',^\d,', $texte)) {
5571
-				$texte = substr($type, 0, 1) . $texte;
5572
-			}
5573
-	}
5566
+    switch ($type) {
5567
+        case 'class':
5568
+        case 'id':
5569
+        case 'anchor':
5570
+            if (preg_match(',^\d,', $texte)) {
5571
+                $texte = substr($type, 0, 1) . $texte;
5572
+            }
5573
+    }
5574 5574
 
5575
-	if (strlen($texte) > $longueur_maxi) {
5576
-		$texte = substr($texte, 0, $longueur_maxi);
5577
-	}
5575
+    if (strlen($texte) > $longueur_maxi) {
5576
+        $texte = substr($texte, 0, $longueur_maxi);
5577
+    }
5578 5578
 
5579
-	if (strlen($texte) < $longueur_mini and $longueur_mini < $longueur_maxi) {
5580
-		if (preg_match(',^\d,', $texte)) {
5581
-			$texte = ($type ? substr($type, 0, 1) : 's') . $texte;
5582
-		}
5583
-		$texte .= $separateur . md5($original);
5584
-		$texte = substr($texte, 0, $longueur_mini);
5585
-	}
5579
+    if (strlen($texte) < $longueur_mini and $longueur_mini < $longueur_maxi) {
5580
+        if (preg_match(',^\d,', $texte)) {
5581
+            $texte = ($type ? substr($type, 0, 1) : 's') . $texte;
5582
+        }
5583
+        $texte .= $separateur . md5($original);
5584
+        $texte = substr($texte, 0, $longueur_mini);
5585
+    }
5586 5586
 
5587
-	return $texte;
5587
+    return $texte;
5588 5588
 }
5589 5589
 
5590 5590
 
@@ -5605,11 +5605,11 @@  discard block
 block discarded – undo
5605 5605
  * @exemple `<:info_maximum|label_nettoyer:>`
5606 5606
  */
5607 5607
 function label_nettoyer(string $text, bool $ucfirst = true): string {
5608
-	$label = preg_replace('#([\s:]|\&nbsp;)+$#u', '', $text);
5609
-	if ($ucfirst) {
5610
-		$label = spip_ucfirst($label);
5611
-	}
5612
-	return $label;
5608
+    $label = preg_replace('#([\s:]|\&nbsp;)+$#u', '', $text);
5609
+    if ($ucfirst) {
5610
+        $label = spip_ucfirst($label);
5611
+    }
5612
+    return $label;
5613 5613
 }
5614 5614
 
5615 5615
 /**
@@ -5622,8 +5622,8 @@  discard block
 block discarded – undo
5622 5622
  * @exemple `<:info_maximum|label_ponctuer:>`
5623 5623
  */
5624 5624
 function label_ponctuer(string $text, bool $ucfirst = true): string {
5625
-	$label = label_nettoyer($text, $ucfirst);
5626
-	return _T('label_ponctuer', ['label' => $label]);
5625
+    $label = label_nettoyer($text, $ucfirst);
5626
+    return _T('label_ponctuer', ['label' => $label]);
5627 5627
 }
5628 5628
 
5629 5629
 
@@ -5636,19 +5636,19 @@  discard block
 block discarded – undo
5636 5636
  * @return array
5637 5637
  */
5638 5638
 function helper_filtre_objet_lister_enfants_ou_parents($objet, $id_objet, $fonction) {
5639
-	if (!in_array($fonction, ['objet_lister_parents', 'objet_lister_enfants', 'objet_lister_parents_par_type', 'objet_lister_enfants_par_type'])) {
5640
-		return [];
5641
-	}
5639
+    if (!in_array($fonction, ['objet_lister_parents', 'objet_lister_enfants', 'objet_lister_parents_par_type', 'objet_lister_enfants_par_type'])) {
5640
+        return [];
5641
+    }
5642 5642
 
5643
-	// compatibilite signature inversee
5644
-	if (is_numeric($objet) and !is_numeric($id_objet)) {
5645
-		[$objet, $id_objet] = [$id_objet, $objet];
5646
-	}
5643
+    // compatibilite signature inversee
5644
+    if (is_numeric($objet) and !is_numeric($id_objet)) {
5645
+        [$objet, $id_objet] = [$id_objet, $objet];
5646
+    }
5647 5647
 
5648
-	if (!function_exists($fonction)) {
5649
-		include_spip('base/objets');
5650
-	}
5651
-	return $fonction($objet, $id_objet);
5648
+    if (!function_exists($fonction)) {
5649
+        include_spip('base/objets');
5650
+    }
5651
+    return $fonction($objet, $id_objet);
5652 5652
 }
5653 5653
 
5654 5654
 
@@ -5663,7 +5663,7 @@  discard block
 block discarded – undo
5663 5663
  * @return array
5664 5664
  */
5665 5665
 function filtre_objet_lister_parents_dist($objet, $id_objet) {
5666
-	return helper_filtre_objet_lister_enfants_ou_parents($objet, $id_objet, 'objet_lister_parents');
5666
+    return helper_filtre_objet_lister_enfants_ou_parents($objet, $id_objet, 'objet_lister_parents');
5667 5667
 }
5668 5668
 
5669 5669
 /**
@@ -5677,7 +5677,7 @@  discard block
 block discarded – undo
5677 5677
  * @return array
5678 5678
  */
5679 5679
 function filtre_objet_lister_parents_par_type_dist($objet, $id_objet) {
5680
-	return helper_filtre_objet_lister_enfants_ou_parents($objet, $id_objet, 'objet_lister_parents_par_type');
5680
+    return helper_filtre_objet_lister_enfants_ou_parents($objet, $id_objet, 'objet_lister_parents_par_type');
5681 5681
 }
5682 5682
 
5683 5683
 /**
@@ -5691,7 +5691,7 @@  discard block
 block discarded – undo
5691 5691
  * @return array
5692 5692
  */
5693 5693
 function filtre_objet_lister_enfants_dist($objet, $id_objet) {
5694
-	return helper_filtre_objet_lister_enfants_ou_parents($objet, $id_objet, 'objet_lister_enfants');
5694
+    return helper_filtre_objet_lister_enfants_ou_parents($objet, $id_objet, 'objet_lister_enfants');
5695 5695
 }
5696 5696
 
5697 5697
 /**
@@ -5705,5 +5705,5 @@  discard block
 block discarded – undo
5705 5705
  * @return array
5706 5706
  */
5707 5707
 function filtre_objet_lister_enfants_par_type_dist($objet, $id_objet) {
5708
-	return helper_filtre_objet_lister_enfants_ou_parents($objet, $id_objet, 'objet_lister_enfants_par_type');
5708
+    return helper_filtre_objet_lister_enfants_ou_parents($objet, $id_objet, 'objet_lister_enfants_par_type');
5709 5709
 }
Please login to merge, or discard this patch.
ecrire/base/connect_sql.php 3 patches
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19 19
 	return;
20 20
 }
21
-require_once _ROOT_RESTREINT . 'base/objets.php';
21
+require_once _ROOT_RESTREINT.'base/objets.php';
22 22
 
23 23
 
24 24
 /**
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 		$f = (!preg_match('/^[\w\.]*$/', $serveur))
60 60
 			? '' // nom de serveur mal ecrit
61 61
 			: ($serveur ?
62
-				(_DIR_CONNECT . $serveur . '.php') // serveur externe
62
+				(_DIR_CONNECT.$serveur.'.php') // serveur externe
63 63
 				: (_FILE_CONNECT ?: ($install ? _FILE_CONNECT_TMP // init du serveur principal
64 64
 						: ''))); // installation pas faite
65 65
 
@@ -101,9 +101,9 @@  discard block
 block discarded – undo
101 101
 	// chargement de la version du jeu de fonctions
102 102
 	// si pas dans le fichier par defaut
103 103
 	$type = $GLOBALS['db_ok']['type'];
104
-	$jeu = 'spip_' . $type . '_functions_' . $version;
104
+	$jeu = 'spip_'.$type.'_functions_'.$version;
105 105
 	if (!isset($GLOBALS[$jeu])) {
106
-		if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) {
106
+		if (!find_in_path($type.'_'.$version.'.php', 'req/', true)) {
107 107
 			spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS);
108 108
 
109 109
 			// ne plus reessayer
@@ -165,9 +165,9 @@  discard block
 block discarded – undo
165 165
 	$connexion = spip_connect($serveur);
166 166
 	$e = sql_errno($serveur);
167 167
 	$t = ($connexion['type'] ?? 'sql');
168
-	$m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim($connexion['last']);
169
-	$f = $t . $serveur;
170
-	spip_log($m, $f . '.' . _LOG_ERREUR);
168
+	$m = "Erreur $e de $t: ".sql_error($serveur)."\nin ".sql_error_backtrace()."\n".trim($connexion['last']);
169
+	$f = $t.$serveur;
170
+	spip_log($m, $f.'.'._LOG_ERREUR);
171 171
 }
172 172
 
173 173
 /**
@@ -253,7 +253,7 @@  discard block
 block discarded – undo
253 253
 	// si en cours d'installation ou si db=@test@ on ne pose rien
254 254
 	// car c'est un test de connexion
255 255
 	if (!defined('_ECRIRE_INSTALL') and $db !== '@test@') {
256
-		$f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out';
256
+		$f = _DIR_TMP.$type.'.'.substr(md5($host.$port.$db), 0, 8).'.out';
257 257
 	} elseif ($db == '@test@') {
258 258
 		$db = '';
259 259
 	}
@@ -292,7 +292,7 @@  discard block
 block discarded – undo
292 292
 	// En cas d'indisponibilite du serveur, eviter de le bombarder
293 293
 	if ($f) {
294 294
 		@touch($f);
295
-		spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type . '.' . _LOG_HS);
295
+		spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type.'.'._LOG_HS);
296 296
 	}
297 297
 	return null;
298 298
 }
@@ -390,11 +390,11 @@  discard block
 block discarded – undo
390 390
 	} elseif (is_array($a)) {
391 391
 		return join(',', array_map('_q', $a));
392 392
 	} elseif (is_scalar($a)) {
393
-		return ("'" . addslashes($a) . "'");
393
+		return ("'".addslashes($a)."'");
394 394
 	} elseif ($a === null) {
395 395
 		return "''";
396 396
 	}
397
-	throw new \RuntimeException('Can’t use _q with ' . gettype($a));
397
+	throw new \RuntimeException('Can’t use _q with '.gettype($a));
398 398
 }
399 399
 
400 400
 /**
@@ -445,7 +445,7 @@  discard block
 block discarded – undo
445 445
 				$next = reset($textes);
446 446
 				if (
447 447
 					strpos($next, "'") === 0
448
-					and strpos($query_echappees, $part . $next, $currentpos) === $nextpos
448
+					and strpos($query_echappees, $part.$next, $currentpos) === $nextpos
449 449
 				) {
450 450
 					$part .= array_shift($textes);
451 451
 				}
@@ -457,7 +457,7 @@  discard block
 block discarded – undo
457 457
 			$parts[$k] = [
458 458
 				'texte' => $part,
459 459
 				'position' => $nextpos,
460
-				'placeholder' => '%' . $k . '$s',
460
+				'placeholder' => '%'.$k.'$s',
461 461
 			];
462 462
 			$currentpos = $nextpos + strlen($part);
463 463
 		}
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -448,8 +448,7 @@
 block discarded – undo
448 448
 					and strpos($query_echappees, $part . $next, $currentpos) === $nextpos
449 449
 				) {
450 450
 					$part .= array_shift($textes);
451
-				}
452
-				else {
451
+				} else {
453 452
 					break;
454 453
 				}
455 454
 			}
Please login to merge, or discard this patch.
Indentation   +315 added lines, -315 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\SQL
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 require_once _ROOT_RESTREINT . 'base/objets.php';
22 22
 
@@ -42,118 +42,118 @@  discard block
 block discarded – undo
42 42
  **/
43 43
 function spip_connect($serveur = '', $version = '') {
44 44
 
45
-	$serveur = !is_string($serveur) ? '' : strtolower($serveur);
46
-	$index = $serveur ?: 0;
47
-	if (!$version) {
48
-		$version = $GLOBALS['spip_sql_version'];
49
-	}
50
-	if (isset($GLOBALS['connexions'][$index][$version])) {
51
-		return $GLOBALS['connexions'][$index];
52
-	}
53
-
54
-	include_spip('base/abstract_sql');
55
-	$install = (_request('exec') == 'install');
56
-
57
-	// Premiere connexion ?
58
-	if (!($old = isset($GLOBALS['connexions'][$index]))) {
59
-		$f = (!preg_match('/^[\w\.]*$/', $serveur))
60
-			? '' // nom de serveur mal ecrit
61
-			: ($serveur ?
62
-				(_DIR_CONNECT . $serveur . '.php') // serveur externe
63
-				: (_FILE_CONNECT ?: ($install ? _FILE_CONNECT_TMP // init du serveur principal
64
-						: ''))); // installation pas faite
65
-
66
-		unset($GLOBALS['db_ok']);
67
-		unset($GLOBALS['spip_connect_version']);
68
-		if ($f) {
69
-			if (is_readable($f)) {
70
-				include($f);
71
-			} elseif ($serveur and !$install) {
72
-				// chercher une declaration de serveur dans le path
73
-				// qui pourra un jour servir a declarer des bases sqlite
74
-				// par des plugins. Et sert aussi aux boucles POUR.
75
-				find_in_path("$serveur.php", 'connect/', true);
76
-			}
77
-		}
78
-		if (!isset($GLOBALS['db_ok'])) {
79
-			// fera mieux la prochaine fois
80
-			if ($install) {
81
-				return false;
82
-			}
83
-			if ($f and is_readable($f)) {
84
-				spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE);
85
-			} else {
86
-				spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE);
87
-			}
88
-			spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS);
89
-
90
-			// ne plus reessayer si ce n'est pas l'install
91
-			return $GLOBALS['connexions'][$index] = false;
92
-		}
93
-		$GLOBALS['connexions'][$index] = $GLOBALS['db_ok'];
94
-	}
95
-	// si la connexion a deja ete tentee mais a echoue, le dire!
96
-	if (!$GLOBALS['connexions'][$index]) {
97
-		return false;
98
-	}
99
-
100
-	// la connexion a reussi ou etait deja faite.
101
-	// chargement de la version du jeu de fonctions
102
-	// si pas dans le fichier par defaut
103
-	$type = $GLOBALS['db_ok']['type'];
104
-	$jeu = 'spip_' . $type . '_functions_' . $version;
105
-	if (!isset($GLOBALS[$jeu])) {
106
-		if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) {
107
-			spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS);
108
-
109
-			// ne plus reessayer
110
-			return $GLOBALS['connexions'][$index][$version] = [];
111
-		}
112
-	}
113
-	$GLOBALS['connexions'][$index][$version] = $GLOBALS[$jeu];
114
-	if ($old) {
115
-		return $GLOBALS['connexions'][$index];
116
-	}
117
-
118
-	$GLOBALS['connexions'][$index]['spip_connect_version'] = $GLOBALS['spip_connect_version'] ?? 0;
119
-
120
-	// initialisation de l'alphabet utilise dans les connexions SQL
121
-	// si l'installation l'a determine.
122
-	// Celui du serveur principal l'impose aux serveurs secondaires
123
-	// s'ils le connaissent
124
-
125
-	if (!$serveur) {
126
-		$charset = spip_connect_main($GLOBALS[$jeu], $GLOBALS['db_ok']['charset']);
127
-		if (!$charset) {
128
-			unset($GLOBALS['connexions'][$index]);
129
-			spip_log('spip_connect: absence de charset', _LOG_AVERTISSEMENT);
130
-
131
-			return false;
132
-		}
133
-	} else {
134
-		if ($GLOBALS['db_ok']['charset']) {
135
-			$charset = $GLOBALS['db_ok']['charset'];
136
-		}
137
-		// spip_meta n'existe pas toujours dans la base
138
-		// C'est le cas d'un dump sqlite par exemple
139
-		elseif (
140
-			$GLOBALS['connexions'][$index]['spip_connect_version']
141
-			and sql_showtable('spip_meta', true, $serveur)
142
-			and $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur)
143
-		) {
144
-			$charset = $r;
145
-		} else {
146
-			$charset = -1;
147
-		}
148
-	}
149
-	if ($charset != -1) {
150
-		$f = $GLOBALS[$jeu]['set_charset'];
151
-		if (function_exists($f)) {
152
-			$f($charset, $serveur);
153
-		}
154
-	}
155
-
156
-	return $GLOBALS['connexions'][$index];
45
+    $serveur = !is_string($serveur) ? '' : strtolower($serveur);
46
+    $index = $serveur ?: 0;
47
+    if (!$version) {
48
+        $version = $GLOBALS['spip_sql_version'];
49
+    }
50
+    if (isset($GLOBALS['connexions'][$index][$version])) {
51
+        return $GLOBALS['connexions'][$index];
52
+    }
53
+
54
+    include_spip('base/abstract_sql');
55
+    $install = (_request('exec') == 'install');
56
+
57
+    // Premiere connexion ?
58
+    if (!($old = isset($GLOBALS['connexions'][$index]))) {
59
+        $f = (!preg_match('/^[\w\.]*$/', $serveur))
60
+            ? '' // nom de serveur mal ecrit
61
+            : ($serveur ?
62
+                (_DIR_CONNECT . $serveur . '.php') // serveur externe
63
+                : (_FILE_CONNECT ?: ($install ? _FILE_CONNECT_TMP // init du serveur principal
64
+                        : ''))); // installation pas faite
65
+
66
+        unset($GLOBALS['db_ok']);
67
+        unset($GLOBALS['spip_connect_version']);
68
+        if ($f) {
69
+            if (is_readable($f)) {
70
+                include($f);
71
+            } elseif ($serveur and !$install) {
72
+                // chercher une declaration de serveur dans le path
73
+                // qui pourra un jour servir a declarer des bases sqlite
74
+                // par des plugins. Et sert aussi aux boucles POUR.
75
+                find_in_path("$serveur.php", 'connect/', true);
76
+            }
77
+        }
78
+        if (!isset($GLOBALS['db_ok'])) {
79
+            // fera mieux la prochaine fois
80
+            if ($install) {
81
+                return false;
82
+            }
83
+            if ($f and is_readable($f)) {
84
+                spip_log("spip_connect: fichier de connexion '$f' OK.", _LOG_INFO_IMPORTANTE);
85
+            } else {
86
+                spip_log("spip_connect: fichier de connexion '$f' non trouve", _LOG_INFO_IMPORTANTE);
87
+            }
88
+            spip_log("spip_connect: echec connexion ou serveur $index mal defini dans '$f'.", _LOG_HS);
89
+
90
+            // ne plus reessayer si ce n'est pas l'install
91
+            return $GLOBALS['connexions'][$index] = false;
92
+        }
93
+        $GLOBALS['connexions'][$index] = $GLOBALS['db_ok'];
94
+    }
95
+    // si la connexion a deja ete tentee mais a echoue, le dire!
96
+    if (!$GLOBALS['connexions'][$index]) {
97
+        return false;
98
+    }
99
+
100
+    // la connexion a reussi ou etait deja faite.
101
+    // chargement de la version du jeu de fonctions
102
+    // si pas dans le fichier par defaut
103
+    $type = $GLOBALS['db_ok']['type'];
104
+    $jeu = 'spip_' . $type . '_functions_' . $version;
105
+    if (!isset($GLOBALS[$jeu])) {
106
+        if (!find_in_path($type . '_' . $version . '.php', 'req/', true)) {
107
+            spip_log("spip_connect: serveur $index version '$version' non defini pour '$type'", _LOG_HS);
108
+
109
+            // ne plus reessayer
110
+            return $GLOBALS['connexions'][$index][$version] = [];
111
+        }
112
+    }
113
+    $GLOBALS['connexions'][$index][$version] = $GLOBALS[$jeu];
114
+    if ($old) {
115
+        return $GLOBALS['connexions'][$index];
116
+    }
117
+
118
+    $GLOBALS['connexions'][$index]['spip_connect_version'] = $GLOBALS['spip_connect_version'] ?? 0;
119
+
120
+    // initialisation de l'alphabet utilise dans les connexions SQL
121
+    // si l'installation l'a determine.
122
+    // Celui du serveur principal l'impose aux serveurs secondaires
123
+    // s'ils le connaissent
124
+
125
+    if (!$serveur) {
126
+        $charset = spip_connect_main($GLOBALS[$jeu], $GLOBALS['db_ok']['charset']);
127
+        if (!$charset) {
128
+            unset($GLOBALS['connexions'][$index]);
129
+            spip_log('spip_connect: absence de charset', _LOG_AVERTISSEMENT);
130
+
131
+            return false;
132
+        }
133
+    } else {
134
+        if ($GLOBALS['db_ok']['charset']) {
135
+            $charset = $GLOBALS['db_ok']['charset'];
136
+        }
137
+        // spip_meta n'existe pas toujours dans la base
138
+        // C'est le cas d'un dump sqlite par exemple
139
+        elseif (
140
+            $GLOBALS['connexions'][$index]['spip_connect_version']
141
+            and sql_showtable('spip_meta', true, $serveur)
142
+            and $r = sql_getfetsel('valeur', 'spip_meta', "nom='charset_sql_connexion'", '', '', '', '', $serveur)
143
+        ) {
144
+            $charset = $r;
145
+        } else {
146
+            $charset = -1;
147
+        }
148
+    }
149
+    if ($charset != -1) {
150
+        $f = $GLOBALS[$jeu]['set_charset'];
151
+        if (function_exists($f)) {
152
+            $f($charset, $serveur);
153
+        }
154
+    }
155
+
156
+    return $GLOBALS['connexions'][$index];
157 157
 }
158 158
 
159 159
 /**
@@ -162,12 +162,12 @@  discard block
 block discarded – undo
162 162
  * @param string $serveur Nom du connecteur de bdd utilisé
163 163
  **/
164 164
 function spip_sql_erreur($serveur = '') {
165
-	$connexion = spip_connect($serveur);
166
-	$e = sql_errno($serveur);
167
-	$t = ($connexion['type'] ?? 'sql');
168
-	$m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim($connexion['last']);
169
-	$f = $t . $serveur;
170
-	spip_log($m, $f . '.' . _LOG_ERREUR);
165
+    $connexion = spip_connect($serveur);
166
+    $e = sql_errno($serveur);
167
+    $t = ($connexion['type'] ?? 'sql');
168
+    $m = "Erreur $e de $t: " . sql_error($serveur) . "\nin " . sql_error_backtrace() . "\n" . trim($connexion['last']);
169
+    $f = $t . $serveur;
170
+    spip_log($m, $f . '.' . _LOG_ERREUR);
171 171
 }
172 172
 
173 173
 /**
@@ -189,23 +189,23 @@  discard block
 block discarded – undo
189 189
  *     - array : description de la connexion, si l'instruction sql est indisponible pour cette connexion
190 190
  **/
191 191
 function spip_connect_sql($version, $ins = '', $serveur = '', $continue = false) {
192
-	$desc = spip_connect($serveur, $version);
193
-	if (
194
-		$desc
195
-		and $f = ($desc[$version][$ins] ?? '')
196
-		and function_exists($f)
197
-	) {
198
-		return $f;
199
-	}
200
-	if ($continue) {
201
-		return $desc;
202
-	}
203
-	if ($ins) {
204
-		spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR);
205
-	}
206
-	include_spip('inc/minipres');
207
-	echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]);
208
-	exit;
192
+    $desc = spip_connect($serveur, $version);
193
+    if (
194
+        $desc
195
+        and $f = ($desc[$version][$ins] ?? '')
196
+        and function_exists($f)
197
+    ) {
198
+        return $f;
199
+    }
200
+    if ($continue) {
201
+        return $desc;
202
+    }
203
+    if ($ins) {
204
+        spip_log("Le serveur '$serveur' version $version n'a pas '$ins'", _LOG_ERREUR);
205
+    }
206
+    include_spip('inc/minipres');
207
+    echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), ['status' => 503]);
208
+    exit;
209 209
 }
210 210
 
211 211
 /**
@@ -231,70 +231,70 @@  discard block
 block discarded – undo
231 231
  * @return array|null Description de la connexion
232 232
  */
233 233
 function spip_connect_db(
234
-	$host,
235
-	$port,
236
-	$login,
237
-	$pass,
238
-	$db = '',
239
-	$type = 'mysql',
240
-	$prefixe = '',
241
-	$auth = '',
242
-	$charset = ''
234
+    $host,
235
+    $port,
236
+    $login,
237
+    $pass,
238
+    $db = '',
239
+    $type = 'mysql',
240
+    $prefixe = '',
241
+    $auth = '',
242
+    $charset = ''
243 243
 ) {
244
-	// temps avant nouvelle tentative de connexion
245
-	// suite a une connection echouee
246
-	if (!defined('_CONNECT_RETRY_DELAY')) {
247
-		define('_CONNECT_RETRY_DELAY', 30);
248
-	}
249
-
250
-	$f = '';
251
-	// un fichier de identifiant par combinaison (type,host,port,db)
252
-	// pour ne pas declarer tout indisponible d'un coup
253
-	// si en cours d'installation ou si db=@test@ on ne pose rien
254
-	// car c'est un test de connexion
255
-	if (!defined('_ECRIRE_INSTALL') and $db !== '@test@') {
256
-		$f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out';
257
-	} elseif ($db == '@test@') {
258
-		$db = '';
259
-	}
260
-
261
-	if (
262
-		$f
263
-		and @file_exists($f)
264
-		and (time() - @filemtime($f) < _CONNECT_RETRY_DELAY)
265
-	) {
266
-		spip_log("Echec : $f recent. Pas de tentative de connexion", _LOG_HS);
267
-
268
-		return null;
269
-	}
270
-
271
-	if (!$prefixe) {
272
-		$prefixe = $GLOBALS['table_prefix'] ?? $db;
273
-	}
274
-	$h = charger_fonction($type, 'req', true);
275
-	if (!$h) {
276
-		spip_log("les requetes $type ne sont pas fournies", _LOG_HS);
277
-
278
-		return null;
279
-	}
280
-	if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) {
281
-		if (!is_array($auth)) {
282
-			// compatibilite version 0.7 initiale
283
-			$g['ldap'] = $auth;
284
-			$auth = ['ldap' => $auth];
285
-		}
286
-		$g['authentification'] = $auth;
287
-		$g['type'] = $type;
288
-		$g['charset'] = $charset;
289
-
290
-		return $GLOBALS['db_ok'] = $g;
291
-	}
292
-	// En cas d'indisponibilite du serveur, eviter de le bombarder
293
-	if ($f) {
294
-		@touch($f);
295
-		spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type . '.' . _LOG_HS);
296
-	}
297
-	return null;
244
+    // temps avant nouvelle tentative de connexion
245
+    // suite a une connection echouee
246
+    if (!defined('_CONNECT_RETRY_DELAY')) {
247
+        define('_CONNECT_RETRY_DELAY', 30);
248
+    }
249
+
250
+    $f = '';
251
+    // un fichier de identifiant par combinaison (type,host,port,db)
252
+    // pour ne pas declarer tout indisponible d'un coup
253
+    // si en cours d'installation ou si db=@test@ on ne pose rien
254
+    // car c'est un test de connexion
255
+    if (!defined('_ECRIRE_INSTALL') and $db !== '@test@') {
256
+        $f = _DIR_TMP . $type . '.' . substr(md5($host . $port . $db), 0, 8) . '.out';
257
+    } elseif ($db == '@test@') {
258
+        $db = '';
259
+    }
260
+
261
+    if (
262
+        $f
263
+        and @file_exists($f)
264
+        and (time() - @filemtime($f) < _CONNECT_RETRY_DELAY)
265
+    ) {
266
+        spip_log("Echec : $f recent. Pas de tentative de connexion", _LOG_HS);
267
+
268
+        return null;
269
+    }
270
+
271
+    if (!$prefixe) {
272
+        $prefixe = $GLOBALS['table_prefix'] ?? $db;
273
+    }
274
+    $h = charger_fonction($type, 'req', true);
275
+    if (!$h) {
276
+        spip_log("les requetes $type ne sont pas fournies", _LOG_HS);
277
+
278
+        return null;
279
+    }
280
+    if ($g = $h($host, $port, $login, $pass, $db, $prefixe)) {
281
+        if (!is_array($auth)) {
282
+            // compatibilite version 0.7 initiale
283
+            $g['ldap'] = $auth;
284
+            $auth = ['ldap' => $auth];
285
+        }
286
+        $g['authentification'] = $auth;
287
+        $g['type'] = $type;
288
+        $g['charset'] = $charset;
289
+
290
+        return $GLOBALS['db_ok'] = $g;
291
+    }
292
+    // En cas d'indisponibilite du serveur, eviter de le bombarder
293
+    if ($f) {
294
+        @touch($f);
295
+        spip_log("Echec connexion serveur $type : host[$host] port[$port] login[$login] base[$db]", $type . '.' . _LOG_HS);
296
+    }
297
+    return null;
298 298
 }
299 299
 
300 300
 
@@ -326,32 +326,32 @@  discard block
 block discarded – undo
326 326
  *     - nom du charset sinon
327 327
  **/
328 328
 function spip_connect_main($connexion, $charset_sql_connexion = '') {
329
-	if ($GLOBALS['spip_connect_version'] < 0.1 and _DIR_RESTREINT) {
330
-		include_spip('inc/headers');
331
-		redirige_url_ecrire('upgrade', 'reinstall=oui');
332
-	}
333
-
334
-	if (!($f = $connexion['select'])) {
335
-		return false;
336
-	}
337
-	// si le charset est fourni, l'utiliser
338
-	if ($charset_sql_connexion) {
339
-		return $charset_sql_connexion;
340
-	}
341
-	// sinon on regarde la table spip_meta
342
-	// en cas d'erreur select retourne la requette (is_string=true donc)
343
-	if (
344
-		!$r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'")
345
-		or is_string($r)
346
-	) {
347
-		return false;
348
-	}
349
-	if (!($f = $connexion['fetch'])) {
350
-		return false;
351
-	}
352
-	$r = $f($r);
353
-
354
-	return (isset($r['valeur']) && $r['valeur']) ? $r['valeur'] : -1;
329
+    if ($GLOBALS['spip_connect_version'] < 0.1 and _DIR_RESTREINT) {
330
+        include_spip('inc/headers');
331
+        redirige_url_ecrire('upgrade', 'reinstall=oui');
332
+    }
333
+
334
+    if (!($f = $connexion['select'])) {
335
+        return false;
336
+    }
337
+    // si le charset est fourni, l'utiliser
338
+    if ($charset_sql_connexion) {
339
+        return $charset_sql_connexion;
340
+    }
341
+    // sinon on regarde la table spip_meta
342
+    // en cas d'erreur select retourne la requette (is_string=true donc)
343
+    if (
344
+        !$r = $f('valeur', 'spip_meta', "nom='charset_sql_connexion'")
345
+        or is_string($r)
346
+    ) {
347
+        return false;
348
+    }
349
+    if (!($f = $connexion['fetch'])) {
350
+        return false;
351
+    }
352
+    $r = $f($r);
353
+
354
+    return (isset($r['valeur']) && $r['valeur']) ? $r['valeur'] : -1;
355 355
 }
356 356
 
357 357
 /**
@@ -367,8 +367,8 @@  discard block
 block discarded – undo
367 367
  * @return array
368 368
  */
369 369
 function spip_connect_ldap($serveur = '') {
370
-	include_spip('auth/ldap');
371
-	return auth_ldap_connect($serveur);
370
+    include_spip('auth/ldap');
371
+    return auth_ldap_connect($serveur);
372 372
 }
373 373
 
374 374
 /**
@@ -384,16 +384,16 @@  discard block
 block discarded – undo
384 384
  * @return string Valeur échappée.
385 385
  **/
386 386
 function _q($a): string {
387
-	if (is_numeric($a)) {
388
-		return strval($a);
389
-	} elseif (is_array($a)) {
390
-		return join(',', array_map('_q', $a));
391
-	} elseif (is_scalar($a)) {
392
-		return ("'" . addslashes($a) . "'");
393
-	} elseif ($a === null) {
394
-		return "''";
395
-	}
396
-	throw new \RuntimeException('Can’t use _q with ' . gettype($a));
387
+    if (is_numeric($a)) {
388
+        return strval($a);
389
+    } elseif (is_array($a)) {
390
+        return join(',', array_map('_q', $a));
391
+    } elseif (is_scalar($a)) {
392
+        return ("'" . addslashes($a) . "'");
393
+    } elseif ($a === null) {
394
+        return "''";
395
+    }
396
+    throw new \RuntimeException('Can’t use _q with ' . gettype($a));
397 397
 }
398 398
 
399 399
 /**
@@ -409,75 +409,75 @@  discard block
 block discarded – undo
409 409
  * @return array
410 410
  */
411 411
 function query_echappe_textes($query, $uniqid = null) {
412
-	static $codeEchappements = null;
413
-	if (is_null($codeEchappements) or $uniqid) {
414
-		if (is_null($uniqid)) {
415
-			$uniqid = uniqid();
416
-		}
417
-		$uniqid = substr(md5($uniqid), 0, 4);
418
-		$codeEchappements = ['\\\\' => "\x1@#{$uniqid}#@\x1", "\\'" => "\x2@#{$uniqid}#@\x2", '\\"' => "\x3@#{$uniqid}#@\x3", '%' => "\x4@#{$uniqid}#@\x4"];
419
-	}
420
-	if ($query === null) {
421
-		return $codeEchappements;
422
-	}
423
-
424
-	// si la query contient deja des codes d'echappement on va s'emmeler les pinceaux et donc on ne touche a rien
425
-	// ce n'est pas un cas legitime
426
-	foreach ($codeEchappements as $codeEchappement) {
427
-		if (strpos($query, (string) $codeEchappement) !== false) {
428
-			return [$query, []];
429
-		}
430
-	}
431
-
432
-	$query_echappees = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
433
-	if (preg_match_all("/('[^']*')|(\"[^\"]*\")/S", $query_echappees, $textes)) {
434
-		$textes = reset($textes);
435
-
436
-		$parts = [];
437
-		$currentpos = 0;
438
-		$k = 0;
439
-		while (count($textes)) {
440
-			$part = array_shift($textes);
441
-			$nextpos = strpos($query_echappees, $part, $currentpos);
442
-			// si besoin recoller ensemble les doubles '' de sqlite (echappement des ')
443
-			while (count($textes) and substr($part, -1) === "'") {
444
-				$next = reset($textes);
445
-				if (
446
-					strpos($next, "'") === 0
447
-					and strpos($query_echappees, $part . $next, $currentpos) === $nextpos
448
-				) {
449
-					$part .= array_shift($textes);
450
-				}
451
-				else {
452
-					break;
453
-				}
454
-			}
455
-			$k++;
456
-			$parts[$k] = [
457
-				'texte' => $part,
458
-				'position' => $nextpos,
459
-				'placeholder' => '%' . $k . '$s',
460
-			];
461
-			$currentpos = $nextpos + strlen($part);
462
-		}
463
-
464
-		// et on replace les parts une par une en commencant par la fin
465
-		while ($k > 0) {
466
-			$query_echappees = substr_replace($query_echappees, $parts[$k]['placeholder'], $parts[$k]['position'], strlen($parts[$k]['texte']));
467
-			$k--;
468
-		}
469
-		$textes = array_column($parts, 'texte');
470
-	} else {
471
-		$textes = [];
472
-	}
473
-
474
-	// si il reste des quotes simples ou doubles, c'est qu'on s'est emmelle les pinceaux
475
-	// dans le doute on ne touche a rien
476
-	if (strpbrk($query_echappees, "'\"") !== false) {
477
-		return [$query, []];
478
-	}
479
-
480
-	return [$query_echappees, $textes];
412
+    static $codeEchappements = null;
413
+    if (is_null($codeEchappements) or $uniqid) {
414
+        if (is_null($uniqid)) {
415
+            $uniqid = uniqid();
416
+        }
417
+        $uniqid = substr(md5($uniqid), 0, 4);
418
+        $codeEchappements = ['\\\\' => "\x1@#{$uniqid}#@\x1", "\\'" => "\x2@#{$uniqid}#@\x2", '\\"' => "\x3@#{$uniqid}#@\x3", '%' => "\x4@#{$uniqid}#@\x4"];
419
+    }
420
+    if ($query === null) {
421
+        return $codeEchappements;
422
+    }
423
+
424
+    // si la query contient deja des codes d'echappement on va s'emmeler les pinceaux et donc on ne touche a rien
425
+    // ce n'est pas un cas legitime
426
+    foreach ($codeEchappements as $codeEchappement) {
427
+        if (strpos($query, (string) $codeEchappement) !== false) {
428
+            return [$query, []];
429
+        }
430
+    }
431
+
432
+    $query_echappees = str_replace(array_keys($codeEchappements), array_values($codeEchappements), $query);
433
+    if (preg_match_all("/('[^']*')|(\"[^\"]*\")/S", $query_echappees, $textes)) {
434
+        $textes = reset($textes);
435
+
436
+        $parts = [];
437
+        $currentpos = 0;
438
+        $k = 0;
439
+        while (count($textes)) {
440
+            $part = array_shift($textes);
441
+            $nextpos = strpos($query_echappees, $part, $currentpos);
442
+            // si besoin recoller ensemble les doubles '' de sqlite (echappement des ')
443
+            while (count($textes) and substr($part, -1) === "'") {
444
+                $next = reset($textes);
445
+                if (
446
+                    strpos($next, "'") === 0
447
+                    and strpos($query_echappees, $part . $next, $currentpos) === $nextpos
448
+                ) {
449
+                    $part .= array_shift($textes);
450
+                }
451
+                else {
452
+                    break;
453
+                }
454
+            }
455
+            $k++;
456
+            $parts[$k] = [
457
+                'texte' => $part,
458
+                'position' => $nextpos,
459
+                'placeholder' => '%' . $k . '$s',
460
+            ];
461
+            $currentpos = $nextpos + strlen($part);
462
+        }
463
+
464
+        // et on replace les parts une par une en commencant par la fin
465
+        while ($k > 0) {
466
+            $query_echappees = substr_replace($query_echappees, $parts[$k]['placeholder'], $parts[$k]['position'], strlen($parts[$k]['texte']));
467
+            $k--;
468
+        }
469
+        $textes = array_column($parts, 'texte');
470
+    } else {
471
+        $textes = [];
472
+    }
473
+
474
+    // si il reste des quotes simples ou doubles, c'est qu'on s'est emmelle les pinceaux
475
+    // dans le doute on ne touche a rien
476
+    if (strpbrk($query_echappees, "'\"") !== false) {
477
+        return [$query, []];
478
+    }
479
+
480
+    return [$query_echappees, $textes];
481 481
 }
482 482
 
483 483
 /**
@@ -491,16 +491,16 @@  discard block
 block discarded – undo
491 491
  * @return string
492 492
  */
493 493
 function query_reinjecte_textes($query, $textes) {
494
-	// recuperer les codes echappements
495
-	$codeEchappements = query_echappe_textes(null);
494
+    // recuperer les codes echappements
495
+    $codeEchappements = query_echappe_textes(null);
496 496
 
497
-	if (!empty($textes)) {
498
-		$query = sprintf($query, ...$textes);
499
-	}
497
+    if (!empty($textes)) {
498
+        $query = sprintf($query, ...$textes);
499
+    }
500 500
 
501
-	$query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query);
501
+    $query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query);
502 502
 
503
-	return $query;
503
+    return $query;
504 504
 }
505 505
 
506 506
 
@@ -519,7 +519,7 @@  discard block
 block discarded – undo
519 519
  **/
520 520
 function spip_query($query, $serveur = '') {
521 521
 
522
-	$f = spip_connect_sql($GLOBALS['spip_sql_version'], 'query', $serveur, true);
522
+    $f = spip_connect_sql($GLOBALS['spip_sql_version'], 'query', $serveur, true);
523 523
 
524
-	return function_exists($f) ? $f($query, $serveur) : false;
524
+    return function_exists($f) ? $f($query, $serveur) : false;
525 525
 }
Please login to merge, or discard this patch.
ecrire/lang/spip_en.php 1 patch
Indentation   +669 added lines, -669 removed lines patch added patch discarded remove patch
@@ -4,248 +4,248 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'access_interface_graphique' => 'Back to the full graphic interface',
14
-	'access_mode_texte' => 'Show the simplified text interface',
15
-	'admin_debug' => 'debug',
16
-	'admin_modifier_article' => 'Modify this article',
17
-	'admin_modifier_auteur' => 'Modify this author',
18
-	'admin_modifier_breve' => 'Modify this news item',
19
-	'admin_modifier_mot' => 'Modify this keyword',
20
-	'admin_modifier_rubrique' => 'Modify this section',
21
-	'admin_recalculer' => 'Re-process this page',
22
-	'afficher_calendrier' => 'Show the calendar',
23
-	'afficher_trad' => 'show translations',
24
-	'alerte_maj_impossible' => '<b>Warning!</b> Failed to update the SQL database to version @version@. This may be due to a permissions problem on the database. Please contact your ISP.',
25
-	'alerte_modif_info_concourante' => 'WARNING: This information has been modified elsewhere. The current value is :',
26
-	'analyse_xml' => 'XML parsing',
27
-	'annuler' => 'Cancel',
28
-	'antispam_champ_vide' => 'Please leave this field empty:',
29
-	'articles_recents' => 'Most recent articles',
30
-	'attention_champ_mini_nb_caractères' => 'Warning! At least @nb@ characters',
31
-	'avis_1_erreur_saisie' => 'Your entry contains an error, please check your information.',
32
-	'avis_archive_incorrect' => 'archive is not a valid SPIP file',
33
-	'avis_archive_invalide' => 'archive file is not valid',
34
-	'avis_attention' => 'CAUTION!',
35
-	'avis_champ_incorrect_type_objet' => 'Invalid field name @name@ for object of type @type@',
36
-	'avis_colonne_inexistante' => 'Column @col@ does not exist',
37
-	'avis_erreur' => 'Error: see below',
38
-	'avis_erreur_connexion' => 'Connection error',
39
-	'avis_erreur_cookie' => 'cookie problem',
40
-	'avis_erreur_fonction_contexte' => 'Programming error. This function cannot be called in this context.',
41
-	'avis_erreur_mysql' => 'SQL error',
42
-	'avis_erreur_sauvegarde' => 'Error in backup (@type@ @id_objet@)!',
43
-	'avis_erreur_visiteur' => 'Problem entering the private area',
44
-	'avis_nb_erreurs_saisie' => 'Your entry contains @nb@ errors, please check your information.',
12
+    // A
13
+    'access_interface_graphique' => 'Back to the full graphic interface',
14
+    'access_mode_texte' => 'Show the simplified text interface',
15
+    'admin_debug' => 'debug',
16
+    'admin_modifier_article' => 'Modify this article',
17
+    'admin_modifier_auteur' => 'Modify this author',
18
+    'admin_modifier_breve' => 'Modify this news item',
19
+    'admin_modifier_mot' => 'Modify this keyword',
20
+    'admin_modifier_rubrique' => 'Modify this section',
21
+    'admin_recalculer' => 'Re-process this page',
22
+    'afficher_calendrier' => 'Show the calendar',
23
+    'afficher_trad' => 'show translations',
24
+    'alerte_maj_impossible' => '<b>Warning!</b> Failed to update the SQL database to version @version@. This may be due to a permissions problem on the database. Please contact your ISP.',
25
+    'alerte_modif_info_concourante' => 'WARNING: This information has been modified elsewhere. The current value is :',
26
+    'analyse_xml' => 'XML parsing',
27
+    'annuler' => 'Cancel',
28
+    'antispam_champ_vide' => 'Please leave this field empty:',
29
+    'articles_recents' => 'Most recent articles',
30
+    'attention_champ_mini_nb_caractères' => 'Warning! At least @nb@ characters',
31
+    'avis_1_erreur_saisie' => 'Your entry contains an error, please check your information.',
32
+    'avis_archive_incorrect' => 'archive is not a valid SPIP file',
33
+    'avis_archive_invalide' => 'archive file is not valid',
34
+    'avis_attention' => 'CAUTION!',
35
+    'avis_champ_incorrect_type_objet' => 'Invalid field name @name@ for object of type @type@',
36
+    'avis_colonne_inexistante' => 'Column @col@ does not exist',
37
+    'avis_erreur' => 'Error: see below',
38
+    'avis_erreur_connexion' => 'Connection error',
39
+    'avis_erreur_cookie' => 'cookie problem',
40
+    'avis_erreur_fonction_contexte' => 'Programming error. This function cannot be called in this context.',
41
+    'avis_erreur_mysql' => 'SQL error',
42
+    'avis_erreur_sauvegarde' => 'Error in backup (@type@ @id_objet@)!',
43
+    'avis_erreur_visiteur' => 'Problem entering the private area',
44
+    'avis_nb_erreurs_saisie' => 'Your entry contains @nb@ errors, please check your information.',
45 45
 
46
-	// B
47
-	'barre_a_accent_grave' => 'Insert a capital A with grave accent',
48
-	'barre_aide' => 'Use the typographic short cuts to refine your layout',
49
-	'barre_e_accent_aigu' => 'Insert a capital E with acute accent',
50
-	'barre_eo' => 'Insert an oe-ligature',
51
-	'barre_eo_maj' => 'Insert a capital EO-ligature',
52
-	'barre_euro' => 'Insert a € symbol',
53
-	'barre_gras' => 'Put in {{bold type}}',
54
-	'barre_guillemets' => 'Place between "double quotes"',
55
-	'barre_guillemets_simples' => 'Place between ‘single quotes’',
56
-	'barre_intertitre' => 'Turn into a {{{subheading}}}',
57
-	'barre_italic' => 'Put in {italics}',
58
-	'barre_lien' => 'Turn into a [hyperlink->http://...]',
59
-	'barre_lien_input' => 'Please enter the link address. You may use either an external URL (http://www.mysite.com) or reference another article on this site by simplying entering its number.',
60
-	'barre_note' => 'Turn into a [[Footnote]]',
61
-	'barre_paragraphe' => 'Create a paragraph',
62
-	'barre_quote' => '<quote>Quote a message</quote>',
63
-	'bouton_changer' => 'Change',
64
-	'bouton_chercher' => 'Search',
65
-	'bouton_choisir' => 'Select',
66
-	'bouton_deplacer' => 'Move',
67
-	'bouton_download' => 'Download',
68
-	'bouton_enregistrer' => 'Save',
69
-	'bouton_radio_desactiver_messagerie_interne' => 'Disable internal messaging',
70
-	'bouton_radio_envoi_annonces' => 'Send editorial announcements',
71
-	'bouton_radio_non_envoi_annonces' => 'Do not send any announcements',
72
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Do not send latest news list',
73
-	'bouton_recharger_page' => 'reload this page',
74
-	'bouton_telecharger' => 'Upload',
75
-	'bouton_upload' => 'Upload',
76
-	'bouton_valider' => 'Submit',
46
+    // B
47
+    'barre_a_accent_grave' => 'Insert a capital A with grave accent',
48
+    'barre_aide' => 'Use the typographic short cuts to refine your layout',
49
+    'barre_e_accent_aigu' => 'Insert a capital E with acute accent',
50
+    'barre_eo' => 'Insert an oe-ligature',
51
+    'barre_eo_maj' => 'Insert a capital EO-ligature',
52
+    'barre_euro' => 'Insert a € symbol',
53
+    'barre_gras' => 'Put in {{bold type}}',
54
+    'barre_guillemets' => 'Place between "double quotes"',
55
+    'barre_guillemets_simples' => 'Place between ‘single quotes’',
56
+    'barre_intertitre' => 'Turn into a {{{subheading}}}',
57
+    'barre_italic' => 'Put in {italics}',
58
+    'barre_lien' => 'Turn into a [hyperlink->http://...]',
59
+    'barre_lien_input' => 'Please enter the link address. You may use either an external URL (http://www.mysite.com) or reference another article on this site by simplying entering its number.',
60
+    'barre_note' => 'Turn into a [[Footnote]]',
61
+    'barre_paragraphe' => 'Create a paragraph',
62
+    'barre_quote' => '<quote>Quote a message</quote>',
63
+    'bouton_changer' => 'Change',
64
+    'bouton_chercher' => 'Search',
65
+    'bouton_choisir' => 'Select',
66
+    'bouton_deplacer' => 'Move',
67
+    'bouton_download' => 'Download',
68
+    'bouton_enregistrer' => 'Save',
69
+    'bouton_radio_desactiver_messagerie_interne' => 'Disable internal messaging',
70
+    'bouton_radio_envoi_annonces' => 'Send editorial announcements',
71
+    'bouton_radio_non_envoi_annonces' => 'Do not send any announcements',
72
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Do not send latest news list',
73
+    'bouton_recharger_page' => 'reload this page',
74
+    'bouton_telecharger' => 'Upload',
75
+    'bouton_upload' => 'Upload',
76
+    'bouton_valider' => 'Submit',
77 77
 
78
-	// C
79
-	'cal_apresmidi' => 'afternoon (p.m.)',
80
-	'cal_jour_entier' => 'entire day',
81
-	'cal_matin' => 'morning (a.m.)',
82
-	'cal_par_jour' => 'daily calendar',
83
-	'cal_par_mois' => 'monthly calendar',
84
-	'cal_par_semaine' => 'weekly calendar',
85
-	'choix_couleur_interface' => 'colour',
86
-	'choix_interface' => 'choice of interface',
87
-	'colonne' => 'Column',
88
-	'confirm_changer_statut' => 'Warning: You are about to change this article’s status. Do you wish to continue?',
89
-	'correcte' => 'correct',
78
+    // C
79
+    'cal_apresmidi' => 'afternoon (p.m.)',
80
+    'cal_jour_entier' => 'entire day',
81
+    'cal_matin' => 'morning (a.m.)',
82
+    'cal_par_jour' => 'daily calendar',
83
+    'cal_par_mois' => 'monthly calendar',
84
+    'cal_par_semaine' => 'weekly calendar',
85
+    'choix_couleur_interface' => 'colour',
86
+    'choix_interface' => 'choice of interface',
87
+    'colonne' => 'Column',
88
+    'confirm_changer_statut' => 'Warning: You are about to change this article’s status. Do you wish to continue?',
89
+    'correcte' => 'correct',
90 90
 
91
-	// D
92
-	'date_aujourdhui' => 'today',
93
-	'date_avant_jc' => 'B.C.',
94
-	'date_dans' => 'in @delai@',
95
-	'date_de_mois_1' => '@j@ @nommois@',
96
-	'date_de_mois_10' => '@j@ @nommois@',
97
-	'date_de_mois_11' => '@j@ @nommois@',
98
-	'date_de_mois_12' => '@j@ @nommois@',
99
-	'date_de_mois_2' => '@j@ @nommois@',
100
-	'date_de_mois_3' => '@j@ @nommois@',
101
-	'date_de_mois_4' => '@j@ @nommois@',
102
-	'date_de_mois_5' => '@j@ @nommois@',
103
-	'date_de_mois_6' => '@j@ @nommois@',
104
-	'date_de_mois_7' => '@j@ @nommois@',
105
-	'date_de_mois_8' => '@j@ @nommois@',
106
-	'date_de_mois_9' => '@j@ @nommois@',
107
-	'date_demain' => 'tomorrow',
108
-	'date_fmt_heures_minutes' => '@h@:@m@',
109
-	'date_fmt_heures_minutes_court' => '@h@:@m@',
110
-	'date_fmt_jour' => '@nomjour@ @jour@',
111
-	'date_fmt_jour_heure' => '@jour@ at @heure@',
112
-	'date_fmt_jour_heure_debut_fin' => '@jour@ from @heure_debut@ to @heure_fin@',
113
-	'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ from @heure_debut@@dtabbr@ to @dtend@@heure_fin@@dtabbr@',
114
-	'date_fmt_jour_mois' => '@jourmois@',
115
-	'date_fmt_jour_mois_annee' => '@jourmois@ @annee@',
116
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
117
-	'date_fmt_nomjour' => '@nomjour@ @date@',
118
-	'date_fmt_nomjour_date' => 'on @nomjour@ @date@',
119
-	'date_fmt_periode' => 'From @date_debut@ to @date_fin@',
120
-	'date_fmt_periode_abbr' => 'From @dtart@@date_debut@@dtabbr@ to @dtend@@date_fin@@dtabbr@',
121
-	'date_fmt_periode_from' => 'From',
122
-	'date_fmt_periode_to' => 'to',
123
-	'date_fmt_saison_annee' => '@saison@ @annee@',
124
-	'date_heures' => 'hours',
125
-	'date_hier' => 'yesterday',
126
-	'date_il_y_a' => '@delai@ ago',
127
-	'date_jnum1' => '1',
128
-	'date_jnum10' => '10',
129
-	'date_jnum11' => '11',
130
-	'date_jnum12' => '12',
131
-	'date_jnum13' => '13',
132
-	'date_jnum14' => '14',
133
-	'date_jnum15' => '15',
134
-	'date_jnum16' => '16',
135
-	'date_jnum17' => '17',
136
-	'date_jnum18' => '18',
137
-	'date_jnum19' => '19',
138
-	'date_jnum2' => '2',
139
-	'date_jnum20' => '20',
140
-	'date_jnum21' => '21',
141
-	'date_jnum22' => '22',
142
-	'date_jnum23' => '23',
143
-	'date_jnum24' => '24',
144
-	'date_jnum25' => '25',
145
-	'date_jnum26' => '26',
146
-	'date_jnum27' => '27',
147
-	'date_jnum28' => '28',
148
-	'date_jnum29' => '29',
149
-	'date_jnum3' => '3',
150
-	'date_jnum30' => '30',
151
-	'date_jnum31' => '31',
152
-	'date_jnum4' => '4',
153
-	'date_jnum5' => '5',
154
-	'date_jnum6' => '6',
155
-	'date_jnum7' => '7',
156
-	'date_jnum8' => '8',
157
-	'date_jnum9' => '9',
158
-	'date_jour_1' => 'Sunday',
159
-	'date_jour_1_abbr' => 'Sun.',
160
-	'date_jour_1_initiale' => 'S.',
161
-	'date_jour_2' => 'Monday',
162
-	'date_jour_2_abbr' => 'Mon.',
163
-	'date_jour_2_initiale' => 'M.',
164
-	'date_jour_3' => 'Tuesday',
165
-	'date_jour_3_abbr' => 'Tue.',
166
-	'date_jour_3_initiale' => 'T.',
167
-	'date_jour_4' => 'Wednesday',
168
-	'date_jour_4_abbr' => 'Wed.',
169
-	'date_jour_4_initiale' => 'W.',
170
-	'date_jour_5' => 'Thursday',
171
-	'date_jour_5_abbr' => 'Thu.',
172
-	'date_jour_5_initiale' => 'T.',
173
-	'date_jour_6' => 'Friday',
174
-	'date_jour_6_abbr' => 'Fri.',
175
-	'date_jour_6_initiale' => 'F.',
176
-	'date_jour_7' => 'Saturday',
177
-	'date_jour_7_abbr' => 'Sat.',
178
-	'date_jour_7_initiale' => 'S.',
179
-	'date_jours' => 'days',
180
-	'date_minutes' => 'minutes',
181
-	'date_mois' => 'months',
182
-	'date_mois_1' => 'January',
183
-	'date_mois_10' => 'October',
184
-	'date_mois_10_abbr' => 'Oct',
185
-	'date_mois_11' => 'November',
186
-	'date_mois_11_abbr' => 'Nov',
187
-	'date_mois_12' => 'December',
188
-	'date_mois_12_abbr' => 'Dec',
189
-	'date_mois_1_abbr' => 'Jan',
190
-	'date_mois_2' => 'February',
191
-	'date_mois_2_abbr' => 'Feb',
192
-	'date_mois_3' => 'March',
193
-	'date_mois_3_abbr' => 'Mar',
194
-	'date_mois_4' => 'April',
195
-	'date_mois_4_abbr' => 'Apr',
196
-	'date_mois_5' => 'May',
197
-	'date_mois_5_abbr' => 'May',
198
-	'date_mois_6' => 'June',
199
-	'date_mois_6_abbr' => 'Jun',
200
-	'date_mois_7' => 'July',
201
-	'date_mois_7_abbr' => 'Jul',
202
-	'date_mois_8' => 'August',
203
-	'date_mois_8_abbr' => 'Aug',
204
-	'date_mois_9' => 'September',
205
-	'date_mois_9_abbr' => 'Sep',
206
-	'date_saison_1' => 'winter',
207
-	'date_saison_2' => 'spring',
208
-	'date_saison_3' => 'summer',
209
-	'date_saison_4' => 'autumn',
210
-	'date_secondes' => 'seconds',
211
-	'date_semaines' => 'weeks',
212
-	'date_un_mois' => 'month',
213
-	'date_une_heure' => 'hour',
214
-	'date_une_minute' => 'minute',
215
-	'date_une_seconde' => 'second',
216
-	'date_une_semaine' => 'week',
217
-	'dirs_commencer' => ' in order to start installation for real',
218
-	'dirs_preliminaire' => 'Preliminary: <b>Setting up access permissions</b>',
219
-	'dirs_probleme_droits' => 'Problem with access permissions',
220
-	'dirs_repertoires_absents' => '<p><b>The following directories were not found: </b></p><ul>@bad_dirs@.</ul>
91
+    // D
92
+    'date_aujourdhui' => 'today',
93
+    'date_avant_jc' => 'B.C.',
94
+    'date_dans' => 'in @delai@',
95
+    'date_de_mois_1' => '@j@ @nommois@',
96
+    'date_de_mois_10' => '@j@ @nommois@',
97
+    'date_de_mois_11' => '@j@ @nommois@',
98
+    'date_de_mois_12' => '@j@ @nommois@',
99
+    'date_de_mois_2' => '@j@ @nommois@',
100
+    'date_de_mois_3' => '@j@ @nommois@',
101
+    'date_de_mois_4' => '@j@ @nommois@',
102
+    'date_de_mois_5' => '@j@ @nommois@',
103
+    'date_de_mois_6' => '@j@ @nommois@',
104
+    'date_de_mois_7' => '@j@ @nommois@',
105
+    'date_de_mois_8' => '@j@ @nommois@',
106
+    'date_de_mois_9' => '@j@ @nommois@',
107
+    'date_demain' => 'tomorrow',
108
+    'date_fmt_heures_minutes' => '@h@:@m@',
109
+    'date_fmt_heures_minutes_court' => '@h@:@m@',
110
+    'date_fmt_jour' => '@nomjour@ @jour@',
111
+    'date_fmt_jour_heure' => '@jour@ at @heure@',
112
+    'date_fmt_jour_heure_debut_fin' => '@jour@ from @heure_debut@ to @heure_fin@',
113
+    'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ from @heure_debut@@dtabbr@ to @dtend@@heure_fin@@dtabbr@',
114
+    'date_fmt_jour_mois' => '@jourmois@',
115
+    'date_fmt_jour_mois_annee' => '@jourmois@ @annee@',
116
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
117
+    'date_fmt_nomjour' => '@nomjour@ @date@',
118
+    'date_fmt_nomjour_date' => 'on @nomjour@ @date@',
119
+    'date_fmt_periode' => 'From @date_debut@ to @date_fin@',
120
+    'date_fmt_periode_abbr' => 'From @dtart@@date_debut@@dtabbr@ to @dtend@@date_fin@@dtabbr@',
121
+    'date_fmt_periode_from' => 'From',
122
+    'date_fmt_periode_to' => 'to',
123
+    'date_fmt_saison_annee' => '@saison@ @annee@',
124
+    'date_heures' => 'hours',
125
+    'date_hier' => 'yesterday',
126
+    'date_il_y_a' => '@delai@ ago',
127
+    'date_jnum1' => '1',
128
+    'date_jnum10' => '10',
129
+    'date_jnum11' => '11',
130
+    'date_jnum12' => '12',
131
+    'date_jnum13' => '13',
132
+    'date_jnum14' => '14',
133
+    'date_jnum15' => '15',
134
+    'date_jnum16' => '16',
135
+    'date_jnum17' => '17',
136
+    'date_jnum18' => '18',
137
+    'date_jnum19' => '19',
138
+    'date_jnum2' => '2',
139
+    'date_jnum20' => '20',
140
+    'date_jnum21' => '21',
141
+    'date_jnum22' => '22',
142
+    'date_jnum23' => '23',
143
+    'date_jnum24' => '24',
144
+    'date_jnum25' => '25',
145
+    'date_jnum26' => '26',
146
+    'date_jnum27' => '27',
147
+    'date_jnum28' => '28',
148
+    'date_jnum29' => '29',
149
+    'date_jnum3' => '3',
150
+    'date_jnum30' => '30',
151
+    'date_jnum31' => '31',
152
+    'date_jnum4' => '4',
153
+    'date_jnum5' => '5',
154
+    'date_jnum6' => '6',
155
+    'date_jnum7' => '7',
156
+    'date_jnum8' => '8',
157
+    'date_jnum9' => '9',
158
+    'date_jour_1' => 'Sunday',
159
+    'date_jour_1_abbr' => 'Sun.',
160
+    'date_jour_1_initiale' => 'S.',
161
+    'date_jour_2' => 'Monday',
162
+    'date_jour_2_abbr' => 'Mon.',
163
+    'date_jour_2_initiale' => 'M.',
164
+    'date_jour_3' => 'Tuesday',
165
+    'date_jour_3_abbr' => 'Tue.',
166
+    'date_jour_3_initiale' => 'T.',
167
+    'date_jour_4' => 'Wednesday',
168
+    'date_jour_4_abbr' => 'Wed.',
169
+    'date_jour_4_initiale' => 'W.',
170
+    'date_jour_5' => 'Thursday',
171
+    'date_jour_5_abbr' => 'Thu.',
172
+    'date_jour_5_initiale' => 'T.',
173
+    'date_jour_6' => 'Friday',
174
+    'date_jour_6_abbr' => 'Fri.',
175
+    'date_jour_6_initiale' => 'F.',
176
+    'date_jour_7' => 'Saturday',
177
+    'date_jour_7_abbr' => 'Sat.',
178
+    'date_jour_7_initiale' => 'S.',
179
+    'date_jours' => 'days',
180
+    'date_minutes' => 'minutes',
181
+    'date_mois' => 'months',
182
+    'date_mois_1' => 'January',
183
+    'date_mois_10' => 'October',
184
+    'date_mois_10_abbr' => 'Oct',
185
+    'date_mois_11' => 'November',
186
+    'date_mois_11_abbr' => 'Nov',
187
+    'date_mois_12' => 'December',
188
+    'date_mois_12_abbr' => 'Dec',
189
+    'date_mois_1_abbr' => 'Jan',
190
+    'date_mois_2' => 'February',
191
+    'date_mois_2_abbr' => 'Feb',
192
+    'date_mois_3' => 'March',
193
+    'date_mois_3_abbr' => 'Mar',
194
+    'date_mois_4' => 'April',
195
+    'date_mois_4_abbr' => 'Apr',
196
+    'date_mois_5' => 'May',
197
+    'date_mois_5_abbr' => 'May',
198
+    'date_mois_6' => 'June',
199
+    'date_mois_6_abbr' => 'Jun',
200
+    'date_mois_7' => 'July',
201
+    'date_mois_7_abbr' => 'Jul',
202
+    'date_mois_8' => 'August',
203
+    'date_mois_8_abbr' => 'Aug',
204
+    'date_mois_9' => 'September',
205
+    'date_mois_9_abbr' => 'Sep',
206
+    'date_saison_1' => 'winter',
207
+    'date_saison_2' => 'spring',
208
+    'date_saison_3' => 'summer',
209
+    'date_saison_4' => 'autumn',
210
+    'date_secondes' => 'seconds',
211
+    'date_semaines' => 'weeks',
212
+    'date_un_mois' => 'month',
213
+    'date_une_heure' => 'hour',
214
+    'date_une_minute' => 'minute',
215
+    'date_une_seconde' => 'second',
216
+    'date_une_semaine' => 'week',
217
+    'dirs_commencer' => ' in order to start installation for real',
218
+    'dirs_preliminaire' => 'Preliminary: <b>Setting up access permissions</b>',
219
+    'dirs_probleme_droits' => 'Problem with access permissions',
220
+    'dirs_repertoires_absents' => '<p><b>The following directories were not found: </b></p><ul>@bad_dirs@.</ul>
221 221
   <p>It is possible that this is due to inappropriate lower or upper case letters in directory names.
222 222
   Please check that the case of the letters in the names of these directories match what is displayed
223 223
   above. If they don’t, correct the directory names using your FTP client.</p>
224 224
   <p>Once this is done, you can',
225
-	'dirs_repertoires_suivants' => '<p><b>The following directories do not have write permission: </b></p><ul>@bad_dirs@</ul>
225
+    'dirs_repertoires_suivants' => '<p><b>The following directories do not have write permission: </b></p><ul>@bad_dirs@</ul>
226 226
 <p>To change this, use your FTP client to set access permissions for each
227 227
  of these directories. The procedure is detailed in the installation guide.</p>
228 228
   <p>Once you have done this, you can ',
229
-	'double_occurrence' => 'Two instances of @balise@',
229
+    'double_occurrence' => 'Two instances of @balise@',
230 230
 
231
-	// E
232
-	'en_cours' => 'processing',
233
-	'envoi_via_le_site' => 'Sent via the site',
234
-	'erreur' => 'Error',
235
-	'erreur_balise_non_fermee' => 'last tag not closed:',
236
-	'erreur_technique_ajaxform' => 'Ooops. An unexpected error prevented to submit the form. You can try again.',
237
-	'erreur_technique_enregistrement_champs' => 'A technical error prevented the right registration of the field @champs@.',
238
-	'erreur_technique_enregistrement_impossible' => 'A technical error prevented the registration.',
239
-	'erreur_texte' => 'error(s)',
240
-	'etape' => 'Step',
231
+    // E
232
+    'en_cours' => 'processing',
233
+    'envoi_via_le_site' => 'Sent via the site',
234
+    'erreur' => 'Error',
235
+    'erreur_balise_non_fermee' => 'last tag not closed:',
236
+    'erreur_technique_ajaxform' => 'Ooops. An unexpected error prevented to submit the form. You can try again.',
237
+    'erreur_technique_enregistrement_champs' => 'A technical error prevented the right registration of the field @champs@.',
238
+    'erreur_technique_enregistrement_impossible' => 'A technical error prevented the registration.',
239
+    'erreur_texte' => 'error(s)',
240
+    'etape' => 'Step',
241 241
 
242
-	// F
243
-	'fichier_introuvable' => 'File not found: @fichier@',
244
-	'fonction_introuvable' => 'Function @fonction@() not found.',
245
-	'form_auteur_confirmation' => 'Please confirm your email address',
246
-	'form_auteur_email_modifie' => 'Your email address has been changed.',
247
-	'form_auteur_envoi_mail_confirmation' => 'A confirmation email has been sent to @email@. You must visit the URL mentioned in the message to validate your email address.',
248
-	'form_auteur_mail_confirmation' => 'Hello,
242
+    // F
243
+    'fichier_introuvable' => 'File not found: @fichier@',
244
+    'fonction_introuvable' => 'Function @fonction@() not found.',
245
+    'form_auteur_confirmation' => 'Please confirm your email address',
246
+    'form_auteur_email_modifie' => 'Your email address has been changed.',
247
+    'form_auteur_envoi_mail_confirmation' => 'A confirmation email has been sent to @email@. You must visit the URL mentioned in the message to validate your email address.',
248
+    'form_auteur_mail_confirmation' => 'Hello,
249 249
 
250 250
 You have asked to change your email address.
251 251
 To confirm your new address, you need to connect to
@@ -253,347 +253,347 @@  discard block
 block discarded – undo
253 253
 
254 254
     @url@
255 255
 ',
256
-	'form_deja_inscrit' => 'You are already registered.',
257
-	'form_email_non_valide' => 'Your email address is not valid.',
258
-	'form_forum_access_refuse' => 'You no longer have access to this site.',
259
-	'form_forum_bonjour' => 'Hello @nom@,',
260
-	'form_forum_confirmer_email' => 'To confirm your email address, follow this link: @url_confirm@',
261
-	'form_forum_email_deja_enregistre' => 'This email address is already registered. Enter your usual password.',
262
-	'form_forum_identifiant_mail' => 'Your new identifier has just been emailed to you.',
263
-	'form_forum_identifiants' => 'Personal identifiers',
264
-	'form_forum_indiquer_nom_email' => 'Enter your name and email address here. You will receive your personal identifier shortly by email.',
265
-	'form_forum_login' => 'login:',
266
-	'form_forum_message_auto' => '(this is an automated message)',
267
-	'form_forum_pass' => 'password:',
268
-	'form_forum_probleme_mail' => 'Mail problem: the identifier could not be sent.',
269
-	'form_forum_voici1' => 'Here are your identifiers. You may now participate on the site
256
+    'form_deja_inscrit' => 'You are already registered.',
257
+    'form_email_non_valide' => 'Your email address is not valid.',
258
+    'form_forum_access_refuse' => 'You no longer have access to this site.',
259
+    'form_forum_bonjour' => 'Hello @nom@,',
260
+    'form_forum_confirmer_email' => 'To confirm your email address, follow this link: @url_confirm@',
261
+    'form_forum_email_deja_enregistre' => 'This email address is already registered. Enter your usual password.',
262
+    'form_forum_identifiant_mail' => 'Your new identifier has just been emailed to you.',
263
+    'form_forum_identifiants' => 'Personal identifiers',
264
+    'form_forum_indiquer_nom_email' => 'Enter your name and email address here. You will receive your personal identifier shortly by email.',
265
+    'form_forum_login' => 'login:',
266
+    'form_forum_message_auto' => '(this is an automated message)',
267
+    'form_forum_pass' => 'password:',
268
+    'form_forum_probleme_mail' => 'Mail problem: the identifier could not be sent.',
269
+    'form_forum_voici1' => 'Here are your identifiers. You may now participate on the site
270 270
 "@nom_site_spip@" (@adresse_site@):',
271
-	'form_forum_voici2' => 'Here are your identifiers for submitting articles to
271
+    'form_forum_voici2' => 'Here are your identifiers for submitting articles to
272 272
 the site "@nom_site_spip@" (@adresse_login@):',
273
-	'form_indiquer_email' => 'Please enter your email address.',
274
-	'form_indiquer_nom' => 'Please enter your name.',
275
-	'form_indiquer_nom_site' => 'Please enter the name of your site.',
276
-	'form_pet_deja_enregistre' => 'This site is already registered',
277
-	'form_pet_signature_pasprise' => 'Your signature has been ignored.',
278
-	'form_prop_confirmer_envoi' => 'Confirm send',
279
-	'form_prop_description' => 'Description/comment',
280
-	'form_prop_enregistre' => 'Your suggestion has been recorded. It will appear online after being validated by the administrators of this site.',
281
-	'form_prop_envoyer' => 'Send a message',
282
-	'form_prop_indiquer_email' => 'Please enter a valid email address',
283
-	'form_prop_indiquer_nom_site' => 'Please enter the site’s name.',
284
-	'form_prop_indiquer_sujet' => 'Please enter a subject',
285
-	'form_prop_message_envoye' => 'Message sent',
286
-	'form_prop_non_enregistre' => 'Your suggestion has not been recorded.',
287
-	'form_prop_sujet' => 'Subject',
288
-	'form_prop_url_site' => 'Site URL',
289
-	'format_date_attendu' => 'Enter a date in jj/mm/aaaa format.',
290
-	'format_date_incorrecte' => 'The date or its format is incorrect.',
291
-	'format_heure_attendu' => 'Enter a time in hh:mm format.',
292
-	'format_heure_incorrecte' => 'The hour or its format is incorrect.',
293
-	'forum_non_inscrit' => 'Either you are not registered, or the address or password are wrong.',
294
-	'forum_par_auteur' => 'by @auteur@',
295
-	'forum_titre_erreur' => 'Error...',
273
+    'form_indiquer_email' => 'Please enter your email address.',
274
+    'form_indiquer_nom' => 'Please enter your name.',
275
+    'form_indiquer_nom_site' => 'Please enter the name of your site.',
276
+    'form_pet_deja_enregistre' => 'This site is already registered',
277
+    'form_pet_signature_pasprise' => 'Your signature has been ignored.',
278
+    'form_prop_confirmer_envoi' => 'Confirm send',
279
+    'form_prop_description' => 'Description/comment',
280
+    'form_prop_enregistre' => 'Your suggestion has been recorded. It will appear online after being validated by the administrators of this site.',
281
+    'form_prop_envoyer' => 'Send a message',
282
+    'form_prop_indiquer_email' => 'Please enter a valid email address',
283
+    'form_prop_indiquer_nom_site' => 'Please enter the site’s name.',
284
+    'form_prop_indiquer_sujet' => 'Please enter a subject',
285
+    'form_prop_message_envoye' => 'Message sent',
286
+    'form_prop_non_enregistre' => 'Your suggestion has not been recorded.',
287
+    'form_prop_sujet' => 'Subject',
288
+    'form_prop_url_site' => 'Site URL',
289
+    'format_date_attendu' => 'Enter a date in jj/mm/aaaa format.',
290
+    'format_date_incorrecte' => 'The date or its format is incorrect.',
291
+    'format_heure_attendu' => 'Enter a time in hh:mm format.',
292
+    'format_heure_incorrecte' => 'The hour or its format is incorrect.',
293
+    'forum_non_inscrit' => 'Either you are not registered, or the address or password are wrong.',
294
+    'forum_par_auteur' => 'by @auteur@',
295
+    'forum_titre_erreur' => 'Error...',
296 296
 
297
-	// I
298
-	'ical_texte_rss_articles' => 'The site’s backend file for articles is:',
299
-	'ical_texte_rss_articles2' => 'You can also get backend files for individual sections on the site:',
300
-	'ical_texte_rss_breves' => 'Furthermore, there is a file containing the site’s news items. By selecting a section number, you can choose to get news items in that section only.',
301
-	'icone_a_suivre' => 'Launch pad',
302
-	'icone_admin_site' => 'Site administration',
303
-	'icone_agenda' => 'Calendar',
304
-	'icone_aide_ligne' => 'Help',
305
-	'icone_articles' => 'Articles',
306
-	'icone_auteurs' => 'Authors',
307
-	'icone_brouteur' => 'Quick browsing',
308
-	'icone_configuration_site' => 'Configuration',
309
-	'icone_configurer_site' => 'Configure your site',
310
-	'icone_creer_nouvel_auteur' => 'Create a new author',
311
-	'icone_creer_rubrique' => 'Create a section',
312
-	'icone_creer_sous_rubrique' => 'Create a subsection',
313
-	'icone_deconnecter' => 'Log out',
314
-	'icone_discussions' => 'Discussions',
315
-	'icone_doc_rubrique' => 'Documents attached',
316
-	'icone_ecrire_article' => 'Write a new article',
317
-	'icone_edition_site' => 'Edit site',
318
-	'icone_gestion_langues' => 'Language options',
319
-	'icone_informations_personnelles' => 'Personal information',
320
-	'icone_interface_complet' => 'full interface',
321
-	'icone_interface_simple' => 'Simplified interface',
322
-	'icone_maintenance_site' => 'Site maintenance',
323
-	'icone_messagerie_personnelle' => 'Private messages',
324
-	'icone_repartition_debut' => 'Show distribution from the start',
325
-	'icone_rubriques' => 'Sections',
326
-	'icone_sauver_site' => 'Site backup',
327
-	'icone_site_entier' => 'The entire site',
328
-	'icone_sites_references' => 'Referenced sites',
329
-	'icone_statistiques' => 'Site statistics',
330
-	'icone_suivi_activite' => 'Follow site activity',
331
-	'icone_suivi_actualite' => 'Site statistics',
332
-	'icone_suivi_pettions' => 'Manage petitions',
333
-	'icone_suivi_revisions' => 'Article revisions',
334
-	'icone_supprimer_document' => 'Delete this document',
335
-	'icone_supprimer_image' => 'Delete this image',
336
-	'icone_tous_articles' => 'All your articles',
337
-	'icone_tous_auteur' => 'All authors',
338
-	'icone_tous_visiteur' => 'All visitors',
339
-	'icone_visiter_site' => 'View the public site',
340
-	'icone_voir_en_ligne' => 'View online',
341
-	'img_indisponible' => 'image unavailable',
342
-	'impossible' => 'impossible',
343
-	'info_a_suivre' => 'LAUNCH PAD»',
344
-	'info_acces_interdit' => 'Access forbidden',
345
-	'info_acces_refuse' => 'Access denied',
346
-	'info_action' => 'Action: @action@',
347
-	'info_administrer_rubriques' => 'You can manage this section and any subsections',
348
-	'info_adresse_non_indiquee' => 'You did not specify an address to test!',
349
-	'info_aide' => 'HELP:',
350
-	'info_ajouter_mot' => 'Add keyword',
351
-	'info_annonce' => 'ANNOUNCEMENT',
352
-	'info_annonces_generales' => 'General announcements:',
353
-	'info_article_propose' => 'Article submitted',
354
-	'info_article_publie' => 'Article published',
355
-	'info_article_redaction' => 'Article in progress',
356
-	'info_article_refuse' => 'Article rejected',
357
-	'info_article_supprime' => 'Article deleted',
358
-	'info_articles' => 'Articles',
359
-	'info_articles_a_valider' => 'Articles awaiting validation',
360
-	'info_articles_nb' => '@nb@ articles',
361
-	'info_articles_proposes' => 'Articles submitted',
362
-	'info_articles_un' => '1 article',
363
-	'info_auteurs_nombre' => 'author(s):',
364
-	'info_authentification_ftp' => 'Authentication (by FTP).',
365
-	'info_breves_2' => 'news',
366
-	'info_breves_nb' => '@nb@ news items',
367
-	'info_breves_un' => '1 news item',
368
-	'info_connexion_refusee' => 'Connection denied',
369
-	'info_contact_developpeur' => 'Please contact a developer.',
370
-	'info_contenance' => 'This site contains:',
371
-	'info_contribution' => 'contributions',
372
-	'info_copyright' => '@spip@ is free software distributed @lien_gpl@.',
373
-	'info_copyright_doc' => 'For more visit <a href="@spipnet@">@spipnet_affiche@</a>.',
374
-	'info_copyright_gpl' => 'under the GPL license',
375
-	'info_cours_edition' => 'In progress',
376
-	'info_creer_repertoire' => 'Please create a file or a directory called:',
377
-	'info_creer_repertoire_2' => 'inside the sub-directory <b>@repertoire@</b>, then',
378
-	'info_creer_vignette' => 'automatic thumbnail creation',
379
-	'info_creerdansrubrique_non_autorise' => 'You don’t have sufficient rights to create content in this section',
380
-	'info_deplier' => 'Unfold',
381
-	'info_descriptif_nombre' => 'description(s):',
382
-	'info_description' => 'Description:',
383
-	'info_description_2' => 'Description:',
384
-	'info_dimension' => 'Size:',
385
-	'info_documents_nb' => '@nb@ documents',
386
-	'info_documents_un' => '1 document',
387
-	'info_ecire_message_prive' => 'Write a private message',
388
-	'info_email_invalide' => 'Invalid email address.',
389
-	'info_en_cours_validation' => 'Your articles in progress',
390
-	'info_en_ligne' => 'Online now:',
391
-	'info_envoyer_message_prive' => 'Send a private message to this author',
392
-	'info_erreur_requete' => 'Error in query:',
393
-	'info_erreur_squelette2' => 'No <b>@fichier@</b> template available ...',
394
-	'info_erreur_systeme' => 'System error (errno @errsys@)',
395
-	'info_erreur_systeme2' => 'The hard disk may be full or the database damaged. <br />
297
+    // I
298
+    'ical_texte_rss_articles' => 'The site’s backend file for articles is:',
299
+    'ical_texte_rss_articles2' => 'You can also get backend files for individual sections on the site:',
300
+    'ical_texte_rss_breves' => 'Furthermore, there is a file containing the site’s news items. By selecting a section number, you can choose to get news items in that section only.',
301
+    'icone_a_suivre' => 'Launch pad',
302
+    'icone_admin_site' => 'Site administration',
303
+    'icone_agenda' => 'Calendar',
304
+    'icone_aide_ligne' => 'Help',
305
+    'icone_articles' => 'Articles',
306
+    'icone_auteurs' => 'Authors',
307
+    'icone_brouteur' => 'Quick browsing',
308
+    'icone_configuration_site' => 'Configuration',
309
+    'icone_configurer_site' => 'Configure your site',
310
+    'icone_creer_nouvel_auteur' => 'Create a new author',
311
+    'icone_creer_rubrique' => 'Create a section',
312
+    'icone_creer_sous_rubrique' => 'Create a subsection',
313
+    'icone_deconnecter' => 'Log out',
314
+    'icone_discussions' => 'Discussions',
315
+    'icone_doc_rubrique' => 'Documents attached',
316
+    'icone_ecrire_article' => 'Write a new article',
317
+    'icone_edition_site' => 'Edit site',
318
+    'icone_gestion_langues' => 'Language options',
319
+    'icone_informations_personnelles' => 'Personal information',
320
+    'icone_interface_complet' => 'full interface',
321
+    'icone_interface_simple' => 'Simplified interface',
322
+    'icone_maintenance_site' => 'Site maintenance',
323
+    'icone_messagerie_personnelle' => 'Private messages',
324
+    'icone_repartition_debut' => 'Show distribution from the start',
325
+    'icone_rubriques' => 'Sections',
326
+    'icone_sauver_site' => 'Site backup',
327
+    'icone_site_entier' => 'The entire site',
328
+    'icone_sites_references' => 'Referenced sites',
329
+    'icone_statistiques' => 'Site statistics',
330
+    'icone_suivi_activite' => 'Follow site activity',
331
+    'icone_suivi_actualite' => 'Site statistics',
332
+    'icone_suivi_pettions' => 'Manage petitions',
333
+    'icone_suivi_revisions' => 'Article revisions',
334
+    'icone_supprimer_document' => 'Delete this document',
335
+    'icone_supprimer_image' => 'Delete this image',
336
+    'icone_tous_articles' => 'All your articles',
337
+    'icone_tous_auteur' => 'All authors',
338
+    'icone_tous_visiteur' => 'All visitors',
339
+    'icone_visiter_site' => 'View the public site',
340
+    'icone_voir_en_ligne' => 'View online',
341
+    'img_indisponible' => 'image unavailable',
342
+    'impossible' => 'impossible',
343
+    'info_a_suivre' => 'LAUNCH PAD»',
344
+    'info_acces_interdit' => 'Access forbidden',
345
+    'info_acces_refuse' => 'Access denied',
346
+    'info_action' => 'Action: @action@',
347
+    'info_administrer_rubriques' => 'You can manage this section and any subsections',
348
+    'info_adresse_non_indiquee' => 'You did not specify an address to test!',
349
+    'info_aide' => 'HELP:',
350
+    'info_ajouter_mot' => 'Add keyword',
351
+    'info_annonce' => 'ANNOUNCEMENT',
352
+    'info_annonces_generales' => 'General announcements:',
353
+    'info_article_propose' => 'Article submitted',
354
+    'info_article_publie' => 'Article published',
355
+    'info_article_redaction' => 'Article in progress',
356
+    'info_article_refuse' => 'Article rejected',
357
+    'info_article_supprime' => 'Article deleted',
358
+    'info_articles' => 'Articles',
359
+    'info_articles_a_valider' => 'Articles awaiting validation',
360
+    'info_articles_nb' => '@nb@ articles',
361
+    'info_articles_proposes' => 'Articles submitted',
362
+    'info_articles_un' => '1 article',
363
+    'info_auteurs_nombre' => 'author(s):',
364
+    'info_authentification_ftp' => 'Authentication (by FTP).',
365
+    'info_breves_2' => 'news',
366
+    'info_breves_nb' => '@nb@ news items',
367
+    'info_breves_un' => '1 news item',
368
+    'info_connexion_refusee' => 'Connection denied',
369
+    'info_contact_developpeur' => 'Please contact a developer.',
370
+    'info_contenance' => 'This site contains:',
371
+    'info_contribution' => 'contributions',
372
+    'info_copyright' => '@spip@ is free software distributed @lien_gpl@.',
373
+    'info_copyright_doc' => 'For more visit <a href="@spipnet@">@spipnet_affiche@</a>.',
374
+    'info_copyright_gpl' => 'under the GPL license',
375
+    'info_cours_edition' => 'In progress',
376
+    'info_creer_repertoire' => 'Please create a file or a directory called:',
377
+    'info_creer_repertoire_2' => 'inside the sub-directory <b>@repertoire@</b>, then',
378
+    'info_creer_vignette' => 'automatic thumbnail creation',
379
+    'info_creerdansrubrique_non_autorise' => 'You don’t have sufficient rights to create content in this section',
380
+    'info_deplier' => 'Unfold',
381
+    'info_descriptif_nombre' => 'description(s):',
382
+    'info_description' => 'Description:',
383
+    'info_description_2' => 'Description:',
384
+    'info_dimension' => 'Size:',
385
+    'info_documents_nb' => '@nb@ documents',
386
+    'info_documents_un' => '1 document',
387
+    'info_ecire_message_prive' => 'Write a private message',
388
+    'info_email_invalide' => 'Invalid email address.',
389
+    'info_en_cours_validation' => 'Your articles in progress',
390
+    'info_en_ligne' => 'Online now:',
391
+    'info_envoyer_message_prive' => 'Send a private message to this author',
392
+    'info_erreur_requete' => 'Error in query:',
393
+    'info_erreur_squelette2' => 'No <b>@fichier@</b> template available ...',
394
+    'info_erreur_systeme' => 'System error (errno @errsys@)',
395
+    'info_erreur_systeme2' => 'The hard disk may be full or the database damaged. <br />
396 396
 <span style="color:red;">Try <a href=\'@script@\'>repairing the database</a>, or contact your service provider.</span>',
397
-	'info_fini' => 'Done!',
398
-	'info_format_image' => 'Image format to be used for vignettes: @gd_formats@.',
399
-	'info_format_non_defini' => 'undefined format',
400
-	'info_grand_ecran' => 'Large display',
401
-	'info_image_aide' => 'HELP',
402
-	'info_image_process_titre' => 'How to create thumbnails',
403
-	'info_impossible_lire_page' => '<b>Error!</b> The page <tt><html>@test_proxy@</html></tt> cannot be viewed through the proxy',
404
-	'info_installation_systeme_publication' => 'Installing publication system...',
405
-	'info_installer_documents' => 'You can automatically install all documents in the folder @upload@.',
406
-	'info_installer_ftp' => 'As an administrator, you can install files via FTP to the folder @upload@ in order to select them directly from here.',
407
-	'info_installer_images' => 'You can install images in the formats JPEG, GIF, and PNG.',
408
-	'info_installer_images_dossier' => 'Install images in folder @upload@ if you want to select them here.',
409
-	'info_interface_complete' => 'full interface',
410
-	'info_interface_simple' => 'Simplified interface',
411
-	'info_joindre_document_article' => 'You can attach the following types of document to your article',
412
-	'info_joindre_document_rubrique' => 'You can add documents of the following types to this section ',
413
-	'info_joindre_documents_article' => 'You can attach documents of the following types to your article:',
414
-	'info_l_article' => 'the article',
415
-	'info_la_breve' => 'the news item',
416
-	'info_la_rubrique' => 'the section',
417
-	'info_langue_principale' => 'Main language for site',
418
-	'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels',
419
-	'info_les_auteurs_1' => 'by @les_auteurs@',
420
-	'info_logo_format_interdit' => 'Only logos in these formats @formats@ are allowed.',
421
-	'info_logo_max_poids' => 'Logos must be less than @maxi@ (this file is @actuel@).',
422
-	'info_mail_fournisseur' => '[email protected]',
423
-	'info_message_2' => 'MESSAGE',
424
-	'info_message_supprime' => 'MESSAGE DELETED',
425
-	'info_messages_nb' => '@nb@ messages',
426
-	'info_messages_un' => '1 message',
427
-	'info_mise_en_ligne' => 'Published on:',
428
-	'info_modification_parametres_securite' => 'modifying security parameters',
429
-	'info_mois_courant' => 'During the month:',
430
-	'info_mot_cle_ajoute' => 'The following keyword was added to',
431
-	'info_multi_herit' => 'Default language',
432
-	'info_multi_langues_soulignees' => 'The <u>languages underlined</u> provide partial or total translations for all the interface texts. If you select these languages, many elements of the public site (dates, forms) will be translated automatically. As for the languages that are not underlined, those elements will be displayed using the site’s default language.',
433
-	'info_multilinguisme' => 'Multilingual',
434
-	'info_nom_non_utilisateurs_connectes' => 'Your name does not appear in the list of users online.',
435
-	'info_nom_utilisateurs_connectes' => 'Your name appears in the list of users online.',
436
-	'info_nombre_en_ligne' => 'Online now:',
437
-	'info_non_resultat' => 'No results for "@cherche_mot@"',
438
-	'info_non_utilisation_messagerie' => 'You are not using private messaging on this site.',
439
-	'info_nouveau_message' => 'YOU HAVE A NEW MESSAGE',
440
-	'info_nouveaux_messages' => 'YOU HAVE @total_messages@ NEW MESSAGES',
441
-	'info_numero_abbreviation' => 'No',
442
-	'info_obligatoire' => 'This information is required',
443
-	'info_page_actuelle' => 'Actual page',
444
-	'info_pense_bete' => 'MEMO',
445
-	'info_petit_ecran' => 'Small display',
446
-	'info_petition_close' => 'Petition closed',
447
-	'info_pixels' => 'pixels',
448
-	'info_plusieurs_mots_trouves' => 'Several keywords were found for "@cherche_mot@":',
449
-	'info_portfolio_automatique' => 'Automated portfolio:',
450
-	'info_premier_resultat' => '[First @debut_limit@ results out of @total@]',
451
-	'info_premier_resultat_sur' => '[First @debut_limit@ results out of @total@]',
452
-	'info_propose_1' => '[@nom_site_spip@] Submitted: @titre@',
453
-	'info_propose_2' => 'Article submitted
397
+    'info_fini' => 'Done!',
398
+    'info_format_image' => 'Image format to be used for vignettes: @gd_formats@.',
399
+    'info_format_non_defini' => 'undefined format',
400
+    'info_grand_ecran' => 'Large display',
401
+    'info_image_aide' => 'HELP',
402
+    'info_image_process_titre' => 'How to create thumbnails',
403
+    'info_impossible_lire_page' => '<b>Error!</b> The page <tt><html>@test_proxy@</html></tt> cannot be viewed through the proxy',
404
+    'info_installation_systeme_publication' => 'Installing publication system...',
405
+    'info_installer_documents' => 'You can automatically install all documents in the folder @upload@.',
406
+    'info_installer_ftp' => 'As an administrator, you can install files via FTP to the folder @upload@ in order to select them directly from here.',
407
+    'info_installer_images' => 'You can install images in the formats JPEG, GIF, and PNG.',
408
+    'info_installer_images_dossier' => 'Install images in folder @upload@ if you want to select them here.',
409
+    'info_interface_complete' => 'full interface',
410
+    'info_interface_simple' => 'Simplified interface',
411
+    'info_joindre_document_article' => 'You can attach the following types of document to your article',
412
+    'info_joindre_document_rubrique' => 'You can add documents of the following types to this section ',
413
+    'info_joindre_documents_article' => 'You can attach documents of the following types to your article:',
414
+    'info_l_article' => 'the article',
415
+    'info_la_breve' => 'the news item',
416
+    'info_la_rubrique' => 'the section',
417
+    'info_langue_principale' => 'Main language for site',
418
+    'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels',
419
+    'info_les_auteurs_1' => 'by @les_auteurs@',
420
+    'info_logo_format_interdit' => 'Only logos in these formats @formats@ are allowed.',
421
+    'info_logo_max_poids' => 'Logos must be less than @maxi@ (this file is @actuel@).',
422
+    'info_mail_fournisseur' => '[email protected]',
423
+    'info_message_2' => 'MESSAGE',
424
+    'info_message_supprime' => 'MESSAGE DELETED',
425
+    'info_messages_nb' => '@nb@ messages',
426
+    'info_messages_un' => '1 message',
427
+    'info_mise_en_ligne' => 'Published on:',
428
+    'info_modification_parametres_securite' => 'modifying security parameters',
429
+    'info_mois_courant' => 'During the month:',
430
+    'info_mot_cle_ajoute' => 'The following keyword was added to',
431
+    'info_multi_herit' => 'Default language',
432
+    'info_multi_langues_soulignees' => 'The <u>languages underlined</u> provide partial or total translations for all the interface texts. If you select these languages, many elements of the public site (dates, forms) will be translated automatically. As for the languages that are not underlined, those elements will be displayed using the site’s default language.',
433
+    'info_multilinguisme' => 'Multilingual',
434
+    'info_nom_non_utilisateurs_connectes' => 'Your name does not appear in the list of users online.',
435
+    'info_nom_utilisateurs_connectes' => 'Your name appears in the list of users online.',
436
+    'info_nombre_en_ligne' => 'Online now:',
437
+    'info_non_resultat' => 'No results for "@cherche_mot@"',
438
+    'info_non_utilisation_messagerie' => 'You are not using private messaging on this site.',
439
+    'info_nouveau_message' => 'YOU HAVE A NEW MESSAGE',
440
+    'info_nouveaux_messages' => 'YOU HAVE @total_messages@ NEW MESSAGES',
441
+    'info_numero_abbreviation' => 'No',
442
+    'info_obligatoire' => 'This information is required',
443
+    'info_page_actuelle' => 'Actual page',
444
+    'info_pense_bete' => 'MEMO',
445
+    'info_petit_ecran' => 'Small display',
446
+    'info_petition_close' => 'Petition closed',
447
+    'info_pixels' => 'pixels',
448
+    'info_plusieurs_mots_trouves' => 'Several keywords were found for "@cherche_mot@":',
449
+    'info_portfolio_automatique' => 'Automated portfolio:',
450
+    'info_premier_resultat' => '[First @debut_limit@ results out of @total@]',
451
+    'info_premier_resultat_sur' => '[First @debut_limit@ results out of @total@]',
452
+    'info_propose_1' => '[@nom_site_spip@] Submitted: @titre@',
453
+    'info_propose_2' => 'Article submitted
454 454
 -----------------',
455
-	'info_propose_3' => 'The article "@titre@" has been submitted for publication.',
456
-	'info_propose_4' => 'You are invited to review it and give your opinion',
457
-	'info_propose_5' => 'in the associated forum. It is available here:',
458
-	'info_publie_01' => 'The article "@titre@" was validated by @connect_nom@.',
459
-	'info_publie_1' => '[@nom_site_spip@] PUBLISHED: @titre@',
460
-	'info_publie_2' => 'Article published
455
+    'info_propose_3' => 'The article "@titre@" has been submitted for publication.',
456
+    'info_propose_4' => 'You are invited to review it and give your opinion',
457
+    'info_propose_5' => 'in the associated forum. It is available here:',
458
+    'info_publie_01' => 'The article "@titre@" was validated by @connect_nom@.',
459
+    'info_publie_1' => '[@nom_site_spip@] PUBLISHED: @titre@',
460
+    'info_publie_2' => 'Article published
461 461
 -----------------',
462
-	'info_rechercher' => 'Search',
463
-	'info_rechercher_02' => 'Search:',
464
-	'info_remplacer_vignette' => 'Replace the default vignette by a customised logo:',
465
-	'info_rubriques_nb' => '@nb@ sections',
466
-	'info_rubriques_un' => '1 section',
467
-	'info_sans_titre_2' => 'untitled',
468
-	'info_selectionner_fichier' => 'You can select a file from the folder @upload@',
469
-	'info_selectionner_fichier_2' => 'Select a file:',
470
-	'info_sites_nb' => '@nb@ sites',
471
-	'info_sites_un' => '1 site',
472
-	'info_supprimer_vignette' => 'delete the vignette',
473
-	'info_symbole_bleu' => 'A <b>blue</b> symbol indicates a <b>memo</b>: i.e. a message for your personal use.',
474
-	'info_symbole_jaune' => 'A <b>yellow</b> symbol indicates an <b>announcement to all editors</b>: it can be edited by all administrators, and is visible to all editors.',
475
-	'info_symbole_vert' => 'A <b>green</b> symbol indicates the <b>messages exchanged with other users</b> of the site.',
476
-	'info_telecharger_nouveau_logo' => 'Upload a new logo:',
477
-	'info_telecharger_ordinateur' => 'Upload from your computer:',
478
-	'info_tous_resultats_enregistres' => '[all the results are recorded]',
479
-	'info_tout_afficher' => 'Show all',
480
-	'info_travaux_texte' => 'This site is not yet set up. Please come back later...',
481
-	'info_travaux_titre' => 'Site under construction',
482
-	'info_trop_resultat' => 'Too many results for "@cherche_mot@"; please refine the search.',
483
-	'info_utilisation_messagerie_interne' => 'You are using the internal message system of this site.',
484
-	'info_valider_lien' => 'validate this link',
485
-	'info_verifier_image' => ', please make sure your images have been transferred correctly.',
486
-	'info_vignette_defaut' => 'Default vignette',
487
-	'info_vignette_personnalisee' => 'Custom vignette',
488
-	'info_visite' => 'visit:',
489
-	'info_vos_rendez_vous' => 'Your future appointments',
490
-	'infos_vos_pense_bete' => 'Your memos',
462
+    'info_rechercher' => 'Search',
463
+    'info_rechercher_02' => 'Search:',
464
+    'info_remplacer_vignette' => 'Replace the default vignette by a customised logo:',
465
+    'info_rubriques_nb' => '@nb@ sections',
466
+    'info_rubriques_un' => '1 section',
467
+    'info_sans_titre_2' => 'untitled',
468
+    'info_selectionner_fichier' => 'You can select a file from the folder @upload@',
469
+    'info_selectionner_fichier_2' => 'Select a file:',
470
+    'info_sites_nb' => '@nb@ sites',
471
+    'info_sites_un' => '1 site',
472
+    'info_supprimer_vignette' => 'delete the vignette',
473
+    'info_symbole_bleu' => 'A <b>blue</b> symbol indicates a <b>memo</b>: i.e. a message for your personal use.',
474
+    'info_symbole_jaune' => 'A <b>yellow</b> symbol indicates an <b>announcement to all editors</b>: it can be edited by all administrators, and is visible to all editors.',
475
+    'info_symbole_vert' => 'A <b>green</b> symbol indicates the <b>messages exchanged with other users</b> of the site.',
476
+    'info_telecharger_nouveau_logo' => 'Upload a new logo:',
477
+    'info_telecharger_ordinateur' => 'Upload from your computer:',
478
+    'info_tous_resultats_enregistres' => '[all the results are recorded]',
479
+    'info_tout_afficher' => 'Show all',
480
+    'info_travaux_texte' => 'This site is not yet set up. Please come back later...',
481
+    'info_travaux_titre' => 'Site under construction',
482
+    'info_trop_resultat' => 'Too many results for "@cherche_mot@"; please refine the search.',
483
+    'info_utilisation_messagerie_interne' => 'You are using the internal message system of this site.',
484
+    'info_valider_lien' => 'validate this link',
485
+    'info_verifier_image' => ', please make sure your images have been transferred correctly.',
486
+    'info_vignette_defaut' => 'Default vignette',
487
+    'info_vignette_personnalisee' => 'Custom vignette',
488
+    'info_visite' => 'visit:',
489
+    'info_vos_rendez_vous' => 'Your future appointments',
490
+    'infos_vos_pense_bete' => 'Your memos',
491 491
 
492
-	// L
493
-	'label_ajout_id_rapide' => 'Quick addition',
494
-	'label_poids_fichier' => 'Size',
495
-	'label_ponctuer' => '@label@:',
496
-	'lien_afficher_icones_seuls' => 'Show only icons',
497
-	'lien_afficher_texte_icones' => 'Show icons and text',
498
-	'lien_afficher_texte_seul' => 'Show only text',
499
-	'lien_aller_a_la_derniere_page' => 'Go to the last page',
500
-	'lien_aller_a_la_page_nb' => 'Go to page @nb@',
501
-	'lien_aller_a_la_page_precedente' => 'Go to the previous page',
502
-	'lien_aller_a_la_page_suivante' => 'Go to the next page',
503
-	'lien_aller_a_la_premiere_page' => 'Go to the first page',
504
-	'lien_liberer' => 'release',
505
-	'lien_liberer_tous' => 'Release all',
506
-	'lien_nouvea_pense_bete' => 'NEW MEMO',
507
-	'lien_nouveau_message' => 'NEW MESSAGE',
508
-	'lien_nouvelle_annonce' => 'NEW ANNOUNCEMENT',
509
-	'lien_petitions' => 'PETITION',
510
-	'lien_popularite' => 'popularity: @popularite@%',
511
-	'lien_racine_site' => 'SITE ROOT',
512
-	'lien_reessayer' => 'try again',
513
-	'lien_repondre_message' => 'Reply to this message',
514
-	'lien_supprimer' => 'delete',
515
-	'lien_tout_afficher' => 'Show all',
516
-	'lien_visite_site' => 'visit this site',
517
-	'lien_visites' => '@visites@ visits',
518
-	'lien_voir_auteur' => 'Check this author',
519
-	'ligne' => 'Line',
520
-	'login' => 'Connection',
521
-	'login_acces_prive' => 'access to the private area',
522
-	'login_autre_identifiant' => 'use a different ID',
523
-	'login_cookie_accepte' => 'Please configure your browser to accept them for this site.',
524
-	'login_cookie_oblige' => 'For secure identification, your browser must accept cookies.',
525
-	'login_deconnexion_ok' => 'Logged out.',
526
-	'login_erreur_pass' => 'Wrong password.',
527
-	'login_espace_prive' => 'private area',
528
-	'login_identifiant_inconnu' => 'The identifier "@login@" is unknown.',
529
-	'login_login' => 'Login:',
530
-	'login_login2' => 'Login or e-mail address:',
531
-	'login_login_pass_incorrect' => '(Wrong login or password).',
532
-	'login_motpasseoublie' => 'password forgotten?',
533
-	'login_non_securise' => 'Caution, this form is not secure.
492
+    // L
493
+    'label_ajout_id_rapide' => 'Quick addition',
494
+    'label_poids_fichier' => 'Size',
495
+    'label_ponctuer' => '@label@:',
496
+    'lien_afficher_icones_seuls' => 'Show only icons',
497
+    'lien_afficher_texte_icones' => 'Show icons and text',
498
+    'lien_afficher_texte_seul' => 'Show only text',
499
+    'lien_aller_a_la_derniere_page' => 'Go to the last page',
500
+    'lien_aller_a_la_page_nb' => 'Go to page @nb@',
501
+    'lien_aller_a_la_page_precedente' => 'Go to the previous page',
502
+    'lien_aller_a_la_page_suivante' => 'Go to the next page',
503
+    'lien_aller_a_la_premiere_page' => 'Go to the first page',
504
+    'lien_liberer' => 'release',
505
+    'lien_liberer_tous' => 'Release all',
506
+    'lien_nouvea_pense_bete' => 'NEW MEMO',
507
+    'lien_nouveau_message' => 'NEW MESSAGE',
508
+    'lien_nouvelle_annonce' => 'NEW ANNOUNCEMENT',
509
+    'lien_petitions' => 'PETITION',
510
+    'lien_popularite' => 'popularity: @popularite@%',
511
+    'lien_racine_site' => 'SITE ROOT',
512
+    'lien_reessayer' => 'try again',
513
+    'lien_repondre_message' => 'Reply to this message',
514
+    'lien_supprimer' => 'delete',
515
+    'lien_tout_afficher' => 'Show all',
516
+    'lien_visite_site' => 'visit this site',
517
+    'lien_visites' => '@visites@ visits',
518
+    'lien_voir_auteur' => 'Check this author',
519
+    'ligne' => 'Line',
520
+    'login' => 'Connection',
521
+    'login_acces_prive' => 'access to the private area',
522
+    'login_autre_identifiant' => 'use a different ID',
523
+    'login_cookie_accepte' => 'Please configure your browser to accept them for this site.',
524
+    'login_cookie_oblige' => 'For secure identification, your browser must accept cookies.',
525
+    'login_deconnexion_ok' => 'Logged out.',
526
+    'login_erreur_pass' => 'Wrong password.',
527
+    'login_espace_prive' => 'private area',
528
+    'login_identifiant_inconnu' => 'The identifier "@login@" is unknown.',
529
+    'login_login' => 'Login:',
530
+    'login_login2' => 'Login or e-mail address:',
531
+    'login_login_pass_incorrect' => '(Wrong login or password).',
532
+    'login_motpasseoublie' => 'password forgotten?',
533
+    'login_non_securise' => 'Caution, this form is not secure.
534 534
    If you do not want your password to be open to
535 535
    interception on the network, please activate Javascript
536 536
    in your browser and',
537
-	'login_nouvelle_tentative' => 'New attempt',
538
-	'login_par_ici' => 'You are registered... this way...',
539
-	'login_pass2' => 'Password:',
540
-	'login_preferez_refuser' => '<b>If you prefer to refuse cookies</b>, there is another, less secure, method of connection available:',
541
-	'login_recharger' => 'reload this page',
542
-	'login_rester_identifie' => 'Remember me',
543
-	'login_retour_public' => 'Back to the public site',
544
-	'login_retour_site' => 'Back to the public site',
545
-	'login_retoursitepublic' => 'back to the public site',
546
-	'login_sans_cookie' => 'Identification without cookie',
547
-	'login_securise' => 'Secure login',
548
-	'login_sinscrire' => 'register',
549
-	'login_test_navigateur' => 'testing browser/reconnection',
550
-	'login_verifiez_navigateur' => '(However, check that your browser did not memorise your password...)',
537
+    'login_nouvelle_tentative' => 'New attempt',
538
+    'login_par_ici' => 'You are registered... this way...',
539
+    'login_pass2' => 'Password:',
540
+    'login_preferez_refuser' => '<b>If you prefer to refuse cookies</b>, there is another, less secure, method of connection available:',
541
+    'login_recharger' => 'reload this page',
542
+    'login_rester_identifie' => 'Remember me',
543
+    'login_retour_public' => 'Back to the public site',
544
+    'login_retour_site' => 'Back to the public site',
545
+    'login_retoursitepublic' => 'back to the public site',
546
+    'login_sans_cookie' => 'Identification without cookie',
547
+    'login_securise' => 'Secure login',
548
+    'login_sinscrire' => 'register',
549
+    'login_test_navigateur' => 'testing browser/reconnection',
550
+    'login_verifiez_navigateur' => '(However, check that your browser did not memorise your password...)',
551 551
 
552
-	// M
553
-	'masquer_colonne' => 'Hide this column',
554
-	'masquer_trad' => 'hide translations',
555
-	'message_nouveaux_identifiants_echec' => 'New identifiers could not be created.',
556
-	'message_nouveaux_identifiants_echec_envoi' => 'The new connection identifiers could not be sent.',
557
-	'message_nouveaux_identifiants_ok' => 'The new connection identifiers were sent to @email@.',
558
-	'module_fichiers_langues' => 'Language files',
552
+    // M
553
+    'masquer_colonne' => 'Hide this column',
554
+    'masquer_trad' => 'hide translations',
555
+    'message_nouveaux_identifiants_echec' => 'New identifiers could not be created.',
556
+    'message_nouveaux_identifiants_echec_envoi' => 'The new connection identifiers could not be sent.',
557
+    'message_nouveaux_identifiants_ok' => 'The new connection identifiers were sent to @email@.',
558
+    'module_fichiers_langues' => 'Language files',
559 559
 
560
-	// N
561
-	'navigateur_pas_redirige' => 'If you are not automatically redirected, click here to continue.',
562
-	'numero' => 'Number',
560
+    // N
561
+    'navigateur_pas_redirige' => 'If you are not automatically redirected, click here to continue.',
562
+    'numero' => 'Number',
563 563
 
564
-	// O
565
-	'occurence' => 'Instance',
566
-	'onglet_affacer_base' => 'Delete the database',
567
-	'onglet_auteur' => 'The author',
568
-	'onglet_contenu_site' => 'Site content',
569
-	'onglet_evolution_visite_mod' => 'Trend in visits',
570
-	'onglet_fonctions_avances' => 'Advanced functions',
571
-	'onglet_informations_personnelles' => 'Personal Information',
572
-	'onglet_interactivite' => 'Interactivity',
573
-	'onglet_messagerie' => 'Messaging',
574
-	'onglet_repartition_rubrique' => 'Distribution by section',
575
-	'onglet_save_restaur_base' => 'Backup/restore the database',
576
-	'onglet_vider_cache' => 'Empty the cache',
564
+    // O
565
+    'occurence' => 'Instance',
566
+    'onglet_affacer_base' => 'Delete the database',
567
+    'onglet_auteur' => 'The author',
568
+    'onglet_contenu_site' => 'Site content',
569
+    'onglet_evolution_visite_mod' => 'Trend in visits',
570
+    'onglet_fonctions_avances' => 'Advanced functions',
571
+    'onglet_informations_personnelles' => 'Personal Information',
572
+    'onglet_interactivite' => 'Interactivity',
573
+    'onglet_messagerie' => 'Messaging',
574
+    'onglet_repartition_rubrique' => 'Distribution by section',
575
+    'onglet_save_restaur_base' => 'Backup/restore the database',
576
+    'onglet_vider_cache' => 'Empty the cache',
577 577
 
578
-	// P
579
-	'pass_choix_pass' => 'Please choose a new password:',
580
-	'pass_erreur' => 'Error',
581
-	'pass_erreur_acces_refuse' => '<b>Error:</b> you no longer have access to this site.',
582
-	'pass_erreur_code_inconnu' => '<b>Error:</b> this code does not match any visitors with access permission to this site.',
583
-	'pass_erreur_non_enregistre' => '<b>Error :</b> the address <tt>@email_oubli@</tt> is not registered on this site.',
584
-	'pass_erreur_non_valide' => '<b>Error :</b> the e-mail <tt>@email_oubli@</tt> is not valid!',
585
-	'pass_erreur_probleme_technique' => '<b>Error :</b> this e-mail could not be sent due to a technical problem.',
586
-	'pass_espace_prive_bla' => 'The private area of this site is open to
578
+    // P
579
+    'pass_choix_pass' => 'Please choose a new password:',
580
+    'pass_erreur' => 'Error',
581
+    'pass_erreur_acces_refuse' => '<b>Error:</b> you no longer have access to this site.',
582
+    'pass_erreur_code_inconnu' => '<b>Error:</b> this code does not match any visitors with access permission to this site.',
583
+    'pass_erreur_non_enregistre' => '<b>Error :</b> the address <tt>@email_oubli@</tt> is not registered on this site.',
584
+    'pass_erreur_non_valide' => '<b>Error :</b> the e-mail <tt>@email_oubli@</tt> is not valid!',
585
+    'pass_erreur_probleme_technique' => '<b>Error :</b> this e-mail could not be sent due to a technical problem.',
586
+    'pass_espace_prive_bla' => 'The private area of this site is open to
587 587
 visitors after registration. Once you have registered,
588 588
 you can review the articles in progress,
589 589
 submit articles and participate in forums.',
590
-	'pass_forum_bla' => 'You have requested to take part in a forum
590
+    'pass_forum_bla' => 'You have requested to take part in a forum
591 591
 reserved for registered visitors.',
592
-	'pass_indiquez_cidessous' => 'Enter the email address with which you
592
+    'pass_indiquez_cidessous' => 'Enter the email address with which you
593 593
 registered. You
594 594
 will receive an email explaining how you
595 595
 can retrieve your password.',
596
-	'pass_mail_passcookie' => '(this is an automated message)
596
+    'pass_mail_passcookie' => '(this is an automated message)
597 597
 
598 598
 To recover your access to the site
599 599
 @nom_site_spip@ (@adresse_site@)
@@ -604,146 +604,146 @@  discard block
 block discarded – undo
604 604
 You can then enter a new password
605 605
 and log in to the site.
606 606
 ',
607
-	'pass_mot_oublie' => 'Password forgotten',
608
-	'pass_nouveau_enregistre' => 'Your new password has been recorded.',
609
-	'pass_nouveau_pass' => 'New password',
610
-	'pass_ok' => 'OK',
611
-	'pass_oubli_mot' => 'Forgotten password',
612
-	'pass_procedure_changer' => 'In order to change your password, we have to check your identity first. Please enter the e-mail address associated with this account.',
613
-	'pass_quitter_fenetre' => 'Close this window',
614
-	'pass_rappel_login' => 'Reminder: your identifier (login) is "@login@".',
615
-	'pass_recevoir_mail' => 'A link to reset your password has been sent to your email address (if it is valid).',
616
-	'pass_retour_public' => 'Back to the public site',
617
-	'pass_rien_a_faire_ici' => 'Nothing to do here.',
618
-	'pass_vousinscrire' => 'Registering with the site',
619
-	'precedent' => 'previous',
620
-	'previsualisation' => 'Preview',
621
-	'previsualiser' => 'Show preview',
607
+    'pass_mot_oublie' => 'Password forgotten',
608
+    'pass_nouveau_enregistre' => 'Your new password has been recorded.',
609
+    'pass_nouveau_pass' => 'New password',
610
+    'pass_ok' => 'OK',
611
+    'pass_oubli_mot' => 'Forgotten password',
612
+    'pass_procedure_changer' => 'In order to change your password, we have to check your identity first. Please enter the e-mail address associated with this account.',
613
+    'pass_quitter_fenetre' => 'Close this window',
614
+    'pass_rappel_login' => 'Reminder: your identifier (login) is "@login@".',
615
+    'pass_recevoir_mail' => 'A link to reset your password has been sent to your email address (if it is valid).',
616
+    'pass_retour_public' => 'Back to the public site',
617
+    'pass_rien_a_faire_ici' => 'Nothing to do here.',
618
+    'pass_vousinscrire' => 'Registering with the site',
619
+    'precedent' => 'previous',
620
+    'previsualisation' => 'Preview',
621
+    'previsualiser' => 'Show preview',
622 622
 
623
-	// R
624
-	'retour' => 'Back',
623
+    // R
624
+    'retour' => 'Back',
625 625
 
626
-	// S
627
-	'spip_conforme_dtd' => 'SPIP finds this page to be in compliance with its DOCTYPE:',
628
-	'squelette' => 'template',
629
-	'squelette_inclus_ligne' => 'included template, line',
630
-	'squelette_ligne' => 'template, line',
631
-	'stats_visites_et_popularite' => '@visites@ visits; popularity: @popularite@',
632
-	'suivant' => 'next',
626
+    // S
627
+    'spip_conforme_dtd' => 'SPIP finds this page to be in compliance with its DOCTYPE:',
628
+    'squelette' => 'template',
629
+    'squelette_inclus_ligne' => 'included template, line',
630
+    'squelette_ligne' => 'template, line',
631
+    'stats_visites_et_popularite' => '@visites@ visits; popularity: @popularite@',
632
+    'suivant' => 'next',
633 633
 
634
-	// T
635
-	'taille_go' => '@taille@ Gb',
636
-	'taille_ko' => '@taille@ kb',
637
-	'taille_mo' => '@taille@ Mb',
638
-	'taille_octets' => '@taille@ bytes',
639
-	'texte_actualite_site_1' => 'When you are more familiar with the interface, click on "',
640
-	'texte_actualite_site_2' => 'full interface',
641
-	'texte_actualite_site_3' => '" to make more features available.',
642
-	'texte_creation_automatique_vignette' => 'Automatic creation of preview vignettes is enabled. If you use this form to install,  images in the format(s) @gd_formats@, they will be coupled with a vignette whose maximum size is @taille_preview@ pixels.',
643
-	'texte_documents_associes' => 'The following documents are associated with the article,,
634
+    // T
635
+    'taille_go' => '@taille@ Gb',
636
+    'taille_ko' => '@taille@ kb',
637
+    'taille_mo' => '@taille@ Mb',
638
+    'taille_octets' => '@taille@ bytes',
639
+    'texte_actualite_site_1' => 'When you are more familiar with the interface, click on "',
640
+    'texte_actualite_site_2' => 'full interface',
641
+    'texte_actualite_site_3' => '" to make more features available.',
642
+    'texte_creation_automatique_vignette' => 'Automatic creation of preview vignettes is enabled. If you use this form to install,  images in the format(s) @gd_formats@, they will be coupled with a vignette whose maximum size is @taille_preview@ pixels.',
643
+    'texte_documents_associes' => 'The following documents are associated with the article,,
644 644
     but they were not directly
645 645
     inserted. Depending on the layout of the public site,
646 646
     they may appear as attached documents.',
647
-	'texte_erreur_mise_niveau_base' => 'Database error during the upgrade.
647
+    'texte_erreur_mise_niveau_base' => 'Database error during the upgrade.
648 648
       The image <b>@fichier@</b> did not pass (article @id_article@).<p>
649 649
    Note this reference carefully, try the upgrade procedure again,
650 650
    and check afterwards that the images still appear
651 651
       in the articles.',
652
-	'texte_erreur_visiteur' => 'You have tried to enter the private area using an unauthorised login.',
653
-	'texte_inc_auth_1' => 'You used the login
652
+    'texte_erreur_visiteur' => 'You have tried to enter the private area using an unauthorised login.',
653
+    'texte_inc_auth_1' => 'You used the login
654 654
   <b>@auth_login@</b>, but it does not exist in the database.
655 655
   Try to',
656
-	'texte_inc_auth_2' => 'reconnect',
657
-	'texte_inc_auth_3' => ', having quit and
656
+    'texte_inc_auth_2' => 'reconnect',
657
+    'texte_inc_auth_3' => ', having quit and
658 658
   restarted your browser if necessary.',
659
-	'texte_inc_config' => 'Changes made to the options on these pages have a great effect on
659
+    'texte_inc_config' => 'Changes made to the options on these pages have a great effect on
660 660
   the functioning of the site. You are advised not to make any changes unless you are
661 661
  familiar with how SPIP works. <br /><br /><b>In
662 662
  general, you are strongly advised
663 663
  to let the main webmaster of the site deal with these pages.</b>',
664
-	'texte_inc_meta_1' => 'The system encountered an error when trying to write the file <code>@fichier@</code>. As a site administrator, please',
665
-	'texte_inc_meta_2' => 'verify write permissions',
666
-	'texte_inc_meta_3' => 'of the directory <code>@repertoire@</code>.',
667
-	'texte_statut_en_cours_redaction' => 'editing in progress',
668
-	'texte_statut_poubelle' => 'to the dustbin',
669
-	'texte_statut_propose_evaluation' => 'submitted for evaluation',
670
-	'texte_statut_publie' => 'published online',
671
-	'texte_statut_refuse' => 'rejected',
672
-	'titre_ajouter_mot_cle' => 'ADD A KEYWORD:',
673
-	'titre_cadre_raccourcis' => 'SHORTCUTS:',
674
-	'titre_changer_couleur_interface' => 'Changing interface colour',
675
-	'titre_image_admin_article' => 'You can administrate this article',
676
-	'titre_image_administrateur' => 'Administrator',
677
-	'titre_image_aide' => 'Help on this item',
678
-	'titre_image_auteur_supprime' => 'Author deleted',
679
-	'titre_image_redacteur' => 'Editor without access',
680
-	'titre_image_redacteur_02' => 'Editor',
681
-	'titre_image_selecteur' => 'Display list',
682
-	'titre_image_visiteur' => 'Visitor',
683
-	'titre_joindre_document' => 'ATTACH A DOCUMENT',
684
-	'titre_mots_cles' => 'KEYWORDS',
685
-	'titre_probleme_technique' => 'Warning: a technical problem (SQL server) is preventing access to this part of the site. Thank you for your patience.',
686
-	'titre_publier_document' => 'PUBLISH A DOCUMENT IN THIS SECTION',
687
-	'titre_signatures_attente' => 'Signatures awaiting validation',
688
-	'titre_signatures_confirmees' => 'Signatures confirmed',
689
-	'titre_statistiques' => 'Site statistics',
690
-	'titre_titre_document' => 'Document title:',
691
-	'todo' => 'to come',
692
-	'trad_definir_reference' => 'Choose "@titre@" as a reference for translations',
693
-	'trad_reference' => '(reference for translations)',
664
+    'texte_inc_meta_1' => 'The system encountered an error when trying to write the file <code>@fichier@</code>. As a site administrator, please',
665
+    'texte_inc_meta_2' => 'verify write permissions',
666
+    'texte_inc_meta_3' => 'of the directory <code>@repertoire@</code>.',
667
+    'texte_statut_en_cours_redaction' => 'editing in progress',
668
+    'texte_statut_poubelle' => 'to the dustbin',
669
+    'texte_statut_propose_evaluation' => 'submitted for evaluation',
670
+    'texte_statut_publie' => 'published online',
671
+    'texte_statut_refuse' => 'rejected',
672
+    'titre_ajouter_mot_cle' => 'ADD A KEYWORD:',
673
+    'titre_cadre_raccourcis' => 'SHORTCUTS:',
674
+    'titre_changer_couleur_interface' => 'Changing interface colour',
675
+    'titre_image_admin_article' => 'You can administrate this article',
676
+    'titre_image_administrateur' => 'Administrator',
677
+    'titre_image_aide' => 'Help on this item',
678
+    'titre_image_auteur_supprime' => 'Author deleted',
679
+    'titre_image_redacteur' => 'Editor without access',
680
+    'titre_image_redacteur_02' => 'Editor',
681
+    'titre_image_selecteur' => 'Display list',
682
+    'titre_image_visiteur' => 'Visitor',
683
+    'titre_joindre_document' => 'ATTACH A DOCUMENT',
684
+    'titre_mots_cles' => 'KEYWORDS',
685
+    'titre_probleme_technique' => 'Warning: a technical problem (SQL server) is preventing access to this part of the site. Thank you for your patience.',
686
+    'titre_publier_document' => 'PUBLISH A DOCUMENT IN THIS SECTION',
687
+    'titre_signatures_attente' => 'Signatures awaiting validation',
688
+    'titre_signatures_confirmees' => 'Signatures confirmed',
689
+    'titre_statistiques' => 'Site statistics',
690
+    'titre_titre_document' => 'Document title:',
691
+    'todo' => 'to come',
692
+    'trad_definir_reference' => 'Choose "@titre@" as a reference for translations',
693
+    'trad_reference' => '(reference for translations)',
694 694
 
695
-	// U
696
-	'upload_limit' => 'This file is too big for the server: the maximum size allowed for <i>upload</i> is @max@.',
695
+    // U
696
+    'upload_limit' => 'This file is too big for the server: the maximum size allowed for <i>upload</i> is @max@.',
697 697
 
698
-	// Z
699
-	'zbug_balise_b_aval' => ': B tag too late in loop',
700
-	'zbug_balise_inexistante' => 'Tag @balise@ wrongly declared for @from@',
701
-	'zbug_balise_sans_argument' => 'Missing argument in the @balise@ tag',
702
-	'zbug_boucle' => 'loop',
703
-	'zbug_boucle_recursive_undef' => 'undefined recursive loop: @nom@',
704
-	'zbug_calcul' => 'calculation',
705
-	'zbug_champ_hors_boucle' => 'Field @champ@ outside loop',
706
-	'zbug_champ_hors_critere' => 'Field @champ@ outside criterion @critere@',
707
-	'zbug_champ_hors_motif' => 'Field @champ@ outside context @motif@',
708
-	'zbug_code' => 'code',
709
-	'zbug_critere_inconnu' => 'Unknown criterion @critere@',
710
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} on a table without atomic primary key',
711
-	'zbug_distant_interdit' => 'External data forbidden',
712
-	'zbug_doublon_table_sans_cle_primaire' => 'Duplicate entries on a table which does not have a simple primary key',
713
-	'zbug_doublon_table_sans_index' => 'Duplicate entries on a table without an index',
714
-	'zbug_erreur_boucle_double' => 'Loop @id@: double definition',
715
-	'zbug_erreur_boucle_fermant' => 'Loop @id@: missing closing tag',
716
-	'zbug_erreur_boucle_syntaxe' => 'Syntax error in loop (BOUCLE)',
717
-	'zbug_erreur_compilation' => 'Compilation error',
718
-	'zbug_erreur_execution_page' => 'Execution error',
719
-	'zbug_erreur_filtre' => 'Undefined filter @filtre@',
720
-	'zbug_erreur_filtre_nbarg_min' => '@filtre@ filter: @nb@ argument(s) missing',
721
-	'zbug_erreur_meme_parent' => '{meme_parent} only applies to loops (FORUMS) and (RUBRIQUES)',
722
-	'zbug_erreur_squelette' => 'Error(s) in template',
723
-	'zbug_hors_compilation' => 'Uncompiled',
724
-	'zbug_info_erreur_squelette' => 'Error in the site',
725
-	'zbug_inversion_ordre_inexistant' => 'Reversion of non-existent order',
726
-	'zbug_pagination_sans_critere' => '#PAGINATION tag without {pagination} criterion, or used in a recursive loop',
727
-	'zbug_parametres_inclus_incorrects' => 'Wrong inclusion parameter: @param@',
728
-	'zbug_profile' => 'Calculation time: @time@',
729
-	'zbug_resultat' => 'result',
730
-	'zbug_serveur_indefini' => 'Undefined SQL server',
731
-	'zbug_statistiques' => 'SQL query statistics in order of duration',
732
-	'zbug_table_inconnue' => 'Unknown SQL table "@table@"',
733
-	'zxml_connus_attributs' => 'known attributes',
734
-	'zxml_de' => 'from',
735
-	'zxml_inconnu_attribut' => 'unknown attribute',
736
-	'zxml_inconnu_balise' => 'unknown tag',
737
-	'zxml_inconnu_entite' => 'unknown entity',
738
-	'zxml_inconnu_id' => 'unknown ID',
739
-	'zxml_mais_de' => 'but from',
740
-	'zxml_non_conforme' => 'not true to the principle',
741
-	'zxml_non_fils' => 'is not a child of',
742
-	'zxml_nonvide_balise' => 'tag not empty',
743
-	'zxml_obligatoire_attribut' => 'required attribute absent in',
744
-	'zxml_succession_fils_incorrecte' => 'incorrect child inheritance',
745
-	'zxml_survoler' => 'to see the correct ones, hover with the cursor',
746
-	'zxml_valeur_attribut' => 'attribute value',
747
-	'zxml_vide_balise' => 'empty tag',
748
-	'zxml_vu' => 'seen before'
698
+    // Z
699
+    'zbug_balise_b_aval' => ': B tag too late in loop',
700
+    'zbug_balise_inexistante' => 'Tag @balise@ wrongly declared for @from@',
701
+    'zbug_balise_sans_argument' => 'Missing argument in the @balise@ tag',
702
+    'zbug_boucle' => 'loop',
703
+    'zbug_boucle_recursive_undef' => 'undefined recursive loop: @nom@',
704
+    'zbug_calcul' => 'calculation',
705
+    'zbug_champ_hors_boucle' => 'Field @champ@ outside loop',
706
+    'zbug_champ_hors_critere' => 'Field @champ@ outside criterion @critere@',
707
+    'zbug_champ_hors_motif' => 'Field @champ@ outside context @motif@',
708
+    'zbug_code' => 'code',
709
+    'zbug_critere_inconnu' => 'Unknown criterion @critere@',
710
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} on a table without atomic primary key',
711
+    'zbug_distant_interdit' => 'External data forbidden',
712
+    'zbug_doublon_table_sans_cle_primaire' => 'Duplicate entries on a table which does not have a simple primary key',
713
+    'zbug_doublon_table_sans_index' => 'Duplicate entries on a table without an index',
714
+    'zbug_erreur_boucle_double' => 'Loop @id@: double definition',
715
+    'zbug_erreur_boucle_fermant' => 'Loop @id@: missing closing tag',
716
+    'zbug_erreur_boucle_syntaxe' => 'Syntax error in loop (BOUCLE)',
717
+    'zbug_erreur_compilation' => 'Compilation error',
718
+    'zbug_erreur_execution_page' => 'Execution error',
719
+    'zbug_erreur_filtre' => 'Undefined filter @filtre@',
720
+    'zbug_erreur_filtre_nbarg_min' => '@filtre@ filter: @nb@ argument(s) missing',
721
+    'zbug_erreur_meme_parent' => '{meme_parent} only applies to loops (FORUMS) and (RUBRIQUES)',
722
+    'zbug_erreur_squelette' => 'Error(s) in template',
723
+    'zbug_hors_compilation' => 'Uncompiled',
724
+    'zbug_info_erreur_squelette' => 'Error in the site',
725
+    'zbug_inversion_ordre_inexistant' => 'Reversion of non-existent order',
726
+    'zbug_pagination_sans_critere' => '#PAGINATION tag without {pagination} criterion, or used in a recursive loop',
727
+    'zbug_parametres_inclus_incorrects' => 'Wrong inclusion parameter: @param@',
728
+    'zbug_profile' => 'Calculation time: @time@',
729
+    'zbug_resultat' => 'result',
730
+    'zbug_serveur_indefini' => 'Undefined SQL server',
731
+    'zbug_statistiques' => 'SQL query statistics in order of duration',
732
+    'zbug_table_inconnue' => 'Unknown SQL table "@table@"',
733
+    'zxml_connus_attributs' => 'known attributes',
734
+    'zxml_de' => 'from',
735
+    'zxml_inconnu_attribut' => 'unknown attribute',
736
+    'zxml_inconnu_balise' => 'unknown tag',
737
+    'zxml_inconnu_entite' => 'unknown entity',
738
+    'zxml_inconnu_id' => 'unknown ID',
739
+    'zxml_mais_de' => 'but from',
740
+    'zxml_non_conforme' => 'not true to the principle',
741
+    'zxml_non_fils' => 'is not a child of',
742
+    'zxml_nonvide_balise' => 'tag not empty',
743
+    'zxml_obligatoire_attribut' => 'required attribute absent in',
744
+    'zxml_succession_fils_incorrecte' => 'incorrect child inheritance',
745
+    'zxml_survoler' => 'to see the correct ones, hover with the cursor',
746
+    'zxml_valeur_attribut' => 'attribute value',
747
+    'zxml_vide_balise' => 'empty tag',
748
+    'zxml_vu' => 'seen before'
749 749
 );
Please login to merge, or discard this patch.
ecrire/lang/spip_ar.php 1 patch
Indentation   +669 added lines, -669 removed lines patch added patch discarded remove patch
@@ -4,246 +4,246 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'access_interface_graphique' => 'عودة إلى الواجهة الرسومية الكاملة',
14
-	'access_mode_texte' => 'عرض الواجهة النصية المبسّطة',
15
-	'admin_debug' => 'اكتشاف الأخطاء',
16
-	'admin_modifier_article' => 'تعديل هذا المقال',
17
-	'admin_modifier_auteur' => 'تغيير هذا المؤلف',
18
-	'admin_modifier_breve' => 'تعديل هذا الخبر',
19
-	'admin_modifier_mot' => 'تغيير هذا المفتاح',
20
-	'admin_modifier_rubrique' => 'تعديل هذا القسم',
21
-	'admin_recalculer' => 'إعادة تحديث هذه الصفحة',
22
-	'afficher_calendrier' => 'عرض الروزنامة',
23
-	'afficher_trad' => 'عرض الترجمات',
24
-	'alerte_maj_impossible' => '<b>تحذير!</b> ترقية قاعدة SQL إلى الإصدار @version@ متعذر. قد يكون السبب مشكلة في حقل التعديل. الرجاء الاتصال بمضيف موقعك.',
25
-	'alerte_modif_info_concourante' => 'تحذير:هذه المعلومة عُدلت في مكان آخر. القيمة الحالية هي:',
26
-	'analyse_xml' => 'تحليل XML',
27
-	'annuler' => 'إلغاء',
28
-	'antispam_champ_vide' => 'الرجاء الإبقاء على هذا الحقل فارغاً:',
29
-	'articles_recents' => 'أحدث المقالات',
30
-	'attention_champ_mini_nb_caractères' => 'تنبيه! @nb@ حروف على الأقل',
31
-	'avis_1_erreur_saisie' => 'هناك خطأ في إدخالك، الرجاء التدقيق في المعلومات.',
32
-	'avis_archive_incorrect' => 'ملف الأرشيف ليس ملف SPIP',
33
-	'avis_archive_invalide' => 'ملف الأرشيف غير صالح',
34
-	'avis_attention' => 'تحذير!',
35
-	'avis_champ_incorrect_type_objet' => 'إسم حقل @name@ غير صالح لنوع العنصر @type@',
36
-	'avis_colonne_inexistante' => 'العمود @col@ غير موجود',
37
-	'avis_erreur' => 'خطأ: انظر أدناه',
38
-	'avis_erreur_connexion' => 'خطأ اتصال',
39
-	'avis_erreur_cookie' => 'مشكلة في الكعكة',
40
-	'avis_erreur_fonction_contexte' => 'خطأ برمجة. لا يجب المناداة على هذه الوظيفة في هذا السياق.',
41
-	'avis_erreur_mysql' => 'خطأ SQL ',
42
-	'avis_erreur_sauvegarde' => 'خطأ في النسخة الاحتياطية (@type@ @id_objet@)!',
43
-	'avis_erreur_visiteur' => 'هناك مشكلة في الدخول إلى المجال الخاص',
44
-	'avis_nb_erreurs_saisie' => 'هناك @nb@ خطأ في إدخالك، الرجاء التدقيق في المعلومات.',
12
+    // A
13
+    'access_interface_graphique' => 'عودة إلى الواجهة الرسومية الكاملة',
14
+    'access_mode_texte' => 'عرض الواجهة النصية المبسّطة',
15
+    'admin_debug' => 'اكتشاف الأخطاء',
16
+    'admin_modifier_article' => 'تعديل هذا المقال',
17
+    'admin_modifier_auteur' => 'تغيير هذا المؤلف',
18
+    'admin_modifier_breve' => 'تعديل هذا الخبر',
19
+    'admin_modifier_mot' => 'تغيير هذا المفتاح',
20
+    'admin_modifier_rubrique' => 'تعديل هذا القسم',
21
+    'admin_recalculer' => 'إعادة تحديث هذه الصفحة',
22
+    'afficher_calendrier' => 'عرض الروزنامة',
23
+    'afficher_trad' => 'عرض الترجمات',
24
+    'alerte_maj_impossible' => '<b>تحذير!</b> ترقية قاعدة SQL إلى الإصدار @version@ متعذر. قد يكون السبب مشكلة في حقل التعديل. الرجاء الاتصال بمضيف موقعك.',
25
+    'alerte_modif_info_concourante' => 'تحذير:هذه المعلومة عُدلت في مكان آخر. القيمة الحالية هي:',
26
+    'analyse_xml' => 'تحليل XML',
27
+    'annuler' => 'إلغاء',
28
+    'antispam_champ_vide' => 'الرجاء الإبقاء على هذا الحقل فارغاً:',
29
+    'articles_recents' => 'أحدث المقالات',
30
+    'attention_champ_mini_nb_caractères' => 'تنبيه! @nb@ حروف على الأقل',
31
+    'avis_1_erreur_saisie' => 'هناك خطأ في إدخالك، الرجاء التدقيق في المعلومات.',
32
+    'avis_archive_incorrect' => 'ملف الأرشيف ليس ملف SPIP',
33
+    'avis_archive_invalide' => 'ملف الأرشيف غير صالح',
34
+    'avis_attention' => 'تحذير!',
35
+    'avis_champ_incorrect_type_objet' => 'إسم حقل @name@ غير صالح لنوع العنصر @type@',
36
+    'avis_colonne_inexistante' => 'العمود @col@ غير موجود',
37
+    'avis_erreur' => 'خطأ: انظر أدناه',
38
+    'avis_erreur_connexion' => 'خطأ اتصال',
39
+    'avis_erreur_cookie' => 'مشكلة في الكعكة',
40
+    'avis_erreur_fonction_contexte' => 'خطأ برمجة. لا يجب المناداة على هذه الوظيفة في هذا السياق.',
41
+    'avis_erreur_mysql' => 'خطأ SQL ',
42
+    'avis_erreur_sauvegarde' => 'خطأ في النسخة الاحتياطية (@type@ @id_objet@)!',
43
+    'avis_erreur_visiteur' => 'هناك مشكلة في الدخول إلى المجال الخاص',
44
+    'avis_nb_erreurs_saisie' => 'هناك @nb@ خطأ في إدخالك، الرجاء التدقيق في المعلومات.',
45 45
 
46
-	// B
47
-	'barre_a_accent_grave' => 'إدراج حرف A كبير مع نبر الإطالة',
48
-	'barre_aide' => 'استخدم شريط اختصارات الكتابة لإثراء تصميم صفحتك',
49
-	'barre_e_accent_aigu' => 'إدراج حرف E كبير مع نبر حاد',
50
-	'barre_eo' => 'إدراج E داخل O',
51
-	'barre_eo_maj' => 'إدراج E كبير داخل O كبير',
52
-	'barre_euro' => 'إدراج رمز €',
53
-	'barre_gras' => '{{غامق{{',
54
-	'barre_guillemets' => 'إحاطة «بعلامتي اقتباس مزدوجة»',
55
-	'barre_guillemets_simples' => 'وضع بين "علامتي اقتباس مزدوجة من المستوى الثاني"',
56
-	'barre_intertitre' => 'تحويل إلى {{{عنوان فقرة}}}',
57
-	'barre_italic' => '{مائل{',
58
-	'barre_lien' => 'تحويل إلى [وصلة هايبرتكست->http://...]',
59
-	'barre_lien_input' => 'الرجاء إدخال عنوان الوصلة (يمكنك إدخال عنوان نسيج على شكل http://www.mysite.com أو إدخال رقم مقال من الموقع الحالي فقط).',
60
-	'barre_note' => 'تحويل إلى [[حاشية]]',
61
-	'barre_paragraphe' => 'إنشاء فقرة',
62
-	'barre_quote' => '<quote>اقتباس رسالة</quote>',
63
-	'bouton_changer' => 'تغيير',
64
-	'bouton_chercher' => 'بحث',
65
-	'bouton_choisir' => 'تحديد',
66
-	'bouton_deplacer' => 'نقل',
67
-	'bouton_download' => 'تحميل',
68
-	'bouton_enregistrer' => 'إدخال',
69
-	'bouton_radio_desactiver_messagerie_interne' => 'إيقاف المراسلة الداخلية',
70
-	'bouton_radio_envoi_annonces' => 'إرسال إعلانات التحرير',
71
-	'bouton_radio_non_envoi_annonces' => 'عدم إرسال الإعلانات',
72
-	'bouton_radio_non_envoi_liste_nouveautes' => 'عدم إرسال قائمة بآخر الأخبار',
73
-	'bouton_recharger_page' => 'إعادة تحميل الصفحة',
74
-	'bouton_telecharger' => 'تحميل',
75
-	'bouton_upload' => 'تنزيل',
76
-	'bouton_valider' => 'إدخال',
46
+    // B
47
+    'barre_a_accent_grave' => 'إدراج حرف A كبير مع نبر الإطالة',
48
+    'barre_aide' => 'استخدم شريط اختصارات الكتابة لإثراء تصميم صفحتك',
49
+    'barre_e_accent_aigu' => 'إدراج حرف E كبير مع نبر حاد',
50
+    'barre_eo' => 'إدراج E داخل O',
51
+    'barre_eo_maj' => 'إدراج E كبير داخل O كبير',
52
+    'barre_euro' => 'إدراج رمز €',
53
+    'barre_gras' => '{{غامق{{',
54
+    'barre_guillemets' => 'إحاطة «بعلامتي اقتباس مزدوجة»',
55
+    'barre_guillemets_simples' => 'وضع بين "علامتي اقتباس مزدوجة من المستوى الثاني"',
56
+    'barre_intertitre' => 'تحويل إلى {{{عنوان فقرة}}}',
57
+    'barre_italic' => '{مائل{',
58
+    'barre_lien' => 'تحويل إلى [وصلة هايبرتكست->http://...]',
59
+    'barre_lien_input' => 'الرجاء إدخال عنوان الوصلة (يمكنك إدخال عنوان نسيج على شكل http://www.mysite.com أو إدخال رقم مقال من الموقع الحالي فقط).',
60
+    'barre_note' => 'تحويل إلى [[حاشية]]',
61
+    'barre_paragraphe' => 'إنشاء فقرة',
62
+    'barre_quote' => '<quote>اقتباس رسالة</quote>',
63
+    'bouton_changer' => 'تغيير',
64
+    'bouton_chercher' => 'بحث',
65
+    'bouton_choisir' => 'تحديد',
66
+    'bouton_deplacer' => 'نقل',
67
+    'bouton_download' => 'تحميل',
68
+    'bouton_enregistrer' => 'إدخال',
69
+    'bouton_radio_desactiver_messagerie_interne' => 'إيقاف المراسلة الداخلية',
70
+    'bouton_radio_envoi_annonces' => 'إرسال إعلانات التحرير',
71
+    'bouton_radio_non_envoi_annonces' => 'عدم إرسال الإعلانات',
72
+    'bouton_radio_non_envoi_liste_nouveautes' => 'عدم إرسال قائمة بآخر الأخبار',
73
+    'bouton_recharger_page' => 'إعادة تحميل الصفحة',
74
+    'bouton_telecharger' => 'تحميل',
75
+    'bouton_upload' => 'تنزيل',
76
+    'bouton_valider' => 'إدخال',
77 77
 
78
-	// C
79
-	'cal_apresmidi' => 'بعد الظهر',
80
-	'cal_jour_entier' => 'يوم كامل',
81
-	'cal_matin' => 'الصباح',
82
-	'cal_par_jour' => 'روزنامة يومية',
83
-	'cal_par_mois' => 'روزنامة شهرية',
84
-	'cal_par_semaine' => 'روزنامة أسبوعية',
85
-	'choix_couleur_interface' => 'اللون',
86
-	'choix_interface' => 'اختيار الواجهة',
87
-	'colonne' => 'عمود',
88
-	'confirm_changer_statut' => 'تحذير، لقد طلبت تغيير حالة هذا العنصر. هل تريد المتابعة؟',
89
-	'correcte' => 'صحيح',
78
+    // C
79
+    'cal_apresmidi' => 'بعد الظهر',
80
+    'cal_jour_entier' => 'يوم كامل',
81
+    'cal_matin' => 'الصباح',
82
+    'cal_par_jour' => 'روزنامة يومية',
83
+    'cal_par_mois' => 'روزنامة شهرية',
84
+    'cal_par_semaine' => 'روزنامة أسبوعية',
85
+    'choix_couleur_interface' => 'اللون',
86
+    'choix_interface' => 'اختيار الواجهة',
87
+    'colonne' => 'عمود',
88
+    'confirm_changer_statut' => 'تحذير، لقد طلبت تغيير حالة هذا العنصر. هل تريد المتابعة؟',
89
+    'correcte' => 'صحيح',
90 90
 
91
-	// D
92
-	'date_aujourdhui' => 'اليوم',
93
-	'date_avant_jc' => 'قبل الميلاد',
94
-	'date_dans' => 'بعد @delai@',
95
-	'date_de_mois_1' => '@j@ @nommois@',
96
-	'date_de_mois_10' => '@j@ @nommois@',
97
-	'date_de_mois_11' => '@j@ @nommois@',
98
-	'date_de_mois_12' => '@j@ @nommois@',
99
-	'date_de_mois_2' => '@j@ @nommois@',
100
-	'date_de_mois_3' => '@j@ @nommois@',
101
-	'date_de_mois_4' => '@j@ @nommois@',
102
-	'date_de_mois_5' => '@j@ @nommois@',
103
-	'date_de_mois_6' => '@j@ @nommois@',
104
-	'date_de_mois_7' => '@j@ @nommois@',
105
-	'date_de_mois_8' => '@j@ @nommois@',
106
-	'date_de_mois_9' => '@j@ @nommois@',
107
-	'date_demain' => 'غداً',
108
-	'date_fmt_heures_minutes' => '@h@  و@m@  دقيقة',
109
-	'date_fmt_heures_minutes_court' => '@h@h@m@',
110
-	'date_fmt_jour' => '@nomjour@ @jour@',
111
-	'date_fmt_jour_heure' => '@jour@ الساعة @heure@',
112
-	'date_fmt_jour_heure_debut_fin' => 'في @jour@ من @heure_debut@ الى @heure_fin@',
113
-	'date_fmt_jour_heure_debut_fin_abbr' => 'في @dtstart@@jour@ من @heure_debut@@dtabbr@ الى @dtend@@heure_fin@@dtabbr@',
114
-	'date_fmt_jour_mois' => '@jour@ @nommois@',
115
-	'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
116
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
117
-	'date_fmt_nomjour' => '@nomjour@ @date@',
118
-	'date_fmt_nomjour_date' => 'في @nomjour@ @date@',
119
-	'date_fmt_periode' => 'من @date_debut@ الى @date_fin@',
120
-	'date_fmt_periode_abbr' => 'من @dtart@@date_debut@@dtabbr@ الى @dtend@@date_fin@@dtabbr@',
121
-	'date_fmt_periode_from' => 'من',
122
-	'date_fmt_periode_to' => 'الى',
123
-	'date_fmt_saison_annee' => '@saison@ @annee@',
124
-	'date_heures' => 'ساعة',
125
-	'date_hier' => 'البارحة',
126
-	'date_il_y_a' => 'منذ @delai@',
127
-	'date_jnum1' => '1',
128
-	'date_jnum10' => '10',
129
-	'date_jnum11' => '11',
130
-	'date_jnum12' => '12',
131
-	'date_jnum13' => '13',
132
-	'date_jnum14' => '14',
133
-	'date_jnum15' => '15',
134
-	'date_jnum16' => '16',
135
-	'date_jnum17' => '17',
136
-	'date_jnum18' => '18',
137
-	'date_jnum19' => '19',
138
-	'date_jnum2' => '2',
139
-	'date_jnum20' => '20',
140
-	'date_jnum21' => '21',
141
-	'date_jnum22' => '22',
142
-	'date_jnum23' => '23',
143
-	'date_jnum24' => '24',
144
-	'date_jnum25' => '25',
145
-	'date_jnum26' => '26',
146
-	'date_jnum27' => '27',
147
-	'date_jnum28' => '28',
148
-	'date_jnum29' => '29',
149
-	'date_jnum3' => '3',
150
-	'date_jnum30' => '30',
151
-	'date_jnum31' => '31',
152
-	'date_jnum4' => '4',
153
-	'date_jnum5' => '5',
154
-	'date_jnum6' => '6',
155
-	'date_jnum7' => '7',
156
-	'date_jnum8' => '8',
157
-	'date_jnum9' => '9',
158
-	'date_jour_1' => 'الأحد',
159
-	'date_jour_1_abbr' => 'أحد',
160
-	'date_jour_1_initiale' => 'أحد',
161
-	'date_jour_2' => 'الاثنين',
162
-	'date_jour_2_abbr' => 'اثنين',
163
-	'date_jour_2_initiale' => 'اثنين',
164
-	'date_jour_3' => 'الثلاثاء',
165
-	'date_jour_3_abbr' => 'ثلاثاء',
166
-	'date_jour_3_initiale' => 'ثلاثاء',
167
-	'date_jour_4' => 'الأربعاء',
168
-	'date_jour_4_abbr' => 'أربعاء',
169
-	'date_jour_4_initiale' => 'أربعاء',
170
-	'date_jour_5' => 'الخميس',
171
-	'date_jour_5_abbr' => 'خميس',
172
-	'date_jour_5_initiale' => 'خميس',
173
-	'date_jour_6' => 'الجمعة',
174
-	'date_jour_6_abbr' => 'جمعة',
175
-	'date_jour_6_initiale' => 'جمعة',
176
-	'date_jour_7' => 'السبت',
177
-	'date_jour_7_abbr' => 'سبت',
178
-	'date_jour_7_initiale' => 'سبت',
179
-	'date_jours' => 'يوم',
180
-	'date_minutes' => 'دقيقة',
181
-	'date_mois' => 'شهر',
182
-	'date_mois_1' => 'كانون الثاني (يناير)',
183
-	'date_mois_10' => 'تشرين الأول (أكتوبر)',
184
-	'date_mois_10_abbr' => 'ت١',
185
-	'date_mois_11' => 'تشرين الثاني (نوفمبر)',
186
-	'date_mois_11_abbr' => 'ت٢',
187
-	'date_mois_12' => 'كانون الأول (ديسمبر)',
188
-	'date_mois_12_abbr' => 'ك١',
189
-	'date_mois_1_abbr' => 'ك٢',
190
-	'date_mois_2' => 'شباط (فبراير)',
191
-	'date_mois_2_abbr' => 'شباط',
192
-	'date_mois_3' => 'آذار (مارس)',
193
-	'date_mois_3_abbr' => 'آذار',
194
-	'date_mois_4' => 'نيسان (أبريل)',
195
-	'date_mois_4_abbr' => 'نيسان',
196
-	'date_mois_5' => 'أيار (مايو)',
197
-	'date_mois_5_abbr' => 'أيار',
198
-	'date_mois_6' => 'حزيران (يونيو)',
199
-	'date_mois_6_abbr' => 'جزيران',
200
-	'date_mois_7' => 'تموز (يوليو)',
201
-	'date_mois_7_abbr' => 'تموز',
202
-	'date_mois_8' => 'آب (أغسطس)',
203
-	'date_mois_8_abbr' => 'آب',
204
-	'date_mois_9' => 'أيلول (سبتمبر)',
205
-	'date_mois_9_abbr' => 'أيلول',
206
-	'date_saison_1' => 'الشتاء',
207
-	'date_saison_2' => 'الربيع',
208
-	'date_saison_3' => 'الصيف',
209
-	'date_saison_4' => 'الخريف',
210
-	'date_secondes' => 'ثانية',
211
-	'date_semaines' => 'أسبوع',
212
-	'date_un_mois' => 'شهر',
213
-	'date_une_heure' => 'ساعة',
214
-	'date_une_minute' => 'دقيقة',
215
-	'date_une_seconde' => 'ثانية',
216
-	'date_une_semaine' => 'أسبوع',
217
-	'dirs_commencer' => 'للبدء فعلاً بعملية التثبيت',
218
-	'dirs_preliminaire' => 'تمهيد: <b>إعداد امتيازات الدخول</b>',
219
-	'dirs_probleme_droits' => 'مشكلة في امتيازات الدخول',
220
-	'dirs_repertoires_absents' => '<p><b>لم يتم العثور على الأدلة التالية: </b></p><ul>@bad_dirs@</ul>
91
+    // D
92
+    'date_aujourdhui' => 'اليوم',
93
+    'date_avant_jc' => 'قبل الميلاد',
94
+    'date_dans' => 'بعد @delai@',
95
+    'date_de_mois_1' => '@j@ @nommois@',
96
+    'date_de_mois_10' => '@j@ @nommois@',
97
+    'date_de_mois_11' => '@j@ @nommois@',
98
+    'date_de_mois_12' => '@j@ @nommois@',
99
+    'date_de_mois_2' => '@j@ @nommois@',
100
+    'date_de_mois_3' => '@j@ @nommois@',
101
+    'date_de_mois_4' => '@j@ @nommois@',
102
+    'date_de_mois_5' => '@j@ @nommois@',
103
+    'date_de_mois_6' => '@j@ @nommois@',
104
+    'date_de_mois_7' => '@j@ @nommois@',
105
+    'date_de_mois_8' => '@j@ @nommois@',
106
+    'date_de_mois_9' => '@j@ @nommois@',
107
+    'date_demain' => 'غداً',
108
+    'date_fmt_heures_minutes' => '@h@  و@m@  دقيقة',
109
+    'date_fmt_heures_minutes_court' => '@h@h@m@',
110
+    'date_fmt_jour' => '@nomjour@ @jour@',
111
+    'date_fmt_jour_heure' => '@jour@ الساعة @heure@',
112
+    'date_fmt_jour_heure_debut_fin' => 'في @jour@ من @heure_debut@ الى @heure_fin@',
113
+    'date_fmt_jour_heure_debut_fin_abbr' => 'في @dtstart@@jour@ من @heure_debut@@dtabbr@ الى @dtend@@heure_fin@@dtabbr@',
114
+    'date_fmt_jour_mois' => '@jour@ @nommois@',
115
+    'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
116
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
117
+    'date_fmt_nomjour' => '@nomjour@ @date@',
118
+    'date_fmt_nomjour_date' => 'في @nomjour@ @date@',
119
+    'date_fmt_periode' => 'من @date_debut@ الى @date_fin@',
120
+    'date_fmt_periode_abbr' => 'من @dtart@@date_debut@@dtabbr@ الى @dtend@@date_fin@@dtabbr@',
121
+    'date_fmt_periode_from' => 'من',
122
+    'date_fmt_periode_to' => 'الى',
123
+    'date_fmt_saison_annee' => '@saison@ @annee@',
124
+    'date_heures' => 'ساعة',
125
+    'date_hier' => 'البارحة',
126
+    'date_il_y_a' => 'منذ @delai@',
127
+    'date_jnum1' => '1',
128
+    'date_jnum10' => '10',
129
+    'date_jnum11' => '11',
130
+    'date_jnum12' => '12',
131
+    'date_jnum13' => '13',
132
+    'date_jnum14' => '14',
133
+    'date_jnum15' => '15',
134
+    'date_jnum16' => '16',
135
+    'date_jnum17' => '17',
136
+    'date_jnum18' => '18',
137
+    'date_jnum19' => '19',
138
+    'date_jnum2' => '2',
139
+    'date_jnum20' => '20',
140
+    'date_jnum21' => '21',
141
+    'date_jnum22' => '22',
142
+    'date_jnum23' => '23',
143
+    'date_jnum24' => '24',
144
+    'date_jnum25' => '25',
145
+    'date_jnum26' => '26',
146
+    'date_jnum27' => '27',
147
+    'date_jnum28' => '28',
148
+    'date_jnum29' => '29',
149
+    'date_jnum3' => '3',
150
+    'date_jnum30' => '30',
151
+    'date_jnum31' => '31',
152
+    'date_jnum4' => '4',
153
+    'date_jnum5' => '5',
154
+    'date_jnum6' => '6',
155
+    'date_jnum7' => '7',
156
+    'date_jnum8' => '8',
157
+    'date_jnum9' => '9',
158
+    'date_jour_1' => 'الأحد',
159
+    'date_jour_1_abbr' => 'أحد',
160
+    'date_jour_1_initiale' => 'أحد',
161
+    'date_jour_2' => 'الاثنين',
162
+    'date_jour_2_abbr' => 'اثنين',
163
+    'date_jour_2_initiale' => 'اثنين',
164
+    'date_jour_3' => 'الثلاثاء',
165
+    'date_jour_3_abbr' => 'ثلاثاء',
166
+    'date_jour_3_initiale' => 'ثلاثاء',
167
+    'date_jour_4' => 'الأربعاء',
168
+    'date_jour_4_abbr' => 'أربعاء',
169
+    'date_jour_4_initiale' => 'أربعاء',
170
+    'date_jour_5' => 'الخميس',
171
+    'date_jour_5_abbr' => 'خميس',
172
+    'date_jour_5_initiale' => 'خميس',
173
+    'date_jour_6' => 'الجمعة',
174
+    'date_jour_6_abbr' => 'جمعة',
175
+    'date_jour_6_initiale' => 'جمعة',
176
+    'date_jour_7' => 'السبت',
177
+    'date_jour_7_abbr' => 'سبت',
178
+    'date_jour_7_initiale' => 'سبت',
179
+    'date_jours' => 'يوم',
180
+    'date_minutes' => 'دقيقة',
181
+    'date_mois' => 'شهر',
182
+    'date_mois_1' => 'كانون الثاني (يناير)',
183
+    'date_mois_10' => 'تشرين الأول (أكتوبر)',
184
+    'date_mois_10_abbr' => 'ت١',
185
+    'date_mois_11' => 'تشرين الثاني (نوفمبر)',
186
+    'date_mois_11_abbr' => 'ت٢',
187
+    'date_mois_12' => 'كانون الأول (ديسمبر)',
188
+    'date_mois_12_abbr' => 'ك١',
189
+    'date_mois_1_abbr' => 'ك٢',
190
+    'date_mois_2' => 'شباط (فبراير)',
191
+    'date_mois_2_abbr' => 'شباط',
192
+    'date_mois_3' => 'آذار (مارس)',
193
+    'date_mois_3_abbr' => 'آذار',
194
+    'date_mois_4' => 'نيسان (أبريل)',
195
+    'date_mois_4_abbr' => 'نيسان',
196
+    'date_mois_5' => 'أيار (مايو)',
197
+    'date_mois_5_abbr' => 'أيار',
198
+    'date_mois_6' => 'حزيران (يونيو)',
199
+    'date_mois_6_abbr' => 'جزيران',
200
+    'date_mois_7' => 'تموز (يوليو)',
201
+    'date_mois_7_abbr' => 'تموز',
202
+    'date_mois_8' => 'آب (أغسطس)',
203
+    'date_mois_8_abbr' => 'آب',
204
+    'date_mois_9' => 'أيلول (سبتمبر)',
205
+    'date_mois_9_abbr' => 'أيلول',
206
+    'date_saison_1' => 'الشتاء',
207
+    'date_saison_2' => 'الربيع',
208
+    'date_saison_3' => 'الصيف',
209
+    'date_saison_4' => 'الخريف',
210
+    'date_secondes' => 'ثانية',
211
+    'date_semaines' => 'أسبوع',
212
+    'date_un_mois' => 'شهر',
213
+    'date_une_heure' => 'ساعة',
214
+    'date_une_minute' => 'دقيقة',
215
+    'date_une_seconde' => 'ثانية',
216
+    'date_une_semaine' => 'أسبوع',
217
+    'dirs_commencer' => 'للبدء فعلاً بعملية التثبيت',
218
+    'dirs_preliminaire' => 'تمهيد: <b>إعداد امتيازات الدخول</b>',
219
+    'dirs_probleme_droits' => 'مشكلة في امتيازات الدخول',
220
+    'dirs_repertoires_absents' => '<p><b>لم يتم العثور على الأدلة التالية: </b></p><ul>@bad_dirs@</ul>
221 221
 <p>قد يكون السبب خطأ في اعتماد الحروف الكبيرة أو الصغيرة في أسمائها. الرجاء التأكد من أن الحروف الكبيرة والصغيرة في أسماء هذه الأدلة تناسب ما هو معروض أعلاه؛ إذا لم يكن الأمر كذلك، الرجاء إعادة تسمية الأدلة بواسطة برنامج FTP لتصحيح الخطأ.
222 222
 <p>بعد تنفيذ هذه العملية يمكنك </p>',
223
-	'dirs_repertoires_suivants' => '<p><b>الأدلة التالية ممنوعة على الكتابة: </b></p
223
+    'dirs_repertoires_suivants' => '<p><b>الأدلة التالية ممنوعة على الكتابة: </b></p
224 224
 <ul>@bad_dirs@</ul>
225 225
 <p>لحل هذه المشكلة، استخدم برنامج FTP لإعداد امتيازات الدخول لكل من هذه الأدلة. ويوضح دليل الاستخدام هذه العملية بالتفصيل.
226 226
 <p>بعد إتمام هذه العملية يمكنك</p>',
227
-	'double_occurrence' => 'ظهور مكرر لعلامة @balise@',
227
+    'double_occurrence' => 'ظهور مكرر لعلامة @balise@',
228 228
 
229
-	// E
230
-	'en_cours' => 'جاري',
231
-	'envoi_via_le_site' => 'إرسال عبر الموقع',
232
-	'erreur' => 'خطأ',
233
-	'erreur_balise_non_fermee' => 'آخر علامة غير مغلقة:',
234
-	'erreur_technique_ajaxform' => 'عفواً. حدث خطأ غير متوقع خلال إرسال الاستمارة. الرجاء المحاولة من جديد.',
235
-	'erreur_technique_enregistrement_champs' => 'خطأ تقني منع التسجيل السليم للحقل @champs@. ',
236
-	'erreur_technique_enregistrement_impossible' => 'خطأ تقني منع التسجيل.',
237
-	'erreur_texte' => 'خطأ (أخطاء)',
238
-	'etape' => 'خطوة',
229
+    // E
230
+    'en_cours' => 'جاري',
231
+    'envoi_via_le_site' => 'إرسال عبر الموقع',
232
+    'erreur' => 'خطأ',
233
+    'erreur_balise_non_fermee' => 'آخر علامة غير مغلقة:',
234
+    'erreur_technique_ajaxform' => 'عفواً. حدث خطأ غير متوقع خلال إرسال الاستمارة. الرجاء المحاولة من جديد.',
235
+    'erreur_technique_enregistrement_champs' => 'خطأ تقني منع التسجيل السليم للحقل @champs@. ',
236
+    'erreur_technique_enregistrement_impossible' => 'خطأ تقني منع التسجيل.',
237
+    'erreur_texte' => 'خطأ (أخطاء)',
238
+    'etape' => 'خطوة',
239 239
 
240
-	// F
241
-	'fichier_introuvable' => 'لا يمكن العثور على الملف @fichier@',
242
-	'fonction_introuvable' => 'دالة @fonction@() غير موجودة.',
243
-	'form_auteur_confirmation' => 'تأكيد عنوان البريد الالكتروني',
244
-	'form_auteur_email_modifie' => 'تغير عنوان بريدك.',
245
-	'form_auteur_envoi_mail_confirmation' => 'لفد تم ارسال بريد تأكيد الى @email@. عليك زيارة عنوان الموقع الموجود في الرسالة للتصديق على عنوان بريدك.',
246
-	'form_auteur_mail_confirmation' => 'أهلاً وسهلاً
240
+    // F
241
+    'fichier_introuvable' => 'لا يمكن العثور على الملف @fichier@',
242
+    'fonction_introuvable' => 'دالة @fonction@() غير موجودة.',
243
+    'form_auteur_confirmation' => 'تأكيد عنوان البريد الالكتروني',
244
+    'form_auteur_email_modifie' => 'تغير عنوان بريدك.',
245
+    'form_auteur_envoi_mail_confirmation' => 'لفد تم ارسال بريد تأكيد الى @email@. عليك زيارة عنوان الموقع الموجود في الرسالة للتصديق على عنوان بريدك.',
246
+    'form_auteur_mail_confirmation' => 'أهلاً وسهلاً
247 247
 
248 248
 لقد طلبت تغيير عنوان بريدك.
249 249
 للتصديق على العنوان الجديد، يكفي الاتصال
@@ -252,347 +252,347 @@  discard block
 block discarded – undo
252 252
 
253 253
     @url@
254 254
 ',
255
-	'form_deja_inscrit' => 'سبق لك التسجيل.',
256
-	'form_email_non_valide' => 'عنوانك البريدي غير صالح.',
257
-	'form_forum_access_refuse' => 'لم تعد تملك امتياز الدحول إلى هذا الموقع.',
258
-	'form_forum_bonjour' => 'مرحباً @nom@،',
259
-	'form_forum_confirmer_email' => 'لتأكيد عنوان بريدك، إذهب الى:@url_confirm@',
260
-	'form_forum_email_deja_enregistre' => 'سبق تسجيل هذا العنوان البريدي، يمكنك إذاً استخدام كلمة سرك الاعتيادية.',
261
-	'form_forum_identifiant_mail' => 'لقد تم إرسال معرّفك الجديد بالبريد الالكتروني.',
262
-	'form_forum_identifiants' => 'بيانات الاتصال الشخصية',
263
-	'form_forum_indiquer_nom_email' => 'قم بإدخال اسمك وعنوانك البريدي هنا. ستحصل على بيانات اتصالك قريباً في البريد الإلكتروني.',
264
-	'form_forum_login' => 'المعرّف:',
265
-	'form_forum_message_auto' => '(هذه رسالة آلية)',
266
-	'form_forum_pass' => 'كلمة السر:',
267
-	'form_forum_probleme_mail' => 'مشكلة بريد إلكتروني: لا يمكن إرسال بيانات الدخول.',
268
-	'form_forum_voici1' => 'هذه هي بياناتك للاشتراك في نشاط
255
+    'form_deja_inscrit' => 'سبق لك التسجيل.',
256
+    'form_email_non_valide' => 'عنوانك البريدي غير صالح.',
257
+    'form_forum_access_refuse' => 'لم تعد تملك امتياز الدحول إلى هذا الموقع.',
258
+    'form_forum_bonjour' => 'مرحباً @nom@،',
259
+    'form_forum_confirmer_email' => 'لتأكيد عنوان بريدك، إذهب الى:@url_confirm@',
260
+    'form_forum_email_deja_enregistre' => 'سبق تسجيل هذا العنوان البريدي، يمكنك إذاً استخدام كلمة سرك الاعتيادية.',
261
+    'form_forum_identifiant_mail' => 'لقد تم إرسال معرّفك الجديد بالبريد الالكتروني.',
262
+    'form_forum_identifiants' => 'بيانات الاتصال الشخصية',
263
+    'form_forum_indiquer_nom_email' => 'قم بإدخال اسمك وعنوانك البريدي هنا. ستحصل على بيانات اتصالك قريباً في البريد الإلكتروني.',
264
+    'form_forum_login' => 'المعرّف:',
265
+    'form_forum_message_auto' => '(هذه رسالة آلية)',
266
+    'form_forum_pass' => 'كلمة السر:',
267
+    'form_forum_probleme_mail' => 'مشكلة بريد إلكتروني: لا يمكن إرسال بيانات الدخول.',
268
+    'form_forum_voici1' => 'هذه هي بياناتك للاشتراك في نشاط
269 269
 الموقع  "@nom_site_spip@" (@adresse_site@):',
270
-	'form_forum_voici2' => 'هذه هي بياناتك لاقتراح مقالات
270
+    'form_forum_voici2' => 'هذه هي بياناتك لاقتراح مقالات
271 271
 للموقع  "@nom_site_spip@" (@adresse_login@):',
272
-	'form_indiquer_email' => 'الرجاء إدخال عنوانك الإلكتروني.',
273
-	'form_indiquer_nom' => 'الرجاء إدخال اسمك.',
274
-	'form_indiquer_nom_site' => 'الرجاء إدخال إسم موقعك.',
275
-	'form_pet_deja_enregistre' => 'سبق تسجيل هذا الموقع',
276
-	'form_pet_signature_pasprise' => 'تم تجاهل توقيعك.',
277
-	'form_prop_confirmer_envoi' => 'تأكيد الإرسال',
278
-	'form_prop_description' => 'وصف/تعليق',
279
-	'form_prop_enregistre' => 'تم تسجيل اقتراحك، سوف يظهر بعد تصديقه من قبل مسئولي هذا الموقع.',
280
-	'form_prop_envoyer' => 'ابعث برسالة',
281
-	'form_prop_indiquer_email' => 'الرجاء إدخال عنوان بريد إلكتروني صالح',
282
-	'form_prop_indiquer_nom_site' => 'الرجاء إدخال اسم الموقع.',
283
-	'form_prop_indiquer_sujet' => 'الرجاء إدخال موضوع',
284
-	'form_prop_message_envoye' => 'تم بعث الرسالة',
285
-	'form_prop_non_enregistre' => 'لم يتم تسجيل اقتراحك.',
286
-	'form_prop_sujet' => 'الموضوع',
287
-	'form_prop_url_site' => 'عنوان الموقع',
288
-	'format_date_attendu' => 'إدخال تاريخ بتنسيق jj/mm/aaaa.',
289
-	'format_date_incorrecte' => 'التاريخ او تنسيقه غير صحيح',
290
-	'format_heure_attendu' => 'إدخال ساعة بتنسيق hh:mm.',
291
-	'format_heure_incorrecte' => 'الساعة او تنسيقها غير صحيح',
292
-	'forum_non_inscrit' => 'إما انك غير مسجل أو هناك خطأ في العنوان أو كلمة السر.',
293
-	'forum_par_auteur' => 'من @auteur@',
294
-	'forum_titre_erreur' => 'خطأ...',
272
+    'form_indiquer_email' => 'الرجاء إدخال عنوانك الإلكتروني.',
273
+    'form_indiquer_nom' => 'الرجاء إدخال اسمك.',
274
+    'form_indiquer_nom_site' => 'الرجاء إدخال إسم موقعك.',
275
+    'form_pet_deja_enregistre' => 'سبق تسجيل هذا الموقع',
276
+    'form_pet_signature_pasprise' => 'تم تجاهل توقيعك.',
277
+    'form_prop_confirmer_envoi' => 'تأكيد الإرسال',
278
+    'form_prop_description' => 'وصف/تعليق',
279
+    'form_prop_enregistre' => 'تم تسجيل اقتراحك، سوف يظهر بعد تصديقه من قبل مسئولي هذا الموقع.',
280
+    'form_prop_envoyer' => 'ابعث برسالة',
281
+    'form_prop_indiquer_email' => 'الرجاء إدخال عنوان بريد إلكتروني صالح',
282
+    'form_prop_indiquer_nom_site' => 'الرجاء إدخال اسم الموقع.',
283
+    'form_prop_indiquer_sujet' => 'الرجاء إدخال موضوع',
284
+    'form_prop_message_envoye' => 'تم بعث الرسالة',
285
+    'form_prop_non_enregistre' => 'لم يتم تسجيل اقتراحك.',
286
+    'form_prop_sujet' => 'الموضوع',
287
+    'form_prop_url_site' => 'عنوان الموقع',
288
+    'format_date_attendu' => 'إدخال تاريخ بتنسيق jj/mm/aaaa.',
289
+    'format_date_incorrecte' => 'التاريخ او تنسيقه غير صحيح',
290
+    'format_heure_attendu' => 'إدخال ساعة بتنسيق hh:mm.',
291
+    'format_heure_incorrecte' => 'الساعة او تنسيقها غير صحيح',
292
+    'forum_non_inscrit' => 'إما انك غير مسجل أو هناك خطأ في العنوان أو كلمة السر.',
293
+    'forum_par_auteur' => 'من @auteur@',
294
+    'forum_titre_erreur' => 'خطأ...',
295 295
 
296
-	// I
297
-	'ical_texte_rss_articles' => 'يوجد ملف «الترخيص الخلفي» لمقالات هذا الموقع على العنوان: ',
298
-	'ical_texte_rss_articles2' => 'يمكنك أيضاً الحصول على ملفات «الترخيص الخلفي» لمقالات كل قسم في الموقع:',
299
-	'ical_texte_rss_breves' => 'يوجد كذلك ملف يحتوي على أخبار الموقع. وبإدخال رقم قسم ما، تحصل على أخبار هذا القسم فقط.',
300
-	'icone_a_suivre' => 'للمتابعة',
301
-	'icone_admin_site' => 'إدارة الموقع',
302
-	'icone_agenda' => 'المفكرة',
303
-	'icone_aide_ligne' => 'التعليمات الفورية',
304
-	'icone_articles' => 'المقالات',
305
-	'icone_auteurs' => 'المؤلفون',
306
-	'icone_brouteur' => 'تصفح سريع',
307
-	'icone_configuration_site' => 'إعداد',
308
-	'icone_configurer_site' => 'إعداد موقعك',
309
-	'icone_creer_nouvel_auteur' => 'إضافة مؤلف جديد',
310
-	'icone_creer_rubrique' => 'إنشاء قسم',
311
-	'icone_creer_sous_rubrique' => 'إنشاء قسم فرعي',
312
-	'icone_deconnecter' => 'خروج',
313
-	'icone_discussions' => 'نقاشات',
314
-	'icone_doc_rubrique' => 'مستندات الأقسام',
315
-	'icone_ecrire_article' => 'كتابة مقال جديد',
316
-	'icone_edition_site' => 'تحرير الموقع',
317
-	'icone_gestion_langues' => 'إدارة اللغات',
318
-	'icone_informations_personnelles' => 'المعلومات الشخصية',
319
-	'icone_interface_complet' => 'واجهة كاملة',
320
-	'icone_interface_simple' => 'واجهة مبسّطة',
321
-	'icone_maintenance_site' => 'صيانة الموقع',
322
-	'icone_messagerie_personnelle' => 'المراسلة الشخصية',
323
-	'icone_repartition_debut' => 'إظهار التوزيع منذ البداية',
324
-	'icone_rubriques' => 'الأقسام',
325
-	'icone_sauver_site' => 'نسخة احتياطية للموقع',
326
-	'icone_site_entier' => 'الموقع بالكامل',
327
-	'icone_sites_references' => 'المواقع المبوبة',
328
-	'icone_statistiques' => 'إحصاءات الموقع',
329
-	'icone_suivi_activite' => 'متابعة نشاط الموقع',
330
-	'icone_suivi_actualite' => 'تطور الموقع',
331
-	'icone_suivi_pettions' => 'متابعة/إدارة العرائض',
332
-	'icone_suivi_revisions' => 'تعديل المقالات',
333
-	'icone_supprimer_document' => 'حذف هذا المستند',
334
-	'icone_supprimer_image' => 'حذف هذه الصورة',
335
-	'icone_tous_articles' => 'كل مقالاتك',
336
-	'icone_tous_auteur' => 'جميع المؤلفين',
337
-	'icone_tous_visiteur' => 'جميع الزوار',
338
-	'icone_visiter_site' => 'تصفح الموقع العمومي',
339
-	'icone_voir_en_ligne' => 'عرض مباشر',
340
-	'img_indisponible' => 'صورة غير متوفرة',
341
-	'impossible' => 'مستحيل',
342
-	'info_a_suivre' => 'للمتابعة»',
343
-	'info_acces_interdit' => 'الدخول محظور',
344
-	'info_acces_refuse' => 'دخول محظور',
345
-	'info_action' => 'عملية: @action@',
346
-	'info_administrer_rubriques' => 'يمكنك إدارة هذا القسم وأقسامه الفرعية',
347
-	'info_adresse_non_indiquee' => 'لم تدخل أي عنوان لاختباره!',
348
-	'info_aide' => 'تعليمات :',
349
-	'info_ajouter_mot' => 'إضافة هذا المفتاح',
350
-	'info_annonce' => 'إعلان',
351
-	'info_annonces_generales' => 'إعلانات عامة:',
352
-	'info_article_propose' => 'مقال مقترح',
353
-	'info_article_publie' => 'مقال منشور',
354
-	'info_article_redaction' => 'مقال قيد التحرير',
355
-	'info_article_refuse' => 'مقال مرفوض',
356
-	'info_article_supprime' => 'مقال محذوف',
357
-	'info_articles' => 'المقالات',
358
-	'info_articles_a_valider' => 'مقالات معروضة للتصديق',
359
-	'info_articles_nb' => '@nb@ مقال',
360
-	'info_articles_proposes' => 'المقالات المعروضة',
361
-	'info_articles_un' => 'مقال واحد',
362
-	'info_auteurs_nombre' => 'مؤلف (مؤلفون):',
363
-	'info_authentification_ftp' => 'التحقق ( عبر بروتوكول FTP ).',
364
-	'info_breves_2' => 'خبر',
365
-	'info_breves_nb' => '@nb@ خبر',
366
-	'info_breves_un' => 'خبر واحد',
367
-	'info_connexion_refusee' => 'رفض الاتصال',
368
-	'info_contact_developpeur' => 'الرجاء الاتصال بمطوّر.',
369
-	'info_contenance' => 'هذا الموقع يحتوي على:',
370
-	'info_contribution' => 'مشاركة منتديات',
371
-	'info_copyright' => '@spip@ برنامج حر موزع @lien_gpl@.',
372
-	'info_copyright_doc' => 'لمزيد من المعلومات راجع الموقع<a href="@spipnet@">@spipnet_affiche@</a>.',
373
-	'info_copyright_gpl' => 'بموجب الترخيص العام GPL',
374
-	'info_cours_edition' => 'قيد التحرير',
375
-	'info_creer_repertoire' => 'الرجاء إنشاء ملف أو دليل باسم',
376
-	'info_creer_repertoire_2' => 'داخل الدليل الفرعي <b>@repertoire@</b>، ثم:',
377
-	'info_creer_vignette' => 'إنشاء آلي للمصغر',
378
-	'info_creerdansrubrique_non_autorise' => 'لا تملك الحقوق الكافية لإنشاء اي محتوى في هذا القسم',
379
-	'info_deplier' => 'بسط',
380
-	'info_descriptif_nombre' => 'الوصف:',
381
-	'info_description' => 'الوصف:',
382
-	'info_description_2' => 'الوصف:',
383
-	'info_dimension' => 'الحجم:',
384
-	'info_documents_nb' => '@nb@ مستند',
385
-	'info_documents_un' => 'مستند واحد',
386
-	'info_ecire_message_prive' => 'تحرير رسالة خاصة',
387
-	'info_email_invalide' => 'عنوان بريد غير صالح.',
388
-	'info_en_cours_validation' => 'مقالاتك قيد التحرير',
389
-	'info_en_ligne' => 'متصل حالياً:',
390
-	'info_envoyer_message_prive' => 'ابعث برسالة خاصة لهذا المؤلف',
391
-	'info_erreur_requete' => 'خطأ في الاستفسار:',
392
-	'info_erreur_squelette2' => 'لا توجد صفحة نموذجية <b>@fichier@</b> متاحة...',
393
-	'info_erreur_systeme' => 'خطأ في النظام (خطأ رقم @errsys@)',
394
-	'info_erreur_systeme2' => 'قد يكون القرص الصلب ممتلئاً أو قد تكون قاعدة البيانات معطلة.<br />
296
+    // I
297
+    'ical_texte_rss_articles' => 'يوجد ملف «الترخيص الخلفي» لمقالات هذا الموقع على العنوان: ',
298
+    'ical_texte_rss_articles2' => 'يمكنك أيضاً الحصول على ملفات «الترخيص الخلفي» لمقالات كل قسم في الموقع:',
299
+    'ical_texte_rss_breves' => 'يوجد كذلك ملف يحتوي على أخبار الموقع. وبإدخال رقم قسم ما، تحصل على أخبار هذا القسم فقط.',
300
+    'icone_a_suivre' => 'للمتابعة',
301
+    'icone_admin_site' => 'إدارة الموقع',
302
+    'icone_agenda' => 'المفكرة',
303
+    'icone_aide_ligne' => 'التعليمات الفورية',
304
+    'icone_articles' => 'المقالات',
305
+    'icone_auteurs' => 'المؤلفون',
306
+    'icone_brouteur' => 'تصفح سريع',
307
+    'icone_configuration_site' => 'إعداد',
308
+    'icone_configurer_site' => 'إعداد موقعك',
309
+    'icone_creer_nouvel_auteur' => 'إضافة مؤلف جديد',
310
+    'icone_creer_rubrique' => 'إنشاء قسم',
311
+    'icone_creer_sous_rubrique' => 'إنشاء قسم فرعي',
312
+    'icone_deconnecter' => 'خروج',
313
+    'icone_discussions' => 'نقاشات',
314
+    'icone_doc_rubrique' => 'مستندات الأقسام',
315
+    'icone_ecrire_article' => 'كتابة مقال جديد',
316
+    'icone_edition_site' => 'تحرير الموقع',
317
+    'icone_gestion_langues' => 'إدارة اللغات',
318
+    'icone_informations_personnelles' => 'المعلومات الشخصية',
319
+    'icone_interface_complet' => 'واجهة كاملة',
320
+    'icone_interface_simple' => 'واجهة مبسّطة',
321
+    'icone_maintenance_site' => 'صيانة الموقع',
322
+    'icone_messagerie_personnelle' => 'المراسلة الشخصية',
323
+    'icone_repartition_debut' => 'إظهار التوزيع منذ البداية',
324
+    'icone_rubriques' => 'الأقسام',
325
+    'icone_sauver_site' => 'نسخة احتياطية للموقع',
326
+    'icone_site_entier' => 'الموقع بالكامل',
327
+    'icone_sites_references' => 'المواقع المبوبة',
328
+    'icone_statistiques' => 'إحصاءات الموقع',
329
+    'icone_suivi_activite' => 'متابعة نشاط الموقع',
330
+    'icone_suivi_actualite' => 'تطور الموقع',
331
+    'icone_suivi_pettions' => 'متابعة/إدارة العرائض',
332
+    'icone_suivi_revisions' => 'تعديل المقالات',
333
+    'icone_supprimer_document' => 'حذف هذا المستند',
334
+    'icone_supprimer_image' => 'حذف هذه الصورة',
335
+    'icone_tous_articles' => 'كل مقالاتك',
336
+    'icone_tous_auteur' => 'جميع المؤلفين',
337
+    'icone_tous_visiteur' => 'جميع الزوار',
338
+    'icone_visiter_site' => 'تصفح الموقع العمومي',
339
+    'icone_voir_en_ligne' => 'عرض مباشر',
340
+    'img_indisponible' => 'صورة غير متوفرة',
341
+    'impossible' => 'مستحيل',
342
+    'info_a_suivre' => 'للمتابعة»',
343
+    'info_acces_interdit' => 'الدخول محظور',
344
+    'info_acces_refuse' => 'دخول محظور',
345
+    'info_action' => 'عملية: @action@',
346
+    'info_administrer_rubriques' => 'يمكنك إدارة هذا القسم وأقسامه الفرعية',
347
+    'info_adresse_non_indiquee' => 'لم تدخل أي عنوان لاختباره!',
348
+    'info_aide' => 'تعليمات :',
349
+    'info_ajouter_mot' => 'إضافة هذا المفتاح',
350
+    'info_annonce' => 'إعلان',
351
+    'info_annonces_generales' => 'إعلانات عامة:',
352
+    'info_article_propose' => 'مقال مقترح',
353
+    'info_article_publie' => 'مقال منشور',
354
+    'info_article_redaction' => 'مقال قيد التحرير',
355
+    'info_article_refuse' => 'مقال مرفوض',
356
+    'info_article_supprime' => 'مقال محذوف',
357
+    'info_articles' => 'المقالات',
358
+    'info_articles_a_valider' => 'مقالات معروضة للتصديق',
359
+    'info_articles_nb' => '@nb@ مقال',
360
+    'info_articles_proposes' => 'المقالات المعروضة',
361
+    'info_articles_un' => 'مقال واحد',
362
+    'info_auteurs_nombre' => 'مؤلف (مؤلفون):',
363
+    'info_authentification_ftp' => 'التحقق ( عبر بروتوكول FTP ).',
364
+    'info_breves_2' => 'خبر',
365
+    'info_breves_nb' => '@nb@ خبر',
366
+    'info_breves_un' => 'خبر واحد',
367
+    'info_connexion_refusee' => 'رفض الاتصال',
368
+    'info_contact_developpeur' => 'الرجاء الاتصال بمطوّر.',
369
+    'info_contenance' => 'هذا الموقع يحتوي على:',
370
+    'info_contribution' => 'مشاركة منتديات',
371
+    'info_copyright' => '@spip@ برنامج حر موزع @lien_gpl@.',
372
+    'info_copyright_doc' => 'لمزيد من المعلومات راجع الموقع<a href="@spipnet@">@spipnet_affiche@</a>.',
373
+    'info_copyright_gpl' => 'بموجب الترخيص العام GPL',
374
+    'info_cours_edition' => 'قيد التحرير',
375
+    'info_creer_repertoire' => 'الرجاء إنشاء ملف أو دليل باسم',
376
+    'info_creer_repertoire_2' => 'داخل الدليل الفرعي <b>@repertoire@</b>، ثم:',
377
+    'info_creer_vignette' => 'إنشاء آلي للمصغر',
378
+    'info_creerdansrubrique_non_autorise' => 'لا تملك الحقوق الكافية لإنشاء اي محتوى في هذا القسم',
379
+    'info_deplier' => 'بسط',
380
+    'info_descriptif_nombre' => 'الوصف:',
381
+    'info_description' => 'الوصف:',
382
+    'info_description_2' => 'الوصف:',
383
+    'info_dimension' => 'الحجم:',
384
+    'info_documents_nb' => '@nb@ مستند',
385
+    'info_documents_un' => 'مستند واحد',
386
+    'info_ecire_message_prive' => 'تحرير رسالة خاصة',
387
+    'info_email_invalide' => 'عنوان بريد غير صالح.',
388
+    'info_en_cours_validation' => 'مقالاتك قيد التحرير',
389
+    'info_en_ligne' => 'متصل حالياً:',
390
+    'info_envoyer_message_prive' => 'ابعث برسالة خاصة لهذا المؤلف',
391
+    'info_erreur_requete' => 'خطأ في الاستفسار:',
392
+    'info_erreur_squelette2' => 'لا توجد صفحة نموذجية <b>@fichier@</b> متاحة...',
393
+    'info_erreur_systeme' => 'خطأ في النظام (خطأ رقم @errsys@)',
394
+    'info_erreur_systeme2' => 'قد يكون القرص الصلب ممتلئاً أو قد تكون قاعدة البيانات معطلة.<br />
395 395
 <span style="color:red;">حاول <a href=\'@script@\'>إصلاح القاعدة</a>، أو الاتصال بمضيف موقعك.</font> ',
396
-	'info_fini' => 'انتهى!',
397
-	'info_format_image' => 'تنسيق ملفات الصور الذي يمكن استخدامه لإنشاء المصغرات: @gd_formats@ .',
398
-	'info_format_non_defini' => 'تنسيق غير معروف',
399
-	'info_grand_ecran' => 'شاشة كبيرة',
400
-	'info_image_aide' => 'تعليمات',
401
-	'info_image_process_titre' => 'طريقة إنشاء المصغرات',
402
-	'info_impossible_lire_page' => '<b>خطأ!</b> لا يمكن قراءة الصفحة <tt><html>@test_proxy@</html></tt> عبر الجهاز الوكيل',
403
-	'info_installation_systeme_publication' => 'تثبيت نظام النشر...',
404
-	'info_installer_documents' => 'يمكنك تثبيت كل المستندات الموجودة في المجلد @upload@ آلياً.',
405
-	'info_installer_ftp' => 'بصفتك مديراً، يمكنك تثبيت (بواسطة بروتوكول FTP) ملفات في المجلد@upload@  من أجل تحديدهم في ما بعد مباشرة من هنا.',
406
-	'info_installer_images' => 'يمكنك تثبيت صور بتنسيقات JPEG  وGIF  وPNG.',
407
-	'info_installer_images_dossier' => 'تثبيت صور في المجلد @upload@  للتمكن من تحديدها هنا.',
408
-	'info_interface_complete' => 'واجهة كاملة',
409
-	'info_interface_simple' => 'واجهة مبسّطة',
410
-	'info_joindre_document_article' => 'يمكنك إرفاق مقالك بمستندات من الأنواع',
411
-	'info_joindre_document_rubrique' => 'يمكنك إضافة مستندات من الأنواع التالية إلى هذا القسم',
412
-	'info_joindre_documents_article' => 'يمكنك إرفاق مستندات من الأنواع التالية بمقالك :',
413
-	'info_l_article' => 'المقال',
414
-	'info_la_breve' => 'الخبر',
415
-	'info_la_rubrique' => 'القسم',
416
-	'info_langue_principale' => 'اللغة الأساسية للموقع',
417
-	'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@  نقطة',
418
-	'info_les_auteurs_1' => 'من @les_auteurs@',
419
-	'info_logo_format_interdit' => 'الرموز بتنسيق @formats@ هي الوحيدة المسموح بها.',
420
-	'info_logo_max_poids' => 'يجب ألا يتعدى حجم الرموز @maxi@ (يبلغ حجم الملف الحالي @actuel@). ',
421
-	'info_mail_fournisseur' => '[email protected]',
422
-	'info_message_2' => 'رسالة',
423
-	'info_message_supprime' => 'تم حذف المشاركة',
424
-	'info_messages_nb' => '@nb@ رسالة',
425
-	'info_messages_un' => 'رسالة واحدة',
426
-	'info_mise_en_ligne' => 'تاريخ النشر:',
427
-	'info_modification_parametres_securite' => 'تعديل إعدادات الأمان',
428
-	'info_mois_courant' => 'في بحر الشهر:',
429
-	'info_mot_cle_ajoute' => 'تمت إضافة المفتاح التالي إلى',
430
-	'info_multi_herit' => 'اللغة الافتراضية',
431
-	'info_multi_langues_soulignees' => '<u>اللغات التي تحتها خط</u> تتمتع بترجمة كاملة او جزئية لكل نصوص الواجهة. فإذا حددت هذه اللغات، سيتم ترجمة العديد من عناصر الموقع العمومي (التواريخ والاستمارات) آلياً. أما بالنسبة للغات التي ليس تحتها خط، فستظهر هذه العناصر في لغة الموقع الأساسية.',
432
-	'info_multilinguisme' => 'تعدد اللغات',
433
-	'info_nom_non_utilisateurs_connectes' => 'اسمك لا يظهر في قائمة المستخدمين المتصلين.',
434
-	'info_nom_utilisateurs_connectes' => 'اسمك يظهر في قائمة المستخدمين المتصلين.',
435
-	'info_nombre_en_ligne' => 'متصل حالياً:',
436
-	'info_non_resultat' => 'لا توجد نتائج لـ "@cherche_mot@"',
437
-	'info_non_utilisation_messagerie' => 'أنت لا تستخدم المراسلة الداخلية في هذا الموقع.',
438
-	'info_nouveau_message' => 'وصلت رسالة جديدة',
439
-	'info_nouveaux_messages' => 'وصلت @total_messages@  رسالة جديدة',
440
-	'info_numero_abbreviation' => 'رقم',
441
-	'info_obligatoire' => 'هذه المعلومة إجبارية',
442
-	'info_page_actuelle' => 'الصفحة الحالية',
443
-	'info_pense_bete' => 'مذكرة',
444
-	'info_petit_ecran' => 'شاشة صغيرة',
445
-	'info_petition_close' => 'عريضة مقفلة',
446
-	'info_pixels' => 'نقطة',
447
-	'info_plusieurs_mots_trouves' => 'تم العثور على عدة مفاتيح لـ "@cherche_mot@" :',
448
-	'info_portfolio_automatique' => 'محفظة آلية:',
449
-	'info_premier_resultat' => '[النتائج الـ@debut_limit@  الأولى من أصل @total@]',
450
-	'info_premier_resultat_sur' => '[النتائج الـ@debut_limit@  الأولى من أصل @total@]',
451
-	'info_propose_1' => '[@nom_site_spip@] يقترح: @titre@',
452
-	'info_propose_2' => 'مقال معروض
396
+    'info_fini' => 'انتهى!',
397
+    'info_format_image' => 'تنسيق ملفات الصور الذي يمكن استخدامه لإنشاء المصغرات: @gd_formats@ .',
398
+    'info_format_non_defini' => 'تنسيق غير معروف',
399
+    'info_grand_ecran' => 'شاشة كبيرة',
400
+    'info_image_aide' => 'تعليمات',
401
+    'info_image_process_titre' => 'طريقة إنشاء المصغرات',
402
+    'info_impossible_lire_page' => '<b>خطأ!</b> لا يمكن قراءة الصفحة <tt><html>@test_proxy@</html></tt> عبر الجهاز الوكيل',
403
+    'info_installation_systeme_publication' => 'تثبيت نظام النشر...',
404
+    'info_installer_documents' => 'يمكنك تثبيت كل المستندات الموجودة في المجلد @upload@ آلياً.',
405
+    'info_installer_ftp' => 'بصفتك مديراً، يمكنك تثبيت (بواسطة بروتوكول FTP) ملفات في المجلد@upload@  من أجل تحديدهم في ما بعد مباشرة من هنا.',
406
+    'info_installer_images' => 'يمكنك تثبيت صور بتنسيقات JPEG  وGIF  وPNG.',
407
+    'info_installer_images_dossier' => 'تثبيت صور في المجلد @upload@  للتمكن من تحديدها هنا.',
408
+    'info_interface_complete' => 'واجهة كاملة',
409
+    'info_interface_simple' => 'واجهة مبسّطة',
410
+    'info_joindre_document_article' => 'يمكنك إرفاق مقالك بمستندات من الأنواع',
411
+    'info_joindre_document_rubrique' => 'يمكنك إضافة مستندات من الأنواع التالية إلى هذا القسم',
412
+    'info_joindre_documents_article' => 'يمكنك إرفاق مستندات من الأنواع التالية بمقالك :',
413
+    'info_l_article' => 'المقال',
414
+    'info_la_breve' => 'الخبر',
415
+    'info_la_rubrique' => 'القسم',
416
+    'info_langue_principale' => 'اللغة الأساسية للموقع',
417
+    'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@  نقطة',
418
+    'info_les_auteurs_1' => 'من @les_auteurs@',
419
+    'info_logo_format_interdit' => 'الرموز بتنسيق @formats@ هي الوحيدة المسموح بها.',
420
+    'info_logo_max_poids' => 'يجب ألا يتعدى حجم الرموز @maxi@ (يبلغ حجم الملف الحالي @actuel@). ',
421
+    'info_mail_fournisseur' => '[email protected]',
422
+    'info_message_2' => 'رسالة',
423
+    'info_message_supprime' => 'تم حذف المشاركة',
424
+    'info_messages_nb' => '@nb@ رسالة',
425
+    'info_messages_un' => 'رسالة واحدة',
426
+    'info_mise_en_ligne' => 'تاريخ النشر:',
427
+    'info_modification_parametres_securite' => 'تعديل إعدادات الأمان',
428
+    'info_mois_courant' => 'في بحر الشهر:',
429
+    'info_mot_cle_ajoute' => 'تمت إضافة المفتاح التالي إلى',
430
+    'info_multi_herit' => 'اللغة الافتراضية',
431
+    'info_multi_langues_soulignees' => '<u>اللغات التي تحتها خط</u> تتمتع بترجمة كاملة او جزئية لكل نصوص الواجهة. فإذا حددت هذه اللغات، سيتم ترجمة العديد من عناصر الموقع العمومي (التواريخ والاستمارات) آلياً. أما بالنسبة للغات التي ليس تحتها خط، فستظهر هذه العناصر في لغة الموقع الأساسية.',
432
+    'info_multilinguisme' => 'تعدد اللغات',
433
+    'info_nom_non_utilisateurs_connectes' => 'اسمك لا يظهر في قائمة المستخدمين المتصلين.',
434
+    'info_nom_utilisateurs_connectes' => 'اسمك يظهر في قائمة المستخدمين المتصلين.',
435
+    'info_nombre_en_ligne' => 'متصل حالياً:',
436
+    'info_non_resultat' => 'لا توجد نتائج لـ "@cherche_mot@"',
437
+    'info_non_utilisation_messagerie' => 'أنت لا تستخدم المراسلة الداخلية في هذا الموقع.',
438
+    'info_nouveau_message' => 'وصلت رسالة جديدة',
439
+    'info_nouveaux_messages' => 'وصلت @total_messages@  رسالة جديدة',
440
+    'info_numero_abbreviation' => 'رقم',
441
+    'info_obligatoire' => 'هذه المعلومة إجبارية',
442
+    'info_page_actuelle' => 'الصفحة الحالية',
443
+    'info_pense_bete' => 'مذكرة',
444
+    'info_petit_ecran' => 'شاشة صغيرة',
445
+    'info_petition_close' => 'عريضة مقفلة',
446
+    'info_pixels' => 'نقطة',
447
+    'info_plusieurs_mots_trouves' => 'تم العثور على عدة مفاتيح لـ "@cherche_mot@" :',
448
+    'info_portfolio_automatique' => 'محفظة آلية:',
449
+    'info_premier_resultat' => '[النتائج الـ@debut_limit@  الأولى من أصل @total@]',
450
+    'info_premier_resultat_sur' => '[النتائج الـ@debut_limit@  الأولى من أصل @total@]',
451
+    'info_propose_1' => '[@nom_site_spip@] يقترح: @titre@',
452
+    'info_propose_2' => 'مقال معروض
453 453
 ----------',
454
-	'info_propose_3' => 'المقال "@titre@" معروض للنشر.',
455
-	'info_propose_4' => 'أنت مدعو لمراجعته وإبداء رأيك',
456
-	'info_propose_5' => 'في المنتدى المرتبط به. إنه موجود على العنوان:',
457
-	'info_publie_01' => 'تم التصديق على المقال "@titre@"  من قبل @connect_nom@ .',
458
-	'info_publie_1' => '[@nom_site_spip@] ينشر: @titre@',
459
-	'info_publie_2' => 'مقال منشور
454
+    'info_propose_3' => 'المقال "@titre@" معروض للنشر.',
455
+    'info_propose_4' => 'أنت مدعو لمراجعته وإبداء رأيك',
456
+    'info_propose_5' => 'في المنتدى المرتبط به. إنه موجود على العنوان:',
457
+    'info_publie_01' => 'تم التصديق على المقال "@titre@"  من قبل @connect_nom@ .',
458
+    'info_publie_1' => '[@nom_site_spip@] ينشر: @titre@',
459
+    'info_publie_2' => 'مقال منشور
460 460
 ----------',
461
-	'info_rechercher' => 'بحث',
462
-	'info_rechercher_02' => 'بحث:',
463
-	'info_remplacer_vignette' => 'استبدال المصغر الافتراضي برمز شخصي:',
464
-	'info_rubriques_nb' => '@nb@ قسم',
465
-	'info_rubriques_un' => 'قسم واحد',
466
-	'info_sans_titre_2' => 'بدون عنوان',
467
-	'info_selectionner_fichier' => 'يمكنك تحديد ملف من المجلد @upload@:',
468
-	'info_selectionner_fichier_2' => 'تحديد ملف:',
469
-	'info_sites_nb' => '@nb@ موقع',
470
-	'info_sites_un' => 'موقع واحد',
471
-	'info_supprimer_vignette' => 'حذف المصغر',
472
-	'info_symbole_bleu' => 'الرمز <b>أزرق</b> يرمز إلى <b>مذكرة</b>: أي رسالة لاستخدامك الشخصي.',
473
-	'info_symbole_jaune' => 'الرمز <b>أصفر</b> يرمز إلى <b>إعلان لجميع المحررين</b>: يمكن لجميع المدراء تحريره وهو ظاهر لجميع المحررين.',
474
-	'info_symbole_vert' => 'الرمز <b>أخضر</b>  يرمز إلى <b>الرسائل المتبادلة بين مستخدمي</b> الموقع.',
475
-	'info_telecharger_nouveau_logo' => 'تحميل رمز جديد:',
476
-	'info_telecharger_ordinateur' => 'تحميل من جهازك:',
477
-	'info_tous_resultats_enregistres' => '[تم تسجيل كل النتائج]',
478
-	'info_tout_afficher' => 'إظهار الكل',
479
-	'info_travaux_texte' => 'هذا الموقع قيد الإعداد. برجاء العودة في وقت لاحق...',
480
-	'info_travaux_titre' => 'موقع قيد التصميم',
481
-	'info_trop_resultat' => 'تم العثور على عدد كبير جداً من النتائج لـ "@cherche_mot@" ، الرجاء زيادة دقة البحث.',
482
-	'info_utilisation_messagerie_interne' => 'أنت تستخدم المراسلة الداخلية في هذا الموقع.',
483
-	'info_valider_lien' => 'التصديق على هذه الوصلة',
484
-	'info_verifier_image' => '، الرجاء التأكد من أنه تم نقل الصور بشكل سليم.',
485
-	'info_vignette_defaut' => 'المصغر الافتراضي',
486
-	'info_vignette_personnalisee' => 'مصغر شخصي',
487
-	'info_visite' => 'زيارة:',
488
-	'info_vos_rendez_vous' => 'مواعيدك القادمة',
489
-	'infos_vos_pense_bete' => 'مذكراتك',
461
+    'info_rechercher' => 'بحث',
462
+    'info_rechercher_02' => 'بحث:',
463
+    'info_remplacer_vignette' => 'استبدال المصغر الافتراضي برمز شخصي:',
464
+    'info_rubriques_nb' => '@nb@ قسم',
465
+    'info_rubriques_un' => 'قسم واحد',
466
+    'info_sans_titre_2' => 'بدون عنوان',
467
+    'info_selectionner_fichier' => 'يمكنك تحديد ملف من المجلد @upload@:',
468
+    'info_selectionner_fichier_2' => 'تحديد ملف:',
469
+    'info_sites_nb' => '@nb@ موقع',
470
+    'info_sites_un' => 'موقع واحد',
471
+    'info_supprimer_vignette' => 'حذف المصغر',
472
+    'info_symbole_bleu' => 'الرمز <b>أزرق</b> يرمز إلى <b>مذكرة</b>: أي رسالة لاستخدامك الشخصي.',
473
+    'info_symbole_jaune' => 'الرمز <b>أصفر</b> يرمز إلى <b>إعلان لجميع المحررين</b>: يمكن لجميع المدراء تحريره وهو ظاهر لجميع المحررين.',
474
+    'info_symbole_vert' => 'الرمز <b>أخضر</b>  يرمز إلى <b>الرسائل المتبادلة بين مستخدمي</b> الموقع.',
475
+    'info_telecharger_nouveau_logo' => 'تحميل رمز جديد:',
476
+    'info_telecharger_ordinateur' => 'تحميل من جهازك:',
477
+    'info_tous_resultats_enregistres' => '[تم تسجيل كل النتائج]',
478
+    'info_tout_afficher' => 'إظهار الكل',
479
+    'info_travaux_texte' => 'هذا الموقع قيد الإعداد. برجاء العودة في وقت لاحق...',
480
+    'info_travaux_titre' => 'موقع قيد التصميم',
481
+    'info_trop_resultat' => 'تم العثور على عدد كبير جداً من النتائج لـ "@cherche_mot@" ، الرجاء زيادة دقة البحث.',
482
+    'info_utilisation_messagerie_interne' => 'أنت تستخدم المراسلة الداخلية في هذا الموقع.',
483
+    'info_valider_lien' => 'التصديق على هذه الوصلة',
484
+    'info_verifier_image' => '، الرجاء التأكد من أنه تم نقل الصور بشكل سليم.',
485
+    'info_vignette_defaut' => 'المصغر الافتراضي',
486
+    'info_vignette_personnalisee' => 'مصغر شخصي',
487
+    'info_visite' => 'زيارة:',
488
+    'info_vos_rendez_vous' => 'مواعيدك القادمة',
489
+    'infos_vos_pense_bete' => 'مذكراتك',
490 490
 
491
-	// L
492
-	'label_ajout_id_rapide' => 'إضافة سريعة',
493
-	'label_poids_fichier' => 'الحجم',
494
-	'label_ponctuer' => '@label@ :',
495
-	'lien_afficher_icones_seuls' => 'عرض الرموز فقط',
496
-	'lien_afficher_texte_icones' => 'عرض الرموز والعناوين',
497
-	'lien_afficher_texte_seul' => 'عرض العناوين فقط',
498
-	'lien_aller_a_la_derniere_page' => 'الذهاب الى الصفحة الأخيرة',
499
-	'lien_aller_a_la_page_nb' => 'الذهاب الى الصفحة @nb@',
500
-	'lien_aller_a_la_page_precedente' => 'الذهاب الى الصفحة الالسابقة',
501
-	'lien_aller_a_la_page_suivante' => 'الذهاب الى الصفحة التالية',
502
-	'lien_aller_a_la_premiere_page' => 'الذهاب الى الصفحة الأولى',
503
-	'lien_liberer' => 'فك الحجز',
504
-	'lien_liberer_tous' => 'فك حجز الكل',
505
-	'lien_nouvea_pense_bete' => 'مذكرة جديدة',
506
-	'lien_nouveau_message' => 'رسالة جديدة',
507
-	'lien_nouvelle_annonce' => 'إعلان جديد',
508
-	'lien_petitions' => 'عريضة',
509
-	'lien_popularite' => 'شعبية: @popularite@%',
510
-	'lien_racine_site' => 'أصل الموقع',
511
-	'lien_reessayer' => 'إعادة المحاولة',
512
-	'lien_repondre_message' => 'الرد على هذه المشاركة',
513
-	'lien_supprimer' => 'حذف',
514
-	'lien_tout_afficher' => 'إظهار الكل',
515
-	'lien_visite_site' => 'زيارة هذا الموقع',
516
-	'lien_visites' => '@visites@ زيارة',
517
-	'lien_voir_auteur' => 'مراجعة هذا المؤلف',
518
-	'ligne' => 'سطر',
519
-	'login' => 'الدخول',
520
-	'login_acces_prive' => 'الدخول إلى المجال الخاص',
521
-	'login_autre_identifiant' => 'الاتصال بمعرّف آخر',
522
-	'login_cookie_accepte' => 'الرجاء تهيئ برنامج التصفح ليتقبلها (من هذا الموقع على الأقل)',
523
-	'login_cookie_oblige' => 'للتعريف عن نفسك بشكل آمن في هذا الموقع، يجب قبول الكعكات (cookies).',
524
-	'login_deconnexion_ok' => 'تم قطع الاتصال.',
525
-	'login_erreur_pass' => 'خطأ في كلمة السر.',
526
-	'login_espace_prive' => 'المجال الخاص',
527
-	'login_identifiant_inconnu' => 'المعرّف «@login@» غير معروف.',
528
-	'login_login' => 'المعرّف:',
529
-	'login_login2' => 'المعرّف او عنوان البريد الالكتروني:',
530
-	'login_login_pass_incorrect' => '(خطأ في المعرّف أو كلمة السر).',
531
-	'login_motpasseoublie' => 'هل نسيت كلمة السر؟',
532
-	'login_non_securise' => 'لطفا، هذه الاستمارة غير آمنة.
491
+    // L
492
+    'label_ajout_id_rapide' => 'إضافة سريعة',
493
+    'label_poids_fichier' => 'الحجم',
494
+    'label_ponctuer' => '@label@ :',
495
+    'lien_afficher_icones_seuls' => 'عرض الرموز فقط',
496
+    'lien_afficher_texte_icones' => 'عرض الرموز والعناوين',
497
+    'lien_afficher_texte_seul' => 'عرض العناوين فقط',
498
+    'lien_aller_a_la_derniere_page' => 'الذهاب الى الصفحة الأخيرة',
499
+    'lien_aller_a_la_page_nb' => 'الذهاب الى الصفحة @nb@',
500
+    'lien_aller_a_la_page_precedente' => 'الذهاب الى الصفحة الالسابقة',
501
+    'lien_aller_a_la_page_suivante' => 'الذهاب الى الصفحة التالية',
502
+    'lien_aller_a_la_premiere_page' => 'الذهاب الى الصفحة الأولى',
503
+    'lien_liberer' => 'فك الحجز',
504
+    'lien_liberer_tous' => 'فك حجز الكل',
505
+    'lien_nouvea_pense_bete' => 'مذكرة جديدة',
506
+    'lien_nouveau_message' => 'رسالة جديدة',
507
+    'lien_nouvelle_annonce' => 'إعلان جديد',
508
+    'lien_petitions' => 'عريضة',
509
+    'lien_popularite' => 'شعبية: @popularite@%',
510
+    'lien_racine_site' => 'أصل الموقع',
511
+    'lien_reessayer' => 'إعادة المحاولة',
512
+    'lien_repondre_message' => 'الرد على هذه المشاركة',
513
+    'lien_supprimer' => 'حذف',
514
+    'lien_tout_afficher' => 'إظهار الكل',
515
+    'lien_visite_site' => 'زيارة هذا الموقع',
516
+    'lien_visites' => '@visites@ زيارة',
517
+    'lien_voir_auteur' => 'مراجعة هذا المؤلف',
518
+    'ligne' => 'سطر',
519
+    'login' => 'الدخول',
520
+    'login_acces_prive' => 'الدخول إلى المجال الخاص',
521
+    'login_autre_identifiant' => 'الاتصال بمعرّف آخر',
522
+    'login_cookie_accepte' => 'الرجاء تهيئ برنامج التصفح ليتقبلها (من هذا الموقع على الأقل)',
523
+    'login_cookie_oblige' => 'للتعريف عن نفسك بشكل آمن في هذا الموقع، يجب قبول الكعكات (cookies).',
524
+    'login_deconnexion_ok' => 'تم قطع الاتصال.',
525
+    'login_erreur_pass' => 'خطأ في كلمة السر.',
526
+    'login_espace_prive' => 'المجال الخاص',
527
+    'login_identifiant_inconnu' => 'المعرّف «@login@» غير معروف.',
528
+    'login_login' => 'المعرّف:',
529
+    'login_login2' => 'المعرّف او عنوان البريد الالكتروني:',
530
+    'login_login_pass_incorrect' => '(خطأ في المعرّف أو كلمة السر).',
531
+    'login_motpasseoublie' => 'هل نسيت كلمة السر؟',
532
+    'login_non_securise' => 'لطفا، هذه الاستمارة غير آمنة.
533 533
    إذا كنت ترغب أن تكون كلمة سرك
534 534
    آمنة على الشبكة، يجب تفعيل جافاسكريبت 
535 535
    في برنامج التصفح',
536
-	'login_nouvelle_tentative' => 'محاولة جديدة',
537
-	'login_par_ici' => 'أنت مسجّل... توجه من هنا...',
538
-	'login_pass2' => 'كلمة السر:',
539
-	'login_preferez_refuser' => '<b>إذا كنت تفضل عدم قبول الكعكات</b>، يمكنك استخدام طريقة دخول أخرى (أقل أماناً):',
540
-	'login_recharger' => 'وإعادة تحميل الصفحة',
541
-	'login_rester_identifie' => 'تذكروني',
542
-	'login_retour_public' => 'عودة إلى الموقع العام',
543
-	'login_retour_site' => 'عودة إلى الموقع العام',
544
-	'login_retoursitepublic' => 'عودة إلى الموقع العام',
545
-	'login_sans_cookie' => 'تعريف بدون الكعكة',
546
-	'login_securise' => 'تعريف مؤمّن',
547
-	'login_sinscrire' => 'تسجيل',
548
-	'login_test_navigateur' => 'تجربة المتصفح/إعادة الاتصال',
549
-	'login_verifiez_navigateur' => '(على أي حال، تأكد من أن المتصفح لم يقم بحفظ كلمة سرك...)',
536
+    'login_nouvelle_tentative' => 'محاولة جديدة',
537
+    'login_par_ici' => 'أنت مسجّل... توجه من هنا...',
538
+    'login_pass2' => 'كلمة السر:',
539
+    'login_preferez_refuser' => '<b>إذا كنت تفضل عدم قبول الكعكات</b>، يمكنك استخدام طريقة دخول أخرى (أقل أماناً):',
540
+    'login_recharger' => 'وإعادة تحميل الصفحة',
541
+    'login_rester_identifie' => 'تذكروني',
542
+    'login_retour_public' => 'عودة إلى الموقع العام',
543
+    'login_retour_site' => 'عودة إلى الموقع العام',
544
+    'login_retoursitepublic' => 'عودة إلى الموقع العام',
545
+    'login_sans_cookie' => 'تعريف بدون الكعكة',
546
+    'login_securise' => 'تعريف مؤمّن',
547
+    'login_sinscrire' => 'تسجيل',
548
+    'login_test_navigateur' => 'تجربة المتصفح/إعادة الاتصال',
549
+    'login_verifiez_navigateur' => '(على أي حال، تأكد من أن المتصفح لم يقم بحفظ كلمة سرك...)',
550 550
 
551
-	// M
552
-	'masquer_colonne' => 'حجب هذا العمود',
553
-	'masquer_trad' => 'حجب الترجمات',
554
-	'message_nouveaux_identifiants_echec' => 'لا يمكن إنشاء معرف وكلمة سر جديدين.',
555
-	'message_nouveaux_identifiants_echec_envoi' => 'مشكلة في إرسال المعرف وكلمة السر الجديدين.',
556
-	'message_nouveaux_identifiants_ok' => 'تم إرسال المعرف وكلمة السر الجديدين الى @email@.',
557
-	'module_fichiers_langues' => 'ملفات اللغة',
551
+    // M
552
+    'masquer_colonne' => 'حجب هذا العمود',
553
+    'masquer_trad' => 'حجب الترجمات',
554
+    'message_nouveaux_identifiants_echec' => 'لا يمكن إنشاء معرف وكلمة سر جديدين.',
555
+    'message_nouveaux_identifiants_echec_envoi' => 'مشكلة في إرسال المعرف وكلمة السر الجديدين.',
556
+    'message_nouveaux_identifiants_ok' => 'تم إرسال المعرف وكلمة السر الجديدين الى @email@.',
557
+    'module_fichiers_langues' => 'ملفات اللغة',
558 558
 
559
-	// N
560
-	'navigateur_pas_redirige' => 'إذا لم تتم إعادة توجيه متصفحك، انقر هنا للمتابعة.',
561
-	'numero' => 'رقم',
559
+    // N
560
+    'navigateur_pas_redirige' => 'إذا لم تتم إعادة توجيه متصفحك، انقر هنا للمتابعة.',
561
+    'numero' => 'رقم',
562 562
 
563
-	// O
564
-	'occurence' => 'ظهور',
565
-	'onglet_affacer_base' => 'حذف قاعدة البيانات',
566
-	'onglet_auteur' => 'المؤلف',
567
-	'onglet_contenu_site' => 'محتوى الموقع',
568
-	'onglet_evolution_visite_mod' => 'تطور',
569
-	'onglet_fonctions_avances' => 'الوظائف المتطورة',
570
-	'onglet_informations_personnelles' => 'المعلومات الشخصية',
571
-	'onglet_interactivite' => 'التفاعلية',
572
-	'onglet_messagerie' => 'المراسلة',
573
-	'onglet_repartition_rubrique' => 'التوزيع حسب الأقسام',
574
-	'onglet_save_restaur_base' => 'نسخ احتياطي / استرجاع القاعدة',
575
-	'onglet_vider_cache' => 'تفريغ الذاكرة المخبأة',
563
+    // O
564
+    'occurence' => 'ظهور',
565
+    'onglet_affacer_base' => 'حذف قاعدة البيانات',
566
+    'onglet_auteur' => 'المؤلف',
567
+    'onglet_contenu_site' => 'محتوى الموقع',
568
+    'onglet_evolution_visite_mod' => 'تطور',
569
+    'onglet_fonctions_avances' => 'الوظائف المتطورة',
570
+    'onglet_informations_personnelles' => 'المعلومات الشخصية',
571
+    'onglet_interactivite' => 'التفاعلية',
572
+    'onglet_messagerie' => 'المراسلة',
573
+    'onglet_repartition_rubrique' => 'التوزيع حسب الأقسام',
574
+    'onglet_save_restaur_base' => 'نسخ احتياطي / استرجاع القاعدة',
575
+    'onglet_vider_cache' => 'تفريغ الذاكرة المخبأة',
576 576
 
577
-	// P
578
-	'pass_choix_pass' => 'الرجاء اختيار كلمة السر الجديدة:',
579
-	'pass_erreur' => 'خطأ',
580
-	'pass_erreur_acces_refuse' => '<b>خطأ:< b> لم تعد تملك حق الدخول إلى هذا الموقع.',
581
-	'pass_erreur_code_inconnu' => '<b>خطأ:< b> هذا المعرّف لا يتناسب مع أي من الزوار الذين يتمتعون بحق الدخول إلى هذا الموقع.',
582
-	'pass_erreur_non_enregistre' => '<b>خطأ:< b>  العنوان <tt>@email_oubli@</tt> ليس مسجلاً في هذا الموقع.',
583
-	'pass_erreur_non_valide' => '<b>خطأ:< b>  العنوان <tt>@email_oubli@</tt> ليس صالحاً.',
584
-	'pass_erreur_probleme_technique' => '<b>خطأ:< b>  لم يتم بعث هذه الرسالة بسبب مشكلة تقنية.',
585
-	'pass_espace_prive_bla' => 'المجال الخاص لهذا الموقع مفتوح
577
+    // P
578
+    'pass_choix_pass' => 'الرجاء اختيار كلمة السر الجديدة:',
579
+    'pass_erreur' => 'خطأ',
580
+    'pass_erreur_acces_refuse' => '<b>خطأ:< b> لم تعد تملك حق الدخول إلى هذا الموقع.',
581
+    'pass_erreur_code_inconnu' => '<b>خطأ:< b> هذا المعرّف لا يتناسب مع أي من الزوار الذين يتمتعون بحق الدخول إلى هذا الموقع.',
582
+    'pass_erreur_non_enregistre' => '<b>خطأ:< b>  العنوان <tt>@email_oubli@</tt> ليس مسجلاً في هذا الموقع.',
583
+    'pass_erreur_non_valide' => '<b>خطأ:< b>  العنوان <tt>@email_oubli@</tt> ليس صالحاً.',
584
+    'pass_erreur_probleme_technique' => '<b>خطأ:< b>  لم يتم بعث هذه الرسالة بسبب مشكلة تقنية.',
585
+    'pass_espace_prive_bla' => 'المجال الخاص لهذا الموقع مفتوح
586 586
 للزوار بعد تسجيلهم. بعد تسجيلك
587 587
 يمكنك مراجعة المقالات قيد التحرير
588 588
 واقتراح مقالات والمشاركة في كل المنتديات.',
589
-	'pass_forum_bla' => 'طلبت المشاركة في منتدى
589
+    'pass_forum_bla' => 'طلبت المشاركة في منتدى
590 590
 محصور بالزوار المسجلين.',
591
-	'pass_indiquez_cidessous' => 'قم بإدخال العنوان الإلكتروني الذي 
591
+    'pass_indiquez_cidessous' => 'قم بإدخال العنوان الإلكتروني الذي 
592 592
 تسجلت بواستطه سابقاً.
593 593
 ستحصل على رسالة تفسر لك كيفية
594 594
 استعادة دخولك.',
595
-	'pass_mail_passcookie' => '(هذه رسالة آلية)
595
+    'pass_mail_passcookie' => '(هذه رسالة آلية)
596 596
 لاستعادة دخولك إلى الموقع
597 597
 @nom_site_spip@  (@adresse_site@)
598 598
 
@@ -604,146 +604,146 @@  discard block
 block discarded – undo
604 604
 وإعادة الاتصال بالموقع.
605 605
 
606 606
 ',
607
-	'pass_mot_oublie' => 'نسيان كلمة السر',
608
-	'pass_nouveau_enregistre' => 'تم تسجيل كلمة سرك الجديدة.',
609
-	'pass_nouveau_pass' => 'كلمة السر الجديدة',
610
-	'pass_ok' => 'موافق',
611
-	'pass_oubli_mot' => 'نسيان كلمة السر',
612
-	'pass_procedure_changer' => 'من أجل تغيير كلمة السر، قم بأدخال عنوان البريد الالكتروني المرتبط بحسابك.',
613
-	'pass_quitter_fenetre' => 'إقفال هذه النافذة',
614
-	'pass_rappel_login' => 'تذكير: معرّفك هو «@login@».',
615
-	'pass_recevoir_mail' => 'تم ارسال رابط لإعادة تأصيل كلمة السر الى عنوان البريد لديك (اذا كان صالحاً).',
616
-	'pass_retour_public' => 'عودة إلى الموقع العام',
617
-	'pass_rien_a_faire_ici' => 'لا شغل لك هنا.',
618
-	'pass_vousinscrire' => 'تسجيلك في الموقع',
619
-	'precedent' => 'السابق',
620
-	'previsualisation' => 'عرض مسبق',
621
-	'previsualiser' => 'عرض مسبق',
607
+    'pass_mot_oublie' => 'نسيان كلمة السر',
608
+    'pass_nouveau_enregistre' => 'تم تسجيل كلمة سرك الجديدة.',
609
+    'pass_nouveau_pass' => 'كلمة السر الجديدة',
610
+    'pass_ok' => 'موافق',
611
+    'pass_oubli_mot' => 'نسيان كلمة السر',
612
+    'pass_procedure_changer' => 'من أجل تغيير كلمة السر، قم بأدخال عنوان البريد الالكتروني المرتبط بحسابك.',
613
+    'pass_quitter_fenetre' => 'إقفال هذه النافذة',
614
+    'pass_rappel_login' => 'تذكير: معرّفك هو «@login@».',
615
+    'pass_recevoir_mail' => 'تم ارسال رابط لإعادة تأصيل كلمة السر الى عنوان البريد لديك (اذا كان صالحاً).',
616
+    'pass_retour_public' => 'عودة إلى الموقع العام',
617
+    'pass_rien_a_faire_ici' => 'لا شغل لك هنا.',
618
+    'pass_vousinscrire' => 'تسجيلك في الموقع',
619
+    'precedent' => 'السابق',
620
+    'previsualisation' => 'عرض مسبق',
621
+    'previsualiser' => 'عرض مسبق',
622 622
 
623
-	// R
624
-	'retour' => 'عودة',
623
+    // R
624
+    'retour' => 'عودة',
625 625
 
626
-	// S
627
-	'spip_conforme_dtd' => 'يعتبر SPIP أن هذا المستند مطابق لتحديد DOCTYPE:',
628
-	'squelette' => 'صفحة نموذجية',
629
-	'squelette_inclus_ligne' => 'صفحة نموذجية مدمجة، سطر',
630
-	'squelette_ligne' => 'صفحة نموذجية، سطر',
631
-	'stats_visites_et_popularite' => '@visites@ زيارة؛ شعبية: @popularite@',
632
-	'suivant' => 'التالي',
626
+    // S
627
+    'spip_conforme_dtd' => 'يعتبر SPIP أن هذا المستند مطابق لتحديد DOCTYPE:',
628
+    'squelette' => 'صفحة نموذجية',
629
+    'squelette_inclus_ligne' => 'صفحة نموذجية مدمجة، سطر',
630
+    'squelette_ligne' => 'صفحة نموذجية، سطر',
631
+    'stats_visites_et_popularite' => '@visites@ زيارة؛ شعبية: @popularite@',
632
+    'suivant' => 'التالي',
633 633
 
634
-	// T
635
-	'taille_go' => '@taille@ غيغابايت',
636
-	'taille_ko' => '@taille@ كيلوبايت',
637
-	'taille_mo' => '@taille@ ميغابايت',
638
-	'taille_octets' => '@taille@ بايت',
639
-	'texte_actualite_site_1' => 'عندما تتأقلم مع واجهة النظام انقر على «',
640
-	'texte_actualite_site_2' => 'الواجهة الكاملة',
641
-	'texte_actualite_site_3' => '»  لإتاحة المزيد من الوظائف.',
642
-	'texte_creation_automatique_vignette' => 'لقد تم تفعيل الإنشاء الآلي لمصغرات المعاينة. إذا استخدمت هذه الاستمارة لإدخال صور بتنسيق (أو تنسيقات) @gd_formats@، سيتم تزويدها بمصغر لا يزيد حجمه عن @taille_preview@  نقطة. ',
643
-	'texte_documents_associes' => 'المستندات التالية ترافق المقال،
634
+    // T
635
+    'taille_go' => '@taille@ غيغابايت',
636
+    'taille_ko' => '@taille@ كيلوبايت',
637
+    'taille_mo' => '@taille@ ميغابايت',
638
+    'taille_octets' => '@taille@ بايت',
639
+    'texte_actualite_site_1' => 'عندما تتأقلم مع واجهة النظام انقر على «',
640
+    'texte_actualite_site_2' => 'الواجهة الكاملة',
641
+    'texte_actualite_site_3' => '»  لإتاحة المزيد من الوظائف.',
642
+    'texte_creation_automatique_vignette' => 'لقد تم تفعيل الإنشاء الآلي لمصغرات المعاينة. إذا استخدمت هذه الاستمارة لإدخال صور بتنسيق (أو تنسيقات) @gd_formats@، سيتم تزويدها بمصغر لا يزيد حجمه عن @taille_preview@  نقطة. ',
643
+    'texte_documents_associes' => 'المستندات التالية ترافق المقال،
644 644
     لكنها لم تُدرج
645 645
     مباشرة. بالاعتماد على تصميم الموقع العمومي،
646 646
     قد تظهر على شكل مستندات مرفقة.',
647
-	'texte_erreur_mise_niveau_base' => 'خطأ في قاعدة البيانات خلال الترقية.
647
+    'texte_erreur_mise_niveau_base' => 'خطأ في قاعدة البيانات خلال الترقية.
648 648
      تعذر تمرير الصورة <b>@fichier@</b>  (المقال @id_article@). 
649 649
      سجل هذا المرجع وحاول إعادة عملية
650 650
      الترقية، وأخيراً تأكد من أن الصور لا تزال تظهر
651 651
      في المقالات.',
652
-	'texte_erreur_visiteur' => 'حاولت الدخول إلى المجال الخاص بمعرّف لا يسمح بذلك.',
653
-	'texte_inc_auth_1' => 'عرّفت عن نفسك
652
+    'texte_erreur_visiteur' => 'حاولت الدخول إلى المجال الخاص بمعرّف لا يسمح بذلك.',
653
+    'texte_inc_auth_1' => 'عرّفت عن نفسك
654 654
 بالمعرّف <b>@auth_login@</b>، لكنه غير (لم يعد) موجود في قاعدة البيانات.
655 655
   حاول  ',
656
-	'texte_inc_auth_2' => 'إعادة الاتصال',
657
-	'texte_inc_auth_3' => '، بعد إنهاء المتصفح ثم
656
+    'texte_inc_auth_2' => 'إعادة الاتصال',
657
+    'texte_inc_auth_3' => '، بعد إنهاء المتصفح ثم
658 658
 إعادة تشغيله إذا اقتضت الحاجة.',
659
-	'texte_inc_config' => 'التغييرات الداخلة على هذه الصفحة تؤثر بشكل ملحوظ على
659
+    'texte_inc_config' => 'التغييرات الداخلة على هذه الصفحة تؤثر بشكل ملحوظ على
660 660
 تشغيل الموقع. يستحسن عدم إدخال تغييرات قبل
661 661
 التأقلم مع نظام SPIP  للنشر. <br /><br /><b>بشكل
662 662
 عام، ننصحك
663 663
 بحصر التعامل مع هذه الصفحات بالمسؤول الأساسي عن تصميم الموقع.</b>',
664
-	'texte_inc_meta_1' => 'واجه النظام خطأً خلال كتابة الملف <code>@fichier@</code>. بصفتك أحد مدراء الموقع، الرجاء',
665
-	'texte_inc_meta_2' => 'التأكد من حقوق الكتابة',
666
-	'texte_inc_meta_3' => 'الخاصة بالدليل <code>@repertoire@</code>. ',
667
-	'texte_statut_en_cours_redaction' => 'قيد التحرير',
668
-	'texte_statut_poubelle' => 'إلى المهملات',
669
-	'texte_statut_propose_evaluation' => 'معروض للتقييم',
670
-	'texte_statut_publie' => 'منشور',
671
-	'texte_statut_refuse' => 'مرفوض',
672
-	'titre_ajouter_mot_cle' => 'إضافة مفتاح:',
673
-	'titre_cadre_raccourcis' => 'اختصارات:',
674
-	'titre_changer_couleur_interface' => 'تغيير لون الواجهة',
675
-	'titre_image_admin_article' => 'أنت مخول إدارة هذا المقال',
676
-	'titre_image_administrateur' => 'مدير',
677
-	'titre_image_aide' => 'تعليمات حول هذا العنصر',
678
-	'titre_image_auteur_supprime' => 'مؤلف محذوف',
679
-	'titre_image_redacteur' => 'محرر دون إذن دخول',
680
-	'titre_image_redacteur_02' => 'محرر',
681
-	'titre_image_selecteur' => 'عرض القائمة',
682
-	'titre_image_visiteur' => 'زائر',
683
-	'titre_joindre_document' => 'إرفاق مستند',
684
-	'titre_mots_cles' => 'المفاتيح',
685
-	'titre_probleme_technique' => 'تحذير: مشكلة تقنية (خادم SQL) تمنع الدخول إلى هذا الجزء من الموقع. شكراً على تفهمكم.',
686
-	'titre_publier_document' => 'نشر مستند في هذا القسم',
687
-	'titre_signatures_attente' => 'تواقيع بانتظار التصديق',
688
-	'titre_signatures_confirmees' => 'توقيعات مصدّقة',
689
-	'titre_statistiques' => 'إحصاءات الموقع',
690
-	'titre_titre_document' => 'اسم المستند: ',
691
-	'todo' => 'قريباً',
692
-	'trad_definir_reference' => 'اختيار "@titre@" كمرجع للترجمات',
693
-	'trad_reference' => '(مرجع الترجمات)',
664
+    'texte_inc_meta_1' => 'واجه النظام خطأً خلال كتابة الملف <code>@fichier@</code>. بصفتك أحد مدراء الموقع، الرجاء',
665
+    'texte_inc_meta_2' => 'التأكد من حقوق الكتابة',
666
+    'texte_inc_meta_3' => 'الخاصة بالدليل <code>@repertoire@</code>. ',
667
+    'texte_statut_en_cours_redaction' => 'قيد التحرير',
668
+    'texte_statut_poubelle' => 'إلى المهملات',
669
+    'texte_statut_propose_evaluation' => 'معروض للتقييم',
670
+    'texte_statut_publie' => 'منشور',
671
+    'texte_statut_refuse' => 'مرفوض',
672
+    'titre_ajouter_mot_cle' => 'إضافة مفتاح:',
673
+    'titre_cadre_raccourcis' => 'اختصارات:',
674
+    'titre_changer_couleur_interface' => 'تغيير لون الواجهة',
675
+    'titre_image_admin_article' => 'أنت مخول إدارة هذا المقال',
676
+    'titre_image_administrateur' => 'مدير',
677
+    'titre_image_aide' => 'تعليمات حول هذا العنصر',
678
+    'titre_image_auteur_supprime' => 'مؤلف محذوف',
679
+    'titre_image_redacteur' => 'محرر دون إذن دخول',
680
+    'titre_image_redacteur_02' => 'محرر',
681
+    'titre_image_selecteur' => 'عرض القائمة',
682
+    'titre_image_visiteur' => 'زائر',
683
+    'titre_joindre_document' => 'إرفاق مستند',
684
+    'titre_mots_cles' => 'المفاتيح',
685
+    'titre_probleme_technique' => 'تحذير: مشكلة تقنية (خادم SQL) تمنع الدخول إلى هذا الجزء من الموقع. شكراً على تفهمكم.',
686
+    'titre_publier_document' => 'نشر مستند في هذا القسم',
687
+    'titre_signatures_attente' => 'تواقيع بانتظار التصديق',
688
+    'titre_signatures_confirmees' => 'توقيعات مصدّقة',
689
+    'titre_statistiques' => 'إحصاءات الموقع',
690
+    'titre_titre_document' => 'اسم المستند: ',
691
+    'todo' => 'قريباً',
692
+    'trad_definir_reference' => 'اختيار "@titre@" كمرجع للترجمات',
693
+    'trad_reference' => '(مرجع الترجمات)',
694 694
 
695
-	// U
696
-	'upload_limit' => 'حجم هذا الملف أكبر مما يتحمل جهاز الخدمة: الحجم الأقصى المسموح به <b>للتنزيل</b> هو @max@.',
695
+    // U
696
+    'upload_limit' => 'حجم هذا الملف أكبر مما يتحمل جهاز الخدمة: الحجم الأقصى المسموح به <b>للتنزيل</b> هو @max@.',
697 697
 
698
-	// Z
699
-	'zbug_balise_b_aval' => ': العلامة B متأخرة',
700
-	'zbug_balise_inexistante' => 'خطأ في الاعلان عن العلامة @balise@ لـ@from@',
701
-	'zbug_balise_sans_argument' => 'عامل غير موجود في علامة @balise@',
702
-	'zbug_boucle' => 'حلقة',
703
-	'zbug_boucle_recursive_undef' => 'حلقة دورية غير معرّفة: @nom@',
704
-	'zbug_calcul' => 'حساب',
705
-	'zbug_champ_hors_boucle' => 'الحقل @champ@ خارج الحلقة',
706
-	'zbug_champ_hors_critere' => 'الحقل @champ@ خارج المقياس @critere@',
707
-	'zbug_champ_hors_motif' => 'الحقل @champ@ خارج سياق @motif@',
708
-	'zbug_code' => 'الرموز البرمجية',
709
-	'zbug_critere_inconnu' => 'معيار غير معروف @critere@',
710
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} على جدول دون مفتاح اساسي افرادي',
711
-	'zbug_distant_interdit' => 'عملية خارجية ممنوعة',
712
-	'zbug_doublon_table_sans_cle_primaire' => 'قيمة مكررة في جدول لا يملك مفتاح أساسي',
713
-	'zbug_doublon_table_sans_index' => 'تكرار في جدول غير مفهرس',
714
-	'zbug_erreur_boucle_double' => 'تعريف متكرر للحلقة @id@',
715
-	'zbug_erreur_boucle_fermant' => 'علامة إغلاق غائبة في حلقة @id@',
716
-	'zbug_erreur_boucle_syntaxe' => 'تركيب حلقة @id@ غير صحيح',
717
-	'zbug_erreur_compilation' => 'خطأ تصنيف',
718
-	'zbug_erreur_execution_page' => 'خطأ في التنفيذ',
719
-	'zbug_erreur_filtre' => 'المرشح @filtre@ غير معرّف ',
720
-	'zbug_erreur_filtre_nbarg_min' => 'المرشح @filtre@ : ينقص @nb@ عامل',
721
-	'zbug_erreur_meme_parent' => 'لا ينطبق معيار {meme_parent} إلا على حلقتي (FORUMS) أو (RUBRIQUES)',
722
-	'zbug_erreur_squelette' => 'خطأ في الصفحة النموذجية',
723
-	'zbug_hors_compilation' => 'خارج التصنيف',
724
-	'zbug_info_erreur_squelette' => 'خطأ في الموفع',
725
-	'zbug_inversion_ordre_inexistant' => 'عكس ترتيب غير موجود أصلاً',
726
-	'zbug_pagination_sans_critere' => 'علامة PAGINATION# بدون معيار {pagination} أو مستخدمة في حلقة دورية',
727
-	'zbug_parametres_inclus_incorrects' => 'عامل إدراج غير صحيحة: @param@',
728
-	'zbug_profile' => 'فترة المعالجة: @time@',
729
-	'zbug_resultat' => 'النتيجة',
730
-	'zbug_serveur_indefini' => 'خادم SQL غير محدد',
731
-	'zbug_statistiques' => 'احصاءات استفسارات SQL مرتبة حسب المدة',
732
-	'zbug_table_inconnue' => 'جدول SQL هو «@table@» غير معروف',
733
-	'zxml_connus_attributs' => 'خاصيات معروفة',
734
-	'zxml_de' => 'من',
735
-	'zxml_inconnu_attribut' => 'خاصية غير معروفة',
736
-	'zxml_inconnu_balise' => 'علامة غير معروفة',
737
-	'zxml_inconnu_entite' => 'كائن غير معروف',
738
-	'zxml_inconnu_id' => 'هوية ID غير معروفة',
739
-	'zxml_mais_de' => 'لكن من',
740
-	'zxml_non_conforme' => 'غير مطابق للشكل',
741
-	'zxml_non_fils' => 'ليس من سلالة',
742
-	'zxml_nonvide_balise' => 'علامة غير فارغة',
743
-	'zxml_obligatoire_attribut' => 'خاصية إجبارية لكنها غير موجودة في',
744
-	'zxml_succession_fils_incorrecte' => 'تتابع سلالات غير سليم',
745
-	'zxml_survoler' => 'الحوم لعرض الصحيح',
746
-	'zxml_valeur_attribut' => 'قيمة الخاصية',
747
-	'zxml_vide_balise' => 'علامة فارغة',
748
-	'zxml_vu' => 'ظهر مسبقاً'
698
+    // Z
699
+    'zbug_balise_b_aval' => ': العلامة B متأخرة',
700
+    'zbug_balise_inexistante' => 'خطأ في الاعلان عن العلامة @balise@ لـ@from@',
701
+    'zbug_balise_sans_argument' => 'عامل غير موجود في علامة @balise@',
702
+    'zbug_boucle' => 'حلقة',
703
+    'zbug_boucle_recursive_undef' => 'حلقة دورية غير معرّفة: @nom@',
704
+    'zbug_calcul' => 'حساب',
705
+    'zbug_champ_hors_boucle' => 'الحقل @champ@ خارج الحلقة',
706
+    'zbug_champ_hors_critere' => 'الحقل @champ@ خارج المقياس @critere@',
707
+    'zbug_champ_hors_motif' => 'الحقل @champ@ خارج سياق @motif@',
708
+    'zbug_code' => 'الرموز البرمجية',
709
+    'zbug_critere_inconnu' => 'معيار غير معروف @critere@',
710
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} على جدول دون مفتاح اساسي افرادي',
711
+    'zbug_distant_interdit' => 'عملية خارجية ممنوعة',
712
+    'zbug_doublon_table_sans_cle_primaire' => 'قيمة مكررة في جدول لا يملك مفتاح أساسي',
713
+    'zbug_doublon_table_sans_index' => 'تكرار في جدول غير مفهرس',
714
+    'zbug_erreur_boucle_double' => 'تعريف متكرر للحلقة @id@',
715
+    'zbug_erreur_boucle_fermant' => 'علامة إغلاق غائبة في حلقة @id@',
716
+    'zbug_erreur_boucle_syntaxe' => 'تركيب حلقة @id@ غير صحيح',
717
+    'zbug_erreur_compilation' => 'خطأ تصنيف',
718
+    'zbug_erreur_execution_page' => 'خطأ في التنفيذ',
719
+    'zbug_erreur_filtre' => 'المرشح @filtre@ غير معرّف ',
720
+    'zbug_erreur_filtre_nbarg_min' => 'المرشح @filtre@ : ينقص @nb@ عامل',
721
+    'zbug_erreur_meme_parent' => 'لا ينطبق معيار {meme_parent} إلا على حلقتي (FORUMS) أو (RUBRIQUES)',
722
+    'zbug_erreur_squelette' => 'خطأ في الصفحة النموذجية',
723
+    'zbug_hors_compilation' => 'خارج التصنيف',
724
+    'zbug_info_erreur_squelette' => 'خطأ في الموفع',
725
+    'zbug_inversion_ordre_inexistant' => 'عكس ترتيب غير موجود أصلاً',
726
+    'zbug_pagination_sans_critere' => 'علامة PAGINATION# بدون معيار {pagination} أو مستخدمة في حلقة دورية',
727
+    'zbug_parametres_inclus_incorrects' => 'عامل إدراج غير صحيحة: @param@',
728
+    'zbug_profile' => 'فترة المعالجة: @time@',
729
+    'zbug_resultat' => 'النتيجة',
730
+    'zbug_serveur_indefini' => 'خادم SQL غير محدد',
731
+    'zbug_statistiques' => 'احصاءات استفسارات SQL مرتبة حسب المدة',
732
+    'zbug_table_inconnue' => 'جدول SQL هو «@table@» غير معروف',
733
+    'zxml_connus_attributs' => 'خاصيات معروفة',
734
+    'zxml_de' => 'من',
735
+    'zxml_inconnu_attribut' => 'خاصية غير معروفة',
736
+    'zxml_inconnu_balise' => 'علامة غير معروفة',
737
+    'zxml_inconnu_entite' => 'كائن غير معروف',
738
+    'zxml_inconnu_id' => 'هوية ID غير معروفة',
739
+    'zxml_mais_de' => 'لكن من',
740
+    'zxml_non_conforme' => 'غير مطابق للشكل',
741
+    'zxml_non_fils' => 'ليس من سلالة',
742
+    'zxml_nonvide_balise' => 'علامة غير فارغة',
743
+    'zxml_obligatoire_attribut' => 'خاصية إجبارية لكنها غير موجودة في',
744
+    'zxml_succession_fils_incorrecte' => 'تتابع سلالات غير سليم',
745
+    'zxml_survoler' => 'الحوم لعرض الصحيح',
746
+    'zxml_valeur_attribut' => 'قيمة الخاصية',
747
+    'zxml_vide_balise' => 'علامة فارغة',
748
+    'zxml_vu' => 'ظهر مسبقاً'
749 749
 );
Please login to merge, or discard this patch.