Completed
Push — master ( 7f3c39...d78940 )
by cam
04:49
created
ecrire/lang/spip_fr.php 1 patch
Indentation   +667 added lines, -667 removed lines patch added patch discarded remove patch
@@ -2,247 +2,247 @@  discard block
 block discarded – undo
2 2
 // This is a SPIP language file  --  Ceci est un fichier langue de SPIP
3 3
 // Fichier source, a modifier dans https://git.spip.net/spip/spip.git
4 4
 if (!defined('_ECRIRE_INC_VERSION')) {
5
-	return;
5
+    return;
6 6
 }
7 7
 
8 8
 $GLOBALS[$GLOBALS['idx_lang']] = array(
9 9
 
10
-	// A
11
-	'access_interface_graphique' => 'Retour à l’interface graphique complète',
12
-	'access_mode_texte' => 'Afficher l’interface textuelle simplifiée',
13
-	'admin_debug' => 'debug',
14
-	'admin_modifier_article' => 'Modifier cet article',
15
-	'admin_modifier_auteur' => 'Modifier cet auteur',
16
-	'admin_modifier_breve' => 'Modifier cette brève',
17
-	'admin_modifier_mot' => 'Modifier ce mot-clé',
18
-	'admin_modifier_rubrique' => 'Modifier cette rubrique',
19
-	'admin_recalculer' => 'Recalculer cette page',
20
-	'afficher_calendrier' => 'Afficher le calendrier',
21
-	'afficher_trad' => 'afficher les traductions',
22
-	'alerte_maj_impossible' => '<b>Alerte !</b> La mise à jour de la base SQL vers la version @version@ est impossible, peut-être à cause d’un problème de droit de modification sur la base de données. Veuillez contacter votre hébergeur.',
23
-	'alerte_modif_info_concourante' => 'ATTENTION : Cette information a été modifiée par ailleurs. La valeur actuelle est :',
24
-	'analyse_xml' => 'Analyse XML',
25
-	'annuler' => 'Annuler',
26
-	'antispam_champ_vide' => 'Veuillez laisser ce champ vide :',
27
-	'articles_recents' => 'Articles les plus récents',
28
-	'attention_champ_mini_nb_caractères' => 'Attention ! @nb@ caractères au minimum',
29
-	'avis_1_erreur_saisie' => 'Il y a 1 erreur dans votre saisie, veuillez vérifier les informations.',
30
-	'avis_archive_incorrect' => 'le fichier archive n’est pas un fichier SPIP',
31
-	'avis_archive_invalide' => 'le fichier archive n’est pas valide',
32
-	'avis_attention' => 'ATTENTION !',
33
-	'avis_champ_incorrect_type_objet' => 'Nom de champ incorrect @name@ pour objet de type @type@',
34
-	'avis_colonne_inexistante' => 'La colonne @col@ n’existe pas',
35
-	'avis_erreur' => 'Erreur : voir ci-dessous',
36
-	'avis_erreur_connexion' => 'Erreur de connexion',
37
-	'avis_erreur_cookie' => 'problème de cookie',
38
-	'avis_erreur_fonction_contexte' => 'Erreur de programmation. Cette fonction ne doit pas être appelée dans ce contexte.',
39
-	'avis_erreur_mysql' => 'Erreur SQL',
40
-	'avis_erreur_sauvegarde' => 'Erreur dans la sauvegarde (@type@ @id_objet@) !',
41
-	'avis_erreur_visiteur' => 'Problème d’accès à l’espace privé',
42
-	'avis_nb_erreurs_saisie' => 'Il y a @nb@ erreurs dans votre saisie, veuillez vérifier les informations.',
10
+    // A
11
+    'access_interface_graphique' => 'Retour à l’interface graphique complète',
12
+    'access_mode_texte' => 'Afficher l’interface textuelle simplifiée',
13
+    'admin_debug' => 'debug',
14
+    'admin_modifier_article' => 'Modifier cet article',
15
+    'admin_modifier_auteur' => 'Modifier cet auteur',
16
+    'admin_modifier_breve' => 'Modifier cette brève',
17
+    'admin_modifier_mot' => 'Modifier ce mot-clé',
18
+    'admin_modifier_rubrique' => 'Modifier cette rubrique',
19
+    'admin_recalculer' => 'Recalculer cette page',
20
+    'afficher_calendrier' => 'Afficher le calendrier',
21
+    'afficher_trad' => 'afficher les traductions',
22
+    'alerte_maj_impossible' => '<b>Alerte !</b> La mise à jour de la base SQL vers la version @version@ est impossible, peut-être à cause d’un problème de droit de modification sur la base de données. Veuillez contacter votre hébergeur.',
23
+    'alerte_modif_info_concourante' => 'ATTENTION : Cette information a été modifiée par ailleurs. La valeur actuelle est :',
24
+    'analyse_xml' => 'Analyse XML',
25
+    'annuler' => 'Annuler',
26
+    'antispam_champ_vide' => 'Veuillez laisser ce champ vide :',
27
+    'articles_recents' => 'Articles les plus récents',
28
+    'attention_champ_mini_nb_caractères' => 'Attention ! @nb@ caractères au minimum',
29
+    'avis_1_erreur_saisie' => 'Il y a 1 erreur dans votre saisie, veuillez vérifier les informations.',
30
+    'avis_archive_incorrect' => 'le fichier archive n’est pas un fichier SPIP',
31
+    'avis_archive_invalide' => 'le fichier archive n’est pas valide',
32
+    'avis_attention' => 'ATTENTION !',
33
+    'avis_champ_incorrect_type_objet' => 'Nom de champ incorrect @name@ pour objet de type @type@',
34
+    'avis_colonne_inexistante' => 'La colonne @col@ n’existe pas',
35
+    'avis_erreur' => 'Erreur : voir ci-dessous',
36
+    'avis_erreur_connexion' => 'Erreur de connexion',
37
+    'avis_erreur_cookie' => 'problème de cookie',
38
+    'avis_erreur_fonction_contexte' => 'Erreur de programmation. Cette fonction ne doit pas être appelée dans ce contexte.',
39
+    'avis_erreur_mysql' => 'Erreur SQL',
40
+    'avis_erreur_sauvegarde' => 'Erreur dans la sauvegarde (@type@ @id_objet@) !',
41
+    'avis_erreur_visiteur' => 'Problème d’accès à l’espace privé',
42
+    'avis_nb_erreurs_saisie' => 'Il y a @nb@ erreurs dans votre saisie, veuillez vérifier les informations.',
43 43
 
44
-	// B
45
-	'barre_a_accent_grave' => 'Insérer un A accent grave majuscule',
46
-	'barre_aide' => 'Utilisez les raccourcis typographiques pour enrichir votre mise en page',
47
-	'barre_e_accent_aigu' => 'Insérer un E accent aigu majuscule',
48
-	'barre_eo' => 'Insérer un E dans l’O',
49
-	'barre_eo_maj' => 'Insérer un E dans l’O majuscule',
50
-	'barre_euro' => 'Insérer le symbole €',
51
-	'barre_gras' => 'Mettre en {{gras}}',
52
-	'barre_guillemets' => 'Entourer de « guillemets »',
53
-	'barre_guillemets_simples' => 'Entourer de “guillemets de second niveau”',
54
-	'barre_intertitre' => 'Transformer en {{{intertitre}}}',
55
-	'barre_italic' => 'Mettre en {italique}',
56
-	'barre_lien' => 'Transformer en [lien hypertexte->http://...]',
57
-	'barre_lien_input' => 'Veuillez indiquer l’adresse de votre lien (vous pouvez indiquer une adresse Web sous la forme http://www.monsite/com ou simplement indiquer le numéro d’un article de ce site.',
58
-	'barre_note' => 'Transformer en [[Note de bas de page]]',
59
-	'barre_paragraphe' => 'Créer un paragraphe',
60
-	'barre_quote' => '<quote>Citer un message</quote>',
61
-	'bouton_changer' => 'Changer',
62
-	'bouton_chercher' => 'Chercher',
63
-	'bouton_choisir' => 'Choisir',
64
-	'bouton_deplacer' => 'Déplacer',
65
-	'bouton_download' => 'Télécharger',
66
-	'bouton_enregistrer' => 'Enregistrer',
67
-	'bouton_radio_desactiver_messagerie_interne' => 'Désactiver la messagerie interne',
68
-	'bouton_radio_envoi_annonces' => 'Envoyer les annonces éditoriales',
69
-	'bouton_radio_non_envoi_annonces' => 'Ne pas envoyer d’annonces',
70
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
71
-	'bouton_recharger_page' => 'recharger cette page',
72
-	'bouton_telecharger' => 'Télécharger',
73
-	'bouton_upload' => 'Téléverser',
74
-	'bouton_valider' => 'Valider',
44
+    // B
45
+    'barre_a_accent_grave' => 'Insérer un A accent grave majuscule',
46
+    'barre_aide' => 'Utilisez les raccourcis typographiques pour enrichir votre mise en page',
47
+    'barre_e_accent_aigu' => 'Insérer un E accent aigu majuscule',
48
+    'barre_eo' => 'Insérer un E dans l’O',
49
+    'barre_eo_maj' => 'Insérer un E dans l’O majuscule',
50
+    'barre_euro' => 'Insérer le symbole €',
51
+    'barre_gras' => 'Mettre en {{gras}}',
52
+    'barre_guillemets' => 'Entourer de « guillemets »',
53
+    'barre_guillemets_simples' => 'Entourer de “guillemets de second niveau”',
54
+    'barre_intertitre' => 'Transformer en {{{intertitre}}}',
55
+    'barre_italic' => 'Mettre en {italique}',
56
+    'barre_lien' => 'Transformer en [lien hypertexte->http://...]',
57
+    'barre_lien_input' => 'Veuillez indiquer l’adresse de votre lien (vous pouvez indiquer une adresse Web sous la forme http://www.monsite/com ou simplement indiquer le numéro d’un article de ce site.',
58
+    'barre_note' => 'Transformer en [[Note de bas de page]]',
59
+    'barre_paragraphe' => 'Créer un paragraphe',
60
+    'barre_quote' => '<quote>Citer un message</quote>',
61
+    'bouton_changer' => 'Changer',
62
+    'bouton_chercher' => 'Chercher',
63
+    'bouton_choisir' => 'Choisir',
64
+    'bouton_deplacer' => 'Déplacer',
65
+    'bouton_download' => 'Télécharger',
66
+    'bouton_enregistrer' => 'Enregistrer',
67
+    'bouton_radio_desactiver_messagerie_interne' => 'Désactiver la messagerie interne',
68
+    'bouton_radio_envoi_annonces' => 'Envoyer les annonces éditoriales',
69
+    'bouton_radio_non_envoi_annonces' => 'Ne pas envoyer d’annonces',
70
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Ne pas envoyer la liste des nouveautés',
71
+    'bouton_recharger_page' => 'recharger cette page',
72
+    'bouton_telecharger' => 'Télécharger',
73
+    'bouton_upload' => 'Téléverser',
74
+    'bouton_valider' => 'Valider',
75 75
 
76
-	// C
77
-	'cal_apresmidi' => 'après-midi',
78
-	'cal_jour_entier' => 'jour entier',
79
-	'cal_matin' => 'matin',
80
-	'cal_par_jour' => 'calendrier par jour',
81
-	'cal_par_mois' => 'calendrier par mois',
82
-	'cal_par_semaine' => 'calendrier par semaine',
83
-	'choix_couleur_interface' => 'couleur ',
84
-	'choix_interface' => 'choix  de l’interface',
85
-	'colonne' => 'Colonne',
86
-	'confirm_changer_statut' => 'Attention, vous avez demandé à changer le statut de cet élément. Souhaitez-vous continuer ?',
87
-	'correcte' => 'correcte', # chaine utilisée dans le debugueur : "validation .. impossible" ou "validation .. correcte"
76
+    // C
77
+    'cal_apresmidi' => 'après-midi',
78
+    'cal_jour_entier' => 'jour entier',
79
+    'cal_matin' => 'matin',
80
+    'cal_par_jour' => 'calendrier par jour',
81
+    'cal_par_mois' => 'calendrier par mois',
82
+    'cal_par_semaine' => 'calendrier par semaine',
83
+    'choix_couleur_interface' => 'couleur ',
84
+    'choix_interface' => 'choix  de l’interface',
85
+    'colonne' => 'Colonne',
86
+    'confirm_changer_statut' => 'Attention, vous avez demandé à changer le statut de cet élément. Souhaitez-vous continuer ?',
87
+    'correcte' => 'correcte', # chaine utilisée dans le debugueur : "validation .. impossible" ou "validation .. correcte"
88 88
 
89
-	// D
90
-	'date_aujourdhui' => 'aujourd’hui',
91
-	'date_avant_jc' => 'av. J.C.',
92
-	'date_dans' => 'dans @delai@',
93
-	'date_de_mois_1' => '@j@ @nommois@',
94
-	'date_de_mois_10' => '@j@ @nommois@',
95
-	'date_de_mois_11' => '@j@ @nommois@',
96
-	'date_de_mois_12' => '@j@ @nommois@',
97
-	'date_de_mois_2' => '@j@ @nommois@',
98
-	'date_de_mois_3' => '@j@ @nommois@',
99
-	'date_de_mois_4' => '@j@ @nommois@',
100
-	'date_de_mois_5' => '@j@ @nommois@',
101
-	'date_de_mois_6' => '@j@ @nommois@',
102
-	'date_de_mois_7' => '@j@ @nommois@',
103
-	'date_de_mois_8' => '@j@ @nommois@',
104
-	'date_de_mois_9' => '@j@ @nommois@',
105
-	'date_demain' => 'demain',
106
-	'date_fmt_heures_minutes' => '@h@h@m@min',
107
-	'date_fmt_heures_minutes_court' => '@h@h@m@',
108
-	'date_fmt_jour' => '@nomjour@ @jour@',
109
-	'date_fmt_jour_heure' => '@jour@ à @heure@',
110
-	'date_fmt_jour_heure_debut_fin' => '@jour@ de @heure_debut@ à @heure_fin@',
111
-	'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ de @heure_debut@@dtabbr@ à @dtend@@heure_fin@@dtabbr@',
112
-	'date_fmt_jour_mois' => '@jour@ @nommois@',
113
-	'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
114
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
115
-	'date_fmt_nomjour' => '@nomjour@ @date@',
116
-	'date_fmt_nomjour_date' => 'le @nomjour@ @date@',
117
-	'date_fmt_periode' => 'Du @date_debut@ au @date_fin@',
118
-	'date_fmt_periode_abbr' => 'Du @dtart@@date_debut@@dtabbr@ au @dtend@@date_fin@@dtabbr@',
119
-	'date_fmt_periode_from' => 'Du',
120
-	'date_fmt_periode_to' => 'au',
121
-	'date_fmt_saison_annee' => '@saison@ @annee@',
122
-	'date_heures' => 'heures',
123
-	'date_hier' => 'hier',
124
-	'date_il_y_a' => 'il y a @delai@',
125
-	'date_jnum1' => '1er',
126
-	'date_jnum10' => '10',
127
-	'date_jnum11' => '11',
128
-	'date_jnum12' => '12',
129
-	'date_jnum13' => '13',
130
-	'date_jnum14' => '14',
131
-	'date_jnum15' => '15',
132
-	'date_jnum16' => '16',
133
-	'date_jnum17' => '17',
134
-	'date_jnum18' => '18',
135
-	'date_jnum19' => '19',
136
-	'date_jnum2' => '2',
137
-	'date_jnum20' => '20',
138
-	'date_jnum21' => '21',
139
-	'date_jnum22' => '22',
140
-	'date_jnum23' => '23',
141
-	'date_jnum24' => '24',
142
-	'date_jnum25' => '25',
143
-	'date_jnum26' => '26',
144
-	'date_jnum27' => '27',
145
-	'date_jnum28' => '28',
146
-	'date_jnum29' => '29',
147
-	'date_jnum3' => '3',
148
-	'date_jnum30' => '30',
149
-	'date_jnum31' => '31',
150
-	'date_jnum4' => '4',
151
-	'date_jnum5' => '5',
152
-	'date_jnum6' => '6',
153
-	'date_jnum7' => '7',
154
-	'date_jnum8' => '8',
155
-	'date_jnum9' => '9',
156
-	'date_jour_1' => 'dimanche',
157
-	'date_jour_1_abbr' => 'dim.',
158
-	'date_jour_1_initiale' => 'd.',
159
-	'date_jour_2' => 'lundi',
160
-	'date_jour_2_abbr' => 'lun.',
161
-	'date_jour_2_initiale' => 'l.',
162
-	'date_jour_3' => 'mardi',
163
-	'date_jour_3_abbr' => 'mar.',
164
-	'date_jour_3_initiale' => 'm.',
165
-	'date_jour_4' => 'mercredi',
166
-	'date_jour_4_abbr' => 'mer.',
167
-	'date_jour_4_initiale' => 'm.',
168
-	'date_jour_5' => 'jeudi',
169
-	'date_jour_5_abbr' => 'jeu.',
170
-	'date_jour_5_initiale' => 'j.',
171
-	'date_jour_6' => 'vendredi',
172
-	'date_jour_6_abbr' => 'ven.',
173
-	'date_jour_6_initiale' => 'v.',
174
-	'date_jour_7' => 'samedi',
175
-	'date_jour_7_abbr' => 'sam.',
176
-	'date_jour_7_initiale' => 's.',
177
-	'date_jours' => 'jours',
178
-	'date_minutes' => 'minutes',
179
-	'date_mois' => 'mois',
180
-	'date_mois_1' => 'janvier',
181
-	'date_mois_10' => 'octobre',
182
-	'date_mois_10_abbr' => 'oct.',
183
-	'date_mois_11' => 'novembre',
184
-	'date_mois_11_abbr' => 'nov.',
185
-	'date_mois_12' => 'décembre',
186
-	'date_mois_12_abbr' => 'déc.',
187
-	'date_mois_1_abbr' => 'janv.',
188
-	'date_mois_2' => 'février',
189
-	'date_mois_2_abbr' => 'févr.',
190
-	'date_mois_3' => 'mars',
191
-	'date_mois_3_abbr' => 'mars',
192
-	'date_mois_4' => 'avril',
193
-	'date_mois_4_abbr' => 'avr.',
194
-	'date_mois_5' => 'mai',
195
-	'date_mois_5_abbr' => 'mai',
196
-	'date_mois_6' => 'juin',
197
-	'date_mois_6_abbr' => 'juin',
198
-	'date_mois_7' => 'juillet',
199
-	'date_mois_7_abbr' => 'juil.',
200
-	'date_mois_8' => 'août',
201
-	'date_mois_8_abbr' => 'août',
202
-	'date_mois_9' => 'septembre',
203
-	'date_mois_9_abbr' => 'sept.',
204
-	'date_saison_1' => 'hiver',
205
-	'date_saison_2' => 'printemps',
206
-	'date_saison_3' => 'été',
207
-	'date_saison_4' => 'automne',
208
-	'date_secondes' => 'secondes',
209
-	'date_semaines' => 'semaines',
210
-	'date_un_mois' => 'mois',
211
-	'date_une_heure' => 'heure',
212
-	'date_une_minute' => 'minute',
213
-	'date_une_seconde' => 'seconde',
214
-	'date_une_semaine' => 'semaine',
215
-	'dirs_commencer' => ' afin de commencer réellement l’installation',
216
-	'dirs_preliminaire' => 'Préliminaire : <b>Régler les droits d’accès</b>',
217
-	'dirs_probleme_droits' => 'Problème de droits d’accès',
218
-	'dirs_repertoires_absents' => '<p><b>Les répertoires suivants n’ont pas été trouvés :</b></p><ul>@bad_dirs@</ul>
89
+    // D
90
+    'date_aujourdhui' => 'aujourd’hui',
91
+    'date_avant_jc' => 'av. J.C.',
92
+    'date_dans' => 'dans @delai@',
93
+    'date_de_mois_1' => '@j@ @nommois@',
94
+    'date_de_mois_10' => '@j@ @nommois@',
95
+    'date_de_mois_11' => '@j@ @nommois@',
96
+    'date_de_mois_12' => '@j@ @nommois@',
97
+    'date_de_mois_2' => '@j@ @nommois@',
98
+    'date_de_mois_3' => '@j@ @nommois@',
99
+    'date_de_mois_4' => '@j@ @nommois@',
100
+    'date_de_mois_5' => '@j@ @nommois@',
101
+    'date_de_mois_6' => '@j@ @nommois@',
102
+    'date_de_mois_7' => '@j@ @nommois@',
103
+    'date_de_mois_8' => '@j@ @nommois@',
104
+    'date_de_mois_9' => '@j@ @nommois@',
105
+    'date_demain' => 'demain',
106
+    'date_fmt_heures_minutes' => '@h@h@m@min',
107
+    'date_fmt_heures_minutes_court' => '@h@h@m@',
108
+    'date_fmt_jour' => '@nomjour@ @jour@',
109
+    'date_fmt_jour_heure' => '@jour@ à @heure@',
110
+    'date_fmt_jour_heure_debut_fin' => '@jour@ de @heure_debut@ à @heure_fin@',
111
+    'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ de @heure_debut@@dtabbr@ à @dtend@@heure_fin@@dtabbr@',
112
+    'date_fmt_jour_mois' => '@jour@ @nommois@',
113
+    'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
114
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
115
+    'date_fmt_nomjour' => '@nomjour@ @date@',
116
+    'date_fmt_nomjour_date' => 'le @nomjour@ @date@',
117
+    'date_fmt_periode' => 'Du @date_debut@ au @date_fin@',
118
+    'date_fmt_periode_abbr' => 'Du @dtart@@date_debut@@dtabbr@ au @dtend@@date_fin@@dtabbr@',
119
+    'date_fmt_periode_from' => 'Du',
120
+    'date_fmt_periode_to' => 'au',
121
+    'date_fmt_saison_annee' => '@saison@ @annee@',
122
+    'date_heures' => 'heures',
123
+    'date_hier' => 'hier',
124
+    'date_il_y_a' => 'il y a @delai@',
125
+    'date_jnum1' => '1er',
126
+    'date_jnum10' => '10',
127
+    'date_jnum11' => '11',
128
+    'date_jnum12' => '12',
129
+    'date_jnum13' => '13',
130
+    'date_jnum14' => '14',
131
+    'date_jnum15' => '15',
132
+    'date_jnum16' => '16',
133
+    'date_jnum17' => '17',
134
+    'date_jnum18' => '18',
135
+    'date_jnum19' => '19',
136
+    'date_jnum2' => '2',
137
+    'date_jnum20' => '20',
138
+    'date_jnum21' => '21',
139
+    'date_jnum22' => '22',
140
+    'date_jnum23' => '23',
141
+    'date_jnum24' => '24',
142
+    'date_jnum25' => '25',
143
+    'date_jnum26' => '26',
144
+    'date_jnum27' => '27',
145
+    'date_jnum28' => '28',
146
+    'date_jnum29' => '29',
147
+    'date_jnum3' => '3',
148
+    'date_jnum30' => '30',
149
+    'date_jnum31' => '31',
150
+    'date_jnum4' => '4',
151
+    'date_jnum5' => '5',
152
+    'date_jnum6' => '6',
153
+    'date_jnum7' => '7',
154
+    'date_jnum8' => '8',
155
+    'date_jnum9' => '9',
156
+    'date_jour_1' => 'dimanche',
157
+    'date_jour_1_abbr' => 'dim.',
158
+    'date_jour_1_initiale' => 'd.',
159
+    'date_jour_2' => 'lundi',
160
+    'date_jour_2_abbr' => 'lun.',
161
+    'date_jour_2_initiale' => 'l.',
162
+    'date_jour_3' => 'mardi',
163
+    'date_jour_3_abbr' => 'mar.',
164
+    'date_jour_3_initiale' => 'm.',
165
+    'date_jour_4' => 'mercredi',
166
+    'date_jour_4_abbr' => 'mer.',
167
+    'date_jour_4_initiale' => 'm.',
168
+    'date_jour_5' => 'jeudi',
169
+    'date_jour_5_abbr' => 'jeu.',
170
+    'date_jour_5_initiale' => 'j.',
171
+    'date_jour_6' => 'vendredi',
172
+    'date_jour_6_abbr' => 'ven.',
173
+    'date_jour_6_initiale' => 'v.',
174
+    'date_jour_7' => 'samedi',
175
+    'date_jour_7_abbr' => 'sam.',
176
+    'date_jour_7_initiale' => 's.',
177
+    'date_jours' => 'jours',
178
+    'date_minutes' => 'minutes',
179
+    'date_mois' => 'mois',
180
+    'date_mois_1' => 'janvier',
181
+    'date_mois_10' => 'octobre',
182
+    'date_mois_10_abbr' => 'oct.',
183
+    'date_mois_11' => 'novembre',
184
+    'date_mois_11_abbr' => 'nov.',
185
+    'date_mois_12' => 'décembre',
186
+    'date_mois_12_abbr' => 'déc.',
187
+    'date_mois_1_abbr' => 'janv.',
188
+    'date_mois_2' => 'février',
189
+    'date_mois_2_abbr' => 'févr.',
190
+    'date_mois_3' => 'mars',
191
+    'date_mois_3_abbr' => 'mars',
192
+    'date_mois_4' => 'avril',
193
+    'date_mois_4_abbr' => 'avr.',
194
+    'date_mois_5' => 'mai',
195
+    'date_mois_5_abbr' => 'mai',
196
+    'date_mois_6' => 'juin',
197
+    'date_mois_6_abbr' => 'juin',
198
+    'date_mois_7' => 'juillet',
199
+    'date_mois_7_abbr' => 'juil.',
200
+    'date_mois_8' => 'août',
201
+    'date_mois_8_abbr' => 'août',
202
+    'date_mois_9' => 'septembre',
203
+    'date_mois_9_abbr' => 'sept.',
204
+    'date_saison_1' => 'hiver',
205
+    'date_saison_2' => 'printemps',
206
+    'date_saison_3' => 'été',
207
+    'date_saison_4' => 'automne',
208
+    'date_secondes' => 'secondes',
209
+    'date_semaines' => 'semaines',
210
+    'date_un_mois' => 'mois',
211
+    'date_une_heure' => 'heure',
212
+    'date_une_minute' => 'minute',
213
+    'date_une_seconde' => 'seconde',
214
+    'date_une_semaine' => 'semaine',
215
+    'dirs_commencer' => ' afin de commencer réellement l’installation',
216
+    'dirs_preliminaire' => 'Préliminaire : <b>Régler les droits d’accès</b>',
217
+    'dirs_probleme_droits' => 'Problème de droits d’accès',
218
+    'dirs_repertoires_absents' => '<p><b>Les répertoires suivants n’ont pas été trouvés :</b></p><ul>@bad_dirs@</ul>
219 219
   <p>Il est probable que cela soit dû à un problème de mauvaise mise en majuscules ou minuscules.
220 220
   Vérifiez que les minuscules et majuscules de ces répertoires concordent bien avec ce qui est affiché
221 221
   ci-dessus ; si ce n’est pas le cas, renommez les répertoires avec votre logiciel FTP de façon à corriger l’erreur.</p>
222 222
   <p>Une fois cette manipulation effectuée, vous pourrez ',
223
-	'dirs_repertoires_suivants' => '<p><b>Les répertoires suivants ne sont pas accessibles en écriture :</b></p> <ul>@bad_dirs@</ul>
223
+    'dirs_repertoires_suivants' => '<p><b>Les répertoires suivants ne sont pas accessibles en écriture :</b></p> <ul>@bad_dirs@</ul>
224 224
   <p>Pour y remédier, utilisez votre client FTP afin de régler les droits d’accès de chacun
225 225
   de ces répertoires. La procédure est expliquée en détail dans le guide d’installation.</p>
226 226
   <p>Une fois cette manipulation effectuée, vous pourrez ',
227
-	'double_occurrence' => 'Double occurrence de @balise@',
227
+    'double_occurrence' => 'Double occurrence de @balise@',
228 228
 
229
-	// E
230
-	'en_cours' => 'en cours',
231
-	'envoi_via_le_site' => 'Envoi via le site',
232
-	'erreur' => 'Erreur',
233
-	'erreur_balise_non_fermee' => 'dernière balise non refermée :',
234
-	'erreur_technique_ajaxform' => 'Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.',
235
-	'erreur_technique_enregistrement_champs' => 'Une erreur technique a empêché l’enregistrement correct du champ @champs@.',
236
-	'erreur_technique_enregistrement_impossible' => 'Une erreur technique a empêché l’enregistrement.',
237
-	'erreur_texte' => 'erreur(s)',
238
-	'etape' => 'Étape',
229
+    // E
230
+    'en_cours' => 'en cours',
231
+    'envoi_via_le_site' => 'Envoi via le site',
232
+    'erreur' => 'Erreur',
233
+    'erreur_balise_non_fermee' => 'dernière balise non refermée :',
234
+    'erreur_technique_ajaxform' => 'Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.',
235
+    'erreur_technique_enregistrement_champs' => 'Une erreur technique a empêché l’enregistrement correct du champ @champs@.',
236
+    'erreur_technique_enregistrement_impossible' => 'Une erreur technique a empêché l’enregistrement.',
237
+    'erreur_texte' => 'erreur(s)',
238
+    'etape' => 'Étape',
239 239
 
240
-	// F
241
-	'fichier_introuvable' => 'Fichier @fichier@ introuvable',
242
-	'form_auteur_confirmation' => 'Confirmez votre adresse email',
243
-	'form_auteur_email_modifie' => 'Votre adresse email a été modifiée.',
244
-	'form_auteur_envoi_mail_confirmation' => 'Un courrier électronique de confirmation vient d’être envoyé à @email@. Vous devrez visiter l’adresse Web mentionnée dans ce courrier pour valider votre adresse mail.',
245
-	'form_auteur_mail_confirmation' => 'Bonjour,
240
+    // F
241
+    'fichier_introuvable' => 'Fichier @fichier@ introuvable',
242
+    'form_auteur_confirmation' => 'Confirmez votre adresse email',
243
+    'form_auteur_email_modifie' => 'Votre adresse email a été modifiée.',
244
+    'form_auteur_envoi_mail_confirmation' => 'Un courrier électronique de confirmation vient d’être envoyé à @email@. Vous devrez visiter l’adresse Web mentionnée dans ce courrier pour valider votre adresse mail.',
245
+    'form_auteur_mail_confirmation' => 'Bonjour,
246 246
 
247 247
 Vous avez demandé à changer votre adresse email.
248 248
 Pour confirmer votre nouvelle adresse, il suffit de vous connecter à
@@ -251,345 +251,345 @@  discard block
 block discarded – undo
251 251
 
252 252
     @url@
253 253
 ',
254
-	'form_deja_inscrit' => 'Vous êtes déjà inscrit.',
255
-	'form_email_non_valide' => 'Votre adresse email n’est pas valide.',
256
-	'form_forum_access_refuse' => 'Vous n’avez plus accès à ce site.',
257
-	'form_forum_bonjour' => 'Bonjour @nom@,',
258
-	'form_forum_confirmer_email' => 'Pour confirmer votre adresse email, rendez-vous à cette adresse : @url_confirm@',
259
-	'form_forum_email_deja_enregistre' => 'Cette adresse email est déjà enregistrée, vous pouvez donc utiliser votre mot de passe habituel.',
260
-	'form_forum_identifiant_mail' => 'Votre nouvel identifiant vient de vous être envoyé par email.',
261
-	'form_forum_identifiants' => 'Identifiants personnels',
262
-	'form_forum_indiquer_nom_email' => 'Indiquez ici votre nom et votre adresse email. Votre identifiant personnel vous parviendra rapidement, par courrier électronique.',
263
-	'form_forum_login' => 'login :',
264
-	'form_forum_message_auto' => '(ceci est un message automatique)',
265
-	'form_forum_pass' => 'mot de passe :',
266
-	'form_forum_probleme_mail' => 'Problème de mail : l’identifiant ne peut pas être envoyé.',
267
-	'form_forum_voici1' => 'Voici vos identifiants pour pouvoir participer à la vie du site "@nom_site_spip@" (@adresse_site@) :',
268
-	'form_forum_voici2' => 'Voici vos identifiants pour proposer des articles sur
254
+    'form_deja_inscrit' => 'Vous êtes déjà inscrit.',
255
+    'form_email_non_valide' => 'Votre adresse email n’est pas valide.',
256
+    'form_forum_access_refuse' => 'Vous n’avez plus accès à ce site.',
257
+    'form_forum_bonjour' => 'Bonjour @nom@,',
258
+    'form_forum_confirmer_email' => 'Pour confirmer votre adresse email, rendez-vous à cette adresse : @url_confirm@',
259
+    'form_forum_email_deja_enregistre' => 'Cette adresse email est déjà enregistrée, vous pouvez donc utiliser votre mot de passe habituel.',
260
+    'form_forum_identifiant_mail' => 'Votre nouvel identifiant vient de vous être envoyé par email.',
261
+    'form_forum_identifiants' => 'Identifiants personnels',
262
+    'form_forum_indiquer_nom_email' => 'Indiquez ici votre nom et votre adresse email. Votre identifiant personnel vous parviendra rapidement, par courrier électronique.',
263
+    'form_forum_login' => 'login :',
264
+    'form_forum_message_auto' => '(ceci est un message automatique)',
265
+    'form_forum_pass' => 'mot de passe :',
266
+    'form_forum_probleme_mail' => 'Problème de mail : l’identifiant ne peut pas être envoyé.',
267
+    'form_forum_voici1' => 'Voici vos identifiants pour pouvoir participer à la vie du site "@nom_site_spip@" (@adresse_site@) :',
268
+    'form_forum_voici2' => 'Voici vos identifiants pour proposer des articles sur
269 269
 le site "@nom_site_spip@" (@adresse_login@) :',
270
-	'form_indiquer_email' => 'Veuillez indiquer votre adresse email.',
271
-	'form_indiquer_nom' => 'Veuillez indiquer votre nom.',
272
-	'form_indiquer_nom_site' => 'Veuillez indiquer le nom de votre site.',
273
-	'form_pet_deja_enregistre' => 'Ce site est déjà enregistré',
274
-	'form_pet_signature_pasprise' => 'Votre signature n’est pas prise en compte.',
275
-	'form_prop_confirmer_envoi' => 'Confirmer l’envoi',
276
-	'form_prop_description' => 'Description/commentaire',
277
-	'form_prop_enregistre' => 'Votre proposition est enregistrée, elle apparaîtra en ligne après validation par les responsables de ce site.',
278
-	'form_prop_envoyer' => 'Envoyer un message',
279
-	'form_prop_indiquer_email' => 'Veuillez indiquer une adresse email valide',
280
-	'form_prop_indiquer_nom_site' => 'Veuillez indiquer le nom du site.',
281
-	'form_prop_indiquer_sujet' => 'Veuillez indiquer un sujet',
282
-	'form_prop_message_envoye' => 'Message envoyé',
283
-	'form_prop_non_enregistre' => 'Votre proposition n’a pas été enregistrée.',
284
-	'form_prop_sujet' => 'Sujet',
285
-	'form_prop_url_site' => 'Adresse URL du site',
286
-	'format_date_attendu' => 'Saisir une date au format jj/mm/aaaa.',
287
-	'format_date_incorrecte' => 'La date ou son format est incorrect',
288
-	'format_heure_attendu' => 'Saisir une heure au format hh:mm.',
289
-	'format_heure_incorrecte' => 'L’heure ou son format est incorrect',
290
-	'forum_non_inscrit' => 'Vous n’êtes pas inscrit, ou l’adresse ou le mot de passe sont erronés.',
291
-	'forum_par_auteur' => 'par @auteur@',
292
-	'forum_titre_erreur' => 'Erreur...',
270
+    'form_indiquer_email' => 'Veuillez indiquer votre adresse email.',
271
+    'form_indiquer_nom' => 'Veuillez indiquer votre nom.',
272
+    'form_indiquer_nom_site' => 'Veuillez indiquer le nom de votre site.',
273
+    'form_pet_deja_enregistre' => 'Ce site est déjà enregistré',
274
+    'form_pet_signature_pasprise' => 'Votre signature n’est pas prise en compte.',
275
+    'form_prop_confirmer_envoi' => 'Confirmer l’envoi',
276
+    'form_prop_description' => 'Description/commentaire',
277
+    'form_prop_enregistre' => 'Votre proposition est enregistrée, elle apparaîtra en ligne après validation par les responsables de ce site.',
278
+    'form_prop_envoyer' => 'Envoyer un message',
279
+    'form_prop_indiquer_email' => 'Veuillez indiquer une adresse email valide',
280
+    'form_prop_indiquer_nom_site' => 'Veuillez indiquer le nom du site.',
281
+    'form_prop_indiquer_sujet' => 'Veuillez indiquer un sujet',
282
+    'form_prop_message_envoye' => 'Message envoyé',
283
+    'form_prop_non_enregistre' => 'Votre proposition n’a pas été enregistrée.',
284
+    'form_prop_sujet' => 'Sujet',
285
+    'form_prop_url_site' => 'Adresse URL du site',
286
+    'format_date_attendu' => 'Saisir une date au format jj/mm/aaaa.',
287
+    'format_date_incorrecte' => 'La date ou son format est incorrect',
288
+    'format_heure_attendu' => 'Saisir une heure au format hh:mm.',
289
+    'format_heure_incorrecte' => 'L’heure ou son format est incorrect',
290
+    'forum_non_inscrit' => 'Vous n’êtes pas inscrit, ou l’adresse ou le mot de passe sont erronés.',
291
+    'forum_par_auteur' => 'par @auteur@',
292
+    'forum_titre_erreur' => 'Erreur...',
293 293
 
294
-	// I
295
-	'ical_texte_rss_articles' => 'Le fichier « backend » des articles de ce site se trouve à l’adresse :',
296
-	'ical_texte_rss_articles2' => 'Vous pouvez également obtenir des fichiers « backend » pour les articles de chaque rubrique du site :',
297
-	'ical_texte_rss_breves' => 'Il existe de plus un fichier contenant les brèves du site. En précisant un numéro de rubrique, vous obtiendrez uniquement les brèves de cette rubrique.',
298
-	'icone_a_suivre' => 'À suivre',
299
-	'icone_admin_site' => 'Administration du site',
300
-	'icone_agenda' => 'Agenda',
301
-	'icone_aide_ligne' => 'Aide',
302
-	'icone_articles' => 'Articles',
303
-	'icone_auteurs' => 'Auteurs',
304
-	'icone_brouteur' => 'Navigation rapide',
305
-	'icone_configuration_site' => 'Configuration',
306
-	'icone_configurer_site' => 'Configurer votre site',
307
-	'icone_creer_nouvel_auteur' => 'Créer un nouvel auteur',
308
-	'icone_creer_rubrique' => 'Créer une rubrique',
309
-	'icone_creer_sous_rubrique' => 'Créer une sous-rubrique',
310
-	'icone_deconnecter' => 'Se déconnecter',
311
-	'icone_discussions' => 'Discussions',
312
-	'icone_doc_rubrique' => 'Documents des rubriques',
313
-	'icone_ecrire_article' => 'Écrire un nouvel article',
314
-	'icone_edition_site' => 'Édition',
315
-	'icone_gestion_langues' => 'Gestion des langues',
316
-	'icone_informations_personnelles' => 'Informations personnelles',
317
-	'icone_interface_complet' => 'interface complète',
318
-	'icone_interface_simple' => 'Interface simplifiée',
319
-	'icone_maintenance_site' => 'Maintenance du site',
320
-	'icone_messagerie_personnelle' => 'Messagerie personnelle',
321
-	'icone_repartition_debut' => 'Afficher la répartition depuis le début',
322
-	'icone_rubriques' => 'Rubriques',
323
-	'icone_sauver_site' => 'Sauvegarde du site',
324
-	'icone_site_entier' => 'Tout le site',
325
-	'icone_sites_references' => 'Sites référencés',
326
-	'icone_statistiques' => 'Statistiques du site',
327
-	'icone_suivi_activite' => 'Suivre la vie du site',
328
-	'icone_suivi_actualite' => 'Évolution du site',
329
-	'icone_suivi_pettions' => 'Suivre/gérer les pétitions',
330
-	'icone_suivi_revisions' => 'Modifications des articles',
331
-	'icone_supprimer_document' => 'Supprimer ce document',
332
-	'icone_supprimer_image' => 'Supprimer cette image',
333
-	'icone_tous_articles' => 'Tous vos articles',
334
-	'icone_tous_auteur' => 'Tous les auteurs',
335
-	'icone_tous_visiteur' => 'Tous les visiteurs',
336
-	'icone_visiter_site' => 'Voir le site public',
337
-	'icone_voir_en_ligne' => 'Voir en ligne',
338
-	'img_indisponible' => 'image indisponible',
339
-	'impossible' => 'impossible',
340
-	'info_a_suivre' => 'À SUIVRE »',
341
-	'info_acces_interdit' => 'Accès interdit',
342
-	'info_acces_refuse' => 'Accès refusé',
343
-	'info_action' => 'Action : @action@',
344
-	'info_administrer_rubriques' => 'Vous pouvez administrer cette rubrique et ses sous-rubriques',
345
-	'info_adresse_non_indiquee' => 'Vous n’avez pas indiqué d’adresse à tester !',
346
-	'info_aide' => 'AIDE :',
347
-	'info_ajouter_mot' => 'Ajouter ce mot',
348
-	'info_annonce' => 'ANNONCE',
349
-	'info_annonces_generales' => 'Annonces générales :',
350
-	'info_article_propose' => 'Article proposé',
351
-	'info_article_publie' => 'Article publié',
352
-	'info_article_redaction' => 'Article en cours de rédaction',
353
-	'info_article_refuse' => 'Article refusé',
354
-	'info_article_supprime' => 'Article supprimé',
355
-	'info_articles' => 'Articles',
356
-	'info_articles_a_valider' => 'Les articles à valider',
357
-	'info_articles_nb' => '@nb@ articles',
358
-	'info_articles_proposes' => 'Articles proposés',
359
-	'info_articles_un' => '1 article',
360
-	'info_auteurs_nombre' => 'auteur(s) :',
361
-	'info_authentification_ftp' => 'Authentification (par FTP).',
362
-	'info_breves_2' => 'brèves',
363
-	'info_breves_nb' => '@nb@ brèves',
364
-	'info_breves_un' => '1 brève',
365
-	'info_connexion_refusee' => 'Connexion refusée',
366
-	'info_contact_developpeur' => 'Veuillez contacter un développeur.',
367
-	'info_contenance' => 'Ce site contient :',
368
-	'info_contribution' => 'contributions',
369
-	'info_copyright' => '@spip@ est un logiciel libre distribué @lien_gpl@.',
370
-	'info_copyright_doc' => 'Pour plus d’informations, voir le site <a href="@spipnet@">@spipnet_affiche@</a>.',
371
-	'info_copyright_gpl' => 'sous licence GPL',
372
-	'info_cours_edition' => 'En cours de modification',
373
-	'info_creer_repertoire' => 'Veuillez créer un fichier ou un répertoire nommé :',
374
-	'info_creer_repertoire_2' => 'à l’intérieur du sous-répertoire <b>@repertoire@</b>, puis :',
375
-	'info_creer_vignette' => 'création automatique de la vignette',
376
-	'info_creerdansrubrique_non_autorise' => 'Vous n’avez pas de droits suffisants pour créer un contenu dans cette rubrique',
377
-	'info_deplier' => 'Déplier',
378
-	'info_descriptif_nombre' => 'descriptif(s) :',
379
-	'info_description' => 'Description :',
380
-	'info_description_2' => 'Description :',
381
-	'info_dimension' => 'Dimensions :',
382
-	'info_documents_nb' => '@nb@ documents',
383
-	'info_documents_un' => '1 document',
384
-	'info_ecire_message_prive' => 'Écrire un message privé',
385
-	'info_email_invalide' => 'Adresse email invalide.',
386
-	'info_en_cours_validation' => 'Vos articles en cours de rédaction',
387
-	'info_en_ligne' => 'Actuellement en ligne :',
388
-	'info_envoyer_message_prive' => 'Envoyer un message privé à cet auteur',
389
-	'info_erreur_requete' => 'Erreur dans la requête :',
390
-	'info_erreur_squelette2' => 'Aucun squelette <b>@fichier@</b> n’est disponible...',
391
-	'info_erreur_systeme' => 'Erreur système (errno @errsys@)',
392
-	'info_erreur_systeme2' => 'Le disque dur est peut-être plein, ou la base de données endommagée.<br />
294
+    // I
295
+    'ical_texte_rss_articles' => 'Le fichier « backend » des articles de ce site se trouve à l’adresse :',
296
+    'ical_texte_rss_articles2' => 'Vous pouvez également obtenir des fichiers « backend » pour les articles de chaque rubrique du site :',
297
+    'ical_texte_rss_breves' => 'Il existe de plus un fichier contenant les brèves du site. En précisant un numéro de rubrique, vous obtiendrez uniquement les brèves de cette rubrique.',
298
+    'icone_a_suivre' => 'À suivre',
299
+    'icone_admin_site' => 'Administration du site',
300
+    'icone_agenda' => 'Agenda',
301
+    'icone_aide_ligne' => 'Aide',
302
+    'icone_articles' => 'Articles',
303
+    'icone_auteurs' => 'Auteurs',
304
+    'icone_brouteur' => 'Navigation rapide',
305
+    'icone_configuration_site' => 'Configuration',
306
+    'icone_configurer_site' => 'Configurer votre site',
307
+    'icone_creer_nouvel_auteur' => 'Créer un nouvel auteur',
308
+    'icone_creer_rubrique' => 'Créer une rubrique',
309
+    'icone_creer_sous_rubrique' => 'Créer une sous-rubrique',
310
+    'icone_deconnecter' => 'Se déconnecter',
311
+    'icone_discussions' => 'Discussions',
312
+    'icone_doc_rubrique' => 'Documents des rubriques',
313
+    'icone_ecrire_article' => 'Écrire un nouvel article',
314
+    'icone_edition_site' => 'Édition',
315
+    'icone_gestion_langues' => 'Gestion des langues',
316
+    'icone_informations_personnelles' => 'Informations personnelles',
317
+    'icone_interface_complet' => 'interface complète',
318
+    'icone_interface_simple' => 'Interface simplifiée',
319
+    'icone_maintenance_site' => 'Maintenance du site',
320
+    'icone_messagerie_personnelle' => 'Messagerie personnelle',
321
+    'icone_repartition_debut' => 'Afficher la répartition depuis le début',
322
+    'icone_rubriques' => 'Rubriques',
323
+    'icone_sauver_site' => 'Sauvegarde du site',
324
+    'icone_site_entier' => 'Tout le site',
325
+    'icone_sites_references' => 'Sites référencés',
326
+    'icone_statistiques' => 'Statistiques du site',
327
+    'icone_suivi_activite' => 'Suivre la vie du site',
328
+    'icone_suivi_actualite' => 'Évolution du site',
329
+    'icone_suivi_pettions' => 'Suivre/gérer les pétitions',
330
+    'icone_suivi_revisions' => 'Modifications des articles',
331
+    'icone_supprimer_document' => 'Supprimer ce document',
332
+    'icone_supprimer_image' => 'Supprimer cette image',
333
+    'icone_tous_articles' => 'Tous vos articles',
334
+    'icone_tous_auteur' => 'Tous les auteurs',
335
+    'icone_tous_visiteur' => 'Tous les visiteurs',
336
+    'icone_visiter_site' => 'Voir le site public',
337
+    'icone_voir_en_ligne' => 'Voir en ligne',
338
+    'img_indisponible' => 'image indisponible',
339
+    'impossible' => 'impossible',
340
+    'info_a_suivre' => 'À SUIVRE »',
341
+    'info_acces_interdit' => 'Accès interdit',
342
+    'info_acces_refuse' => 'Accès refusé',
343
+    'info_action' => 'Action : @action@',
344
+    'info_administrer_rubriques' => 'Vous pouvez administrer cette rubrique et ses sous-rubriques',
345
+    'info_adresse_non_indiquee' => 'Vous n’avez pas indiqué d’adresse à tester !',
346
+    'info_aide' => 'AIDE :',
347
+    'info_ajouter_mot' => 'Ajouter ce mot',
348
+    'info_annonce' => 'ANNONCE',
349
+    'info_annonces_generales' => 'Annonces générales :',
350
+    'info_article_propose' => 'Article proposé',
351
+    'info_article_publie' => 'Article publié',
352
+    'info_article_redaction' => 'Article en cours de rédaction',
353
+    'info_article_refuse' => 'Article refusé',
354
+    'info_article_supprime' => 'Article supprimé',
355
+    'info_articles' => 'Articles',
356
+    'info_articles_a_valider' => 'Les articles à valider',
357
+    'info_articles_nb' => '@nb@ articles',
358
+    'info_articles_proposes' => 'Articles proposés',
359
+    'info_articles_un' => '1 article',
360
+    'info_auteurs_nombre' => 'auteur(s) :',
361
+    'info_authentification_ftp' => 'Authentification (par FTP).',
362
+    'info_breves_2' => 'brèves',
363
+    'info_breves_nb' => '@nb@ brèves',
364
+    'info_breves_un' => '1 brève',
365
+    'info_connexion_refusee' => 'Connexion refusée',
366
+    'info_contact_developpeur' => 'Veuillez contacter un développeur.',
367
+    'info_contenance' => 'Ce site contient :',
368
+    'info_contribution' => 'contributions',
369
+    'info_copyright' => '@spip@ est un logiciel libre distribué @lien_gpl@.',
370
+    'info_copyright_doc' => 'Pour plus d’informations, voir le site <a href="@spipnet@">@spipnet_affiche@</a>.',
371
+    'info_copyright_gpl' => 'sous licence GPL',
372
+    'info_cours_edition' => 'En cours de modification',
373
+    'info_creer_repertoire' => 'Veuillez créer un fichier ou un répertoire nommé :',
374
+    'info_creer_repertoire_2' => 'à l’intérieur du sous-répertoire <b>@repertoire@</b>, puis :',
375
+    'info_creer_vignette' => 'création automatique de la vignette',
376
+    'info_creerdansrubrique_non_autorise' => 'Vous n’avez pas de droits suffisants pour créer un contenu dans cette rubrique',
377
+    'info_deplier' => 'Déplier',
378
+    'info_descriptif_nombre' => 'descriptif(s) :',
379
+    'info_description' => 'Description :',
380
+    'info_description_2' => 'Description :',
381
+    'info_dimension' => 'Dimensions :',
382
+    'info_documents_nb' => '@nb@ documents',
383
+    'info_documents_un' => '1 document',
384
+    'info_ecire_message_prive' => 'Écrire un message privé',
385
+    'info_email_invalide' => 'Adresse email invalide.',
386
+    'info_en_cours_validation' => 'Vos articles en cours de rédaction',
387
+    'info_en_ligne' => 'Actuellement en ligne :',
388
+    'info_envoyer_message_prive' => 'Envoyer un message privé à cet auteur',
389
+    'info_erreur_requete' => 'Erreur dans la requête :',
390
+    'info_erreur_squelette2' => 'Aucun squelette <b>@fichier@</b> n’est disponible...',
391
+    'info_erreur_systeme' => 'Erreur système (errno @errsys@)',
392
+    'info_erreur_systeme2' => 'Le disque dur est peut-être plein, ou la base de données endommagée.<br />
393 393
 <span style="color:red;">Essayez de <a href=\'@script@\'>réparer la base</a>, ou contactez votre hébergeur.</span>',
394
-	'info_fini' => 'C’est fini !',
395
-	'info_format_image' => 'Formats d’images pouvant être utilisées pour créer des vignettes : @gd_formats@.',
396
-	'info_format_non_defini' => 'format non défini',
397
-	'info_grand_ecran' => 'Grand écran',
398
-	'info_image_aide' => 'AIDE',
399
-	'info_image_process_titre' => 'Méthode de fabrication des vignettes',
400
-	'info_impossible_lire_page' => '<b>Erreur !</b> Impossible de lire la page <tt><html>@test_proxy@</html></tt> à travers le proxy ',
401
-	'info_installation_systeme_publication' => 'Installation du système de publication...',
402
-	'info_installer_documents' => 'Vous pouvez installer automatiquement tous les documents contenus dans le dossier @upload@.',
403
-	'info_installer_ftp' => 'En tant qu’administrateur, vous pouvez installer (par FTP) des fichiers dans le dossier @upload@ pour ensuite les sélectionner directement ici.',
404
-	'info_installer_images' => 'Vous pouvez installer des images aux formats JPEG, GIF et PNG.',
405
-	'info_installer_images_dossier' => 'Installer des images dans le dossier @upload@ pour pouvoir les sélectionner ici.',
406
-	'info_interface_complete' => 'interface complète',
407
-	'info_interface_simple' => 'Interface simplifiée',
408
-	'info_joindre_document_article' => 'Vous pouvez joindre à cet article des documents de type',
409
-	'info_joindre_document_rubrique' => 'Vous pouvez ajouter dans cette rubrique des documents de type',
410
-	'info_joindre_documents_article' => 'Vous pouvez joindre à votre article des documents de type :',
411
-	'info_l_article' => 'l’article',
412
-	'info_la_breve' => 'la brève',
413
-	'info_la_rubrique' => 'la rubrique',
414
-	'info_langue_principale' => 'Langue principale du site',
415
-	'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels',
416
-	'info_les_auteurs_1' => 'par @les_auteurs@',
417
-	'info_logo_format_interdit' => 'Seuls les logos aux formats @formats@ sont autorisés.',
418
-	'info_logo_max_poids' => 'Les logos doivent obligatoirement faire moins de @maxi@ (ce fichier fait @actuel@).',
419
-	'info_mail_fournisseur' => '[email protected]',
420
-	'info_message_2' => 'MESSAGE',
421
-	'info_message_supprime' => 'MESSAGE SUPPRIMÉ',
422
-	'info_messages_nb' => '@nb@ messages',
423
-	'info_messages_un' => '1 message',
424
-	'info_mise_en_ligne' => 'Date de mise en ligne :',
425
-	'info_modification_parametres_securite' => 'modifications des paramètres de sécurité',
426
-	'info_mois_courant' => 'Dans le courant du mois :',
427
-	'info_mot_cle_ajoute' => 'Le mot-clé suivant a été ajouté à',
428
-	'info_multi_herit' => 'Langue par défaut',
429
-	'info_multi_langues_soulignees' => 'Les <u>langues soulignées</u> bénéficient d’une traduction totale ou partielle des textes de l’interface. Si vous sélectionnez ces langues, de nombreux éléments du site public (dates, formulaires) seront automatiquement traduits. Pour les langues non soulignées, ces éléments apparaîtront dans la langue principale du site.',
430
-	'info_multilinguisme' => 'Multilinguisme',
431
-	'info_nom_non_utilisateurs_connectes' => 'Votre nom n’apparaît pas dans la liste des utilisateurs connectés.',
432
-	'info_nom_utilisateurs_connectes' => 'Votre nom apparaît dans la liste des utilisateurs connectés.',
433
-	'info_nombre_en_ligne' => 'Actuellement en ligne :',
434
-	'info_non_resultat' => 'Aucun résultat pour "@cherche_mot@"',
435
-	'info_non_utilisation_messagerie' => 'Vous n’utilisez pas la messagerie interne de ce site.',
436
-	'info_nouveau_message' => 'VOUS AVEZ UN NOUVEAU MESSAGE',
437
-	'info_nouveaux_messages' => 'VOUS AVEZ @total_messages@ NOUVEAUX MESSAGES',
438
-	'info_numero_abbreviation' => 'N° ',
439
-	'info_obligatoire' => 'Cette information est obligatoire',
440
-	'info_page_actuelle' => 'Page actuelle',
441
-	'info_pense_bete' => 'PENSE-BÊTE',
442
-	'info_petit_ecran' => 'Petit écran',
443
-	'info_petition_close' => 'Pétition close',
444
-	'info_pixels' => 'pixels',
445
-	'info_plusieurs_mots_trouves' => 'Plusieurs mots-clés trouvés pour "@cherche_mot@" :',
446
-	'info_portfolio_automatique' => 'Portfolio automatique :',
447
-	'info_premier_resultat' => '[@debut_limit@ premiers résultats sur @total@]',
448
-	'info_premier_resultat_sur' => '[@debut_limit@ premiers résultats sur @total@]',
449
-	'info_propose_1' => '[@nom_site_spip@] Propose : @titre@',
450
-	'info_propose_2' => 'Article proposé
394
+    'info_fini' => 'C’est fini !',
395
+    'info_format_image' => 'Formats d’images pouvant être utilisées pour créer des vignettes : @gd_formats@.',
396
+    'info_format_non_defini' => 'format non défini',
397
+    'info_grand_ecran' => 'Grand écran',
398
+    'info_image_aide' => 'AIDE',
399
+    'info_image_process_titre' => 'Méthode de fabrication des vignettes',
400
+    'info_impossible_lire_page' => '<b>Erreur !</b> Impossible de lire la page <tt><html>@test_proxy@</html></tt> à travers le proxy ',
401
+    'info_installation_systeme_publication' => 'Installation du système de publication...',
402
+    'info_installer_documents' => 'Vous pouvez installer automatiquement tous les documents contenus dans le dossier @upload@.',
403
+    'info_installer_ftp' => 'En tant qu’administrateur, vous pouvez installer (par FTP) des fichiers dans le dossier @upload@ pour ensuite les sélectionner directement ici.',
404
+    'info_installer_images' => 'Vous pouvez installer des images aux formats JPEG, GIF et PNG.',
405
+    'info_installer_images_dossier' => 'Installer des images dans le dossier @upload@ pour pouvoir les sélectionner ici.',
406
+    'info_interface_complete' => 'interface complète',
407
+    'info_interface_simple' => 'Interface simplifiée',
408
+    'info_joindre_document_article' => 'Vous pouvez joindre à cet article des documents de type',
409
+    'info_joindre_document_rubrique' => 'Vous pouvez ajouter dans cette rubrique des documents de type',
410
+    'info_joindre_documents_article' => 'Vous pouvez joindre à votre article des documents de type :',
411
+    'info_l_article' => 'l’article',
412
+    'info_la_breve' => 'la brève',
413
+    'info_la_rubrique' => 'la rubrique',
414
+    'info_langue_principale' => 'Langue principale du site',
415
+    'info_largeur_vignette' => '@largeur_vignette@ × @hauteur_vignette@ pixels',
416
+    'info_les_auteurs_1' => 'par @les_auteurs@',
417
+    'info_logo_format_interdit' => 'Seuls les logos aux formats @formats@ sont autorisés.',
418
+    'info_logo_max_poids' => 'Les logos doivent obligatoirement faire moins de @maxi@ (ce fichier fait @actuel@).',
419
+    'info_mail_fournisseur' => '[email protected]',
420
+    'info_message_2' => 'MESSAGE',
421
+    'info_message_supprime' => 'MESSAGE SUPPRIMÉ',
422
+    'info_messages_nb' => '@nb@ messages',
423
+    'info_messages_un' => '1 message',
424
+    'info_mise_en_ligne' => 'Date de mise en ligne :',
425
+    'info_modification_parametres_securite' => 'modifications des paramètres de sécurité',
426
+    'info_mois_courant' => 'Dans le courant du mois :',
427
+    'info_mot_cle_ajoute' => 'Le mot-clé suivant a été ajouté à',
428
+    'info_multi_herit' => 'Langue par défaut',
429
+    'info_multi_langues_soulignees' => 'Les <u>langues soulignées</u> bénéficient d’une traduction totale ou partielle des textes de l’interface. Si vous sélectionnez ces langues, de nombreux éléments du site public (dates, formulaires) seront automatiquement traduits. Pour les langues non soulignées, ces éléments apparaîtront dans la langue principale du site.',
430
+    'info_multilinguisme' => 'Multilinguisme',
431
+    'info_nom_non_utilisateurs_connectes' => 'Votre nom n’apparaît pas dans la liste des utilisateurs connectés.',
432
+    'info_nom_utilisateurs_connectes' => 'Votre nom apparaît dans la liste des utilisateurs connectés.',
433
+    'info_nombre_en_ligne' => 'Actuellement en ligne :',
434
+    'info_non_resultat' => 'Aucun résultat pour "@cherche_mot@"',
435
+    'info_non_utilisation_messagerie' => 'Vous n’utilisez pas la messagerie interne de ce site.',
436
+    'info_nouveau_message' => 'VOUS AVEZ UN NOUVEAU MESSAGE',
437
+    'info_nouveaux_messages' => 'VOUS AVEZ @total_messages@ NOUVEAUX MESSAGES',
438
+    'info_numero_abbreviation' => 'N° ',
439
+    'info_obligatoire' => 'Cette information est obligatoire',
440
+    'info_page_actuelle' => 'Page actuelle',
441
+    'info_pense_bete' => 'PENSE-BÊTE',
442
+    'info_petit_ecran' => 'Petit écran',
443
+    'info_petition_close' => 'Pétition close',
444
+    'info_pixels' => 'pixels',
445
+    'info_plusieurs_mots_trouves' => 'Plusieurs mots-clés trouvés pour "@cherche_mot@" :',
446
+    'info_portfolio_automatique' => 'Portfolio automatique :',
447
+    'info_premier_resultat' => '[@debut_limit@ premiers résultats sur @total@]',
448
+    'info_premier_resultat_sur' => '[@debut_limit@ premiers résultats sur @total@]',
449
+    'info_propose_1' => '[@nom_site_spip@] Propose : @titre@',
450
+    'info_propose_2' => 'Article proposé
451 451
 ---------------',
452
-	'info_propose_3' => 'L’article "@titre@" est proposé à la publication.',
453
-	'info_propose_4' => 'Vous êtes invité à venir le consulter et à donner votre opinion',
454
-	'info_propose_5' => 'dans le forum qui lui est attaché. Il est disponible à l’adresse :',
455
-	'info_publie_01' => 'L’article "@titre@" a été validé par @connect_nom@.',
456
-	'info_publie_1' => '[@nom_site_spip@] PUBLIE : @titre@',
457
-	'info_publie_2' => 'Article publié
452
+    'info_propose_3' => 'L’article "@titre@" est proposé à la publication.',
453
+    'info_propose_4' => 'Vous êtes invité à venir le consulter et à donner votre opinion',
454
+    'info_propose_5' => 'dans le forum qui lui est attaché. Il est disponible à l’adresse :',
455
+    'info_publie_01' => 'L’article "@titre@" a été validé par @connect_nom@.',
456
+    'info_publie_1' => '[@nom_site_spip@] PUBLIE : @titre@',
457
+    'info_publie_2' => 'Article publié
458 458
 --------------',
459
-	'info_rechercher' => 'Rechercher',
460
-	'info_rechercher_02' => 'Rechercher :',
461
-	'info_remplacer_vignette' => 'Remplacer la vignette par défaut par un logo personnalisé :',
462
-	'info_rubriques_nb' => '@nb@ rubriques',
463
-	'info_rubriques_un' => '1 rubrique',
464
-	'info_sans_titre_2' => 'sans titre',
465
-	'info_selectionner_fichier' => 'Vous pouvez sélectionner un fichier du dossier @upload@',
466
-	'info_selectionner_fichier_2' => 'Sélectionner un fichier :',
467
-	'info_sites_nb' => '@nb@ sites',
468
-	'info_sites_un' => '1 site',
469
-	'info_supprimer_vignette' => 'supprimer la vignette',
470
-	'info_symbole_bleu' => 'Le symbole <b>bleu</b> indique un <b>pense-bête</b> : c’est-à-dire un message à votre usage personnel.',
471
-	'info_symbole_jaune' => 'Le symbole <b>jaune</b> indique une <b>annonce à tous les rédacteurs</b> : modifiable par tous les administrateurs, et visible par tous les rédacteurs.',
472
-	'info_symbole_vert' => 'Le symbole <b>vert</b> indique les <b>messages échangés avec d’autres utilisateurs</b> du site.',
473
-	'info_telecharger_nouveau_logo' => 'Télécharger un nouveau logo :',
474
-	'info_telecharger_ordinateur' => 'Télécharger depuis votre ordinateur :',
475
-	'info_tous_resultats_enregistres' => '[tous les résultats sont enregistrés]',
476
-	'info_tout_afficher' => 'Tout afficher',
477
-	'info_travaux_texte' => 'Ce site n’est pas encore configuré. Revenez plus tard...',
478
-	'info_travaux_titre' => 'Site en travaux',
479
-	'info_trop_resultat' => 'Trop de résultats pour "@cherche_mot@" ; veuillez affiner la recherche.',
480
-	'info_utilisation_messagerie_interne' => 'Vous utilisez la messagerie interne de ce site.',
481
-	'info_valider_lien' => 'valider ce lien',
482
-	'info_verifier_image' => ', veuillez vérifier que vos images ont été transférées correctement.',
483
-	'info_vignette_defaut' => 'Vignette par défaut',
484
-	'info_vignette_personnalisee' => 'Vignette personnalisée',
485
-	'info_visite' => 'visite :',
486
-	'info_vos_rendez_vous' => 'Vos rendez-vous à venir',
487
-	'infos_vos_pense_bete' => 'Vos pense-bêtes',
459
+    'info_rechercher' => 'Rechercher',
460
+    'info_rechercher_02' => 'Rechercher :',
461
+    'info_remplacer_vignette' => 'Remplacer la vignette par défaut par un logo personnalisé :',
462
+    'info_rubriques_nb' => '@nb@ rubriques',
463
+    'info_rubriques_un' => '1 rubrique',
464
+    'info_sans_titre_2' => 'sans titre',
465
+    'info_selectionner_fichier' => 'Vous pouvez sélectionner un fichier du dossier @upload@',
466
+    'info_selectionner_fichier_2' => 'Sélectionner un fichier :',
467
+    'info_sites_nb' => '@nb@ sites',
468
+    'info_sites_un' => '1 site',
469
+    'info_supprimer_vignette' => 'supprimer la vignette',
470
+    'info_symbole_bleu' => 'Le symbole <b>bleu</b> indique un <b>pense-bête</b> : c’est-à-dire un message à votre usage personnel.',
471
+    'info_symbole_jaune' => 'Le symbole <b>jaune</b> indique une <b>annonce à tous les rédacteurs</b> : modifiable par tous les administrateurs, et visible par tous les rédacteurs.',
472
+    'info_symbole_vert' => 'Le symbole <b>vert</b> indique les <b>messages échangés avec d’autres utilisateurs</b> du site.',
473
+    'info_telecharger_nouveau_logo' => 'Télécharger un nouveau logo :',
474
+    'info_telecharger_ordinateur' => 'Télécharger depuis votre ordinateur :',
475
+    'info_tous_resultats_enregistres' => '[tous les résultats sont enregistrés]',
476
+    'info_tout_afficher' => 'Tout afficher',
477
+    'info_travaux_texte' => 'Ce site n’est pas encore configuré. Revenez plus tard...',
478
+    'info_travaux_titre' => 'Site en travaux',
479
+    'info_trop_resultat' => 'Trop de résultats pour "@cherche_mot@" ; veuillez affiner la recherche.',
480
+    'info_utilisation_messagerie_interne' => 'Vous utilisez la messagerie interne de ce site.',
481
+    'info_valider_lien' => 'valider ce lien',
482
+    'info_verifier_image' => ', veuillez vérifier que vos images ont été transférées correctement.',
483
+    'info_vignette_defaut' => 'Vignette par défaut',
484
+    'info_vignette_personnalisee' => 'Vignette personnalisée',
485
+    'info_visite' => 'visite :',
486
+    'info_vos_rendez_vous' => 'Vos rendez-vous à venir',
487
+    'infos_vos_pense_bete' => 'Vos pense-bêtes',
488 488
 
489
-	// L
490
-	'label_ajout_id_rapide' => 'Ajout rapide',
491
-	'label_poids_fichier' => 'Taille',
492
-	'lien_afficher_icones_seuls' => 'Afficher uniquement les icones',
493
-	'lien_afficher_texte_icones' => 'Afficher les icones et le texte',
494
-	'lien_afficher_texte_seul' => 'Afficher uniquement le texte',
495
-	'lien_aller_a_la_derniere_page' => 'Aller à la dernière page',
496
-	'lien_aller_a_la_page_nb' => 'Aller à la page @nb@',
497
-	'lien_aller_a_la_page_precedente' => 'Aller à la page précédente',
498
-	'lien_aller_a_la_page_suivante' => 'Aller à la page suivante',
499
-	'lien_aller_a_la_premiere_page' => 'Aller à la première page',
500
-	'lien_liberer' => 'libérer',
501
-	'lien_liberer_tous' => 'Tout libérer',
502
-	'lien_nouvea_pense_bete' => 'NOUVEAU PENSE-BÊTE',
503
-	'lien_nouveau_message' => 'NOUVEAU MESSAGE',
504
-	'lien_nouvelle_annonce' => 'NOUVELLE ANNONCE',
505
-	'lien_petitions' => 'PÉTITION',
506
-	'lien_popularite' => 'popularité : @popularite@%',
507
-	'lien_racine_site' => 'RACINE DU SITE',
508
-	'lien_reessayer' => 'réessayer',
509
-	'lien_repondre_message' => 'Répondre à ce message',
510
-	'lien_supprimer' => 'supprimer',
511
-	'lien_tout_afficher' => 'Tout afficher',
512
-	'lien_visite_site' => 'visiter ce site',
513
-	'lien_visites' => '@visites@ visites',
514
-	'lien_voir_auteur' => 'Voir cet auteur',
515
-	'ligne' => 'Ligne',
516
-	'login' => 'Connexion',
517
-	'login_acces_prive' => 'accès à l’espace privé',
518
-	'login_autre_identifiant' => 'se connecter sous un autre identifiant',
519
-	'login_cookie_accepte' => 'Veuillez régler votre navigateur pour qu’il les accepte (au moins pour ce site).',
520
-	'login_cookie_oblige' => 'Pour vous identifier de façon sûre sur ce site, vous devez accepter les cookies.',
521
-	'login_deconnexion_ok' => 'Déconnexion effectuée.',
522
-	'login_erreur_pass' => 'Erreur de mot de passe.',
523
-	'login_espace_prive' => 'espace privé',
524
-	'login_identifiant_inconnu' => 'L’identifiant « @login@ » est inconnu.',
525
-	'login_login' => 'Login :',
526
-	'login_login2' => 'Login ou adresse email :',
527
-	'login_login_pass_incorrect' => '(Login ou mot de passe incorrect.)',
528
-	'login_motpasseoublie' => 'mot de passe oublié ?',
529
-	'login_non_securise' => 'Attention, ce formulaire n’est pas sécurisé.
489
+    // L
490
+    'label_ajout_id_rapide' => 'Ajout rapide',
491
+    'label_poids_fichier' => 'Taille',
492
+    'lien_afficher_icones_seuls' => 'Afficher uniquement les icones',
493
+    'lien_afficher_texte_icones' => 'Afficher les icones et le texte',
494
+    'lien_afficher_texte_seul' => 'Afficher uniquement le texte',
495
+    'lien_aller_a_la_derniere_page' => 'Aller à la dernière page',
496
+    'lien_aller_a_la_page_nb' => 'Aller à la page @nb@',
497
+    'lien_aller_a_la_page_precedente' => 'Aller à la page précédente',
498
+    'lien_aller_a_la_page_suivante' => 'Aller à la page suivante',
499
+    'lien_aller_a_la_premiere_page' => 'Aller à la première page',
500
+    'lien_liberer' => 'libérer',
501
+    'lien_liberer_tous' => 'Tout libérer',
502
+    'lien_nouvea_pense_bete' => 'NOUVEAU PENSE-BÊTE',
503
+    'lien_nouveau_message' => 'NOUVEAU MESSAGE',
504
+    'lien_nouvelle_annonce' => 'NOUVELLE ANNONCE',
505
+    'lien_petitions' => 'PÉTITION',
506
+    'lien_popularite' => 'popularité : @popularite@%',
507
+    'lien_racine_site' => 'RACINE DU SITE',
508
+    'lien_reessayer' => 'réessayer',
509
+    'lien_repondre_message' => 'Répondre à ce message',
510
+    'lien_supprimer' => 'supprimer',
511
+    'lien_tout_afficher' => 'Tout afficher',
512
+    'lien_visite_site' => 'visiter ce site',
513
+    'lien_visites' => '@visites@ visites',
514
+    'lien_voir_auteur' => 'Voir cet auteur',
515
+    'ligne' => 'Ligne',
516
+    'login' => 'Connexion',
517
+    'login_acces_prive' => 'accès à l’espace privé',
518
+    'login_autre_identifiant' => 'se connecter sous un autre identifiant',
519
+    'login_cookie_accepte' => 'Veuillez régler votre navigateur pour qu’il les accepte (au moins pour ce site).',
520
+    'login_cookie_oblige' => 'Pour vous identifier de façon sûre sur ce site, vous devez accepter les cookies.',
521
+    'login_deconnexion_ok' => 'Déconnexion effectuée.',
522
+    'login_erreur_pass' => 'Erreur de mot de passe.',
523
+    'login_espace_prive' => 'espace privé',
524
+    'login_identifiant_inconnu' => 'L’identifiant « @login@ » est inconnu.',
525
+    'login_login' => 'Login :',
526
+    'login_login2' => 'Login ou adresse email :',
527
+    'login_login_pass_incorrect' => '(Login ou mot de passe incorrect.)',
528
+    'login_motpasseoublie' => 'mot de passe oublié ?',
529
+    'login_non_securise' => 'Attention, ce formulaire n’est pas sécurisé.
530 530
 			Si vous ne voulez pas que votre mot de passe puisse être
531 531
 			intercepté sur le réseau, veuillez activer Javascript
532 532
 			dans votre navigateur et',
533
-	'login_nouvelle_tentative' => 'Nouvelle tentative',
534
-	'login_par_ici' => 'Vous êtes enregistré... par ici...',
535
-	'login_pass2' => 'Mot de passe :',
536
-	'login_preferez_refuser' => '<b>Si vous préférez refuser les cookies</b>, une autre méthode de connexion (moins sécurisée) est à votre disposition :',
537
-	'login_recharger' => 'recharger cette page',
538
-	'login_rester_identifie' => 'Se souvenir de moi',
539
-	'login_retour_public' => 'Retour au site public',
540
-	'login_retour_site' => 'Retour au site public',
541
-	'login_retoursitepublic' => 'retour au site public',
542
-	'login_sans_cookie' => 'Identification sans cookie',
543
-	'login_securise' => 'Login sécurisé',
544
-	'login_sinscrire' => 's’inscrire',
545
-	'login_test_navigateur' => 'test navigateur/reconnexion',
546
-	'login_verifiez_navigateur' => '(Vérifiez toutefois que votre navigateur n’a pas mémorisé votre mot de passe...)',
533
+    'login_nouvelle_tentative' => 'Nouvelle tentative',
534
+    'login_par_ici' => 'Vous êtes enregistré... par ici...',
535
+    'login_pass2' => 'Mot de passe :',
536
+    'login_preferez_refuser' => '<b>Si vous préférez refuser les cookies</b>, une autre méthode de connexion (moins sécurisée) est à votre disposition :',
537
+    'login_recharger' => 'recharger cette page',
538
+    'login_rester_identifie' => 'Se souvenir de moi',
539
+    'login_retour_public' => 'Retour au site public',
540
+    'login_retour_site' => 'Retour au site public',
541
+    'login_retoursitepublic' => 'retour au site public',
542
+    'login_sans_cookie' => 'Identification sans cookie',
543
+    'login_securise' => 'Login sécurisé',
544
+    'login_sinscrire' => 's’inscrire',
545
+    'login_test_navigateur' => 'test navigateur/reconnexion',
546
+    'login_verifiez_navigateur' => '(Vérifiez toutefois que votre navigateur n’a pas mémorisé votre mot de passe...)',
547 547
 
548
-	// M
549
-	'masquer_colonne' => 'Masquer cette colonne',
550
-	'masquer_trad' => 'masquer les traductions',
551
-	'message_nouveaux_identifiants_echec' => 'Impossible de générer de nouveaux identifiants.',
552
-	'message_nouveaux_identifiants_echec_envoi' => 'Les nouveaux identifiants de connexion n’ont pas pu être envoyés.',
553
-	'message_nouveaux_identifiants_ok' => 'Les nouveaux identifiants de connexion ont été envoyés à @email@.',
554
-	'module_fichiers_langues' => 'Fichiers de langue',
548
+    // M
549
+    'masquer_colonne' => 'Masquer cette colonne',
550
+    'masquer_trad' => 'masquer les traductions',
551
+    'message_nouveaux_identifiants_echec' => 'Impossible de générer de nouveaux identifiants.',
552
+    'message_nouveaux_identifiants_echec_envoi' => 'Les nouveaux identifiants de connexion n’ont pas pu être envoyés.',
553
+    'message_nouveaux_identifiants_ok' => 'Les nouveaux identifiants de connexion ont été envoyés à @email@.',
554
+    'module_fichiers_langues' => 'Fichiers de langue',
555 555
 
556
-	// N
557
-	'navigateur_pas_redirige' => 'Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.',
558
-	'numero' => 'Numéro',
556
+    // N
557
+    'navigateur_pas_redirige' => 'Si votre navigateur n’est pas redirigé, cliquez ici pour continuer.',
558
+    'numero' => 'Numéro',
559 559
 
560
-	// O
561
-	'occurence' => 'Occurrence',
562
-	'onglet_affacer_base' => 'Effacer la base',
563
-	'onglet_auteur' => 'L’auteur',
564
-	'onglet_contenu_site' => 'Contenu du site',
565
-	'onglet_evolution_visite_mod' => 'Évolution',
566
-	'onglet_fonctions_avances' => 'Fonctions avancées',
567
-	'onglet_informations_personnelles' => 'Informations personnelles',
568
-	'onglet_interactivite' => 'Interactivité',
569
-	'onglet_messagerie' => 'Messagerie',
570
-	'onglet_repartition_rubrique' => 'Répartition par rubriques',
571
-	'onglet_save_restaur_base' => 'Sauvegarder/restaurer la base',
572
-	'onglet_vider_cache' => 'Vider le cache',
560
+    // O
561
+    'occurence' => 'Occurrence',
562
+    'onglet_affacer_base' => 'Effacer la base',
563
+    'onglet_auteur' => 'L’auteur',
564
+    'onglet_contenu_site' => 'Contenu du site',
565
+    'onglet_evolution_visite_mod' => 'Évolution',
566
+    'onglet_fonctions_avances' => 'Fonctions avancées',
567
+    'onglet_informations_personnelles' => 'Informations personnelles',
568
+    'onglet_interactivite' => 'Interactivité',
569
+    'onglet_messagerie' => 'Messagerie',
570
+    'onglet_repartition_rubrique' => 'Répartition par rubriques',
571
+    'onglet_save_restaur_base' => 'Sauvegarder/restaurer la base',
572
+    'onglet_vider_cache' => 'Vider le cache',
573 573
 
574
-	// P
575
-	'pass_choix_pass' => 'Veuillez choisir votre nouveau mot de passe :',
576
-	'pass_erreur' => 'Erreur',
577
-	'pass_erreur_acces_refuse' => '<b>Erreur :</b> vous n’avez plus accès à ce site.',
578
-	'pass_erreur_code_inconnu' => '<b>Erreur :</b> ce code ne correspond à aucun des visiteurs ayant accès à ce site.',
579
-	'pass_erreur_non_enregistre' => '<b>Erreur :</b> l’adresse <tt>@email_oubli@</tt> n’est pas enregistrée sur ce site.',
580
-	'pass_erreur_non_valide' => '<b>Erreur :</b> cet email <tt>@email_oubli@</tt> n’est pas valide !',
581
-	'pass_erreur_probleme_technique' => '<b>Erreur :</b> à cause d’un problème technique, l’email ne peut pas être envoyé.',
582
-	'pass_espace_prive_bla' => 'L’espace privé de ce site est ouvert aux
574
+    // P
575
+    'pass_choix_pass' => 'Veuillez choisir votre nouveau mot de passe :',
576
+    'pass_erreur' => 'Erreur',
577
+    'pass_erreur_acces_refuse' => '<b>Erreur :</b> vous n’avez plus accès à ce site.',
578
+    'pass_erreur_code_inconnu' => '<b>Erreur :</b> ce code ne correspond à aucun des visiteurs ayant accès à ce site.',
579
+    'pass_erreur_non_enregistre' => '<b>Erreur :</b> l’adresse <tt>@email_oubli@</tt> n’est pas enregistrée sur ce site.',
580
+    'pass_erreur_non_valide' => '<b>Erreur :</b> cet email <tt>@email_oubli@</tt> n’est pas valide !',
581
+    'pass_erreur_probleme_technique' => '<b>Erreur :</b> à cause d’un problème technique, l’email ne peut pas être envoyé.',
582
+    'pass_espace_prive_bla' => 'L’espace privé de ce site est ouvert aux
583 583
 		visiteurs, après inscription. Une fois enregistré,
584 584
 		vous pourrez consulter les articles en cours de rédaction,
585 585
 		proposer des articles et participer à tous les forums.',
586
-	'pass_forum_bla' => 'Vous avez demandé à intervenir sur un forum
586
+    'pass_forum_bla' => 'Vous avez demandé à intervenir sur un forum
587 587
 		réservé aux visiteurs enregistrés.',
588
-	'pass_indiquez_cidessous' => 'Indiquez ci-dessous l’adresse email sous laquelle vous
588
+    'pass_indiquez_cidessous' => 'Indiquez ci-dessous l’adresse email sous laquelle vous
589 589
 			vous êtes précédemment enregistré. Vous
590 590
 			recevrez un email vous indiquant la marche à suivre pour
591 591
 			récupérer votre accès.',
592
-	'pass_mail_passcookie' => '(ceci est un message automatique)
592
+    'pass_mail_passcookie' => '(ceci est un message automatique)
593 593
 Pour retrouver votre accès au site
594 594
 @nom_site_spip@ (@adresse_site@)
595 595
 
@@ -601,146 +601,146 @@  discard block
 block discarded – undo
601 601
 et vous reconnecter au site.
602 602
 
603 603
 ',
604
-	'pass_mot_oublie' => 'Mot de passe oublié',
605
-	'pass_nouveau_enregistre' => 'Votre nouveau mot de passe a été enregistré.',
606
-	'pass_nouveau_pass' => 'Nouveau mot de passe',
607
-	'pass_ok' => 'OK',
608
-	'pass_oubli_mot' => 'Oubli du mot de passe',
609
-	'pass_procedure_changer' => 'Pour modifier votre mot de passe, merci d’indiquer l’adresse email associée à votre compte.',
610
-	'pass_quitter_fenetre' => 'Quitter cette fenêtre',
611
-	'pass_rappel_login' => 'Rappel : votre identifiant (login) est « @login@ ».',
612
-	'pass_recevoir_mail' => 'Un lien de réinitialisation de votre mot de passe vous a été envoyé sur votre adresse email (si celle-ci est valide).',
613
-	'pass_retour_public' => 'Retour sur le site public',
614
-	'pass_rien_a_faire_ici' => 'Rien à faire ici.',
615
-	'pass_vousinscrire' => 'Vous inscrire sur ce site',
616
-	'precedent' => 'précédent',
617
-	'previsualisation' => 'Prévisualisation',
618
-	'previsualiser' => 'Prévisualiser',
604
+    'pass_mot_oublie' => 'Mot de passe oublié',
605
+    'pass_nouveau_enregistre' => 'Votre nouveau mot de passe a été enregistré.',
606
+    'pass_nouveau_pass' => 'Nouveau mot de passe',
607
+    'pass_ok' => 'OK',
608
+    'pass_oubli_mot' => 'Oubli du mot de passe',
609
+    'pass_procedure_changer' => 'Pour modifier votre mot de passe, merci d’indiquer l’adresse email associée à votre compte.',
610
+    'pass_quitter_fenetre' => 'Quitter cette fenêtre',
611
+    'pass_rappel_login' => 'Rappel : votre identifiant (login) est « @login@ ».',
612
+    'pass_recevoir_mail' => 'Un lien de réinitialisation de votre mot de passe vous a été envoyé sur votre adresse email (si celle-ci est valide).',
613
+    'pass_retour_public' => 'Retour sur le site public',
614
+    'pass_rien_a_faire_ici' => 'Rien à faire ici.',
615
+    'pass_vousinscrire' => 'Vous inscrire sur ce site',
616
+    'precedent' => 'précédent',
617
+    'previsualisation' => 'Prévisualisation',
618
+    'previsualiser' => 'Prévisualiser',
619 619
 
620
-	// R
621
-	'retour' => 'Retour',
620
+    // R
621
+    'retour' => 'Retour',
622 622
 
623
-	// S
624
-	'spip_conforme_dtd' => 'SPIP considère ce document comme conforme à son DOCTYPE :',
625
-	'squelette' => 'squelette',
626
-	'squelette_inclus_ligne' => 'squelette inclus, ligne',
627
-	'squelette_ligne' => 'squelette, ligne',
628
-	'stats_visites_et_popularite' => '@visites@ visites ; popularité : @popularite@',
629
-	'suivant' => 'suivant',
623
+    // S
624
+    'spip_conforme_dtd' => 'SPIP considère ce document comme conforme à son DOCTYPE :',
625
+    'squelette' => 'squelette',
626
+    'squelette_inclus_ligne' => 'squelette inclus, ligne',
627
+    'squelette_ligne' => 'squelette, ligne',
628
+    'stats_visites_et_popularite' => '@visites@ visites ; popularité : @popularite@',
629
+    'suivant' => 'suivant',
630 630
 
631
-	// T
632
-	'taille_go' => '@taille@ Go',
633
-	'taille_ko' => '@taille@ ko',
634
-	'taille_mo' => '@taille@ Mo',
635
-	'taille_octets' => '@taille@ octets',
636
-	'texte_actualite_site_1' => 'Quand vous serez familiarisé(e) avec l’interface, vous pourrez cliquer sur « ',
637
-	'texte_actualite_site_2' => 'interface complète',
638
-	'texte_actualite_site_3' => ' » pour ouvrir plus de possibilités.',
639
-	'texte_creation_automatique_vignette' => 'La création automatique de vignettes de prévisualisation est activée sur ce site. Si vous installez à partir de ce formulaire des images au(x) format(s) @gd_formats@, elles seront accompagnées d’une vignette d’une taille maximale de @taille_preview@ pixels.',
640
-	'texte_documents_associes' => 'Les documents suivants sont associés à l’article,
631
+    // T
632
+    'taille_go' => '@taille@ Go',
633
+    'taille_ko' => '@taille@ ko',
634
+    'taille_mo' => '@taille@ Mo',
635
+    'taille_octets' => '@taille@ octets',
636
+    'texte_actualite_site_1' => 'Quand vous serez familiarisé(e) avec l’interface, vous pourrez cliquer sur « ',
637
+    'texte_actualite_site_2' => 'interface complète',
638
+    'texte_actualite_site_3' => ' » pour ouvrir plus de possibilités.',
639
+    'texte_creation_automatique_vignette' => 'La création automatique de vignettes de prévisualisation est activée sur ce site. Si vous installez à partir de ce formulaire des images au(x) format(s) @gd_formats@, elles seront accompagnées d’une vignette d’une taille maximale de @taille_preview@ pixels.',
640
+    'texte_documents_associes' => 'Les documents suivants sont associés à l’article,
641 641
 				mais ils n’y ont pas été directement
642 642
 				insérés. Selon la mise en page du site public,
643 643
 				ils pourront apparaître sous forme de documents joints.',
644
-	'texte_erreur_mise_niveau_base' => 'Erreur de base de données lors de la mise à niveau.
644
+    'texte_erreur_mise_niveau_base' => 'Erreur de base de données lors de la mise à niveau.
645 645
 		L’image <b>@fichier@</b> n’est pas passée (article @id_article@).
646 646
 		Notez bien cette référence, réessayez la mise à
647 647
 		niveau, et enfin vérifiez que les images apparaissent
648 648
 		toujours dans les articles.',
649
-	'texte_erreur_visiteur' => 'Vous avez tenté d’accéder à l’espace privé avec un login qui ne le permet pas.',
650
-	'texte_inc_auth_1' => 'Vous êtes identifié sous le
649
+    'texte_erreur_visiteur' => 'Vous avez tenté d’accéder à l’espace privé avec un login qui ne le permet pas.',
650
+    'texte_inc_auth_1' => 'Vous êtes identifié sous le
651 651
 		login <b>@auth_login@</b>, mais celui-ci n’existe pas/plus dans la base.
652 652
 		Essayez de vous',
653
-	'texte_inc_auth_2' => 'reconnecter',
654
-	'texte_inc_auth_3' => ', après avoir éventuellement quitté puis
653
+    'texte_inc_auth_2' => 'reconnecter',
654
+    'texte_inc_auth_3' => ', après avoir éventuellement quitté puis
655 655
 		redémarré votre navigateur.',
656
-	'texte_inc_config' => 'Les modifications effectuées dans ces pages influent notablement sur le
656
+    'texte_inc_config' => 'Les modifications effectuées dans ces pages influent notablement sur le
657 657
  fonctionnement de votre site. Nous vous recommandons de ne pas y intervenir tant que vous n’êtes pas
658 658
  familier du fonctionnement du système SPIP. <br /><br /><b>Plus
659 659
  généralement, il est fortement conseillé
660 660
  de laisser la charge de ces pages au webmestre principal de votre site.</b>',
661
-	'texte_inc_meta_1' => 'Le système a rencontré une erreur lors de l’écriture du fichier <code>@fichier@</code>. Veuillez, en tant qu’administrateur du site,',
662
-	'texte_inc_meta_2' => 'vérifier les droits d’écriture',
663
-	'texte_inc_meta_3' => 'sur le répertoire <code>@repertoire@</code>.',
664
-	'texte_statut_en_cours_redaction' => 'en cours de rédaction',
665
-	'texte_statut_poubelle' => 'à la poubelle',
666
-	'texte_statut_propose_evaluation' => 'proposé à l’évaluation',
667
-	'texte_statut_publie' => 'publié en ligne',
668
-	'texte_statut_refuse' => 'refusé',
669
-	'titre_ajouter_mot_cle' => 'AJOUTER UN MOT-CLÉ :',
670
-	'titre_cadre_raccourcis' => 'RACCOURCIS :',
671
-	'titre_changer_couleur_interface' => 'Changer la couleur de l’interface',
672
-	'titre_image_admin_article' => 'Vous pouvez administrer cet article',
673
-	'titre_image_administrateur' => 'Administrateur',
674
-	'titre_image_aide' => 'De l’aide sur cet élément',
675
-	'titre_image_auteur_supprime' => 'Auteur supprimé',
676
-	'titre_image_redacteur' => 'Rédacteur sans accès',
677
-	'titre_image_redacteur_02' => 'Rédacteur',
678
-	'titre_image_selecteur' => 'Afficher la liste',
679
-	'titre_image_visiteur' => 'Visiteur',
680
-	'titre_joindre_document' => 'JOINDRE UN DOCUMENT',
681
-	'titre_mots_cles' => 'MOTS-CLÉS',
682
-	'titre_probleme_technique' => 'Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de votre compréhension.',
683
-	'titre_publier_document' => 'PUBLIER UN DOCUMENT DANS CETTE RUBRIQUE',
684
-	'titre_signatures_attente' => 'Signatures en attente de validation',
685
-	'titre_signatures_confirmees' => 'Signatures confirmées',
686
-	'titre_statistiques' => 'Statistiques du site',
687
-	'titre_titre_document' => 'Titre du document :',
688
-	'todo' => 'à venir',
689
-	'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions',
690
-	'trad_reference' => '(référence des traductions)',
661
+    'texte_inc_meta_1' => 'Le système a rencontré une erreur lors de l’écriture du fichier <code>@fichier@</code>. Veuillez, en tant qu’administrateur du site,',
662
+    'texte_inc_meta_2' => 'vérifier les droits d’écriture',
663
+    'texte_inc_meta_3' => 'sur le répertoire <code>@repertoire@</code>.',
664
+    'texte_statut_en_cours_redaction' => 'en cours de rédaction',
665
+    'texte_statut_poubelle' => 'à la poubelle',
666
+    'texte_statut_propose_evaluation' => 'proposé à l’évaluation',
667
+    'texte_statut_publie' => 'publié en ligne',
668
+    'texte_statut_refuse' => 'refusé',
669
+    'titre_ajouter_mot_cle' => 'AJOUTER UN MOT-CLÉ :',
670
+    'titre_cadre_raccourcis' => 'RACCOURCIS :',
671
+    'titre_changer_couleur_interface' => 'Changer la couleur de l’interface',
672
+    'titre_image_admin_article' => 'Vous pouvez administrer cet article',
673
+    'titre_image_administrateur' => 'Administrateur',
674
+    'titre_image_aide' => 'De l’aide sur cet élément',
675
+    'titre_image_auteur_supprime' => 'Auteur supprimé',
676
+    'titre_image_redacteur' => 'Rédacteur sans accès',
677
+    'titre_image_redacteur_02' => 'Rédacteur',
678
+    'titre_image_selecteur' => 'Afficher la liste',
679
+    'titre_image_visiteur' => 'Visiteur',
680
+    'titre_joindre_document' => 'JOINDRE UN DOCUMENT',
681
+    'titre_mots_cles' => 'MOTS-CLÉS',
682
+    'titre_probleme_technique' => 'Attention : un problème technique (serveur SQL) empêche l’accès à cette partie du site. Merci de votre compréhension.',
683
+    'titre_publier_document' => 'PUBLIER UN DOCUMENT DANS CETTE RUBRIQUE',
684
+    'titre_signatures_attente' => 'Signatures en attente de validation',
685
+    'titre_signatures_confirmees' => 'Signatures confirmées',
686
+    'titre_statistiques' => 'Statistiques du site',
687
+    'titre_titre_document' => 'Titre du document :',
688
+    'todo' => 'à venir',
689
+    'trad_definir_reference' => 'Choisir "@titre@" comme référence des traductions',
690
+    'trad_reference' => '(référence des traductions)',
691 691
 
692
-	// U
693
-	'upload_limit' => 'Ce fichier est trop gros pour le serveur ; la taille maximum autorisée en <i>upload</i> est de @max@.',
692
+    // U
693
+    'upload_limit' => 'Ce fichier est trop gros pour le serveur ; la taille maximum autorisée en <i>upload</i> est de @max@.',
694 694
 
695
-	// Z
696
-	'zbug_balise_b_aval' => ' : balise B en aval',
697
-	'zbug_balise_inexistante' => 'Balise @balise@ mal déclarée pour @from@',
698
-	'zbug_balise_sans_argument' => 'Argument manquant dans la balise @balise@',
699
-	'zbug_boucle' => 'boucle',
700
-	'zbug_boucle_recursive_undef' => 'Boucle récursive non définie : @nom@',
701
-	'zbug_calcul' => 'calcul',
702
-	'zbug_champ_hors_boucle' => 'Champ @champ@ hors boucle',
703
-	'zbug_champ_hors_critere' => 'Champ @champ@ hors critère @critere@',
704
-	'zbug_champ_hors_motif' => 'Champ @champ@ hors d’un contexte @motif@',
705
-	'zbug_code' => 'code',
706
-	'zbug_critere_inconnu' => 'Critère inconnu @critere@',
707
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} sur une table sans clef primaire atomique',
708
-	'zbug_distant_interdit' => 'Externe interdit', # Contexte : une base de données "externe", pas gérée par SPIP, mais que SPIP 1.8 sait utiliser dans ses boucles -- seul problèmes certaines manipulations sont interdites sur ces bases-là.
709
-	'zbug_doublon_table_sans_cle_primaire' => 'Doublons sur une table sans clef primaire atomique',
710
-	'zbug_doublon_table_sans_index' => 'Doublons sur une table sans index',
711
-	'zbug_erreur_boucle_double' => 'Double définition de la boucle @id@',
712
-	'zbug_erreur_boucle_fermant' => 'Boucle @id@ non fermée',
713
-	'zbug_erreur_boucle_syntaxe' => 'Syntaxe de la boucle @id@ incorrecte',
714
-	'zbug_erreur_compilation' => 'Erreur de compilation',
715
-	'zbug_erreur_execution_page' => 'Erreur d’exécution',
716
-	'zbug_erreur_filtre' => 'Filtre @filtre@ non défini',
717
-	'zbug_erreur_filtre_nbarg_min' => 'Filtre @filtre@ : il manque @nb@ argument(s)',
718
-	'zbug_erreur_meme_parent' => 'Le critère {meme_parent} ne s’applique qu’aux boucles (FORUMS) ou (RUBRIQUES)',
719
-	'zbug_erreur_squelette' => 'Erreur(s) dans le squelette',
720
-	'zbug_hors_compilation' => 'Hors Compilation',
721
-	'zbug_info_erreur_squelette' => 'Erreur sur le site',
722
-	'zbug_inversion_ordre_inexistant' => 'Inversion d’un ordre inexistant',
723
-	'zbug_pagination_sans_critere' => 'Balise #PAGINATION sans critère {pagination} ou employé dans une boucle récursive',
724
-	'zbug_parametres_inclus_incorrects' => 'Paramètre d’inclusion incorrect : @param@',
725
-	'zbug_profile' => 'Temps de calcul : @time@',
726
-	'zbug_resultat' => 'résultat',
727
-	'zbug_serveur_indefini' => 'Serveur SQL indéfini',
728
-	'zbug_statistiques' => 'Statistiques des requêtes SQL classées par durée',
729
-	'zbug_table_inconnue' => 'Table SQL « @table@ » inconnue',
730
-	'zxml_connus_attributs' => 'attributs connus',
731
-	'zxml_de' => 'de',
732
-	'zxml_inconnu_attribut' => 'attribut inconnu',
733
-	'zxml_inconnu_balise' => 'balise inconnue',
734
-	'zxml_inconnu_entite' => 'entité inconnue',
735
-	'zxml_inconnu_id' => 'ID inconnu',
736
-	'zxml_mais_de' => 'mais de',
737
-	'zxml_non_conforme' => 'n’est pas conforme au motif',
738
-	'zxml_non_fils' => 'n’est pas un fils de',
739
-	'zxml_nonvide_balise' => 'balise non vide',
740
-	'zxml_obligatoire_attribut' => 'attribut obligatoire mais absent dans',
741
-	'zxml_succession_fils_incorrecte' => 'succession des fils incorrecte',
742
-	'zxml_survoler' => 'survoler pour voir les corrects',
743
-	'zxml_valeur_attribut' => 'valeur de l’attribut',
744
-	'zxml_vide_balise' => 'balise vide',
745
-	'zxml_vu' => 'vu auparavant'
695
+    // Z
696
+    'zbug_balise_b_aval' => ' : balise B en aval',
697
+    'zbug_balise_inexistante' => 'Balise @balise@ mal déclarée pour @from@',
698
+    'zbug_balise_sans_argument' => 'Argument manquant dans la balise @balise@',
699
+    'zbug_boucle' => 'boucle',
700
+    'zbug_boucle_recursive_undef' => 'Boucle récursive non définie : @nom@',
701
+    'zbug_calcul' => 'calcul',
702
+    'zbug_champ_hors_boucle' => 'Champ @champ@ hors boucle',
703
+    'zbug_champ_hors_critere' => 'Champ @champ@ hors critère @critere@',
704
+    'zbug_champ_hors_motif' => 'Champ @champ@ hors d’un contexte @motif@',
705
+    'zbug_code' => 'code',
706
+    'zbug_critere_inconnu' => 'Critère inconnu @critere@',
707
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} sur une table sans clef primaire atomique',
708
+    'zbug_distant_interdit' => 'Externe interdit', # Contexte : une base de données "externe", pas gérée par SPIP, mais que SPIP 1.8 sait utiliser dans ses boucles -- seul problèmes certaines manipulations sont interdites sur ces bases-là.
709
+    'zbug_doublon_table_sans_cle_primaire' => 'Doublons sur une table sans clef primaire atomique',
710
+    'zbug_doublon_table_sans_index' => 'Doublons sur une table sans index',
711
+    'zbug_erreur_boucle_double' => 'Double définition de la boucle @id@',
712
+    'zbug_erreur_boucle_fermant' => 'Boucle @id@ non fermée',
713
+    'zbug_erreur_boucle_syntaxe' => 'Syntaxe de la boucle @id@ incorrecte',
714
+    'zbug_erreur_compilation' => 'Erreur de compilation',
715
+    'zbug_erreur_execution_page' => 'Erreur d’exécution',
716
+    'zbug_erreur_filtre' => 'Filtre @filtre@ non défini',
717
+    'zbug_erreur_filtre_nbarg_min' => 'Filtre @filtre@ : il manque @nb@ argument(s)',
718
+    'zbug_erreur_meme_parent' => 'Le critère {meme_parent} ne s’applique qu’aux boucles (FORUMS) ou (RUBRIQUES)',
719
+    'zbug_erreur_squelette' => 'Erreur(s) dans le squelette',
720
+    'zbug_hors_compilation' => 'Hors Compilation',
721
+    'zbug_info_erreur_squelette' => 'Erreur sur le site',
722
+    'zbug_inversion_ordre_inexistant' => 'Inversion d’un ordre inexistant',
723
+    'zbug_pagination_sans_critere' => 'Balise #PAGINATION sans critère {pagination} ou employé dans une boucle récursive',
724
+    'zbug_parametres_inclus_incorrects' => 'Paramètre d’inclusion incorrect : @param@',
725
+    'zbug_profile' => 'Temps de calcul : @time@',
726
+    'zbug_resultat' => 'résultat',
727
+    'zbug_serveur_indefini' => 'Serveur SQL indéfini',
728
+    'zbug_statistiques' => 'Statistiques des requêtes SQL classées par durée',
729
+    'zbug_table_inconnue' => 'Table SQL « @table@ » inconnue',
730
+    'zxml_connus_attributs' => 'attributs connus',
731
+    'zxml_de' => 'de',
732
+    'zxml_inconnu_attribut' => 'attribut inconnu',
733
+    'zxml_inconnu_balise' => 'balise inconnue',
734
+    'zxml_inconnu_entite' => 'entité inconnue',
735
+    'zxml_inconnu_id' => 'ID inconnu',
736
+    'zxml_mais_de' => 'mais de',
737
+    'zxml_non_conforme' => 'n’est pas conforme au motif',
738
+    'zxml_non_fils' => 'n’est pas un fils de',
739
+    'zxml_nonvide_balise' => 'balise non vide',
740
+    'zxml_obligatoire_attribut' => 'attribut obligatoire mais absent dans',
741
+    'zxml_succession_fils_incorrecte' => 'succession des fils incorrecte',
742
+    'zxml_survoler' => 'survoler pour voir les corrects',
743
+    'zxml_valeur_attribut' => 'valeur de l’attribut',
744
+    'zxml_vide_balise' => 'balise vide',
745
+    'zxml_vu' => 'vu auparavant'
746 746
 );
Please login to merge, or discard this patch.
ecrire/public/references.php 1 patch
Indentation   +502 added lines, -502 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Compilateur\References
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -41,14 +41,14 @@  discard block
 block discarded – undo
41 41
  *     - '' si une référence explicite incorrecte est envoyée
42 42
  */
43 43
 function index_boucle($p) {
44
-	if (strlen($p->nom_boucle)) {
45
-		// retourne l’index explicite demandé s’il existe
46
-		if (!empty($p->boucles[$p->nom_boucle])) {
47
-			return $p->nom_boucle;
48
-		}
49
-		return '';
50
-	} 
51
-	return $p->id_boucle;
44
+    if (strlen($p->nom_boucle)) {
45
+        // retourne l’index explicite demandé s’il existe
46
+        if (!empty($p->boucles[$p->nom_boucle])) {
47
+            return $p->nom_boucle;
48
+        }
49
+        return '';
50
+    } 
51
+    return $p->id_boucle;
52 52
 }
53 53
 
54 54
 
@@ -71,17 +71,17 @@  discard block
 block discarded – undo
71 71
  *     - '' si une référence explicite incorrecte est envoyée
72 72
  */
73 73
 function index_boucle_mere($p) {
74
-	if (strlen($p->nom_boucle)) {
75
-		// retourne l’index explicite demandé s’il existe
76
-		if (!empty($p->boucles[$p->nom_boucle])) {
77
-			return $p->nom_boucle;
78
-		}
79
-		return '';
80
-	} 
81
-	if (!empty($p->descr['id_mere'])) {
82
-		return $p->descr['id_mere'];
83
-	}
84
-	return '';
74
+    if (strlen($p->nom_boucle)) {
75
+        // retourne l’index explicite demandé s’il existe
76
+        if (!empty($p->boucles[$p->nom_boucle])) {
77
+            return $p->nom_boucle;
78
+        }
79
+        return '';
80
+    } 
81
+    if (!empty($p->descr['id_mere'])) {
82
+        return $p->descr['id_mere'];
83
+    }
84
+    return '';
85 85
 }
86 86
 
87 87
 /**
@@ -115,69 +115,69 @@  discard block
 block discarded – undo
115 115
  *     Code PHP pour obtenir le champ SQL
116 116
  */
117 117
 function index_pile(
118
-	$idb,
119
-	$nom_champ,
120
-	&$boucles,
121
-	$explicite = '',
122
-	$defaut = null,
123
-	$remonte_pile = true,
124
-	$select = true
118
+    $idb,
119
+    $nom_champ,
120
+    &$boucles,
121
+    $explicite = '',
122
+    $defaut = null,
123
+    $remonte_pile = true,
124
+    $select = true
125 125
 ) {
126
-	if (!is_string($defaut)) {
127
-		$defaut = '@$Pile[0][\'' . strtolower($nom_champ) . '\']';
128
-	}
129
-
130
-	$i = 0;
131
-	if (strlen($explicite)) {
132
-		// Recherche d'un champ dans un etage superieur
133
-		while (($idb !== $explicite) && ($idb !== '')) {
134
-			#	spip_log("Cherchexpl: $nom_champ '$explicite' '$idb' '$i'");
135
-			$i++;
136
-			$idb = $boucles[$idb]->id_parent;
137
-		}
138
-	}
139
-
140
-	#	spip_log("Cherche: $nom_champ a partir de '$idb'");
141
-	$nom_champ = strtolower($nom_champ);
142
-	$conditionnel = array();
143
-	// attention: entre la boucle nommee 0, "" et le tableau vide,
144
-	// il y a incoherences qu'il vaut mieux eviter
145
-	while (isset($boucles[$idb])) {
146
-		$joker = true;
147
-		// modifie $joker si tous les champs sont autorisés.
148
-		// $t = le select pour le champ, si on l'a trouvé (ou si joker)
149
-		// $c = le nom du champ demandé
150
-		list($t, $c) = index_tables_en_pile($idb, $nom_champ, $boucles, $joker);
151
-		if ($t) {
152
-			if ($select and !in_array($t, $boucles[$idb]->select)) {
153
-				$boucles[$idb]->select[] = $t;
154
-			}
155
-			$champ = '$Pile[$SP' . ($i ? "-$i" : "") . '][\'' . $c . '\']';
156
-			if (!$joker) {
157
-				return index_compose($conditionnel, $champ);
158
-			}
159
-
160
-			// tant que l'on trouve des tables avec joker, on continue
161
-			// avec la boucle parente et on conditionne à l'exécution
162
-			// la présence du champ. Si le champ existe à l'exécution
163
-			// dans une boucle, il est pris, sinon on le cherche dans le parent...
164
-			$conditionnel[] = "isset($champ)?$champ";
165
-		}
166
-
167
-		if ($remonte_pile) {
168
-			#	spip_log("On remonte vers $i");
169
-			// Sinon on remonte d'un cran
170
-			$idb = $boucles[$idb]->id_parent;
171
-			$i++;
172
-		} else {
173
-			$idb = null;
174
-		}
175
-	}
176
-
177
-	#	spip_log("Pas vu $nom_champ");
178
-	// esperons qu'il y sera
179
-	// ou qu'on a fourni une valeur par "defaut" plus pertinent
180
-	return index_compose($conditionnel, $defaut);
126
+    if (!is_string($defaut)) {
127
+        $defaut = '@$Pile[0][\'' . strtolower($nom_champ) . '\']';
128
+    }
129
+
130
+    $i = 0;
131
+    if (strlen($explicite)) {
132
+        // Recherche d'un champ dans un etage superieur
133
+        while (($idb !== $explicite) && ($idb !== '')) {
134
+            #	spip_log("Cherchexpl: $nom_champ '$explicite' '$idb' '$i'");
135
+            $i++;
136
+            $idb = $boucles[$idb]->id_parent;
137
+        }
138
+    }
139
+
140
+    #	spip_log("Cherche: $nom_champ a partir de '$idb'");
141
+    $nom_champ = strtolower($nom_champ);
142
+    $conditionnel = array();
143
+    // attention: entre la boucle nommee 0, "" et le tableau vide,
144
+    // il y a incoherences qu'il vaut mieux eviter
145
+    while (isset($boucles[$idb])) {
146
+        $joker = true;
147
+        // modifie $joker si tous les champs sont autorisés.
148
+        // $t = le select pour le champ, si on l'a trouvé (ou si joker)
149
+        // $c = le nom du champ demandé
150
+        list($t, $c) = index_tables_en_pile($idb, $nom_champ, $boucles, $joker);
151
+        if ($t) {
152
+            if ($select and !in_array($t, $boucles[$idb]->select)) {
153
+                $boucles[$idb]->select[] = $t;
154
+            }
155
+            $champ = '$Pile[$SP' . ($i ? "-$i" : "") . '][\'' . $c . '\']';
156
+            if (!$joker) {
157
+                return index_compose($conditionnel, $champ);
158
+            }
159
+
160
+            // tant que l'on trouve des tables avec joker, on continue
161
+            // avec la boucle parente et on conditionne à l'exécution
162
+            // la présence du champ. Si le champ existe à l'exécution
163
+            // dans une boucle, il est pris, sinon on le cherche dans le parent...
164
+            $conditionnel[] = "isset($champ)?$champ";
165
+        }
166
+
167
+        if ($remonte_pile) {
168
+            #	spip_log("On remonte vers $i");
169
+            // Sinon on remonte d'un cran
170
+            $idb = $boucles[$idb]->id_parent;
171
+            $i++;
172
+        } else {
173
+            $idb = null;
174
+        }
175
+    }
176
+
177
+    #	spip_log("Pas vu $nom_champ");
178
+    // esperons qu'il y sera
179
+    // ou qu'on a fourni une valeur par "defaut" plus pertinent
180
+    return index_compose($conditionnel, $defaut);
181 181
 }
182 182
 
183 183
 /**
@@ -191,12 +191,12 @@  discard block
 block discarded – undo
191 191
  * @return string              Code PHP complet de recherche d'un champ
192 192
  */
193 193
 function index_compose($conditionnel, $defaut) {
194
-	while ($c = array_pop($conditionnel)) {
195
-		// si on passe defaut = '', ne pas générer d'erreur de compilation.
196
-		$defaut = "($c:(" . ($defaut ? $defaut : "''") . "))";
197
-	}
194
+    while ($c = array_pop($conditionnel)) {
195
+        // si on passe defaut = '', ne pas générer d'erreur de compilation.
196
+        $defaut = "($c:(" . ($defaut ? $defaut : "''") . "))";
197
+    }
198 198
 
199
-	return $defaut;
199
+    return $defaut;
200 200
 }
201 201
 
202 202
 /**
@@ -232,74 +232,74 @@  discard block
 block discarded – undo
232 232
  **/
233 233
 function index_tables_en_pile($idb, $nom_champ, &$boucles, &$joker) {
234 234
 
235
-	$r = $boucles[$idb]->type_requete;
236
-	// boucle recursive, c'est foutu...
237
-	if ($r == TYPE_RECURSIF) {
238
-		return array();
239
-	}
240
-	if (!$r) {
241
-		$joker = false; // indiquer a l'appelant
242
-		# continuer pour chercher l'erreur suivante
243
-		return array("'#" . $r . ':' . $nom_champ . "'", '');
244
-	}
245
-
246
-	$desc = $boucles[$idb]->show;
247
-	// le nom du champ est il une exception de la table ? un alias ?
248
-	$excep = isset($GLOBALS['exceptions_des_tables'][$r]) ? $GLOBALS['exceptions_des_tables'][$r] : '';
249
-	if ($excep) {
250
-		$excep = isset($excep[$nom_champ]) ? $excep[$nom_champ] : '';
251
-	}
252
-	if ($excep) {
253
-		$joker = false; // indiquer a l'appelant
254
-		return index_exception($boucles[$idb], $desc, $nom_champ, $excep);
255
-	} // pas d'alias. Le champ existe t'il ?
256
-	else {
257
-		// le champ est réellement présent, on le prend.
258
-		if (isset($desc['field'][$nom_champ])) {
259
-			$t = $boucles[$idb]->id_table;
260
-			$joker = false; // indiquer a l'appelant
261
-			return array("$t.$nom_champ", $nom_champ);
262
-		}
263
-		// Tous les champs sont-ils acceptés ?
264
-		// Si oui, on retourne le champ, et on lève le flag joker
265
-		// C'est le cas des itérateurs DATA qui acceptent tout
266
-		// et testent la présence du champ à l'exécution et non à la compilation
267
-		// car ils ne connaissent pas ici leurs contenus.
268
-		elseif (/*$joker AND */
269
-		isset($desc['field']['*'])
270
-		) {
271
-			$joker = true; // indiquer a l'appelant
272
-			return array($nom_champ, $nom_champ);
273
-		}
274
-		// pas d'alias, pas de champ, pas de joker...
275
-		// tenter via une jointure...
276
-		else {
277
-			$joker = false; // indiquer a l'appelant
278
-			// regarder si le champ est deja dans une jointure existante
279
-			// sinon, si il y a des joitures explicites, la construire
280
-			if (!$t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb])) {
281
-				if ($boucles[$idb]->jointures_explicites) {
282
-					// [todo] Ne pas lancer que lorsque il y a des jointures explicites !!!!
283
-					// fonctionnel, il suffit d'utiliser $boucles[$idb]->jointures au lieu de jointures_explicites
284
-					// mais est-ce ce qu'on veut ?
285
-					$jointures = preg_split("/\s+/", $boucles[$idb]->jointures_explicites);
286
-					if ($cle = trouver_jointure_champ($nom_champ, $boucles[$idb], $jointures)) {
287
-						$t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb]);
288
-					}
289
-				}
290
-			}
291
-			if ($t) {
292
-				// si on a trouvé une jointure possible, on fait comme
293
-				// si c'était une exception pour le champ demandé
294
-				return index_exception($boucles[$idb],
295
-					$desc,
296
-					$nom_champ,
297
-					array($t[1]['id_table'], reset($t[2])));
298
-			}
299
-
300
-			return array('', '');
301
-		}
302
-	}
235
+    $r = $boucles[$idb]->type_requete;
236
+    // boucle recursive, c'est foutu...
237
+    if ($r == TYPE_RECURSIF) {
238
+        return array();
239
+    }
240
+    if (!$r) {
241
+        $joker = false; // indiquer a l'appelant
242
+        # continuer pour chercher l'erreur suivante
243
+        return array("'#" . $r . ':' . $nom_champ . "'", '');
244
+    }
245
+
246
+    $desc = $boucles[$idb]->show;
247
+    // le nom du champ est il une exception de la table ? un alias ?
248
+    $excep = isset($GLOBALS['exceptions_des_tables'][$r]) ? $GLOBALS['exceptions_des_tables'][$r] : '';
249
+    if ($excep) {
250
+        $excep = isset($excep[$nom_champ]) ? $excep[$nom_champ] : '';
251
+    }
252
+    if ($excep) {
253
+        $joker = false; // indiquer a l'appelant
254
+        return index_exception($boucles[$idb], $desc, $nom_champ, $excep);
255
+    } // pas d'alias. Le champ existe t'il ?
256
+    else {
257
+        // le champ est réellement présent, on le prend.
258
+        if (isset($desc['field'][$nom_champ])) {
259
+            $t = $boucles[$idb]->id_table;
260
+            $joker = false; // indiquer a l'appelant
261
+            return array("$t.$nom_champ", $nom_champ);
262
+        }
263
+        // Tous les champs sont-ils acceptés ?
264
+        // Si oui, on retourne le champ, et on lève le flag joker
265
+        // C'est le cas des itérateurs DATA qui acceptent tout
266
+        // et testent la présence du champ à l'exécution et non à la compilation
267
+        // car ils ne connaissent pas ici leurs contenus.
268
+        elseif (/*$joker AND */
269
+        isset($desc['field']['*'])
270
+        ) {
271
+            $joker = true; // indiquer a l'appelant
272
+            return array($nom_champ, $nom_champ);
273
+        }
274
+        // pas d'alias, pas de champ, pas de joker...
275
+        // tenter via une jointure...
276
+        else {
277
+            $joker = false; // indiquer a l'appelant
278
+            // regarder si le champ est deja dans une jointure existante
279
+            // sinon, si il y a des joitures explicites, la construire
280
+            if (!$t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb])) {
281
+                if ($boucles[$idb]->jointures_explicites) {
282
+                    // [todo] Ne pas lancer que lorsque il y a des jointures explicites !!!!
283
+                    // fonctionnel, il suffit d'utiliser $boucles[$idb]->jointures au lieu de jointures_explicites
284
+                    // mais est-ce ce qu'on veut ?
285
+                    $jointures = preg_split("/\s+/", $boucles[$idb]->jointures_explicites);
286
+                    if ($cle = trouver_jointure_champ($nom_champ, $boucles[$idb], $jointures)) {
287
+                        $t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb]);
288
+                    }
289
+                }
290
+            }
291
+            if ($t) {
292
+                // si on a trouvé une jointure possible, on fait comme
293
+                // si c'était une exception pour le champ demandé
294
+                return index_exception($boucles[$idb],
295
+                    $desc,
296
+                    $nom_champ,
297
+                    array($t[1]['id_table'], reset($t[2])));
298
+            }
299
+
300
+            return array('', '');
301
+        }
302
+    }
303 303
 }
304 304
 
305 305
 
@@ -327,52 +327,52 @@  discard block
 block discarded – undo
327 327
  *     est une expression pour le SELECT de la boucle du style "mots.titre AS titre_mot"
328 328
  **/
329 329
 function index_exception(&$boucle, $desc, $nom_champ, $excep) {
330
-	static $trouver_table;
331
-	if (!$trouver_table) {
332
-		$trouver_table = charger_fonction('trouver_table', 'base');
333
-	}
334
-
335
-	if (is_array($excep)) {
336
-		// permettre aux plugins de gerer eux meme des jointures derogatoire ingerables
337
-		$t = null;
338
-		if (count($excep) == 3) {
339
-			$index_exception_derogatoire = array_pop($excep);
340
-			$t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
341
-		}
342
-		if ($t == null) {
343
-			list($e, $x) = $excep;  #PHP4 affecte de gauche a droite
344
-			$excep = $x;    #PHP5 de droite a gauche !
345
-			$j = $trouver_table($e, $boucle->sql_serveur);
346
-			if (!$j) {
347
-				return array('', '');
348
-			}
349
-			$e = $j['table'];
350
-			if (!$t = array_search($e, $boucle->from)) {
351
-				$k = $j['key']['PRIMARY KEY'];
352
-				if (strpos($k, ',')) {
353
-					$l = (preg_split('/\s*,\s*/', $k));
354
-					$k = $desc['key']['PRIMARY KEY'];
355
-					if (!in_array($k, $l)) {
356
-						spip_log("jointure impossible $e " . join(',', $l));
357
-
358
-						return array('', '');
359
-					}
360
-				}
361
-				$k = array($boucle->id_table, array($e), $k);
362
-				fabrique_jointures($boucle, array($k));
363
-				$t = array_search($e, $boucle->from);
364
-			}
365
-		}
366
-	} else {
367
-		$t = $boucle->id_table;
368
-	}
369
-	// demander a SQL de gerer le synonyme
370
-	// ca permet que excep soit dynamique (Cedric, 2/3/06)
371
-	if ($excep != $nom_champ) {
372
-		$excep .= ' AS ' . $nom_champ;
373
-	}
374
-
375
-	return array("$t.$excep", $nom_champ);
330
+    static $trouver_table;
331
+    if (!$trouver_table) {
332
+        $trouver_table = charger_fonction('trouver_table', 'base');
333
+    }
334
+
335
+    if (is_array($excep)) {
336
+        // permettre aux plugins de gerer eux meme des jointures derogatoire ingerables
337
+        $t = null;
338
+        if (count($excep) == 3) {
339
+            $index_exception_derogatoire = array_pop($excep);
340
+            $t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
341
+        }
342
+        if ($t == null) {
343
+            list($e, $x) = $excep;  #PHP4 affecte de gauche a droite
344
+            $excep = $x;    #PHP5 de droite a gauche !
345
+            $j = $trouver_table($e, $boucle->sql_serveur);
346
+            if (!$j) {
347
+                return array('', '');
348
+            }
349
+            $e = $j['table'];
350
+            if (!$t = array_search($e, $boucle->from)) {
351
+                $k = $j['key']['PRIMARY KEY'];
352
+                if (strpos($k, ',')) {
353
+                    $l = (preg_split('/\s*,\s*/', $k));
354
+                    $k = $desc['key']['PRIMARY KEY'];
355
+                    if (!in_array($k, $l)) {
356
+                        spip_log("jointure impossible $e " . join(',', $l));
357
+
358
+                        return array('', '');
359
+                    }
360
+                }
361
+                $k = array($boucle->id_table, array($e), $k);
362
+                fabrique_jointures($boucle, array($k));
363
+                $t = array_search($e, $boucle->from);
364
+            }
365
+        }
366
+    } else {
367
+        $t = $boucle->id_table;
368
+    }
369
+    // demander a SQL de gerer le synonyme
370
+    // ca permet que excep soit dynamique (Cedric, 2/3/06)
371
+    if ($excep != $nom_champ) {
372
+        $excep .= ' AS ' . $nom_champ;
373
+    }
374
+
375
+    return array("$t.$excep", $nom_champ);
376 376
 }
377 377
 
378 378
 /**
@@ -397,7 +397,7 @@  discard block
 block discarded – undo
397 397
  *     Code PHP pour retrouver le champ
398 398
  */
399 399
 function champ_sql($champ, $p, $defaut = null, $remonte_pile = true) {
400
-	return index_pile($p->id_boucle, $champ, $p->boucles, $p->nom_boucle, $defaut, $remonte_pile);
400
+    return index_pile($p->id_boucle, $champ, $p->boucles, $p->nom_boucle, $defaut, $remonte_pile);
401 401
 }
402 402
 
403 403
 
@@ -417,9 +417,9 @@  discard block
 block discarded – undo
417 417
  *     Code PHP pour d'exécution de la balise et de ses filtres
418 418
  **/
419 419
 function calculer_champ($p) {
420
-	$p = calculer_balise($p->nom_champ, $p);
420
+    $p = calculer_balise($p->nom_champ, $p);
421 421
 
422
-	return applique_filtres($p);
422
+    return applique_filtres($p);
423 423
 }
424 424
 
425 425
 
@@ -456,26 +456,26 @@  discard block
 block discarded – undo
456 456
  **/
457 457
 function calculer_balise($nom, $p) {
458 458
 
459
-	// S'agit-t-il d'une balise_XXXX[_dist]() ?
460
-	if ($f = charger_fonction($nom, 'balise', true)) {
461
-		$p->balise_calculee = true;
462
-		$res = $f($p);
463
-		if ($res !== null and is_object($res)) {
464
-			return $res;
465
-		}
466
-	}
467
-
468
-	// Certaines des balises comportant un _ sont generiques
469
-	if ($balise_generique = chercher_balise_generique($nom)) {
470
-		$res = $balise_generique['fonction_generique']($p);
471
-		if ($res !== null and is_object($res)) {
472
-			return $res;
473
-		}
474
-	}
475
-
476
-	$f = charger_fonction('DEFAUT', 'calculer_balise');
477
-
478
-	return $f($nom, $p);
459
+    // S'agit-t-il d'une balise_XXXX[_dist]() ?
460
+    if ($f = charger_fonction($nom, 'balise', true)) {
461
+        $p->balise_calculee = true;
462
+        $res = $f($p);
463
+        if ($res !== null and is_object($res)) {
464
+            return $res;
465
+        }
466
+    }
467
+
468
+    // Certaines des balises comportant un _ sont generiques
469
+    if ($balise_generique = chercher_balise_generique($nom)) {
470
+        $res = $balise_generique['fonction_generique']($p);
471
+        if ($res !== null and is_object($res)) {
472
+            return $res;
473
+        }
474
+    }
475
+
476
+    $f = charger_fonction('DEFAUT', 'calculer_balise');
477
+
478
+    return $f($nom, $p);
479 479
 }
480 480
 
481 481
 
@@ -503,36 +503,36 @@  discard block
 block discarded – undo
503 503
  **/
504 504
 function calculer_balise_DEFAUT_dist($nom, $p) {
505 505
 
506
-	// ca pourrait etre un champ SQL homonyme,
507
-	$p->code = index_pile($p->id_boucle, $nom, $p->boucles, $p->nom_boucle);
508
-
509
-	// compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
510
-	// il faut recracher {...} quand ce n'est finalement pas des args
511
-	if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
512
-		$code = addslashes($p->fonctions[0][1]);
513
-		$p->code .= " . '$code'";
514
-	}
515
-
516
-	// ne pas passer le filtre securite sur les id_xxx
517
-	if (strpos($nom, 'ID_') === 0) {
518
-		$p->interdire_scripts = false;
519
-	}
520
-
521
-	// Compatibilite ascendante avec les couleurs html (#FEFEFE) :
522
-	// SI le champ SQL n'est pas trouve
523
-	// ET si la balise a une forme de couleur
524
-	// ET s'il n'y a ni filtre ni etoile
525
-	// ALORS retourner la couleur.
526
-	// Ca permet si l'on veut vraiment de recuperer [(#ACCEDE*)]
527
-	if (preg_match("/^[A-F]{1,6}$/i", $nom)
528
-		and !$p->etoile
529
-		and !$p->fonctions
530
-	) {
531
-		$p->code = "'#$nom'";
532
-		$p->interdire_scripts = false;
533
-	}
534
-
535
-	return $p;
506
+    // ca pourrait etre un champ SQL homonyme,
507
+    $p->code = index_pile($p->id_boucle, $nom, $p->boucles, $p->nom_boucle);
508
+
509
+    // compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
510
+    // il faut recracher {...} quand ce n'est finalement pas des args
511
+    if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
512
+        $code = addslashes($p->fonctions[0][1]);
513
+        $p->code .= " . '$code'";
514
+    }
515
+
516
+    // ne pas passer le filtre securite sur les id_xxx
517
+    if (strpos($nom, 'ID_') === 0) {
518
+        $p->interdire_scripts = false;
519
+    }
520
+
521
+    // Compatibilite ascendante avec les couleurs html (#FEFEFE) :
522
+    // SI le champ SQL n'est pas trouve
523
+    // ET si la balise a une forme de couleur
524
+    // ET s'il n'y a ni filtre ni etoile
525
+    // ALORS retourner la couleur.
526
+    // Ca permet si l'on veut vraiment de recuperer [(#ACCEDE*)]
527
+    if (preg_match("/^[A-F]{1,6}$/i", $nom)
528
+        and !$p->etoile
529
+        and !$p->fonctions
530
+    ) {
531
+        $p->code = "'#$nom'";
532
+        $p->interdire_scripts = false;
533
+    }
534
+
535
+    return $p;
536 536
 }
537 537
 
538 538
 
@@ -575,36 +575,36 @@  discard block
 block discarded – undo
575 575
  **/
576 576
 function calculer_balise_dynamique($p, $nom, $l, $supp = array()) {
577 577
 
578
-	if (!balise_distante_interdite($p)) {
579
-		$p->code = "''";
580
-
581
-		return $p;
582
-	}
583
-	// compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
584
-	// il faut recracher {...} quand ce n'est finalement pas des args
585
-	if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
586
-		$p->fonctions = null;
587
-	}
588
-
589
-	if ($p->param and ($c = $p->param[0])) {
590
-		// liste d'arguments commence toujours par la chaine vide
591
-		array_shift($c);
592
-		// construire la liste d'arguments comme pour un filtre
593
-		$param = compose_filtres_args($p, $c, ',');
594
-	} else {
595
-		$param = "";
596
-	}
597
-	$collecte = collecter_balise_dynamique($l, $p, $nom);
598
-
599
-	$p->code = sprintf(CODE_EXECUTER_BALISE, $nom,
600
-		join(',', $collecte),
601
-		($collecte ? $param : substr($param, 1)), # virer la virgule
602
-		memoriser_contexte_compil($p),
603
-		(!$supp ? '' : (', ' . join(',', $supp))));
604
-
605
-	$p->interdire_scripts = false;
606
-
607
-	return $p;
578
+    if (!balise_distante_interdite($p)) {
579
+        $p->code = "''";
580
+
581
+        return $p;
582
+    }
583
+    // compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
584
+    // il faut recracher {...} quand ce n'est finalement pas des args
585
+    if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
586
+        $p->fonctions = null;
587
+    }
588
+
589
+    if ($p->param and ($c = $p->param[0])) {
590
+        // liste d'arguments commence toujours par la chaine vide
591
+        array_shift($c);
592
+        // construire la liste d'arguments comme pour un filtre
593
+        $param = compose_filtres_args($p, $c, ',');
594
+    } else {
595
+        $param = "";
596
+    }
597
+    $collecte = collecter_balise_dynamique($l, $p, $nom);
598
+
599
+    $p->code = sprintf(CODE_EXECUTER_BALISE, $nom,
600
+        join(',', $collecte),
601
+        ($collecte ? $param : substr($param, 1)), # virer la virgule
602
+        memoriser_contexte_compil($p),
603
+        (!$supp ? '' : (', ' . join(',', $supp))));
604
+
605
+    $p->interdire_scripts = false;
606
+
607
+    return $p;
608 608
 }
609 609
 
610 610
 
@@ -634,13 +634,13 @@  discard block
 block discarded – undo
634 634
  *     Liste des codes PHP d'éxecution des balises collectées
635 635
  **/
636 636
 function collecter_balise_dynamique($l, &$p, $nom) {
637
-	$args = array();
638
-	foreach ($l as $c) {
639
-		$x = calculer_balise($c, $p);
640
-		$args[] = $x->code;
641
-	}
637
+    $args = array();
638
+    foreach ($l as $c) {
639
+        $x = calculer_balise($c, $p);
640
+        $args[] = $x->code;
641
+    }
642 642
 
643
-	return $args;
643
+    return $args;
644 644
 }
645 645
 
646 646
 
@@ -655,20 +655,20 @@  discard block
 block discarded – undo
655 655
  *     Nom de la connexion
656 656
  **/
657 657
 function trouver_nom_serveur_distant($p) {
658
-	$nom = $p->id_boucle;
659
-	if ($nom
660
-		and isset($p->boucles[$nom])
661
-	) {
662
-		$s = $p->boucles[$nom]->sql_serveur;
663
-		if (strlen($s)
664
-			and strlen($serveur = strtolower($s))
665
-			and !in_array($serveur, $GLOBALS['exception_des_connect'])
666
-		) {
667
-			return $serveur;
668
-		}
669
-	}
670
-
671
-	return "";
658
+    $nom = $p->id_boucle;
659
+    if ($nom
660
+        and isset($p->boucles[$nom])
661
+    ) {
662
+        $s = $p->boucles[$nom]->sql_serveur;
663
+        if (strlen($s)
664
+            and strlen($serveur = strtolower($s))
665
+            and !in_array($serveur, $GLOBALS['exception_des_connect'])
666
+        ) {
667
+            return $serveur;
668
+        }
669
+    }
670
+
671
+    return "";
672 672
 }
673 673
 
674 674
 
@@ -692,15 +692,15 @@  discard block
 block discarded – undo
692 692
  *     - false : La balise est interdite car le serveur est distant
693 693
  **/
694 694
 function balise_distante_interdite($p) {
695
-	$nom = $p->id_boucle;
695
+    $nom = $p->id_boucle;
696 696
 
697
-	if ($nom and trouver_nom_serveur_distant($p)) {
698
-		spip_log($nom . ':' . $p->nom_champ . ' ' . _T('zbug_distant_interdit'));
697
+    if ($nom and trouver_nom_serveur_distant($p)) {
698
+        spip_log($nom . ':' . $p->nom_champ . ' ' . _T('zbug_distant_interdit'));
699 699
 
700
-		return false;
701
-	}
700
+        return false;
701
+    }
702 702
 
703
-	return true;
703
+    return true;
704 704
 }
705 705
 
706 706
 
@@ -711,78 +711,78 @@  discard block
 block discarded – undo
711 711
 // https://code.spip.net/@champs_traitements
712 712
 function champs_traitements($p) {
713 713
 
714
-	if (isset($GLOBALS['table_des_traitements'][$p->nom_champ])) {
715
-		$ps = $GLOBALS['table_des_traitements'][$p->nom_champ];
716
-	} else {
717
-		// quand on utilise un traitement catch-all *
718
-		// celui-ci ne s'applique pas sur les balises calculees qui peuvent gerer
719
-		// leur propre securite
720
-		if (!$p->balise_calculee) {
721
-			$ps = $GLOBALS['table_des_traitements']['*'];
722
-		} else {
723
-			$ps = false;
724
-		}
725
-	}
726
-
727
-	if (is_array($ps)) {
728
-		// Recuperer le type de boucle (articles, DATA) et la table SQL sur laquelle elle porte
729
-		$idb = index_boucle($p);
730
-		// mais on peut aussi etre hors boucle. Se mefier.
731
-		$type_requete = isset($p->boucles[$idb]->type_requete) ? $p->boucles[$idb]->type_requete : false;
732
-		$table_sql = isset($p->boucles[$idb]->show['table_sql']) ? $p->boucles[$idb]->show['table_sql'] : false;
733
-
734
-		// bien prendre en compte les alias de boucles (hierarchie => rubrique, syndication => syncdic, etc.)
735
-		if ($type_requete and isset($GLOBALS['table_des_tables'][$type_requete])) {
736
-			$type_alias = $type_requete;
737
-			$type_requete = $GLOBALS['table_des_tables'][$type_requete];
738
-		} else {
739
-			$type_alias = false;
740
-		}
741
-
742
-		// le traitement peut n'etre defini que pour une table en particulier "spip_articles"
743
-		if ($table_sql and isset($ps[$table_sql])) {
744
-			$ps = $ps[$table_sql];
745
-		} // ou pour une boucle en particulier "DATA","articles"
746
-		elseif ($type_requete and isset($ps[$type_requete])) {
747
-			$ps = $ps[$type_requete];
748
-		} // ou pour une boucle utilisant un alias ("hierarchie")
749
-		elseif ($type_alias and isset($ps[$type_alias])) {
750
-			$ps = $ps[$type_alias];
751
-		} // ou pour indifféremment quelle que soit la boucle
752
-		elseif (isset($ps[0])) {
753
-			$ps = $ps[0];
754
-		} else {
755
-			$ps = false;
756
-		}
757
-	}
758
-
759
-	if (!$ps) {
760
-		return $p->code;
761
-	}
762
-
763
-	// Si une boucle DOCUMENTS{doublons} est presente dans le squelette,
764
-	// ou si in INCLURE contient {doublons}
765
-	// on insere une fonction de remplissage du tableau des doublons 
766
-	// dans les filtres propre() ou typo()
767
-	// (qui traitent les raccourcis <docXX> referencant les docs)
768
-
769
-	if (isset($p->descr['documents'])
770
-		and
771
-		$p->descr['documents']
772
-		and (
773
-			(strpos($ps, 'propre') !== false)
774
-			or
775
-			(strpos($ps, 'typo') !== false)
776
-		)
777
-	) {
778
-		$ps = 'traiter_doublons_documents($doublons, ' . $ps . ')';
779
-	}
780
-
781
-	// La protection des champs par |safehtml est assuree par les extensions
782
-	// dans la declaration des traitements des champs sensibles
783
-
784
-	// Remplacer enfin le placeholder %s par le vrai code de la balise
785
-	return str_replace('%s', $p->code, $ps);
714
+    if (isset($GLOBALS['table_des_traitements'][$p->nom_champ])) {
715
+        $ps = $GLOBALS['table_des_traitements'][$p->nom_champ];
716
+    } else {
717
+        // quand on utilise un traitement catch-all *
718
+        // celui-ci ne s'applique pas sur les balises calculees qui peuvent gerer
719
+        // leur propre securite
720
+        if (!$p->balise_calculee) {
721
+            $ps = $GLOBALS['table_des_traitements']['*'];
722
+        } else {
723
+            $ps = false;
724
+        }
725
+    }
726
+
727
+    if (is_array($ps)) {
728
+        // Recuperer le type de boucle (articles, DATA) et la table SQL sur laquelle elle porte
729
+        $idb = index_boucle($p);
730
+        // mais on peut aussi etre hors boucle. Se mefier.
731
+        $type_requete = isset($p->boucles[$idb]->type_requete) ? $p->boucles[$idb]->type_requete : false;
732
+        $table_sql = isset($p->boucles[$idb]->show['table_sql']) ? $p->boucles[$idb]->show['table_sql'] : false;
733
+
734
+        // bien prendre en compte les alias de boucles (hierarchie => rubrique, syndication => syncdic, etc.)
735
+        if ($type_requete and isset($GLOBALS['table_des_tables'][$type_requete])) {
736
+            $type_alias = $type_requete;
737
+            $type_requete = $GLOBALS['table_des_tables'][$type_requete];
738
+        } else {
739
+            $type_alias = false;
740
+        }
741
+
742
+        // le traitement peut n'etre defini que pour une table en particulier "spip_articles"
743
+        if ($table_sql and isset($ps[$table_sql])) {
744
+            $ps = $ps[$table_sql];
745
+        } // ou pour une boucle en particulier "DATA","articles"
746
+        elseif ($type_requete and isset($ps[$type_requete])) {
747
+            $ps = $ps[$type_requete];
748
+        } // ou pour une boucle utilisant un alias ("hierarchie")
749
+        elseif ($type_alias and isset($ps[$type_alias])) {
750
+            $ps = $ps[$type_alias];
751
+        } // ou pour indifféremment quelle que soit la boucle
752
+        elseif (isset($ps[0])) {
753
+            $ps = $ps[0];
754
+        } else {
755
+            $ps = false;
756
+        }
757
+    }
758
+
759
+    if (!$ps) {
760
+        return $p->code;
761
+    }
762
+
763
+    // Si une boucle DOCUMENTS{doublons} est presente dans le squelette,
764
+    // ou si in INCLURE contient {doublons}
765
+    // on insere une fonction de remplissage du tableau des doublons 
766
+    // dans les filtres propre() ou typo()
767
+    // (qui traitent les raccourcis <docXX> referencant les docs)
768
+
769
+    if (isset($p->descr['documents'])
770
+        and
771
+        $p->descr['documents']
772
+        and (
773
+            (strpos($ps, 'propre') !== false)
774
+            or
775
+            (strpos($ps, 'typo') !== false)
776
+        )
777
+    ) {
778
+        $ps = 'traiter_doublons_documents($doublons, ' . $ps . ')';
779
+    }
780
+
781
+    // La protection des champs par |safehtml est assuree par les extensions
782
+    // dans la declaration des traitements des champs sensibles
783
+
784
+    // Remplacer enfin le placeholder %s par le vrai code de la balise
785
+    return str_replace('%s', $p->code, $ps);
786 786
 }
787 787
 
788 788
 
@@ -795,112 +795,112 @@  discard block
 block discarded – undo
795 795
 // https://code.spip.net/@applique_filtres
796 796
 function applique_filtres($p) {
797 797
 
798
-	// Traitements standards (cf. supra)
799
-	if ($p->etoile == '') {
800
-		$code = champs_traitements($p);
801
-	} else {
802
-		$code = $p->code;
803
-	}
798
+    // Traitements standards (cf. supra)
799
+    if ($p->etoile == '') {
800
+        $code = champs_traitements($p);
801
+    } else {
802
+        $code = $p->code;
803
+    }
804 804
 
805
-	// Appliquer les filtres perso
806
-	if ($p->param) {
807
-		$code = compose_filtres($p, $code);
808
-	}
805
+    // Appliquer les filtres perso
806
+    if ($p->param) {
807
+        $code = compose_filtres($p, $code);
808
+    }
809 809
 
810
-	// S'il y a un lien avec la session, ajouter un code qui levera
811
-	// un drapeau dans la structure d'invalidation $Cache
812
-	if (isset($p->descr['session'])) {
813
-		$code = "invalideur_session(\$Cache, $code)";
814
-	}
810
+    // S'il y a un lien avec la session, ajouter un code qui levera
811
+    // un drapeau dans la structure d'invalidation $Cache
812
+    if (isset($p->descr['session'])) {
813
+        $code = "invalideur_session(\$Cache, $code)";
814
+    }
815 815
 
816
-	$code = sandbox_composer_interdire_scripts($code, $p);
816
+    $code = sandbox_composer_interdire_scripts($code, $p);
817 817
 
818
-	return $code;
818
+    return $code;
819 819
 }
820 820
 
821 821
 // Cf. function pipeline dans ecrire/inc_utils.php
822 822
 // https://code.spip.net/@compose_filtres
823 823
 function compose_filtres(&$p, $code) {
824 824
 
825
-	$image_miette = false;
826
-	foreach ($p->param as $filtre) {
827
-		$fonc = array_shift($filtre);
828
-		if (!$fonc) {
829
-			continue;
830
-		} // normalement qu'au premier tour.
831
-		$is_filtre_image = ((substr($fonc, 0, 6) == 'image_') and $fonc != 'image_graver');
832
-		if ($image_miette and !$is_filtre_image) {
833
-			// il faut graver maintenant car apres le filtre en cours
834
-			// on est pas sur d'avoir encore le nom du fichier dans le pipe
835
-			$code = "filtrer('image_graver', $code)";
836
-			$image_miette = false;
837
-		}
838
-
839
-		// recuperer les arguments du filtre, 
840
-		// a separer par "," ou ":" dans le cas du filtre "?{a,b}"
841
-		$countfiltre = count($filtre);
842
-		if ($fonc !== '?') {
843
-			$sep = ',';
844
-		} else {
845
-			$sep = ':';
846
-			// |?{a,b} *doit* avoir exactement 2 arguments ; on les force
847
-			if ($countfiltre != 2) {
848
-				$filtre = array($filtre[0] ?? '', $filtre[1] ?? '');
849
-				$countfiltre = 2;
850
-			}
851
-		}
852
-		$arglist = compose_filtres_args($p, $filtre, $sep);
853
-		$logique = filtre_logique($fonc, $code, substr($arglist, 1));
854
-		if ($logique) {
855
-			$code = $logique;
856
-		} else {
857
-			$code = sandbox_composer_filtre($fonc, $code, $arglist, $p, $countfiltre);
858
-			if ($is_filtre_image) {
859
-				$image_miette = true;
860
-			}
861
-		}
862
-	}
863
-	// ramasser les images intermediaires inutiles et graver l'image finale
864
-	if ($image_miette) {
865
-		$code = "filtrer('image_graver',$code)";
866
-	}
867
-
868
-	return $code;
825
+    $image_miette = false;
826
+    foreach ($p->param as $filtre) {
827
+        $fonc = array_shift($filtre);
828
+        if (!$fonc) {
829
+            continue;
830
+        } // normalement qu'au premier tour.
831
+        $is_filtre_image = ((substr($fonc, 0, 6) == 'image_') and $fonc != 'image_graver');
832
+        if ($image_miette and !$is_filtre_image) {
833
+            // il faut graver maintenant car apres le filtre en cours
834
+            // on est pas sur d'avoir encore le nom du fichier dans le pipe
835
+            $code = "filtrer('image_graver', $code)";
836
+            $image_miette = false;
837
+        }
838
+
839
+        // recuperer les arguments du filtre, 
840
+        // a separer par "," ou ":" dans le cas du filtre "?{a,b}"
841
+        $countfiltre = count($filtre);
842
+        if ($fonc !== '?') {
843
+            $sep = ',';
844
+        } else {
845
+            $sep = ':';
846
+            // |?{a,b} *doit* avoir exactement 2 arguments ; on les force
847
+            if ($countfiltre != 2) {
848
+                $filtre = array($filtre[0] ?? '', $filtre[1] ?? '');
849
+                $countfiltre = 2;
850
+            }
851
+        }
852
+        $arglist = compose_filtres_args($p, $filtre, $sep);
853
+        $logique = filtre_logique($fonc, $code, substr($arglist, 1));
854
+        if ($logique) {
855
+            $code = $logique;
856
+        } else {
857
+            $code = sandbox_composer_filtre($fonc, $code, $arglist, $p, $countfiltre);
858
+            if ($is_filtre_image) {
859
+                $image_miette = true;
860
+            }
861
+        }
862
+    }
863
+    // ramasser les images intermediaires inutiles et graver l'image finale
864
+    if ($image_miette) {
865
+        $code = "filtrer('image_graver',$code)";
866
+    }
867
+
868
+    return $code;
869 869
 }
870 870
 
871 871
 // Filtres et,ou,oui,non,sinon,xou,xor,and,or,not,yes
872 872
 // et comparateurs
873 873
 function filtre_logique($fonc, $code, $arg) {
874 874
 
875
-	switch (true) {
876
-		case in_array($fonc, $GLOBALS['table_criteres_infixes']):
877
-			return "($code $fonc $arg)";
878
-		case ($fonc == 'and') or ($fonc == 'et'):
879
-			return "((($code) AND ($arg)) ?' ' :'')";
880
-		case ($fonc == 'or') or ($fonc == 'ou'):
881
-			return "((($code) OR ($arg)) ?' ' :'')";
882
-		case ($fonc == 'xor') or ($fonc == 'xou'):
883
-			return "((($code) XOR ($arg)) ?' ' :'')";
884
-		case ($fonc == 'sinon'):
885
-			return "(((\$a = $code) OR (is_string(\$a) AND strlen(\$a))) ? \$a : $arg)";
886
-		case ($fonc == 'not') or ($fonc == 'non'):
887
-			return "(($code) ?'' :' ')";
888
-		case ($fonc == 'yes') or ($fonc == 'oui'):
889
-			return "(($code) ?' ' :'')";
890
-	}
891
-
892
-	return '';
875
+    switch (true) {
876
+        case in_array($fonc, $GLOBALS['table_criteres_infixes']):
877
+            return "($code $fonc $arg)";
878
+        case ($fonc == 'and') or ($fonc == 'et'):
879
+            return "((($code) AND ($arg)) ?' ' :'')";
880
+        case ($fonc == 'or') or ($fonc == 'ou'):
881
+            return "((($code) OR ($arg)) ?' ' :'')";
882
+        case ($fonc == 'xor') or ($fonc == 'xou'):
883
+            return "((($code) XOR ($arg)) ?' ' :'')";
884
+        case ($fonc == 'sinon'):
885
+            return "(((\$a = $code) OR (is_string(\$a) AND strlen(\$a))) ? \$a : $arg)";
886
+        case ($fonc == 'not') or ($fonc == 'non'):
887
+            return "(($code) ?'' :' ')";
888
+        case ($fonc == 'yes') or ($fonc == 'oui'):
889
+            return "(($code) ?' ' :'')";
890
+    }
891
+
892
+    return '';
893 893
 }
894 894
 
895 895
 // https://code.spip.net/@compose_filtres_args
896 896
 function compose_filtres_args($p, $args, $sep) {
897
-	$arglist = "";
898
-	foreach ($args as $arg) {
899
-		$arglist .= $sep .
900
-			calculer_liste($arg, $p->descr, $p->boucles, $p->id_boucle);
901
-	}
897
+    $arglist = "";
898
+    foreach ($args as $arg) {
899
+        $arglist .= $sep .
900
+            calculer_liste($arg, $p->descr, $p->boucles, $p->id_boucle);
901
+    }
902 902
 
903
-	return $arglist;
903
+    return $arglist;
904 904
 }
905 905
 
906 906
 
@@ -918,15 +918,15 @@  discard block
 block discarded – undo
918 918
  **/
919 919
 function calculer_argument_precedent($idb, $nom_champ, &$boucles, $defaut = null) {
920 920
 
921
-	// si recursif, forcer l'extraction du champ SQL mais ignorer le code
922
-	if ($boucles[$idb]->externe) {
923
-		index_pile($idb, $nom_champ, $boucles, '', $defaut);
924
-		// retourner $Pile[$SP] et pas $Pile[0] si recursion en 1ere boucle
925
-		// on ignore le defaut fourni dans ce cas
926
-		$defaut = "@\$Pile[\$SP]['$nom_champ']";
927
-	}
921
+    // si recursif, forcer l'extraction du champ SQL mais ignorer le code
922
+    if ($boucles[$idb]->externe) {
923
+        index_pile($idb, $nom_champ, $boucles, '', $defaut);
924
+        // retourner $Pile[$SP] et pas $Pile[0] si recursion en 1ere boucle
925
+        // on ignore le defaut fourni dans ce cas
926
+        $defaut = "@\$Pile[\$SP]['$nom_champ']";
927
+    }
928 928
 
929
-	return index_pile($boucles[$idb]->id_parent, $nom_champ, $boucles, '', $defaut);
929
+    return index_pile($boucles[$idb]->id_parent, $nom_champ, $boucles, '', $defaut);
930 930
 }
931 931
 
932 932
 //
@@ -941,30 +941,30 @@  discard block
 block discarded – undo
941 941
 
942 942
 // https://code.spip.net/@rindex_pile
943 943
 function rindex_pile($p, $champ, $motif) {
944
-	$n = 0;
945
-	$b = $p->id_boucle;
946
-	$p->code = '';
947
-	while ($b != '') {
948
-		foreach ($p->boucles[$b]->criteres as $critere) {
949
-			if ($critere->op == $motif) {
950
-				$p->code = '$Pile[$SP' . (($n == 0) ? "" : "-$n") .
951
-					"]['$champ']";
952
-				$b = '';
953
-				break 2;
954
-			}
955
-		}
956
-		$n++;
957
-		$b = $p->boucles[$b]->id_parent;
958
-	}
959
-
960
-	// si on est hors d'une boucle de {recherche}, cette balise est vide
961
-	if (!$p->code) {
962
-		$p->code = "''";
963
-	}
964
-
965
-	$p->interdire_scripts = false;
966
-
967
-	return $p;
944
+    $n = 0;
945
+    $b = $p->id_boucle;
946
+    $p->code = '';
947
+    while ($b != '') {
948
+        foreach ($p->boucles[$b]->criteres as $critere) {
949
+            if ($critere->op == $motif) {
950
+                $p->code = '$Pile[$SP' . (($n == 0) ? "" : "-$n") .
951
+                    "]['$champ']";
952
+                $b = '';
953
+                break 2;
954
+            }
955
+        }
956
+        $n++;
957
+        $b = $p->boucles[$b]->id_parent;
958
+    }
959
+
960
+    // si on est hors d'une boucle de {recherche}, cette balise est vide
961
+    if (!$p->code) {
962
+        $p->code = "''";
963
+    }
964
+
965
+    $p->interdire_scripts = false;
966
+
967
+    return $p;
968 968
 }
969 969
 
970 970
 /** 
@@ -974,7 +974,7 @@  discard block
 block discarded – undo
974 974
  * @return string Nom de la balise, avec indication de boucle explicite si présent.
975 975
  */
976 976
 function zbug_presenter_champ($p, $champ = "") {
977
-	$balise = $champ ? $champ : $p->nom_champ;
978
-	$explicite = $explicite = $p->nom_boucle ? $p->nom_boucle . ':' : '';
979
-	return "#{$explicite}{$balise}";
977
+    $balise = $champ ? $champ : $p->nom_champ;
978
+    $explicite = $explicite = $p->nom_boucle ? $p->nom_boucle . ':' : '';
979
+    return "#{$explicite}{$balise}";
980 980
 }
981 981
\ No newline at end of file
Please login to merge, or discard this patch.
ecrire/public/sandbox.php 2 patches
Indentation   +99 added lines, -99 removed lines patch added patch discarded remove patch
@@ -23,7 +23,7 @@  discard block
 block discarded – undo
23 23
  **/
24 24
 
25 25
 if (!defined('_ECRIRE_INC_VERSION')) {
26
-	return;
26
+    return;
27 27
 }
28 28
 
29 29
 /**
@@ -41,9 +41,9 @@  discard block
 block discarded – undo
41 41
  *     Texte
42 42
  */
43 43
 function sandbox_composer_texte($texte, &$p) {
44
-	$code = "'" . str_replace(array("\\", "'"), array("\\\\", "\\'"), $texte) . "'";
44
+    $code = "'" . str_replace(array("\\", "'"), array("\\\\", "\\'"), $texte) . "'";
45 45
 
46
-	return $code;
46
+    return $code;
47 47
 }
48 48
 
49 49
 
@@ -59,43 +59,43 @@  discard block
 block discarded – undo
59 59
  * @return string
60 60
  */
61 61
 function sandbox_composer_filtre($fonc, $code, $arglist, &$p, $nb_arg_droite=1000) : string {
62
-	if (isset($GLOBALS['spip_matrice'][$fonc])) {
63
-		$code = "filtrer('$fonc',$code$arglist)";
64
-	}
65
-
66
-	// le filtre est defini sous forme de fonction ou de methode
67
-	// par ex. dans inc_texte, inc_filtres ou mes_fonctions
68
-	elseif ($f = chercher_filtre($fonc)) {
69
-
70
-		// cas particulier : le filtre |set doit acceder a la $Pile
71
-		// proto: filtre_set(&$Pile, $val, $args...)
72
-		if (strpbrk($f, ':')) { // Class::method
73
-			$refl = new ReflectionMethod($f);
74
-		} else {
75
-			$refl = new ReflectionFunction($f);
76
-		}
77
-		$refs = $refl->getParameters();
78
-		if (isset($refs[0]) and $refs[0]->name == 'Pile') {
79
-			$code = "$f(\$Pile,$code$arglist)";
80
-			$nb_arg_gauche = 2; // la balise à laquelle s'applique le filtre + $Pile
81
-		} else {
82
-			$code = "$f($code$arglist)";
83
-			$nb_arg_gauche = 1; // la balise à laquelle s'applique le filtre
84
-		}
85
-		$nb_args_f = $nb_arg_gauche+$nb_arg_droite;
86
-		$min_f = $refl->getNumberOfRequiredParameters();
87
-		if (($nb_args_f < $min_f)) {
88
-			$msg_args = ['filtre' => texte_script ($fonc), 'nb'=> $min_f - $nb_args_f];
89
-			erreur_squelette ([ 'zbug_erreur_filtre_nbarg_min', $msg_args], $p);
90
-		}
91
-	}
92
-	// le filtre n'existe pas,
93
-	// on le notifie
94
-	else {
95
-		erreur_squelette(array('zbug_erreur_filtre', array('filtre' => texte_script($fonc))), $p);
96
-	}
97
-
98
-	return $code;
62
+    if (isset($GLOBALS['spip_matrice'][$fonc])) {
63
+        $code = "filtrer('$fonc',$code$arglist)";
64
+    }
65
+
66
+    // le filtre est defini sous forme de fonction ou de methode
67
+    // par ex. dans inc_texte, inc_filtres ou mes_fonctions
68
+    elseif ($f = chercher_filtre($fonc)) {
69
+
70
+        // cas particulier : le filtre |set doit acceder a la $Pile
71
+        // proto: filtre_set(&$Pile, $val, $args...)
72
+        if (strpbrk($f, ':')) { // Class::method
73
+            $refl = new ReflectionMethod($f);
74
+        } else {
75
+            $refl = new ReflectionFunction($f);
76
+        }
77
+        $refs = $refl->getParameters();
78
+        if (isset($refs[0]) and $refs[0]->name == 'Pile') {
79
+            $code = "$f(\$Pile,$code$arglist)";
80
+            $nb_arg_gauche = 2; // la balise à laquelle s'applique le filtre + $Pile
81
+        } else {
82
+            $code = "$f($code$arglist)";
83
+            $nb_arg_gauche = 1; // la balise à laquelle s'applique le filtre
84
+        }
85
+        $nb_args_f = $nb_arg_gauche+$nb_arg_droite;
86
+        $min_f = $refl->getNumberOfRequiredParameters();
87
+        if (($nb_args_f < $min_f)) {
88
+            $msg_args = ['filtre' => texte_script ($fonc), 'nb'=> $min_f - $nb_args_f];
89
+            erreur_squelette ([ 'zbug_erreur_filtre_nbarg_min', $msg_args], $p);
90
+        }
91
+    }
92
+    // le filtre n'existe pas,
93
+    // on le notifie
94
+    else {
95
+        erreur_squelette(array('zbug_erreur_filtre', array('filtre' => texte_script($fonc))), $p);
96
+    }
97
+
98
+    return $code;
99 99
 }
100 100
 
101 101
 // Calculer un <INCLURE(xx.php)>
@@ -119,15 +119,15 @@  discard block
 block discarded – undo
119 119
  * @return string
120 120
  */
121 121
 function sandbox_composer_inclure_php($fichier, &$p, $_contexte) {
122
-	$compil = texte_script(memoriser_contexte_compil($p));
123
-	// si inexistant, on essaiera a l'execution
124
-	if ($path = find_in_path($fichier)) {
125
-		$path = "\"$path\"";
126
-	} else {
127
-		$path = "find_in_path(\"$fichier\")";
128
-	}
129
-
130
-	return sprintf(CODE_INCLURE_SCRIPT, $path, $fichier, $compil, $_contexte);
122
+    $compil = texte_script(memoriser_contexte_compil($p));
123
+    // si inexistant, on essaiera a l'execution
124
+    if ($path = find_in_path($fichier)) {
125
+        $path = "\"$path\"";
126
+    } else {
127
+        $path = "find_in_path(\"$fichier\")";
128
+    }
129
+
130
+    return sprintf(CODE_INCLURE_SCRIPT, $path, $fichier, $compil, $_contexte);
131 131
 }
132 132
 
133 133
 /**
@@ -139,19 +139,19 @@  discard block
 block discarded – undo
139 139
  * @return string
140 140
  */
141 141
 function sandbox_composer_interdire_scripts($code, &$p) {
142
-	// Securite
143
-	if ($p->interdire_scripts
144
-		and $p->etoile != '**'
145
-	) {
146
-		if (!preg_match("/^sinon[(](.*),'([^']*)'[)]$/", $code, $r)) {
147
-			$code = "interdire_scripts($code)";
148
-		} else {
149
-			$code = interdire_scripts($r[2]);
150
-			$code = "sinon(interdire_scripts($r[1]),'$code')";
151
-		}
152
-	}
153
-
154
-	return $code;
142
+    // Securite
143
+    if ($p->interdire_scripts
144
+        and $p->etoile != '**'
145
+    ) {
146
+        if (!preg_match("/^sinon[(](.*),'([^']*)'[)]$/", $code, $r)) {
147
+            $code = "interdire_scripts($code)";
148
+        } else {
149
+            $code = interdire_scripts($r[2]);
150
+            $code = "sinon(interdire_scripts($r[1]),'$code')";
151
+        }
152
+    }
153
+
154
+    return $code;
155 155
 }
156 156
 
157 157
 
@@ -170,30 +170,30 @@  discard block
 block discarded – undo
170 170
  * @return mixed|string
171 171
  */
172 172
 function sandbox_filtrer_squelette($skel, $corps, $filtres) {
173
-	$series_filtres = func_get_args();
174
-	array_shift($series_filtres);// skel
175
-	array_shift($series_filtres);// corps
176
-
177
-	// proteger les <INCLUDE> et tous les morceaux de php licites
178
-	if ($skel['process_ins'] == 'php') {
179
-		$corps = preg_replace_callback(',<[?](\s|php|=).*[?]>,UimsS', 'echapper_php_callback', $corps);
180
-	}
181
-
182
-	// recuperer les couples de remplacement
183
-	$replace = echapper_php_callback();
184
-
185
-	foreach ($series_filtres as $filtres) {
186
-		if (count($filtres)) {
187
-			foreach ($filtres as $filtre) {
188
-				if ($filtre and $f = chercher_filtre($filtre)) {
189
-					$corps = $f($corps);
190
-				}
191
-			}
192
-		}
193
-	}
194
-
195
-	// restaurer les echappements
196
-	return str_replace($replace[0], $replace[1], $corps);
173
+    $series_filtres = func_get_args();
174
+    array_shift($series_filtres);// skel
175
+    array_shift($series_filtres);// corps
176
+
177
+    // proteger les <INCLUDE> et tous les morceaux de php licites
178
+    if ($skel['process_ins'] == 'php') {
179
+        $corps = preg_replace_callback(',<[?](\s|php|=).*[?]>,UimsS', 'echapper_php_callback', $corps);
180
+    }
181
+
182
+    // recuperer les couples de remplacement
183
+    $replace = echapper_php_callback();
184
+
185
+    foreach ($series_filtres as $filtres) {
186
+        if (count($filtres)) {
187
+            foreach ($filtres as $filtre) {
188
+                if ($filtre and $f = chercher_filtre($filtre)) {
189
+                    $corps = $f($corps);
190
+                }
191
+            }
192
+        }
193
+    }
194
+
195
+    // restaurer les echappements
196
+    return str_replace($replace[0], $replace[1], $corps);
197 197
 }
198 198
 
199 199
 
@@ -212,21 +212,21 @@  discard block
 block discarded – undo
212 212
  *     - array : Liste( liste des codes PHP, liste des substitutions )
213 213
  **/
214 214
 function echapper_php_callback($r = null) {
215
-	static $src = array();
216
-	static $dst = array();
215
+    static $src = array();
216
+    static $dst = array();
217 217
 
218
-	// si on recoit un tableau, on est en mode echappement
219
-	// on enregistre le code a echapper dans dst, et le code echappe dans src
220
-	if (is_array($r)) {
221
-		$dst[] = $r[0];
218
+    // si on recoit un tableau, on est en mode echappement
219
+    // on enregistre le code a echapper dans dst, et le code echappe dans src
220
+    if (is_array($r)) {
221
+        $dst[] = $r[0];
222 222
 
223
-		return $src[] = '___' . md5($r[0]) . '___';
224
-	}
223
+        return $src[] = '___' . md5($r[0]) . '___';
224
+    }
225 225
 
226
-	// si on recoit pas un tableau, on renvoit les couples de substitution
227
-	// et on RAZ les remplacements
228
-	$r = array($src, $dst);
229
-	$src = $dst = array();
226
+    // si on recoit pas un tableau, on renvoit les couples de substitution
227
+    // et on RAZ les remplacements
228
+    $r = array($src, $dst);
229
+    $src = $dst = array();
230 230
 
231
-	return $r;
231
+    return $r;
232 232
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
  *     Texte
42 42
  */
43 43
 function sandbox_composer_texte($texte, &$p) {
44
-	$code = "'" . str_replace(array("\\", "'"), array("\\\\", "\\'"), $texte) . "'";
44
+	$code = "'".str_replace(array("\\", "'"), array("\\\\", "\\'"), $texte)."'";
45 45
 
46 46
 	return $code;
47 47
 }
@@ -58,7 +58,7 @@  discard block
 block discarded – undo
58 58
  *     Balise qui appelle ce filtre
59 59
  * @return string
60 60
  */
61
-function sandbox_composer_filtre($fonc, $code, $arglist, &$p, $nb_arg_droite=1000) : string {
61
+function sandbox_composer_filtre($fonc, $code, $arglist, &$p, $nb_arg_droite = 1000) : string {
62 62
 	if (isset($GLOBALS['spip_matrice'][$fonc])) {
63 63
 		$code = "filtrer('$fonc',$code$arglist)";
64 64
 	}
@@ -82,11 +82,11 @@  discard block
 block discarded – undo
82 82
 			$code = "$f($code$arglist)";
83 83
 			$nb_arg_gauche = 1; // la balise à laquelle s'applique le filtre
84 84
 		}
85
-		$nb_args_f = $nb_arg_gauche+$nb_arg_droite;
85
+		$nb_args_f = $nb_arg_gauche + $nb_arg_droite;
86 86
 		$min_f = $refl->getNumberOfRequiredParameters();
87 87
 		if (($nb_args_f < $min_f)) {
88
-			$msg_args = ['filtre' => texte_script ($fonc), 'nb'=> $min_f - $nb_args_f];
89
-			erreur_squelette ([ 'zbug_erreur_filtre_nbarg_min', $msg_args], $p);
88
+			$msg_args = ['filtre' => texte_script($fonc), 'nb'=> $min_f - $nb_args_f];
89
+			erreur_squelette(['zbug_erreur_filtre_nbarg_min', $msg_args], $p);
90 90
 		}
91 91
 	}
92 92
 	// le filtre n'existe pas,
@@ -171,8 +171,8 @@  discard block
 block discarded – undo
171 171
  */
172 172
 function sandbox_filtrer_squelette($skel, $corps, $filtres) {
173 173
 	$series_filtres = func_get_args();
174
-	array_shift($series_filtres);// skel
175
-	array_shift($series_filtres);// corps
174
+	array_shift($series_filtres); // skel
175
+	array_shift($series_filtres); // corps
176 176
 
177 177
 	// proteger les <INCLUDE> et tous les morceaux de php licites
178 178
 	if ($skel['process_ins'] == 'php') {
@@ -220,7 +220,7 @@  discard block
 block discarded – undo
220 220
 	if (is_array($r)) {
221 221
 		$dst[] = $r[0];
222 222
 
223
-		return $src[] = '___' . md5($r[0]) . '___';
223
+		return $src[] = '___'.md5($r[0]).'___';
224 224
 	}
225 225
 
226 226
 	// si on recoit pas un tableau, on renvoit les couples de substitution
Please login to merge, or discard this patch.