Completed
Push — master ( fb0017...92433c )
by cam
01:14
created
ecrire/lang/spip_de.php 1 patch
Indentation   +673 added lines, -673 removed lines patch added patch discarded remove patch
@@ -4,248 +4,248 @@  discard block
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'access_interface_graphique' => 'Zurück zur vollständigen grafischen Oberfläche',
14
-	'access_mode_texte' => 'vereinfachtes Interface als Textversion anzeigen',
15
-	'admin_debug' => 'Debug',
16
-	'admin_modifier_article' => 'Artikel bearbeiten',
17
-	'admin_modifier_auteur' => 'Autor bearbeiten',
18
-	'admin_modifier_breve' => 'Meldung bearbeiten',
19
-	'admin_modifier_mot' => 'Schlagwort bearbeiten',
20
-	'admin_modifier_rubrique' => 'Rubrik bearbeiten',
21
-	'admin_recalculer' => 'Seite aus Cache löschen',
22
-	'afficher_calendrier' => 'Kalender anzeigen',
23
-	'afficher_trad' => 'Übersetzungen anzeigen',
24
-	'alerte_maj_impossible' => '<b>Achtung!</b> Ihre SQL Datenbank konnte nicht auf die Version @version@ umgestellt werden. Möglicherweise gibt es ein Problem mit den Zugriffsrechten. Bitte setzen Sie sich mit Ihrem Webspace-Provider in Verbindung.',
25
-	'alerte_modif_info_concourante' => 'Achtung - diese Information wurde auf anderem Weg modifiziert. Der aktuelle Wert lautet:',
26
-	'analyse_xml' => 'XML-Analyse',
27
-	'annuler' => 'Abbrechen',
28
-	'antispam_champ_vide' => 'Bitte lassen Sie dieses Feld leer:',
29
-	'articles_recents' => 'Die neuesten Artikel',
30
-	'attention_champ_mini_nb_caractères' => 'Achtung! Mindestens @nb@ Zeichen',
31
-	'avis_1_erreur_saisie' => 'Ihre Eingabe enthält einen Fehler, bitte überprüfen Sie die Informationen.',
32
-	'avis_archive_incorrect' => 'Die archivierte Datei ist keine SPIP-Datei',
33
-	'avis_archive_invalide' => 'Die archivierte Datei ist keine SPIP-Datei',
34
-	'avis_attention' => 'ACHTUNG!',
35
-	'avis_champ_incorrect_type_objet' => 'Falscher Objektname @name@ für Objekt vom Typ @type@',
36
-	'avis_colonne_inexistante' => 'Die Spalte @col@ existiert nicht',
37
-	'avis_erreur' => 'Fehler: Siehe unten',
38
-	'avis_erreur_connexion' => 'Verbindungsfehler',
39
-	'avis_erreur_cookie' => 'Cookie-Problem',
40
-	'avis_erreur_fonction_contexte' => 'Programmfehler. Diese Funktion darf nicht in diesem Zusammenhang aufgerufen werden.',
41
-	'avis_erreur_mysql' => 'SQL-Fehler',
42
-	'avis_erreur_sauvegarde' => 'Fehler in der Sicherung (@type@ @id_objet@) ! ',
43
-	'avis_erreur_visiteur' => 'Ein Problem beim Zugang zum Redaktionssystem ist aufgetreten.',
44
-	'avis_nb_erreurs_saisie' => 'Ihre Eingabe enthält @nb@ Fehler, bitte überprüfen Sie die Informationen.',
12
+    // A
13
+    'access_interface_graphique' => 'Zurück zur vollständigen grafischen Oberfläche',
14
+    'access_mode_texte' => 'vereinfachtes Interface als Textversion anzeigen',
15
+    'admin_debug' => 'Debug',
16
+    'admin_modifier_article' => 'Artikel bearbeiten',
17
+    'admin_modifier_auteur' => 'Autor bearbeiten',
18
+    'admin_modifier_breve' => 'Meldung bearbeiten',
19
+    'admin_modifier_mot' => 'Schlagwort bearbeiten',
20
+    'admin_modifier_rubrique' => 'Rubrik bearbeiten',
21
+    'admin_recalculer' => 'Seite aus Cache löschen',
22
+    'afficher_calendrier' => 'Kalender anzeigen',
23
+    'afficher_trad' => 'Übersetzungen anzeigen',
24
+    'alerte_maj_impossible' => '<b>Achtung!</b> Ihre SQL Datenbank konnte nicht auf die Version @version@ umgestellt werden. Möglicherweise gibt es ein Problem mit den Zugriffsrechten. Bitte setzen Sie sich mit Ihrem Webspace-Provider in Verbindung.',
25
+    'alerte_modif_info_concourante' => 'Achtung - diese Information wurde auf anderem Weg modifiziert. Der aktuelle Wert lautet:',
26
+    'analyse_xml' => 'XML-Analyse',
27
+    'annuler' => 'Abbrechen',
28
+    'antispam_champ_vide' => 'Bitte lassen Sie dieses Feld leer:',
29
+    'articles_recents' => 'Die neuesten Artikel',
30
+    'attention_champ_mini_nb_caractères' => 'Achtung! Mindestens @nb@ Zeichen',
31
+    'avis_1_erreur_saisie' => 'Ihre Eingabe enthält einen Fehler, bitte überprüfen Sie die Informationen.',
32
+    'avis_archive_incorrect' => 'Die archivierte Datei ist keine SPIP-Datei',
33
+    'avis_archive_invalide' => 'Die archivierte Datei ist keine SPIP-Datei',
34
+    'avis_attention' => 'ACHTUNG!',
35
+    'avis_champ_incorrect_type_objet' => 'Falscher Objektname @name@ für Objekt vom Typ @type@',
36
+    'avis_colonne_inexistante' => 'Die Spalte @col@ existiert nicht',
37
+    'avis_erreur' => 'Fehler: Siehe unten',
38
+    'avis_erreur_connexion' => 'Verbindungsfehler',
39
+    'avis_erreur_cookie' => 'Cookie-Problem',
40
+    'avis_erreur_fonction_contexte' => 'Programmfehler. Diese Funktion darf nicht in diesem Zusammenhang aufgerufen werden.',
41
+    'avis_erreur_mysql' => 'SQL-Fehler',
42
+    'avis_erreur_sauvegarde' => 'Fehler in der Sicherung (@type@ @id_objet@) ! ',
43
+    'avis_erreur_visiteur' => 'Ein Problem beim Zugang zum Redaktionssystem ist aufgetreten.',
44
+    'avis_nb_erreurs_saisie' => 'Ihre Eingabe enthält @nb@ Fehler, bitte überprüfen Sie die Informationen.',
45 45
 
46
-	// B
47
-	'barre_a_accent_grave' => 'Grosses A mit accent grave einfügen',
48
-	'barre_aide' => 'Verwende Sie die typografischen Kürzel, um Ihre Seite zu formatieren.',
49
-	'barre_e_accent_aigu' => 'Grosses E mit accent aigu einfügen',
50
-	'barre_eo' => 'Ein E in das O einfügen',
51
-	'barre_eo_maj' => 'Ein E in ein grosses O einfügen',
52
-	'barre_euro' => 'Symbol € einfügen',
53
-	'barre_gras' => '{{fett}} setzen',
54
-	'barre_guillemets' => 'In „Anführungszeichen“ setzen',
55
-	'barre_guillemets_simples' => 'In ‚Anführungszeichen‘ setzen',
56
-	'barre_intertitre' => 'in {{{Zwischentitel}}} umwandeln',
57
-	'barre_italic' => 'in {kursive} Schrift setzen',
58
-	'barre_lien' => 'in [Hyperlink->http://...] umwandeln',
59
-	'barre_lien_input' => 'Bitte geben Sie die Adresse Ihres Links an. Sie können das Format http://www.meinewebsite.com wählen, oder einfach die Nummer eines Artikels dieser Website angeben.',
60
-	'barre_note' => 'In [[Fussnote]] umwandeln',
61
-	'barre_paragraphe' => 'Neuen Absatz anlegen',
62
-	'barre_quote' => '<quote>Nachricht zitieren</quote>',
63
-	'bouton_changer' => 'Ändern',
64
-	'bouton_chercher' => 'Suchen',
65
-	'bouton_choisir' => 'Auswählen',
66
-	'bouton_deplacer' => 'Verschieben',
67
-	'bouton_download' => 'Runterladen',
68
-	'bouton_enregistrer' => 'Speichern',
69
-	'bouton_radio_desactiver_messagerie_interne' => 'Interne Nachrichten abschalten',
70
-	'bouton_radio_envoi_annonces' => 'Editorische Ankündigungen verschicken',
71
-	'bouton_radio_non_envoi_annonces' => 'Keine Ankündigungen verschicken',
72
-	'bouton_radio_non_envoi_liste_nouveautes' => 'Keine Liste der Neuigkeiten verschicken',
73
-	'bouton_recharger_page' => 'Seite neu laden',
74
-	'bouton_telecharger' => 'Runterladen',
75
-	'bouton_upload' => 'Hochladen',
76
-	'bouton_valider' => 'Bestätigen',
46
+    // B
47
+    'barre_a_accent_grave' => 'Grosses A mit accent grave einfügen',
48
+    'barre_aide' => 'Verwende Sie die typografischen Kürzel, um Ihre Seite zu formatieren.',
49
+    'barre_e_accent_aigu' => 'Grosses E mit accent aigu einfügen',
50
+    'barre_eo' => 'Ein E in das O einfügen',
51
+    'barre_eo_maj' => 'Ein E in ein grosses O einfügen',
52
+    'barre_euro' => 'Symbol € einfügen',
53
+    'barre_gras' => '{{fett}} setzen',
54
+    'barre_guillemets' => 'In „Anführungszeichen“ setzen',
55
+    'barre_guillemets_simples' => 'In ‚Anführungszeichen‘ setzen',
56
+    'barre_intertitre' => 'in {{{Zwischentitel}}} umwandeln',
57
+    'barre_italic' => 'in {kursive} Schrift setzen',
58
+    'barre_lien' => 'in [Hyperlink->http://...] umwandeln',
59
+    'barre_lien_input' => 'Bitte geben Sie die Adresse Ihres Links an. Sie können das Format http://www.meinewebsite.com wählen, oder einfach die Nummer eines Artikels dieser Website angeben.',
60
+    'barre_note' => 'In [[Fussnote]] umwandeln',
61
+    'barre_paragraphe' => 'Neuen Absatz anlegen',
62
+    'barre_quote' => '<quote>Nachricht zitieren</quote>',
63
+    'bouton_changer' => 'Ändern',
64
+    'bouton_chercher' => 'Suchen',
65
+    'bouton_choisir' => 'Auswählen',
66
+    'bouton_deplacer' => 'Verschieben',
67
+    'bouton_download' => 'Runterladen',
68
+    'bouton_enregistrer' => 'Speichern',
69
+    'bouton_radio_desactiver_messagerie_interne' => 'Interne Nachrichten abschalten',
70
+    'bouton_radio_envoi_annonces' => 'Editorische Ankündigungen verschicken',
71
+    'bouton_radio_non_envoi_annonces' => 'Keine Ankündigungen verschicken',
72
+    'bouton_radio_non_envoi_liste_nouveautes' => 'Keine Liste der Neuigkeiten verschicken',
73
+    'bouton_recharger_page' => 'Seite neu laden',
74
+    'bouton_telecharger' => 'Runterladen',
75
+    'bouton_upload' => 'Hochladen',
76
+    'bouton_valider' => 'Bestätigen',
77 77
 
78
-	// C
79
-	'cal_apresmidi' => 'nachmittags',
80
-	'cal_jour_entier' => 'ganztägig',
81
-	'cal_matin' => 'morgens',
82
-	'cal_par_jour' => 'Tageskalender',
83
-	'cal_par_mois' => 'Monatskalender',
84
-	'cal_par_semaine' => 'Wochenkalender',
85
-	'choix_couleur_interface' => 'Farbe',
86
-	'choix_interface' => 'Oberflächenfarbe',
87
-	'colonne' => 'Spalte',
88
-	'confirm_changer_statut' => 'Achtung, Sie werden den Status dieses Elementes ändern. Wollen Sie fortfahren?',
89
-	'correcte' => 'korrekt',
78
+    // C
79
+    'cal_apresmidi' => 'nachmittags',
80
+    'cal_jour_entier' => 'ganztägig',
81
+    'cal_matin' => 'morgens',
82
+    'cal_par_jour' => 'Tageskalender',
83
+    'cal_par_mois' => 'Monatskalender',
84
+    'cal_par_semaine' => 'Wochenkalender',
85
+    'choix_couleur_interface' => 'Farbe',
86
+    'choix_interface' => 'Oberflächenfarbe',
87
+    'colonne' => 'Spalte',
88
+    'confirm_changer_statut' => 'Achtung, Sie werden den Status dieses Elementes ändern. Wollen Sie fortfahren?',
89
+    'correcte' => 'korrekt',
90 90
 
91
-	// D
92
-	'date_aujourdhui' => 'heute',
93
-	'date_avant_jc' => 'v.u.Z.',
94
-	'date_dans' => 'in @delai@',
95
-	'date_de_mois_1' => '@j@ @nommois@',
96
-	'date_de_mois_10' => '@j@ @nommois@',
97
-	'date_de_mois_11' => '@j@ @nommois@',
98
-	'date_de_mois_12' => '@j@ @nommois@',
99
-	'date_de_mois_2' => '@j@ @nommois@',
100
-	'date_de_mois_3' => '@j@ @nommois@',
101
-	'date_de_mois_4' => '@j@ @nommois@',
102
-	'date_de_mois_5' => '@j@ @nommois@',
103
-	'date_de_mois_6' => '@j@ @nommois@',
104
-	'date_de_mois_7' => '@j@ @nommois@',
105
-	'date_de_mois_8' => '@j@ @nommois@',
106
-	'date_de_mois_9' => '@j@ @nommois@',
107
-	'date_demain' => 'morgen',
108
-	'date_fmt_heures_minutes' => '@h@ Uhr @m@ Minuten',
109
-	'date_fmt_heures_minutes_court' => '@h@:@m@',
110
-	'date_fmt_jour' => '@nomjour@ @jour@',
111
-	'date_fmt_jour_heure' => '@jour@ um @heure@',
112
-	'date_fmt_jour_heure_debut_fin' => '@jour@ von @heure_debut@ bis @heure_fin@',
113
-	'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ von @heure_debut@@dtabbr@ bis @dtend@@heure_fin@@dtabbr@',
114
-	'date_fmt_jour_mois' => '@jour@. @nommois@',
115
-	'date_fmt_jour_mois_annee' => '@jour@. @nommois@ @annee@',
116
-	'date_fmt_mois_annee' => '@nommois@ @annee@',
117
-	'date_fmt_nomjour' => '@nomjour@ @date@.',
118
-	'date_fmt_nomjour_date' => 'am @nomjour@ @date@',
119
-	'date_fmt_periode' => 'Vom @date_debut@ bis zum @date_fin@',
120
-	'date_fmt_periode_abbr' => 'Vom @dtart@@date_debut@@dtabbr@ bis zum @dtend@@date_fin@@dtabbr@',
121
-	'date_fmt_periode_from' => 'Von',
122
-	'date_fmt_periode_to' => 'bis',
123
-	'date_fmt_saison_annee' => '@saison@ @annee@',
124
-	'date_heures' => 'Stunden',
125
-	'date_hier' => 'gestern',
126
-	'date_il_y_a' => 'vor @delai@',
127
-	'date_jnum1' => '1',
128
-	'date_jnum10' => '10',
129
-	'date_jnum11' => '11',
130
-	'date_jnum12' => '12',
131
-	'date_jnum13' => '13',
132
-	'date_jnum14' => '14',
133
-	'date_jnum15' => '15',
134
-	'date_jnum16' => '16',
135
-	'date_jnum17' => '17',
136
-	'date_jnum18' => '18',
137
-	'date_jnum19' => '19',
138
-	'date_jnum2' => '2',
139
-	'date_jnum20' => '20',
140
-	'date_jnum21' => '21',
141
-	'date_jnum22' => '22',
142
-	'date_jnum23' => '23',
143
-	'date_jnum24' => '24',
144
-	'date_jnum25' => '25',
145
-	'date_jnum26' => '26',
146
-	'date_jnum27' => '27',
147
-	'date_jnum28' => '28',
148
-	'date_jnum29' => '29',
149
-	'date_jnum3' => '3',
150
-	'date_jnum30' => '30',
151
-	'date_jnum31' => '31',
152
-	'date_jnum4' => '4',
153
-	'date_jnum5' => '5',
154
-	'date_jnum6' => '6',
155
-	'date_jnum7' => '7',
156
-	'date_jnum8' => '8',
157
-	'date_jnum9' => '9',
158
-	'date_jour_1' => 'Sonntag',
159
-	'date_jour_1_abbr' => 'So.',
160
-	'date_jour_1_initiale' => 'S',
161
-	'date_jour_2' => 'Montag',
162
-	'date_jour_2_abbr' => 'Mo.',
163
-	'date_jour_2_initiale' => 'M',
164
-	'date_jour_3' => 'Dienstag',
165
-	'date_jour_3_abbr' => 'Di.',
166
-	'date_jour_3_initiale' => 'D',
167
-	'date_jour_4' => 'Mittwoch',
168
-	'date_jour_4_abbr' => 'Mi.',
169
-	'date_jour_4_initiale' => 'M',
170
-	'date_jour_5' => 'Donnerstag',
171
-	'date_jour_5_abbr' => 'Do.',
172
-	'date_jour_5_initiale' => 'D',
173
-	'date_jour_6' => 'Freitag',
174
-	'date_jour_6_abbr' => 'Fr.',
175
-	'date_jour_6_initiale' => 'F',
176
-	'date_jour_7' => 'Samstag',
177
-	'date_jour_7_abbr' => 'Sa.',
178
-	'date_jour_7_initiale' => 'S',
179
-	'date_jours' => 'Tagen',
180
-	'date_minutes' => 'Minuten',
181
-	'date_mois' => 'Monaten',
182
-	'date_mois_1' => 'Januar',
183
-	'date_mois_10' => 'Oktober',
184
-	'date_mois_10_abbr' => 'Okt.',
185
-	'date_mois_11' => 'November',
186
-	'date_mois_11_abbr' => 'Nev.',
187
-	'date_mois_12' => 'Dezember',
188
-	'date_mois_12_abbr' => 'Dez.',
189
-	'date_mois_1_abbr' => 'Jan.',
190
-	'date_mois_2' => 'Februar',
191
-	'date_mois_2_abbr' => 'Feb.',
192
-	'date_mois_3' => 'März',
193
-	'date_mois_3_abbr' => 'Mrz.',
194
-	'date_mois_4' => 'April',
195
-	'date_mois_4_abbr' => 'Apr.',
196
-	'date_mois_5' => 'Mai',
197
-	'date_mois_5_abbr' => 'Mai',
198
-	'date_mois_6' => 'Juni',
199
-	'date_mois_6_abbr' => 'Jun.',
200
-	'date_mois_7' => 'Juli',
201
-	'date_mois_7_abbr' => 'Juli',
202
-	'date_mois_8' => 'August',
203
-	'date_mois_8_abbr' => 'Aug.',
204
-	'date_mois_9' => 'September',
205
-	'date_mois_9_abbr' => 'Sept.',
206
-	'date_saison_1' => 'Winter',
207
-	'date_saison_2' => 'Frühling',
208
-	'date_saison_3' => 'Sommer',
209
-	'date_saison_4' => 'unabhängig',
210
-	'date_secondes' => 'Sekunden',
211
-	'date_semaines' => 'Wochen',
212
-	'date_un_mois' => 'Monat',
213
-	'date_une_heure' => 'Stunde',
214
-	'date_une_minute' => 'Minute',
215
-	'date_une_seconde' => 'Sekunde',
216
-	'date_une_semaine' => 'Woche',
217
-	'dirs_commencer' => 'um die Installation wirklich zu starten',
218
-	'dirs_preliminaire' => 'Vorbereitung: <b>Berechtigungen einstellen</b>',
219
-	'dirs_probleme_droits' => 'Problem mit den Berechtigungen',
220
-	'dirs_repertoires_absents' => '<p><b>Folgende Verzeichnisse wurden nicht gefunden:</b></p><ul>@bad_dirs@</ul>
91
+    // D
92
+    'date_aujourdhui' => 'heute',
93
+    'date_avant_jc' => 'v.u.Z.',
94
+    'date_dans' => 'in @delai@',
95
+    'date_de_mois_1' => '@j@ @nommois@',
96
+    'date_de_mois_10' => '@j@ @nommois@',
97
+    'date_de_mois_11' => '@j@ @nommois@',
98
+    'date_de_mois_12' => '@j@ @nommois@',
99
+    'date_de_mois_2' => '@j@ @nommois@',
100
+    'date_de_mois_3' => '@j@ @nommois@',
101
+    'date_de_mois_4' => '@j@ @nommois@',
102
+    'date_de_mois_5' => '@j@ @nommois@',
103
+    'date_de_mois_6' => '@j@ @nommois@',
104
+    'date_de_mois_7' => '@j@ @nommois@',
105
+    'date_de_mois_8' => '@j@ @nommois@',
106
+    'date_de_mois_9' => '@j@ @nommois@',
107
+    'date_demain' => 'morgen',
108
+    'date_fmt_heures_minutes' => '@h@ Uhr @m@ Minuten',
109
+    'date_fmt_heures_minutes_court' => '@h@:@m@',
110
+    'date_fmt_jour' => '@nomjour@ @jour@',
111
+    'date_fmt_jour_heure' => '@jour@ um @heure@',
112
+    'date_fmt_jour_heure_debut_fin' => '@jour@ von @heure_debut@ bis @heure_fin@',
113
+    'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ von @heure_debut@@dtabbr@ bis @dtend@@heure_fin@@dtabbr@',
114
+    'date_fmt_jour_mois' => '@jour@. @nommois@',
115
+    'date_fmt_jour_mois_annee' => '@jour@. @nommois@ @annee@',
116
+    'date_fmt_mois_annee' => '@nommois@ @annee@',
117
+    'date_fmt_nomjour' => '@nomjour@ @date@.',
118
+    'date_fmt_nomjour_date' => 'am @nomjour@ @date@',
119
+    'date_fmt_periode' => 'Vom @date_debut@ bis zum @date_fin@',
120
+    'date_fmt_periode_abbr' => 'Vom @dtart@@date_debut@@dtabbr@ bis zum @dtend@@date_fin@@dtabbr@',
121
+    'date_fmt_periode_from' => 'Von',
122
+    'date_fmt_periode_to' => 'bis',
123
+    'date_fmt_saison_annee' => '@saison@ @annee@',
124
+    'date_heures' => 'Stunden',
125
+    'date_hier' => 'gestern',
126
+    'date_il_y_a' => 'vor @delai@',
127
+    'date_jnum1' => '1',
128
+    'date_jnum10' => '10',
129
+    'date_jnum11' => '11',
130
+    'date_jnum12' => '12',
131
+    'date_jnum13' => '13',
132
+    'date_jnum14' => '14',
133
+    'date_jnum15' => '15',
134
+    'date_jnum16' => '16',
135
+    'date_jnum17' => '17',
136
+    'date_jnum18' => '18',
137
+    'date_jnum19' => '19',
138
+    'date_jnum2' => '2',
139
+    'date_jnum20' => '20',
140
+    'date_jnum21' => '21',
141
+    'date_jnum22' => '22',
142
+    'date_jnum23' => '23',
143
+    'date_jnum24' => '24',
144
+    'date_jnum25' => '25',
145
+    'date_jnum26' => '26',
146
+    'date_jnum27' => '27',
147
+    'date_jnum28' => '28',
148
+    'date_jnum29' => '29',
149
+    'date_jnum3' => '3',
150
+    'date_jnum30' => '30',
151
+    'date_jnum31' => '31',
152
+    'date_jnum4' => '4',
153
+    'date_jnum5' => '5',
154
+    'date_jnum6' => '6',
155
+    'date_jnum7' => '7',
156
+    'date_jnum8' => '8',
157
+    'date_jnum9' => '9',
158
+    'date_jour_1' => 'Sonntag',
159
+    'date_jour_1_abbr' => 'So.',
160
+    'date_jour_1_initiale' => 'S',
161
+    'date_jour_2' => 'Montag',
162
+    'date_jour_2_abbr' => 'Mo.',
163
+    'date_jour_2_initiale' => 'M',
164
+    'date_jour_3' => 'Dienstag',
165
+    'date_jour_3_abbr' => 'Di.',
166
+    'date_jour_3_initiale' => 'D',
167
+    'date_jour_4' => 'Mittwoch',
168
+    'date_jour_4_abbr' => 'Mi.',
169
+    'date_jour_4_initiale' => 'M',
170
+    'date_jour_5' => 'Donnerstag',
171
+    'date_jour_5_abbr' => 'Do.',
172
+    'date_jour_5_initiale' => 'D',
173
+    'date_jour_6' => 'Freitag',
174
+    'date_jour_6_abbr' => 'Fr.',
175
+    'date_jour_6_initiale' => 'F',
176
+    'date_jour_7' => 'Samstag',
177
+    'date_jour_7_abbr' => 'Sa.',
178
+    'date_jour_7_initiale' => 'S',
179
+    'date_jours' => 'Tagen',
180
+    'date_minutes' => 'Minuten',
181
+    'date_mois' => 'Monaten',
182
+    'date_mois_1' => 'Januar',
183
+    'date_mois_10' => 'Oktober',
184
+    'date_mois_10_abbr' => 'Okt.',
185
+    'date_mois_11' => 'November',
186
+    'date_mois_11_abbr' => 'Nev.',
187
+    'date_mois_12' => 'Dezember',
188
+    'date_mois_12_abbr' => 'Dez.',
189
+    'date_mois_1_abbr' => 'Jan.',
190
+    'date_mois_2' => 'Februar',
191
+    'date_mois_2_abbr' => 'Feb.',
192
+    'date_mois_3' => 'März',
193
+    'date_mois_3_abbr' => 'Mrz.',
194
+    'date_mois_4' => 'April',
195
+    'date_mois_4_abbr' => 'Apr.',
196
+    'date_mois_5' => 'Mai',
197
+    'date_mois_5_abbr' => 'Mai',
198
+    'date_mois_6' => 'Juni',
199
+    'date_mois_6_abbr' => 'Jun.',
200
+    'date_mois_7' => 'Juli',
201
+    'date_mois_7_abbr' => 'Juli',
202
+    'date_mois_8' => 'August',
203
+    'date_mois_8_abbr' => 'Aug.',
204
+    'date_mois_9' => 'September',
205
+    'date_mois_9_abbr' => 'Sept.',
206
+    'date_saison_1' => 'Winter',
207
+    'date_saison_2' => 'Frühling',
208
+    'date_saison_3' => 'Sommer',
209
+    'date_saison_4' => 'unabhängig',
210
+    'date_secondes' => 'Sekunden',
211
+    'date_semaines' => 'Wochen',
212
+    'date_un_mois' => 'Monat',
213
+    'date_une_heure' => 'Stunde',
214
+    'date_une_minute' => 'Minute',
215
+    'date_une_seconde' => 'Sekunde',
216
+    'date_une_semaine' => 'Woche',
217
+    'dirs_commencer' => 'um die Installation wirklich zu starten',
218
+    'dirs_preliminaire' => 'Vorbereitung: <b>Berechtigungen einstellen</b>',
219
+    'dirs_probleme_droits' => 'Problem mit den Berechtigungen',
220
+    'dirs_repertoires_absents' => '<p><b>Folgende Verzeichnisse wurden nicht gefunden:</b></p><ul>@bad_dirs@</ul>
221 221
   <p>Das liegt wahrscheinlich an unzutreffender Gross- und Kleinschreibung.
222 222
   Überprüfen Sie bitte die genaue Schreibweise der oben stehenden Verzeichnisse,
223 223
   sollten Sie Abweichungen feststellen, benennen Sie bitte mit Ihrem FTP-Programm die betreffenden Verzeichnisse um.</p>
224 224
   <p>Danach können Sie ',
225
-	'dirs_repertoires_suivants' => '<p><b>In die folgenden Verzeichnisse kann nicht geschrieben werden:</b></p><ul>@bad_dirs@</ul>
225
+    'dirs_repertoires_suivants' => '<p><b>In die folgenden Verzeichnisse kann nicht geschrieben werden:</b></p><ul>@bad_dirs@</ul>
226 226
 <p>Um das Problem zu lösen, verwenden Sie bitte Ihren FTP-Client, um die Zugriffsrechte für diese
227 227
 Verzeichnisse zu setzen.Die Installationsanleitung erläutert die Details dazu.</p>
228 228
 <p>Wenn Sie diesen Vorgang abgeschlossen haben, können Sie',
229
-	'double_occurrence' => 'Dublette von @balise@',
229
+    'double_occurrence' => 'Dublette von @balise@',
230 230
 
231
-	// E
232
-	'en_cours' => 'läuft',
233
-	'envoi_via_le_site' => 'Gesendet über Website ',
234
-	'erreur' => 'Fehler',
235
-	'erreur_balise_non_fermee' => 'Letzter Tag nicht geschlossen:',
236
-	'erreur_technique_ajaxform' => 'Ups. Das Formular wurde aufgrund eines technischen Fehlers nicht abgeschickt. Sie können es erneut versuchen.',
237
-	'erreur_technique_enregistrement_champs' => 'Das Feld @champs@ konnte aufgrund eines technischen Problems nicht gespeichert werden.',
238
-	'erreur_technique_enregistrement_impossible' => 'Technisches Prolem: Speichern nicht möglich.',
239
-	'erreur_texte' => 'Fehler',
240
-	'etape' => 'Schritt',
231
+    // E
232
+    'en_cours' => 'läuft',
233
+    'envoi_via_le_site' => 'Gesendet über Website ',
234
+    'erreur' => 'Fehler',
235
+    'erreur_balise_non_fermee' => 'Letzter Tag nicht geschlossen:',
236
+    'erreur_technique_ajaxform' => 'Ups. Das Formular wurde aufgrund eines technischen Fehlers nicht abgeschickt. Sie können es erneut versuchen.',
237
+    'erreur_technique_enregistrement_champs' => 'Das Feld @champs@ konnte aufgrund eines technischen Problems nicht gespeichert werden.',
238
+    'erreur_technique_enregistrement_impossible' => 'Technisches Prolem: Speichern nicht möglich.',
239
+    'erreur_texte' => 'Fehler',
240
+    'etape' => 'Schritt',
241 241
 
242
-	// F
243
-	'fichier_introuvable' => 'Datei @fichier@ unauffindbar.',
244
-	'fonction_introuvable' => 'Funktion @fonction@() unauffindbar.',
245
-	'form_auteur_confirmation' => 'Bestätigen Sie Ihre Mailadresse',
246
-	'form_auteur_email_modifie' => 'Ihre Mailadresse wurde geändert.',
247
-	'form_auteur_envoi_mail_confirmation' => 'Eine Mail wurde an @email@ gesendet. Sie müssen auf den in ihr angegebenen Link klicken, um die Korrektheit Ihrer Adresse zu bestätigen.',
248
-	'form_auteur_mail_confirmation' => 'Hallo,
242
+    // F
243
+    'fichier_introuvable' => 'Datei @fichier@ unauffindbar.',
244
+    'fonction_introuvable' => 'Funktion @fonction@() unauffindbar.',
245
+    'form_auteur_confirmation' => 'Bestätigen Sie Ihre Mailadresse',
246
+    'form_auteur_email_modifie' => 'Ihre Mailadresse wurde geändert.',
247
+    'form_auteur_envoi_mail_confirmation' => 'Eine Mail wurde an @email@ gesendet. Sie müssen auf den in ihr angegebenen Link klicken, um die Korrektheit Ihrer Adresse zu bestätigen.',
248
+    'form_auteur_mail_confirmation' => 'Hallo,
249 249
 
250 250
 Sie möchten Ihre Mail-Adresse ändern.Um Ihre neue Adresse zu bestätigen,
251 251
  brauchen Sie nur diesen Link zu öffnen (wenn Sie darauf verzichten,
@@ -253,335 +253,335 @@  discard block
 block discarded – undo
253 253
 
254 254
     @url@
255 255
 ',
256
-	'form_deja_inscrit' => 'Sie sind bereits eingetragen.',
257
-	'form_email_non_valide' => 'Ihre E-Mail-Adresse ist ungültig.',
258
-	'form_forum_access_refuse' => 'Sie haben keinen Zugang mehr zu dieser Website.',
259
-	'form_forum_bonjour' => 'Hallo @nom@,',
260
-	'form_forum_confirmer_email' => 'Bitte öffnen sie folgenden URL zum Bestätigen ihrer Mailadresse: @url_confirm@',
261
-	'form_forum_email_deja_enregistre' => 'Diese E-Mail-Adresse ist bereits eingetragen. Sie können also Ihr normals Passwort verwenden.',
262
-	'form_forum_identifiant_mail' => 'Ihre neuen Zugangsdaten wurden Ihnen per Mail zugestellt.',
263
-	'form_forum_identifiants' => 'Persönliche Zugangsdaten',
264
-	'form_forum_indiquer_nom_email' => 'Tragen Sie bitte hier Ihren Namen und Ihre E-Mail-Adresse ein. Die persönlichen Zugangsdaten werden Ihnen dann per E-Mail zugeschickt.',
265
-	'form_forum_login' => 'Login:',
266
-	'form_forum_message_auto' => '(automatisch erzeugte Nachricht)',
267
-	'form_forum_pass' => 'Passwort:',
268
-	'form_forum_probleme_mail' => 'E-Mail Problem: Zugangsdaten können nicht verschickt werden.',
269
-	'form_forum_voici1' => 'Hier sind Ihre Zugangsdaten für die Teilnahme an der Website "@nom_site_spip@" (@adresse_site@):',
270
-	'form_forum_voici2' => 'Hier sind Ihre Zugangsdaten um Artikel für die Website "@nom_site_spip@" (@adresse_login@) vorzuschlagen:',
271
-	'form_indiquer_email' => 'Bitte geben Sie Ihre E-Mail-Adresse an.',
272
-	'form_indiquer_nom' => 'Bitte geben Sie Ihren Namen an.',
273
-	'form_indiquer_nom_site' => 'Bitte geben Sie den Namen Ihrer Website an.',
274
-	'form_pet_deja_enregistre' => 'Diese Website wurde bereits erfasst',
275
-	'form_pet_signature_pasprise' => 'Ihre Signatur wird nicht berücksichtigt.',
276
-	'form_prop_confirmer_envoi' => 'Endgültig senden',
277
-	'form_prop_description' => 'Beschreibung/Kommentar',
278
-	'form_prop_enregistre' => 'Ihr Vorschlag wurde gespeichert und wird nach Freigabe durch die Redaktion der Website angezeigt.',
279
-	'form_prop_envoyer' => 'Nachricht senden',
280
-	'form_prop_indiquer_email' => 'Bitte geben Sie eine gültige E-Mail Adresse an',
281
-	'form_prop_indiquer_nom_site' => 'Bitte geben Sie den Namen der Website an.',
282
-	'form_prop_indiquer_sujet' => 'Bitte geben Sie ein Thema an',
283
-	'form_prop_message_envoye' => 'Nachricht gesendet',
284
-	'form_prop_non_enregistre' => 'Ihr Vorschlag wurde nicht gespeichert.',
285
-	'form_prop_sujet' => 'Thema',
286
-	'form_prop_url_site' => 'URL der der Website',
287
-	'format_date_attendu' => 'Ein Datum im Format tt/mm/jjjj eingeben. ',
288
-	'format_date_incorrecte' => 'Falsches Datum oder Datumsformat',
289
-	'format_heure_attendu' => 'Uhrzeit im Format hh:mm eingeben.',
290
-	'format_heure_incorrecte' => 'Falsches Zeitformat oder Zeit',
291
-	'forum_non_inscrit' => 'Sie sind nicht eingeschrieben oder Adresse bzw. Passwort waren falsch.',
292
-	'forum_par_auteur' => 'von @auteur@',
293
-	'forum_titre_erreur' => 'Fehler...',
256
+    'form_deja_inscrit' => 'Sie sind bereits eingetragen.',
257
+    'form_email_non_valide' => 'Ihre E-Mail-Adresse ist ungültig.',
258
+    'form_forum_access_refuse' => 'Sie haben keinen Zugang mehr zu dieser Website.',
259
+    'form_forum_bonjour' => 'Hallo @nom@,',
260
+    'form_forum_confirmer_email' => 'Bitte öffnen sie folgenden URL zum Bestätigen ihrer Mailadresse: @url_confirm@',
261
+    'form_forum_email_deja_enregistre' => 'Diese E-Mail-Adresse ist bereits eingetragen. Sie können also Ihr normals Passwort verwenden.',
262
+    'form_forum_identifiant_mail' => 'Ihre neuen Zugangsdaten wurden Ihnen per Mail zugestellt.',
263
+    'form_forum_identifiants' => 'Persönliche Zugangsdaten',
264
+    'form_forum_indiquer_nom_email' => 'Tragen Sie bitte hier Ihren Namen und Ihre E-Mail-Adresse ein. Die persönlichen Zugangsdaten werden Ihnen dann per E-Mail zugeschickt.',
265
+    'form_forum_login' => 'Login:',
266
+    'form_forum_message_auto' => '(automatisch erzeugte Nachricht)',
267
+    'form_forum_pass' => 'Passwort:',
268
+    'form_forum_probleme_mail' => 'E-Mail Problem: Zugangsdaten können nicht verschickt werden.',
269
+    'form_forum_voici1' => 'Hier sind Ihre Zugangsdaten für die Teilnahme an der Website "@nom_site_spip@" (@adresse_site@):',
270
+    'form_forum_voici2' => 'Hier sind Ihre Zugangsdaten um Artikel für die Website "@nom_site_spip@" (@adresse_login@) vorzuschlagen:',
271
+    'form_indiquer_email' => 'Bitte geben Sie Ihre E-Mail-Adresse an.',
272
+    'form_indiquer_nom' => 'Bitte geben Sie Ihren Namen an.',
273
+    'form_indiquer_nom_site' => 'Bitte geben Sie den Namen Ihrer Website an.',
274
+    'form_pet_deja_enregistre' => 'Diese Website wurde bereits erfasst',
275
+    'form_pet_signature_pasprise' => 'Ihre Signatur wird nicht berücksichtigt.',
276
+    'form_prop_confirmer_envoi' => 'Endgültig senden',
277
+    'form_prop_description' => 'Beschreibung/Kommentar',
278
+    'form_prop_enregistre' => 'Ihr Vorschlag wurde gespeichert und wird nach Freigabe durch die Redaktion der Website angezeigt.',
279
+    'form_prop_envoyer' => 'Nachricht senden',
280
+    'form_prop_indiquer_email' => 'Bitte geben Sie eine gültige E-Mail Adresse an',
281
+    'form_prop_indiquer_nom_site' => 'Bitte geben Sie den Namen der Website an.',
282
+    'form_prop_indiquer_sujet' => 'Bitte geben Sie ein Thema an',
283
+    'form_prop_message_envoye' => 'Nachricht gesendet',
284
+    'form_prop_non_enregistre' => 'Ihr Vorschlag wurde nicht gespeichert.',
285
+    'form_prop_sujet' => 'Thema',
286
+    'form_prop_url_site' => 'URL der der Website',
287
+    'format_date_attendu' => 'Ein Datum im Format tt/mm/jjjj eingeben. ',
288
+    'format_date_incorrecte' => 'Falsches Datum oder Datumsformat',
289
+    'format_heure_attendu' => 'Uhrzeit im Format hh:mm eingeben.',
290
+    'format_heure_incorrecte' => 'Falsches Zeitformat oder Zeit',
291
+    'forum_non_inscrit' => 'Sie sind nicht eingeschrieben oder Adresse bzw. Passwort waren falsch.',
292
+    'forum_par_auteur' => 'von @auteur@',
293
+    'forum_titre_erreur' => 'Fehler...',
294 294
 
295
-	// I
296
-	'ical_texte_rss_articles' => 'Die «backend» Datei mit den Artikeln der Website finden Sie unter dieser Adresse:',
297
-	'ical_texte_rss_articles2' => 'Sie können auch «backend» Dateien für einzelne Rubriken de Website nutzen:',
298
-	'ical_texte_rss_breves' => 'Es gibt ebenfalls eine Datei für die Meldungen der Website. Wenn Sie die Nummer (ID) einer Rubrik angeben, erhalten Sie auchsschliesslich die Meldungen aus dieser Rubrik.',
299
-	'icone_a_suivre' => 'Aufgaben',
300
-	'icone_admin_site' => 'Konfiguration',
301
-	'icone_agenda' => 'Kalender',
302
-	'icone_aide_ligne' => 'Online-Hilfe',
303
-	'icone_articles' => 'Artikel',
304
-	'icone_auteurs' => 'Autoren',
305
-	'icone_brouteur' => 'Übersicht',
306
-	'icone_configuration_site' => 'Konfiguration',
307
-	'icone_configurer_site' => 'Ihre Website konfigurieren',
308
-	'icone_creer_nouvel_auteur' => 'Neuen Autor anlegen',
309
-	'icone_creer_rubrique' => 'Neue Rubrik anlegen',
310
-	'icone_creer_sous_rubrique' => 'Neue Unterrubrik anlegen',
311
-	'icone_deconnecter' => 'Log-Out',
312
-	'icone_discussions' => 'Diskussionen',
313
-	'icone_doc_rubrique' => 'Dokumente der Rubriken',
314
-	'icone_ecrire_article' => 'Neuen Artikel schreiben',
315
-	'icone_edition_site' => 'Redaktion',
316
-	'icone_gestion_langues' => 'Sprachverwaltung',
317
-	'icone_informations_personnelles' => 'Persönliche Informationen',
318
-	'icone_interface_complet' => 'Expertenmodus',
319
-	'icone_interface_simple' => 'Standardmodus',
320
-	'icone_maintenance_site' => 'Wartung',
321
-	'icone_messagerie_personnelle' => 'Persönliche Nachrichten',
322
-	'icone_repartition_debut' => 'Seit Einrichtung der Website',
323
-	'icone_rubriques' => 'Rubriken',
324
-	'icone_sauver_site' => 'Website sichern',
325
-	'icone_site_entier' => 'Ganze Website',
326
-	'icone_sites_references' => 'Verlinkte Websites',
327
-	'icone_statistiques' => 'Statistiken',
328
-	'icone_suivi_activite' => 'Aktivitäten verfolgen',
329
-	'icone_suivi_actualite' => 'Entwicklung der Website',
330
-	'icone_suivi_pettions' => 'Petitionen verwalten',
331
-	'icone_suivi_revisions' => 'Änderungen des Artikels',
332
-	'icone_supprimer_document' => 'Dokument löschen',
333
-	'icone_supprimer_image' => 'Bild löschen',
334
-	'icone_tous_articles' => 'Alle Ihre Artikel',
335
-	'icone_tous_auteur' => 'Alle Autoren',
336
-	'icone_tous_visiteur' => 'Alle Besucher',
337
-	'icone_visiter_site' => 'Website ansehen',
338
-	'icone_voir_en_ligne' => 'Online ansehen',
339
-	'img_indisponible' => 'Bild nicht vorhanden',
340
-	'impossible' => 'unmöglich',
341
-	'info_a_suivre' => 'AUFGABEN »',
342
-	'info_acces_interdit' => 'Zugang gesperrt',
343
-	'info_acces_refuse' => 'Zugang verweigert',
344
-	'info_action' => 'Aktion: @action@',
345
-	'info_administrer_rubriques' => 'Sie können diese Rubrik und ihre Unterrubriken verwalten',
346
-	'info_adresse_non_indiquee' => 'Sie haben keine Adresse zum Testen agegeben!',
347
-	'info_aide' => 'HILFE:',
348
-	'info_ajouter_mot' => 'Wort hinzufügen',
349
-	'info_annonce' => 'ANKÜNDIGUNG',
350
-	'info_annonces_generales' => 'Allgemeine Ankündigungen:',
351
-	'info_article_propose' => 'Vorgeschlagener Artikel',
352
-	'info_article_publie' => 'Veröffentlichter Artikel',
353
-	'info_article_redaction' => 'Artikel in Bearbeitung',
354
-	'info_article_refuse' => 'Abgelehnter Artikel',
355
-	'info_article_supprime' => 'Gelöschter Artikel',
356
-	'info_articles' => 'Artikel',
357
-	'info_articles_a_valider' => 'Zur Veröffentlichung vorgeschlagenen Artikel',
358
-	'info_articles_nb' => '@nb@ Artikel',
359
-	'info_articles_proposes' => 'Vorgeschlagene Artikel',
360
-	'info_articles_un' => '1 Artikel',
361
-	'info_auteurs_nombre' => 'Autor(en):',
362
-	'info_authentification_ftp' => 'Authentifizierung per FTP.',
363
-	'info_breves_2' => 'Meldungen',
364
-	'info_breves_nb' => '@nb@ Meldungen',
365
-	'info_breves_un' => '1 Meldung',
366
-	'info_connexion_refusee' => 'Die Verbindung wurde verweigert.',
367
-	'info_contact_developpeur' => 'Bitte kontaktieren Sie einen der Entwickler.',
368
-	'info_contenance' => 'Diese Website enthält:',
369
-	'info_contribution' => 'Beiträge',
370
-	'info_copyright' => '@spip@ ist freie Software im Sinne der @lien_gpl@.',
371
-	'info_copyright_doc' => 'Weitere Informationen finden Sie unter <a href="@spipnet@">@spipnet_affiche@</a>.',
372
-	'info_copyright_gpl' => 'GNU Public License',
373
-	'info_cours_edition' => 'In Bearbeitung',
374
-	'info_creer_repertoire' => 'Bitte legen Sie eine Datei oder ein Verzeichnis mit diesem Namen an: ',
375
-	'info_creer_repertoire_2' => '(Im Unterverzeichnis <b>@repertoire@</b>)',
376
-	'info_creer_vignette' => 'Miniaturbilder automatisch anlegen',
377
-	'info_creerdansrubrique_non_autorise' => 'Sie sind nicht berechtigt, Inhalte in dieser Rubrik anzulegen.',
378
-	'info_deplier' => 'Öffnen',
379
-	'info_descriptif_nombre' => 'Beschreibung(en):',
380
-	'info_description' => 'Beschreibung:',
381
-	'info_description_2' => 'Beschreibung:',
382
-	'info_dimension' => 'Maße:',
383
-	'info_documents_nb' => '@nb@ Dokumente',
384
-	'info_documents_un' => '1 Dokument',
385
-	'info_ecire_message_prive' => 'Neue private Nachricht schreiben',
386
-	'info_email_invalide' => 'Ungültige E-Mail Adresse.',
387
-	'info_en_cours_validation' => 'Ihre Artikel in Bearbeitung',
388
-	'info_en_ligne' => 'Zur Zeit online:',
389
-	'info_envoyer_message_prive' => 'Private Nachricht an diesen Autor schicken',
390
-	'info_erreur_requete' => 'Abfragefehler: ',
391
-	'info_erreur_squelette2' => 'Keine Vorlage <b>@fichier@</b> vorhanden ...',
392
-	'info_erreur_systeme' => 'Systemfahler (Fehler no. @errsys@)',
393
-	'info_erreur_systeme2' => 'Möglicherweise ist die Festplatte voll oder die Datenbank beschädigt.<br />
295
+    // I
296
+    'ical_texte_rss_articles' => 'Die «backend» Datei mit den Artikeln der Website finden Sie unter dieser Adresse:',
297
+    'ical_texte_rss_articles2' => 'Sie können auch «backend» Dateien für einzelne Rubriken de Website nutzen:',
298
+    'ical_texte_rss_breves' => 'Es gibt ebenfalls eine Datei für die Meldungen der Website. Wenn Sie die Nummer (ID) einer Rubrik angeben, erhalten Sie auchsschliesslich die Meldungen aus dieser Rubrik.',
299
+    'icone_a_suivre' => 'Aufgaben',
300
+    'icone_admin_site' => 'Konfiguration',
301
+    'icone_agenda' => 'Kalender',
302
+    'icone_aide_ligne' => 'Online-Hilfe',
303
+    'icone_articles' => 'Artikel',
304
+    'icone_auteurs' => 'Autoren',
305
+    'icone_brouteur' => 'Übersicht',
306
+    'icone_configuration_site' => 'Konfiguration',
307
+    'icone_configurer_site' => 'Ihre Website konfigurieren',
308
+    'icone_creer_nouvel_auteur' => 'Neuen Autor anlegen',
309
+    'icone_creer_rubrique' => 'Neue Rubrik anlegen',
310
+    'icone_creer_sous_rubrique' => 'Neue Unterrubrik anlegen',
311
+    'icone_deconnecter' => 'Log-Out',
312
+    'icone_discussions' => 'Diskussionen',
313
+    'icone_doc_rubrique' => 'Dokumente der Rubriken',
314
+    'icone_ecrire_article' => 'Neuen Artikel schreiben',
315
+    'icone_edition_site' => 'Redaktion',
316
+    'icone_gestion_langues' => 'Sprachverwaltung',
317
+    'icone_informations_personnelles' => 'Persönliche Informationen',
318
+    'icone_interface_complet' => 'Expertenmodus',
319
+    'icone_interface_simple' => 'Standardmodus',
320
+    'icone_maintenance_site' => 'Wartung',
321
+    'icone_messagerie_personnelle' => 'Persönliche Nachrichten',
322
+    'icone_repartition_debut' => 'Seit Einrichtung der Website',
323
+    'icone_rubriques' => 'Rubriken',
324
+    'icone_sauver_site' => 'Website sichern',
325
+    'icone_site_entier' => 'Ganze Website',
326
+    'icone_sites_references' => 'Verlinkte Websites',
327
+    'icone_statistiques' => 'Statistiken',
328
+    'icone_suivi_activite' => 'Aktivitäten verfolgen',
329
+    'icone_suivi_actualite' => 'Entwicklung der Website',
330
+    'icone_suivi_pettions' => 'Petitionen verwalten',
331
+    'icone_suivi_revisions' => 'Änderungen des Artikels',
332
+    'icone_supprimer_document' => 'Dokument löschen',
333
+    'icone_supprimer_image' => 'Bild löschen',
334
+    'icone_tous_articles' => 'Alle Ihre Artikel',
335
+    'icone_tous_auteur' => 'Alle Autoren',
336
+    'icone_tous_visiteur' => 'Alle Besucher',
337
+    'icone_visiter_site' => 'Website ansehen',
338
+    'icone_voir_en_ligne' => 'Online ansehen',
339
+    'img_indisponible' => 'Bild nicht vorhanden',
340
+    'impossible' => 'unmöglich',
341
+    'info_a_suivre' => 'AUFGABEN »',
342
+    'info_acces_interdit' => 'Zugang gesperrt',
343
+    'info_acces_refuse' => 'Zugang verweigert',
344
+    'info_action' => 'Aktion: @action@',
345
+    'info_administrer_rubriques' => 'Sie können diese Rubrik und ihre Unterrubriken verwalten',
346
+    'info_adresse_non_indiquee' => 'Sie haben keine Adresse zum Testen agegeben!',
347
+    'info_aide' => 'HILFE:',
348
+    'info_ajouter_mot' => 'Wort hinzufügen',
349
+    'info_annonce' => 'ANKÜNDIGUNG',
350
+    'info_annonces_generales' => 'Allgemeine Ankündigungen:',
351
+    'info_article_propose' => 'Vorgeschlagener Artikel',
352
+    'info_article_publie' => 'Veröffentlichter Artikel',
353
+    'info_article_redaction' => 'Artikel in Bearbeitung',
354
+    'info_article_refuse' => 'Abgelehnter Artikel',
355
+    'info_article_supprime' => 'Gelöschter Artikel',
356
+    'info_articles' => 'Artikel',
357
+    'info_articles_a_valider' => 'Zur Veröffentlichung vorgeschlagenen Artikel',
358
+    'info_articles_nb' => '@nb@ Artikel',
359
+    'info_articles_proposes' => 'Vorgeschlagene Artikel',
360
+    'info_articles_un' => '1 Artikel',
361
+    'info_auteurs_nombre' => 'Autor(en):',
362
+    'info_authentification_ftp' => 'Authentifizierung per FTP.',
363
+    'info_breves_2' => 'Meldungen',
364
+    'info_breves_nb' => '@nb@ Meldungen',
365
+    'info_breves_un' => '1 Meldung',
366
+    'info_connexion_refusee' => 'Die Verbindung wurde verweigert.',
367
+    'info_contact_developpeur' => 'Bitte kontaktieren Sie einen der Entwickler.',
368
+    'info_contenance' => 'Diese Website enthält:',
369
+    'info_contribution' => 'Beiträge',
370
+    'info_copyright' => '@spip@ ist freie Software im Sinne der @lien_gpl@.',
371
+    'info_copyright_doc' => 'Weitere Informationen finden Sie unter <a href="@spipnet@">@spipnet_affiche@</a>.',
372
+    'info_copyright_gpl' => 'GNU Public License',
373
+    'info_cours_edition' => 'In Bearbeitung',
374
+    'info_creer_repertoire' => 'Bitte legen Sie eine Datei oder ein Verzeichnis mit diesem Namen an: ',
375
+    'info_creer_repertoire_2' => '(Im Unterverzeichnis <b>@repertoire@</b>)',
376
+    'info_creer_vignette' => 'Miniaturbilder automatisch anlegen',
377
+    'info_creerdansrubrique_non_autorise' => 'Sie sind nicht berechtigt, Inhalte in dieser Rubrik anzulegen.',
378
+    'info_deplier' => 'Öffnen',
379
+    'info_descriptif_nombre' => 'Beschreibung(en):',
380
+    'info_description' => 'Beschreibung:',
381
+    'info_description_2' => 'Beschreibung:',
382
+    'info_dimension' => 'Maße:',
383
+    'info_documents_nb' => '@nb@ Dokumente',
384
+    'info_documents_un' => '1 Dokument',
385
+    'info_ecire_message_prive' => 'Neue private Nachricht schreiben',
386
+    'info_email_invalide' => 'Ungültige E-Mail Adresse.',
387
+    'info_en_cours_validation' => 'Ihre Artikel in Bearbeitung',
388
+    'info_en_ligne' => 'Zur Zeit online:',
389
+    'info_envoyer_message_prive' => 'Private Nachricht an diesen Autor schicken',
390
+    'info_erreur_requete' => 'Abfragefehler: ',
391
+    'info_erreur_squelette2' => 'Keine Vorlage <b>@fichier@</b> vorhanden ...',
392
+    'info_erreur_systeme' => 'Systemfahler (Fehler no. @errsys@)',
393
+    'info_erreur_systeme2' => 'Möglicherweise ist die Festplatte voll oder die Datenbank beschädigt.<br />
394 394
 <span style="color:red;">Versuchen Sie <a href=\'@script@\'>die Datenbank zu reparieren</a>, oder wenden Sie sich an Ihren Provider.</span>',
395
-	'info_fini' => 'Fertig!',
396
-	'info_format_image' => 'Für diese Dateiformate können Vorschaubilder erstellt werden: @gd_formats@.',
397
-	'info_format_non_defini' => 'Undefiniertes Format',
398
-	'info_grand_ecran' => 'Grosser Bildschirm',
399
-	'info_image_aide' => 'HILFE',
400
-	'info_image_process_titre' => 'Methode zum Anlegen der Miniaturbilder',
401
-	'info_impossible_lire_page' => '<b>Fehler!</b> Die Seite <tt><html>@test_proxy@</html></tt> ist nicht über den Proxy erreichbar',
402
-	'info_installation_systeme_publication' => 'Installation von SPIP ...',
403
-	'info_installer_documents' => 'Sie können alle Dokumente im Verzeichnis @upload@ automatisch installieren.',
404
-	'info_installer_ftp' => 'Als Administrator können Sie Dateien (per FTP) direkt in das Verzeichnis <i>@upload@</i> kopieren und sie hier auswählen.',
405
-	'info_installer_images' => 'Sie können Bilder in den Formaten JPEG, GIF und PNG verwenden.',
406
-	'info_installer_images_dossier' => 'Bilder ins Verzeichnis @upload@ kopieren um sie hier auswählen zu können.',
407
-	'info_interface_complete' => 'Expertenmodus',
408
-	'info_interface_simple' => 'Standardmodus',
409
-	'info_joindre_document_article' => 'Diesem Artikel können Sie Dokumente folgendem Typs beifügen: ',
410
-	'info_joindre_document_rubrique' => 'Dieser Rubrik können Sie Dokumente folgendem Typs beifügen:',
411
-	'info_joindre_documents_article' => 'Diesem Artikel können Sie Dokumente folgendem Typs beifügen:',
412
-	'info_l_article' => 'Der Artikel',
413
-	'info_la_breve' => 'Die Meldung',
414
-	'info_la_rubrique' => 'Die Rubrik',
415
-	'info_langue_principale' => 'Hauptsprache der Website',
416
-	'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ Pixel',
417
-	'info_les_auteurs_1' => 'von @les_auteurs@ ',
418
-	'info_logo_format_interdit' => 'Nur die Logos im Format @formats@ sind zugelassen.',
419
-	'info_logo_max_poids' => 'Die Logogrösse darf nicht @maxi@ überschreiten (aktuelle Dateigrösse @actuel@).',
420
-	'info_mail_fournisseur' => '[email protected]',
421
-	'info_message_2' => 'NACHRICHT',
422
-	'info_message_supprime' => 'NACHRICHT GELÖSCHT',
423
-	'info_messages_nb' => '@nb@ Nachrichten',
424
-	'info_messages_un' => '1 Nachricht',
425
-	'info_mise_en_ligne' => 'Online seit:',
426
-	'info_modification_parametres_securite' => 'Änderung der Sicherheitseinstellungen',
427
-	'info_mois_courant' => 'Im Lauf des Monats:',
428
-	'info_mot_cle_ajoute' => 'Das folgende Wort wurde hinzugefügt zu',
429
-	'info_multi_herit' => 'Standardsprache',
430
-	'info_multi_langues_soulignees' => 'Die Texte des Interface sind in die <u>unterstrichenen Sprachen</u> ganz oder teilweise übersetzt. Wenn Sie eine von ihnen wählen, werden viele Elemente der Website automatisch übersetzt (Datumsangaben, Formulare usw.). In den nicht unterstrichenen Sprachen werden diese Elemente in der Hauptsprache der Website angezeigt.',
431
-	'info_multilinguisme' => 'Mehrsprachigkeit',
432
-	'info_nom_non_utilisateurs_connectes' => 'Ihr Name wird nicht in der Liste der zur Zeit eingelogten Nutzer angezeigt.',
433
-	'info_nom_utilisateurs_connectes' => 'Ihr Name wird in der Liste der angemeldeten Nutzer angezeigt.',
434
-	'info_nombre_en_ligne' => 'Zur Zeit online:',
435
-	'info_non_resultat' => 'Keine Fundstellen für “@cherche_mot@”',
436
-	'info_non_utilisation_messagerie' => 'Sie nehmen nicht am Nachrichtensystem der Website teil.',
437
-	'info_nouveau_message' => 'SIE HABEN EINE NEUE NACHRICHT',
438
-	'info_nouveaux_messages' => 'SIE HABEN @total_messages@ NEUE NACHRICHTEN',
439
-	'info_numero_abbreviation' => 'N° ',
440
-	'info_obligatoire' => 'Diese Information ist obligatorisch.',
441
-	'info_page_actuelle' => 'Aktuelle Seite',
442
-	'info_pense_bete' => 'MERKZETTEL',
443
-	'info_petit_ecran' => 'Kleiner Bildschirm',
444
-	'info_petition_close' => 'Petition geschlossen',
445
-	'info_pixels' => 'Pixel',
446
-	'info_plusieurs_mots_trouves' => 'Mehrere Schlagworte entsprechen Ihrem Suchkriterium “@cherche_mot@”:',
447
-	'info_portfolio_automatique' => 'automatische Mappe:',
448
-	'info_premier_resultat' => '[@debut_limit@ erste Ergebnisse von @total@]',
449
-	'info_premier_resultat_sur' => '[@debut_limit@ erste Ergebnisse von @total@]',
450
-	'info_propose_1' => '[@nom_site_spip@] vorgeschlagen : @titre@',
451
-	'info_propose_2' => 'vorgeschlagener Artikel
395
+    'info_fini' => 'Fertig!',
396
+    'info_format_image' => 'Für diese Dateiformate können Vorschaubilder erstellt werden: @gd_formats@.',
397
+    'info_format_non_defini' => 'Undefiniertes Format',
398
+    'info_grand_ecran' => 'Grosser Bildschirm',
399
+    'info_image_aide' => 'HILFE',
400
+    'info_image_process_titre' => 'Methode zum Anlegen der Miniaturbilder',
401
+    'info_impossible_lire_page' => '<b>Fehler!</b> Die Seite <tt><html>@test_proxy@</html></tt> ist nicht über den Proxy erreichbar',
402
+    'info_installation_systeme_publication' => 'Installation von SPIP ...',
403
+    'info_installer_documents' => 'Sie können alle Dokumente im Verzeichnis @upload@ automatisch installieren.',
404
+    'info_installer_ftp' => 'Als Administrator können Sie Dateien (per FTP) direkt in das Verzeichnis <i>@upload@</i> kopieren und sie hier auswählen.',
405
+    'info_installer_images' => 'Sie können Bilder in den Formaten JPEG, GIF und PNG verwenden.',
406
+    'info_installer_images_dossier' => 'Bilder ins Verzeichnis @upload@ kopieren um sie hier auswählen zu können.',
407
+    'info_interface_complete' => 'Expertenmodus',
408
+    'info_interface_simple' => 'Standardmodus',
409
+    'info_joindre_document_article' => 'Diesem Artikel können Sie Dokumente folgendem Typs beifügen: ',
410
+    'info_joindre_document_rubrique' => 'Dieser Rubrik können Sie Dokumente folgendem Typs beifügen:',
411
+    'info_joindre_documents_article' => 'Diesem Artikel können Sie Dokumente folgendem Typs beifügen:',
412
+    'info_l_article' => 'Der Artikel',
413
+    'info_la_breve' => 'Die Meldung',
414
+    'info_la_rubrique' => 'Die Rubrik',
415
+    'info_langue_principale' => 'Hauptsprache der Website',
416
+    'info_largeur_vignette' => '@largeur_vignette@ x @hauteur_vignette@ Pixel',
417
+    'info_les_auteurs_1' => 'von @les_auteurs@ ',
418
+    'info_logo_format_interdit' => 'Nur die Logos im Format @formats@ sind zugelassen.',
419
+    'info_logo_max_poids' => 'Die Logogrösse darf nicht @maxi@ überschreiten (aktuelle Dateigrösse @actuel@).',
420
+    'info_mail_fournisseur' => '[email protected]',
421
+    'info_message_2' => 'NACHRICHT',
422
+    'info_message_supprime' => 'NACHRICHT GELÖSCHT',
423
+    'info_messages_nb' => '@nb@ Nachrichten',
424
+    'info_messages_un' => '1 Nachricht',
425
+    'info_mise_en_ligne' => 'Online seit:',
426
+    'info_modification_parametres_securite' => 'Änderung der Sicherheitseinstellungen',
427
+    'info_mois_courant' => 'Im Lauf des Monats:',
428
+    'info_mot_cle_ajoute' => 'Das folgende Wort wurde hinzugefügt zu',
429
+    'info_multi_herit' => 'Standardsprache',
430
+    'info_multi_langues_soulignees' => 'Die Texte des Interface sind in die <u>unterstrichenen Sprachen</u> ganz oder teilweise übersetzt. Wenn Sie eine von ihnen wählen, werden viele Elemente der Website automatisch übersetzt (Datumsangaben, Formulare usw.). In den nicht unterstrichenen Sprachen werden diese Elemente in der Hauptsprache der Website angezeigt.',
431
+    'info_multilinguisme' => 'Mehrsprachigkeit',
432
+    'info_nom_non_utilisateurs_connectes' => 'Ihr Name wird nicht in der Liste der zur Zeit eingelogten Nutzer angezeigt.',
433
+    'info_nom_utilisateurs_connectes' => 'Ihr Name wird in der Liste der angemeldeten Nutzer angezeigt.',
434
+    'info_nombre_en_ligne' => 'Zur Zeit online:',
435
+    'info_non_resultat' => 'Keine Fundstellen für “@cherche_mot@”',
436
+    'info_non_utilisation_messagerie' => 'Sie nehmen nicht am Nachrichtensystem der Website teil.',
437
+    'info_nouveau_message' => 'SIE HABEN EINE NEUE NACHRICHT',
438
+    'info_nouveaux_messages' => 'SIE HABEN @total_messages@ NEUE NACHRICHTEN',
439
+    'info_numero_abbreviation' => 'N° ',
440
+    'info_obligatoire' => 'Diese Information ist obligatorisch.',
441
+    'info_page_actuelle' => 'Aktuelle Seite',
442
+    'info_pense_bete' => 'MERKZETTEL',
443
+    'info_petit_ecran' => 'Kleiner Bildschirm',
444
+    'info_petition_close' => 'Petition geschlossen',
445
+    'info_pixels' => 'Pixel',
446
+    'info_plusieurs_mots_trouves' => 'Mehrere Schlagworte entsprechen Ihrem Suchkriterium “@cherche_mot@”:',
447
+    'info_portfolio_automatique' => 'automatische Mappe:',
448
+    'info_premier_resultat' => '[@debut_limit@ erste Ergebnisse von @total@]',
449
+    'info_premier_resultat_sur' => '[@debut_limit@ erste Ergebnisse von @total@]',
450
+    'info_propose_1' => '[@nom_site_spip@] vorgeschlagen : @titre@',
451
+    'info_propose_2' => 'vorgeschlagener Artikel
452 452
 ---------------',
453
-	'info_propose_3' => 'Der Artikel “@titre@” ist zur Veröffentlichung vorgeschlagen.',
454
-	'info_propose_4' => 'Bitte teilen Sie den anderen Autoren Ihre Meinung zu diesem Artikel mit',
455
-	'info_propose_5' => '(im Forum des Artikels). Sie können ihn unter dieser Adresse lesen:',
456
-	'info_publie_01' => 'Der Artikel „@titre@“ wurde von @connect_nom@ freigegeben.',
457
-	'info_publie_1' => '[@nom_site_spip@] VERÖFFENTLICHT: @titre@',
458
-	'info_publie_2' => 'Artikel veröffentlicht
453
+    'info_propose_3' => 'Der Artikel “@titre@” ist zur Veröffentlichung vorgeschlagen.',
454
+    'info_propose_4' => 'Bitte teilen Sie den anderen Autoren Ihre Meinung zu diesem Artikel mit',
455
+    'info_propose_5' => '(im Forum des Artikels). Sie können ihn unter dieser Adresse lesen:',
456
+    'info_publie_01' => 'Der Artikel „@titre@“ wurde von @connect_nom@ freigegeben.',
457
+    'info_publie_1' => '[@nom_site_spip@] VERÖFFENTLICHT: @titre@',
458
+    'info_publie_2' => 'Artikel veröffentlicht
459 459
 --------------',
460
-	'info_rechercher' => 'Suchen',
461
-	'info_rechercher_02' => 'Suchen:',
462
-	'info_remplacer_vignette' => 'Ersetzen Sie das Standard-Piktogramm durch ein eigenes Logo:',
463
-	'info_rubriques_nb' => '@nb@ Rubriken',
464
-	'info_rubriques_un' => '1 Rubrik',
465
-	'info_sans_titre_2' => 'ohne Titel',
466
-	'info_selectionner_fichier' => 'Sie können eine Datei aus dem Verzeichnis @upload@ auswählen.',
467
-	'info_selectionner_fichier_2' => 'Wählen Sie eine Datei:',
468
-	'info_sites_nb' => '@nb@ Websites',
469
-	'info_sites_un' => '1 Website',
470
-	'info_supprimer_vignette' => 'Icon löschen',
471
-	'info_symbole_bleu' => 'Das <b>blaue</b> Symbol bedeutet <b>Merkzettel</b>, d.h. eine Nachricht nur zu Ihrer eigenen Verwendung.',
472
-	'info_symbole_jaune' => 'Das <b>gelbe</b> Symbol bedeutet <b>Ankündigung an alle Redakteure</b> (für alle Redakteure sichtbar, Änderung nur durch Administratoren)',
473
-	'info_symbole_vert' => 'Das <b>grüne</b> Symbol bezeichnet Nachrichten an <b>andere Benutzer</b> der Website.',
474
-	'info_telecharger_nouveau_logo' => 'Neues Logo hochladen:',
475
-	'info_telecharger_ordinateur' => 'Von Ihrem Computer hochladen:',
476
-	'info_tous_resultats_enregistres' => ' [alle Ergebnisse sind erfasst]',
477
-	'info_tout_afficher' => 'Alles zeigen',
478
-	'info_travaux_texte' => 'Diese Website ist noch nicht fertig eingerichtet. Schauen Sie später mal wieder rein ...',
479
-	'info_travaux_titre' => 'Website in Bearbeitung',
480
-	'info_trop_resultat' => 'Zu viele Ergebnisse für “@cherche_mot”. Bitte präzisieren Sie Ihre Suchbegriffe.',
481
-	'info_utilisation_messagerie_interne' => 'Sie verwenden das interne Nachrichtensystem der Website. ',
482
-	'info_valider_lien' => 'Link freigeben',
483
-	'info_verifier_image' => ', bitte prüfen Sie, ob Ihre Bilder fehlerfrei übertagen wurden.',
484
-	'info_vignette_defaut' => 'Standardsymbol',
485
-	'info_vignette_personnalisee' => 'Persönliches Icon',
486
-	'info_visite' => 'Besuch:',
487
-	'info_vos_rendez_vous' => 'Ihre kommenden Termine',
488
-	'infos_vos_pense_bete' => 'Ihre Merkzettel',
460
+    'info_rechercher' => 'Suchen',
461
+    'info_rechercher_02' => 'Suchen:',
462
+    'info_remplacer_vignette' => 'Ersetzen Sie das Standard-Piktogramm durch ein eigenes Logo:',
463
+    'info_rubriques_nb' => '@nb@ Rubriken',
464
+    'info_rubriques_un' => '1 Rubrik',
465
+    'info_sans_titre_2' => 'ohne Titel',
466
+    'info_selectionner_fichier' => 'Sie können eine Datei aus dem Verzeichnis @upload@ auswählen.',
467
+    'info_selectionner_fichier_2' => 'Wählen Sie eine Datei:',
468
+    'info_sites_nb' => '@nb@ Websites',
469
+    'info_sites_un' => '1 Website',
470
+    'info_supprimer_vignette' => 'Icon löschen',
471
+    'info_symbole_bleu' => 'Das <b>blaue</b> Symbol bedeutet <b>Merkzettel</b>, d.h. eine Nachricht nur zu Ihrer eigenen Verwendung.',
472
+    'info_symbole_jaune' => 'Das <b>gelbe</b> Symbol bedeutet <b>Ankündigung an alle Redakteure</b> (für alle Redakteure sichtbar, Änderung nur durch Administratoren)',
473
+    'info_symbole_vert' => 'Das <b>grüne</b> Symbol bezeichnet Nachrichten an <b>andere Benutzer</b> der Website.',
474
+    'info_telecharger_nouveau_logo' => 'Neues Logo hochladen:',
475
+    'info_telecharger_ordinateur' => 'Von Ihrem Computer hochladen:',
476
+    'info_tous_resultats_enregistres' => ' [alle Ergebnisse sind erfasst]',
477
+    'info_tout_afficher' => 'Alles zeigen',
478
+    'info_travaux_texte' => 'Diese Website ist noch nicht fertig eingerichtet. Schauen Sie später mal wieder rein ...',
479
+    'info_travaux_titre' => 'Website in Bearbeitung',
480
+    'info_trop_resultat' => 'Zu viele Ergebnisse für “@cherche_mot”. Bitte präzisieren Sie Ihre Suchbegriffe.',
481
+    'info_utilisation_messagerie_interne' => 'Sie verwenden das interne Nachrichtensystem der Website. ',
482
+    'info_valider_lien' => 'Link freigeben',
483
+    'info_verifier_image' => ', bitte prüfen Sie, ob Ihre Bilder fehlerfrei übertagen wurden.',
484
+    'info_vignette_defaut' => 'Standardsymbol',
485
+    'info_vignette_personnalisee' => 'Persönliches Icon',
486
+    'info_visite' => 'Besuch:',
487
+    'info_vos_rendez_vous' => 'Ihre kommenden Termine',
488
+    'infos_vos_pense_bete' => 'Ihre Merkzettel',
489 489
 
490
-	// L
491
-	'label_ajout_id_rapide' => 'schnell hinzufügen',
492
-	'label_poids_fichier' => 'Größe',
493
-	'label_ponctuer' => '@label@:',
494
-	'lien_afficher_icones_seuls' => 'Nur Piktogramme anzeigen',
495
-	'lien_afficher_texte_icones' => 'Piktogramme und Beschriftung anzeigen',
496
-	'lien_afficher_texte_seul' => 'Nur Textmenüs',
497
-	'lien_aller_a_la_derniere_page' => 'Zur letzten Seite gehen',
498
-	'lien_aller_a_la_page_nb' => 'Zu Seite @nb@ gehen',
499
-	'lien_aller_a_la_page_precedente' => 'Zur vorherigen Seite gehen',
500
-	'lien_aller_a_la_page_suivante' => 'Zur nächsten Seite gehen',
501
-	'lien_aller_a_la_premiere_page' => 'Zur ersten Seite gehen',
502
-	'lien_liberer' => 'freigeben',
503
-	'lien_liberer_tous' => 'Alle freigeben',
504
-	'lien_nouvea_pense_bete' => 'NEUER MERKZETTEL',
505
-	'lien_nouveau_message' => 'NEUE NACHRICHT',
506
-	'lien_nouvelle_annonce' => 'NEUE ANKÜNDIGUNG',
507
-	'lien_petitions' => 'PETITION',
508
-	'lien_popularite' => 'Beliebtheit: @popularite@%',
509
-	'lien_racine_site' => 'OBERSTE EBENE DER WEBSITE',
510
-	'lien_reessayer' => 'Wiederholen',
511
-	'lien_repondre_message' => 'Nachricht beantworten',
512
-	'lien_supprimer' => 'Löschen',
513
-	'lien_tout_afficher' => 'Alles zeigen',
514
-	'lien_visite_site' => 'Website anzeigen',
515
-	'lien_visites' => '@visites@ Besuche',
516
-	'lien_voir_auteur' => 'Autor anzeigen',
517
-	'ligne' => 'Zeile',
518
-	'login' => 'Login',
519
-	'login_acces_prive' => 'Login zum Redaktionssystem',
520
-	'login_autre_identifiant' => 'Unter anderem Namen anmelden',
521
-	'login_cookie_accepte' => 'Bitte stellen Sie Ihren Webbrowser so ein, dass er sie akzeptiert (zumindest für diese Website).',
522
-	'login_cookie_oblige' => 'Zu Ihrer Sicherheit muss Ihr Browser Cookies akzeptieren, wenn Sie sich bei der Website anmelden.',
523
-	'login_deconnexion_ok' => 'Abmeldung erfolgreich.',
524
-	'login_erreur_pass' => 'Passwort oder Benutzername falsch.',
525
-	'login_espace_prive' => 'Redaktionssystem',
526
-	'login_identifiant_inconnu' => 'Benutzer «@login@» unbekannt.',
527
-	'login_login' => 'Login:',
528
-	'login_login2' => 'Login-ID oder E-Mail:',
529
-	'login_login_pass_incorrect' => '(Login oder Passwort falsch.)',
530
-	'login_motpasseoublie' => 'Passwort vergessen?',
531
-	'login_non_securise' => 'Achtung, dieses Formular ist nicht abgesichert. Wenn Sie sicher stellen wollen, dass Ihr Passwort nicht im Netzwerk mitgehört werden kann, aktivieren Sie bitte Javascript und',
532
-	'login_nouvelle_tentative' => 'Erneut versuchen',
533
-	'login_par_ici' => 'Sie sind angemeldet... hier...',
534
-	'login_pass2' => 'Passwort:',
535
-	'login_preferez_refuser' => '<b>Wenn Sie keine Cookies verwenden wollen</b>, können Sie eine alternative (weniger sichere) Anmeldung nutzen:',
536
-	'login_recharger' => 'diese Seite neu laden',
537
-	'login_rester_identifie' => 'An mich erinnern',
538
-	'login_retour_public' => 'Zurück zur öffentlichen Website',
539
-	'login_retour_site' => 'Zurück zur öffentlichen Website',
540
-	'login_retoursitepublic' => 'Zurück zur öffentlichen Website',
541
-	'login_sans_cookie' => 'Login ohne Cookie',
542
-	'login_securise' => 'Sicheres Login',
543
-	'login_sinscrire' => 'Anmelden',
544
-	'login_test_navigateur' => 'Test Webbrowser/Verbindung',
545
-	'login_verifiez_navigateur' => '(Überprüfen Sie, dass Ihr Webbrowser Ihr Passwort nicht gespeichert hat ...)',
490
+    // L
491
+    'label_ajout_id_rapide' => 'schnell hinzufügen',
492
+    'label_poids_fichier' => 'Größe',
493
+    'label_ponctuer' => '@label@:',
494
+    'lien_afficher_icones_seuls' => 'Nur Piktogramme anzeigen',
495
+    'lien_afficher_texte_icones' => 'Piktogramme und Beschriftung anzeigen',
496
+    'lien_afficher_texte_seul' => 'Nur Textmenüs',
497
+    'lien_aller_a_la_derniere_page' => 'Zur letzten Seite gehen',
498
+    'lien_aller_a_la_page_nb' => 'Zu Seite @nb@ gehen',
499
+    'lien_aller_a_la_page_precedente' => 'Zur vorherigen Seite gehen',
500
+    'lien_aller_a_la_page_suivante' => 'Zur nächsten Seite gehen',
501
+    'lien_aller_a_la_premiere_page' => 'Zur ersten Seite gehen',
502
+    'lien_liberer' => 'freigeben',
503
+    'lien_liberer_tous' => 'Alle freigeben',
504
+    'lien_nouvea_pense_bete' => 'NEUER MERKZETTEL',
505
+    'lien_nouveau_message' => 'NEUE NACHRICHT',
506
+    'lien_nouvelle_annonce' => 'NEUE ANKÜNDIGUNG',
507
+    'lien_petitions' => 'PETITION',
508
+    'lien_popularite' => 'Beliebtheit: @popularite@%',
509
+    'lien_racine_site' => 'OBERSTE EBENE DER WEBSITE',
510
+    'lien_reessayer' => 'Wiederholen',
511
+    'lien_repondre_message' => 'Nachricht beantworten',
512
+    'lien_supprimer' => 'Löschen',
513
+    'lien_tout_afficher' => 'Alles zeigen',
514
+    'lien_visite_site' => 'Website anzeigen',
515
+    'lien_visites' => '@visites@ Besuche',
516
+    'lien_voir_auteur' => 'Autor anzeigen',
517
+    'ligne' => 'Zeile',
518
+    'login' => 'Login',
519
+    'login_acces_prive' => 'Login zum Redaktionssystem',
520
+    'login_autre_identifiant' => 'Unter anderem Namen anmelden',
521
+    'login_cookie_accepte' => 'Bitte stellen Sie Ihren Webbrowser so ein, dass er sie akzeptiert (zumindest für diese Website).',
522
+    'login_cookie_oblige' => 'Zu Ihrer Sicherheit muss Ihr Browser Cookies akzeptieren, wenn Sie sich bei der Website anmelden.',
523
+    'login_deconnexion_ok' => 'Abmeldung erfolgreich.',
524
+    'login_erreur_pass' => 'Passwort oder Benutzername falsch.',
525
+    'login_espace_prive' => 'Redaktionssystem',
526
+    'login_identifiant_inconnu' => 'Benutzer «@login@» unbekannt.',
527
+    'login_login' => 'Login:',
528
+    'login_login2' => 'Login-ID oder E-Mail:',
529
+    'login_login_pass_incorrect' => '(Login oder Passwort falsch.)',
530
+    'login_motpasseoublie' => 'Passwort vergessen?',
531
+    'login_non_securise' => 'Achtung, dieses Formular ist nicht abgesichert. Wenn Sie sicher stellen wollen, dass Ihr Passwort nicht im Netzwerk mitgehört werden kann, aktivieren Sie bitte Javascript und',
532
+    'login_nouvelle_tentative' => 'Erneut versuchen',
533
+    'login_par_ici' => 'Sie sind angemeldet... hier...',
534
+    'login_pass2' => 'Passwort:',
535
+    'login_preferez_refuser' => '<b>Wenn Sie keine Cookies verwenden wollen</b>, können Sie eine alternative (weniger sichere) Anmeldung nutzen:',
536
+    'login_recharger' => 'diese Seite neu laden',
537
+    'login_rester_identifie' => 'An mich erinnern',
538
+    'login_retour_public' => 'Zurück zur öffentlichen Website',
539
+    'login_retour_site' => 'Zurück zur öffentlichen Website',
540
+    'login_retoursitepublic' => 'Zurück zur öffentlichen Website',
541
+    'login_sans_cookie' => 'Login ohne Cookie',
542
+    'login_securise' => 'Sicheres Login',
543
+    'login_sinscrire' => 'Anmelden',
544
+    'login_test_navigateur' => 'Test Webbrowser/Verbindung',
545
+    'login_verifiez_navigateur' => '(Überprüfen Sie, dass Ihr Webbrowser Ihr Passwort nicht gespeichert hat ...)',
546 546
 
547
-	// M
548
-	'masquer_colonne' => 'Diese Spalte verbergen',
549
-	'masquer_trad' => 'Übersetzungen ausblenden',
550
-	'message_nouveaux_identifiants_echec' => 'Es können keine neuen Zugangsdaten erzeigt werden.',
551
-	'message_nouveaux_identifiants_echec_envoi' => 'Die neuen Zugangsdaten konnten nicht übermittelt werden.',
552
-	'message_nouveaux_identifiants_ok' => 'Die neuen Zugangsdaten wurden an @email@ übermittelt.',
553
-	'module_fichiers_langues' => 'Sprachdateien',
547
+    // M
548
+    'masquer_colonne' => 'Diese Spalte verbergen',
549
+    'masquer_trad' => 'Übersetzungen ausblenden',
550
+    'message_nouveaux_identifiants_echec' => 'Es können keine neuen Zugangsdaten erzeigt werden.',
551
+    'message_nouveaux_identifiants_echec_envoi' => 'Die neuen Zugangsdaten konnten nicht übermittelt werden.',
552
+    'message_nouveaux_identifiants_ok' => 'Die neuen Zugangsdaten wurden an @email@ übermittelt.',
553
+    'module_fichiers_langues' => 'Sprachdateien',
554 554
 
555
-	// N
556
-	'navigateur_pas_redirige' => 'Wenn Ihr Browser keine automatische Weiterleitung unterstützt, klicken Sie hier.',
557
-	'numero' => 'Nummer',
555
+    // N
556
+    'navigateur_pas_redirige' => 'Wenn Ihr Browser keine automatische Weiterleitung unterstützt, klicken Sie hier.',
557
+    'numero' => 'Nummer',
558 558
 
559
-	// O
560
-	'occurence' => 'Vorkommen',
561
-	'onglet_affacer_base' => 'Datenbank löschen',
562
-	'onglet_auteur' => 'Autor',
563
-	'onglet_contenu_site' => 'Inhalte der Website',
564
-	'onglet_evolution_visite_mod' => 'Entwicklung',
565
-	'onglet_fonctions_avances' => 'Erweiterte Einstellungen',
566
-	'onglet_informations_personnelles' => 'Persönliche Informationen',
567
-	'onglet_interactivite' => 'Interaktivität',
568
-	'onglet_messagerie' => 'Nachrichtensystem',
569
-	'onglet_repartition_rubrique' => 'Verteilung auf Rubriken',
570
-	'onglet_save_restaur_base' => 'Datenbank sichern/wieder herstellen',
571
-	'onglet_vider_cache' => 'Sitecache löschen',
559
+    // O
560
+    'occurence' => 'Vorkommen',
561
+    'onglet_affacer_base' => 'Datenbank löschen',
562
+    'onglet_auteur' => 'Autor',
563
+    'onglet_contenu_site' => 'Inhalte der Website',
564
+    'onglet_evolution_visite_mod' => 'Entwicklung',
565
+    'onglet_fonctions_avances' => 'Erweiterte Einstellungen',
566
+    'onglet_informations_personnelles' => 'Persönliche Informationen',
567
+    'onglet_interactivite' => 'Interaktivität',
568
+    'onglet_messagerie' => 'Nachrichtensystem',
569
+    'onglet_repartition_rubrique' => 'Verteilung auf Rubriken',
570
+    'onglet_save_restaur_base' => 'Datenbank sichern/wieder herstellen',
571
+    'onglet_vider_cache' => 'Sitecache löschen',
572 572
 
573
-	// P
574
-	'pass_choix_pass' => 'Bitte geben Sie Ihr neues Passwort ein:',
575
-	'pass_erreur' => 'Fehler',
576
-	'pass_erreur_acces_refuse' => '<b>Fehler:</b> Sie haben keinen Zugang mehr zur Website.',
577
-	'pass_erreur_code_inconnu' => '<b>Fehler:</b> Angabe entspricht keinem Benutzer mit Zugang zu dieser Website.',
578
-	'pass_erreur_non_enregistre' => '<b>Fehler:</b> Die Adresse <tt>@email_oubli@</tt> ist nicht bekannt.',
579
-	'pass_erreur_non_valide' => '<b>Fehler:</b> Diese E-Mail Adresse <tt>@email_oubli@</tt> ist ungültig!',
580
-	'pass_erreur_probleme_technique' => '<b>Fehler:</b> E-Mail kann aufgrund eines technischen Problems nicht gesendet werden.',
581
-	'pass_espace_prive_bla' => 'Das Redaktionssystem dieser Website ist für Besucher zugänglich, die sich angemeldet haben. Nach erfolgreicher Anmeldung können Sie an Artikeln mitarbeiten, eigene Artikel vorschlagen und an allen Diskussionsforen teilnehmen.',
582
-	'pass_forum_bla' => 'Sie möchten in einem Forum für eingetragene Besucher der Website schreiben.',
583
-	'pass_indiquez_cidessous' => 'Bitte geben Sie die E-Mail Adresse an, mit der Sie sich ursprünglich eingetragen haben. Sie erhalten dann eine Mail mit allen erforderlichen Schritten um wieder Zugang zu bekommen.',
584
-	'pass_mail_passcookie' => '(Diese Nachricht wurde automatisch erzeugt)
573
+    // P
574
+    'pass_choix_pass' => 'Bitte geben Sie Ihr neues Passwort ein:',
575
+    'pass_erreur' => 'Fehler',
576
+    'pass_erreur_acces_refuse' => '<b>Fehler:</b> Sie haben keinen Zugang mehr zur Website.',
577
+    'pass_erreur_code_inconnu' => '<b>Fehler:</b> Angabe entspricht keinem Benutzer mit Zugang zu dieser Website.',
578
+    'pass_erreur_non_enregistre' => '<b>Fehler:</b> Die Adresse <tt>@email_oubli@</tt> ist nicht bekannt.',
579
+    'pass_erreur_non_valide' => '<b>Fehler:</b> Diese E-Mail Adresse <tt>@email_oubli@</tt> ist ungültig!',
580
+    'pass_erreur_probleme_technique' => '<b>Fehler:</b> E-Mail kann aufgrund eines technischen Problems nicht gesendet werden.',
581
+    'pass_espace_prive_bla' => 'Das Redaktionssystem dieser Website ist für Besucher zugänglich, die sich angemeldet haben. Nach erfolgreicher Anmeldung können Sie an Artikeln mitarbeiten, eigene Artikel vorschlagen und an allen Diskussionsforen teilnehmen.',
582
+    'pass_forum_bla' => 'Sie möchten in einem Forum für eingetragene Besucher der Website schreiben.',
583
+    'pass_indiquez_cidessous' => 'Bitte geben Sie die E-Mail Adresse an, mit der Sie sich ursprünglich eingetragen haben. Sie erhalten dann eine Mail mit allen erforderlichen Schritten um wieder Zugang zu bekommen.',
584
+    'pass_mail_passcookie' => '(Diese Nachricht wurde automatisch erzeugt)
585 585
 
586 586
 Um sich wieder bei der Website
587 587
 @nom_site_spip@ (@adresse_site@)
@@ -591,139 +591,139 @@  discard block
 block discarded – undo
591 591
 
592 592
 Sie können auf dieser Seite ein neues Passwort eingeben und sich wieder bei der Website einloggen.
593 593
 ',
594
-	'pass_mot_oublie' => 'Passwort vergessen',
595
-	'pass_nouveau_enregistre' => 'Ihr neues Passwort wurde gespeichert.',
596
-	'pass_nouveau_pass' => 'Neues Passwort',
597
-	'pass_ok' => 'O.K.',
598
-	'pass_oubli_mot' => 'Passwort vergessen',
599
-	'pass_procedure_changer' => 'Um Ihr Paßwort zu ändern, geben Sie bitte die Mailadresse Ihres Accounts an.',
600
-	'pass_quitter_fenetre' => 'Dieses Fenster verlassen',
601
-	'pass_rappel_login' => 'Erinnerung: Ihr Login ist «@login@».',
602
-	'pass_recevoir_mail' => 'Ein Link zum Zurücksetzen Ihres Passworts wurde an Ihre E-Mail-Adresse geschickt (sofern diese gültig ist).',
603
-	'pass_retour_public' => 'Zurück zum öffentlichen Bereich',
604
-	'pass_rien_a_faire_ici' => 'Hier ist nichts zu tun.',
605
-	'pass_vousinscrire' => 'Bei dieser Website anmelden',
606
-	'precedent' => 'zurück',
607
-	'previsualisation' => 'Vorschau',
608
-	'previsualiser' => 'Vorschau anzeigen',
594
+    'pass_mot_oublie' => 'Passwort vergessen',
595
+    'pass_nouveau_enregistre' => 'Ihr neues Passwort wurde gespeichert.',
596
+    'pass_nouveau_pass' => 'Neues Passwort',
597
+    'pass_ok' => 'O.K.',
598
+    'pass_oubli_mot' => 'Passwort vergessen',
599
+    'pass_procedure_changer' => 'Um Ihr Paßwort zu ändern, geben Sie bitte die Mailadresse Ihres Accounts an.',
600
+    'pass_quitter_fenetre' => 'Dieses Fenster verlassen',
601
+    'pass_rappel_login' => 'Erinnerung: Ihr Login ist «@login@».',
602
+    'pass_recevoir_mail' => 'Ein Link zum Zurücksetzen Ihres Passworts wurde an Ihre E-Mail-Adresse geschickt (sofern diese gültig ist).',
603
+    'pass_retour_public' => 'Zurück zum öffentlichen Bereich',
604
+    'pass_rien_a_faire_ici' => 'Hier ist nichts zu tun.',
605
+    'pass_vousinscrire' => 'Bei dieser Website anmelden',
606
+    'precedent' => 'zurück',
607
+    'previsualisation' => 'Vorschau',
608
+    'previsualiser' => 'Vorschau anzeigen',
609 609
 
610
-	// R
611
-	'retour' => 'Zurück',
610
+    // R
611
+    'retour' => 'Zurück',
612 612
 
613
-	// S
614
-	'spip_conforme_dtd' => 'SPIP erkennt dieses Dokument als dem DOCTYPE entsprechend:',
615
-	'squelette' => 'Skelett',
616
-	'squelette_inclus_ligne' => 'eingebettetes Skelett, Zeile',
617
-	'squelette_ligne' => 'Skelett, Zeile',
618
-	'stats_visites_et_popularite' => '@visites@ Besuche; Beliebtheit: @popularite@',
619
-	'suivant' => 'weiter',
613
+    // S
614
+    'spip_conforme_dtd' => 'SPIP erkennt dieses Dokument als dem DOCTYPE entsprechend:',
615
+    'squelette' => 'Skelett',
616
+    'squelette_inclus_ligne' => 'eingebettetes Skelett, Zeile',
617
+    'squelette_ligne' => 'Skelett, Zeile',
618
+    'stats_visites_et_popularite' => '@visites@ Besuche; Beliebtheit: @popularite@',
619
+    'suivant' => 'weiter',
620 620
 
621
-	// T
622
-	'taille_go' => '@taille@ Start',
623
-	'taille_go_bi' => '@taille@ GiB',
624
-	'taille_ko' => '@taille@ kB',
625
-	'taille_ko_bi' => '@taille@ kiB',
626
-	'taille_mo' => '@taille@ MB',
627
-	'taille_mo_bi' => '@taille@ MiB',
628
-	'taille_octets' => '@taille@ Byte',
629
-	'taille_octets_bi' => '@taille@ Byte',
630
-	'texte_actualite_site_1' => 'Wenn Sie sich mit der Oberfläche des Redaktionssystems vertraut gemacht haben, können Sie „',
631
-	'texte_actualite_site_2' => 'den Expertenmodus aktivieren,',
632
-	'texte_actualite_site_3' => 'um zusätzliche Funktionen zu nutzen.',
633
-	'texte_creation_automatique_vignette' => 'Diese Website generiert automatisch Vorschaubilder. Wenn Sie Bilder in den Formaten @gd_formats@ mit diesem Formular installieren, werden Vorschaubilder mit den maximalen Diemsionen @taille_preview@ Pixel angelegt.',
634
-	'texte_documents_associes' => 'Die folgenden Dokumente wurden dem Artikel zugeordnet jedoch nicht direkt in ihn eingefügt. Ja nach Gestaltung der öffentlichen Website können Sie alle beigeordneten Dokumente angezeigt werden (oder auch nicht).',
635
-	'texte_erreur_mise_niveau_base' => 'Datenbankfehler beim Einrichten der neuen Version. Das Bild <b>@fichier@</b> wurde nicht übernommen (Artikel @id_article@).
621
+    // T
622
+    'taille_go' => '@taille@ Start',
623
+    'taille_go_bi' => '@taille@ GiB',
624
+    'taille_ko' => '@taille@ kB',
625
+    'taille_ko_bi' => '@taille@ kiB',
626
+    'taille_mo' => '@taille@ MB',
627
+    'taille_mo_bi' => '@taille@ MiB',
628
+    'taille_octets' => '@taille@ Byte',
629
+    'taille_octets_bi' => '@taille@ Byte',
630
+    'texte_actualite_site_1' => 'Wenn Sie sich mit der Oberfläche des Redaktionssystems vertraut gemacht haben, können Sie „',
631
+    'texte_actualite_site_2' => 'den Expertenmodus aktivieren,',
632
+    'texte_actualite_site_3' => 'um zusätzliche Funktionen zu nutzen.',
633
+    'texte_creation_automatique_vignette' => 'Diese Website generiert automatisch Vorschaubilder. Wenn Sie Bilder in den Formaten @gd_formats@ mit diesem Formular installieren, werden Vorschaubilder mit den maximalen Diemsionen @taille_preview@ Pixel angelegt.',
634
+    'texte_documents_associes' => 'Die folgenden Dokumente wurden dem Artikel zugeordnet jedoch nicht direkt in ihn eingefügt. Ja nach Gestaltung der öffentlichen Website können Sie alle beigeordneten Dokumente angezeigt werden (oder auch nicht).',
635
+    'texte_erreur_mise_niveau_base' => 'Datenbankfehler beim Einrichten der neuen Version. Das Bild <b>@fichier@</b> wurde nicht übernommen (Artikel @id_article@).
636 636
  Bitte notieren Sie diesen Hinweis, starten Sie die Aktualisierung erneut und prüfen Sie, ob die Bilder
637 637
  in den Artikeln angezeigt werden.',
638
-	'texte_erreur_visiteur' => 'Sie haben versucht, sich mit einer Identität einzuloggen, die dazu nicht berechtigt.',
639
-	'texte_inc_auth_1' => 'Sie sind angemeldet als <b>@auth_login@</b>, aber diese ID existiert nicht bzw. nicht mehr in der Datenbank.
638
+    'texte_erreur_visiteur' => 'Sie haben versucht, sich mit einer Identität einzuloggen, die dazu nicht berechtigt.',
639
+    'texte_inc_auth_1' => 'Sie sind angemeldet als <b>@auth_login@</b>, aber diese ID existiert nicht bzw. nicht mehr in der Datenbank.
640 640
  Versuchen Sie,',
641
-	'texte_inc_auth_2' => 'sich erneut anzumelden',
642
-	'texte_inc_auth_3' => ', nachdem Sie u.U. Ihren Webbrowser neu gestartet haben.',
643
-	'texte_inc_config' => 'Die hier möglichten Einstellungen beeinflussen das grundsätzliche Verhalten Ihrer Website. Wir raten dringend, sie nur zu ändern, wenn Sie vollständig mit der Funktionsweise von SPIP vertraut sind.<br /><br /><b>Es ist ebenfalls mehr als ratsam, diese Einstellungen nur von Ihrem Haupt-Administrator vornehmen zu lassen.</b>',
644
-	'texte_inc_meta_1' => 'Das System konnte die Datei <code>@fichier@</code> nicht speichern. Bitte prüfen Sie als Administrator ',
645
-	'texte_inc_meta_2' => 'die Berechtigungen',
646
-	'texte_inc_meta_3' => 'für das Verzeichnis <code>@repertoire@</code>.',
647
-	'texte_statut_en_cours_redaction' => 'in Bearbeitung',
648
-	'texte_statut_poubelle' => 'im Mülleimer',
649
-	'texte_statut_propose_evaluation' => 'vorgeschlagen',
650
-	'texte_statut_publie' => 'veröffentlicht',
651
-	'texte_statut_refuse' => 'abgelehnt',
652
-	'titre_ajouter_mot_cle' => 'SCHLAGWORT ZUORDNEN:',
653
-	'titre_cadre_raccourcis' => 'SCHNELLZUGANG:',
654
-	'titre_changer_couleur_interface' => 'Farbe der Oberfläche ändern',
655
-	'titre_image_admin_article' => 'Sie können diesen Artikel verwalten',
656
-	'titre_image_administrateur' => 'Administrator',
657
-	'titre_image_aide' => 'Hilfe zu diesem Element',
658
-	'titre_image_auteur_supprime' => 'gelöschter Autor',
659
-	'titre_image_redacteur' => 'Redakteur ohne Systemzugang',
660
-	'titre_image_redacteur_02' => 'Redakteur',
661
-	'titre_image_selecteur' => 'Liste anzeigen',
662
-	'titre_image_visiteur' => 'Besucher',
663
-	'titre_joindre_document' => 'DOKUMENT ANFÜGEN',
664
-	'titre_mots_cles' => 'SCHLAGWORTE',
665
-	'titre_probleme_technique' => 'Achtung! Ein Problem mit dem SQL Server verhindert den Zugang zu diesem Teil der Website. Danke für Ihr Verständnis.',
666
-	'titre_publier_document' => 'DOKUMENT IN DIESER RUBRIK VERÖFFENTLICHEN',
667
-	'titre_signatures_attente' => 'Nicht bestätigte Unterschriften',
668
-	'titre_signatures_confirmees' => 'Bestätigte Unterschriften',
669
-	'titre_statistiques' => 'Statistiken',
670
-	'titre_titre_document' => 'Titel des Dokuments:',
671
-	'todo' => 'demnächst',
672
-	'trad_definir_reference' => 'Wählen Sie "@titre@" als Referenz für Übersetzungen',
673
-	'trad_reference' => '(Referenzartikel)',
641
+    'texte_inc_auth_2' => 'sich erneut anzumelden',
642
+    'texte_inc_auth_3' => ', nachdem Sie u.U. Ihren Webbrowser neu gestartet haben.',
643
+    'texte_inc_config' => 'Die hier möglichten Einstellungen beeinflussen das grundsätzliche Verhalten Ihrer Website. Wir raten dringend, sie nur zu ändern, wenn Sie vollständig mit der Funktionsweise von SPIP vertraut sind.<br /><br /><b>Es ist ebenfalls mehr als ratsam, diese Einstellungen nur von Ihrem Haupt-Administrator vornehmen zu lassen.</b>',
644
+    'texte_inc_meta_1' => 'Das System konnte die Datei <code>@fichier@</code> nicht speichern. Bitte prüfen Sie als Administrator ',
645
+    'texte_inc_meta_2' => 'die Berechtigungen',
646
+    'texte_inc_meta_3' => 'für das Verzeichnis <code>@repertoire@</code>.',
647
+    'texte_statut_en_cours_redaction' => 'in Bearbeitung',
648
+    'texte_statut_poubelle' => 'im Mülleimer',
649
+    'texte_statut_propose_evaluation' => 'vorgeschlagen',
650
+    'texte_statut_publie' => 'veröffentlicht',
651
+    'texte_statut_refuse' => 'abgelehnt',
652
+    'titre_ajouter_mot_cle' => 'SCHLAGWORT ZUORDNEN:',
653
+    'titre_cadre_raccourcis' => 'SCHNELLZUGANG:',
654
+    'titre_changer_couleur_interface' => 'Farbe der Oberfläche ändern',
655
+    'titre_image_admin_article' => 'Sie können diesen Artikel verwalten',
656
+    'titre_image_administrateur' => 'Administrator',
657
+    'titre_image_aide' => 'Hilfe zu diesem Element',
658
+    'titre_image_auteur_supprime' => 'gelöschter Autor',
659
+    'titre_image_redacteur' => 'Redakteur ohne Systemzugang',
660
+    'titre_image_redacteur_02' => 'Redakteur',
661
+    'titre_image_selecteur' => 'Liste anzeigen',
662
+    'titre_image_visiteur' => 'Besucher',
663
+    'titre_joindre_document' => 'DOKUMENT ANFÜGEN',
664
+    'titre_mots_cles' => 'SCHLAGWORTE',
665
+    'titre_probleme_technique' => 'Achtung! Ein Problem mit dem SQL Server verhindert den Zugang zu diesem Teil der Website. Danke für Ihr Verständnis.',
666
+    'titre_publier_document' => 'DOKUMENT IN DIESER RUBRIK VERÖFFENTLICHEN',
667
+    'titre_signatures_attente' => 'Nicht bestätigte Unterschriften',
668
+    'titre_signatures_confirmees' => 'Bestätigte Unterschriften',
669
+    'titre_statistiques' => 'Statistiken',
670
+    'titre_titre_document' => 'Titel des Dokuments:',
671
+    'todo' => 'demnächst',
672
+    'trad_definir_reference' => 'Wählen Sie "@titre@" als Referenz für Übersetzungen',
673
+    'trad_reference' => '(Referenzartikel)',
674 674
 
675
-	// U
676
-	'upload_limit' => 'Die Datei ist zu groß für den Server; die maximal erlaubte Dateigröße für den <i>Upload</i> ist @max@.',
675
+    // U
676
+    'upload_limit' => 'Die Datei ist zu groß für den Server; die maximal erlaubte Dateigröße für den <i>Upload</i> ist @max@.',
677 677
 
678
-	// Z
679
-	'zbug_balise_b_aval' => ' : Tag B muss vor der Schleife stehen',
680
-	'zbug_balise_inexistante' => 'Fehler: Der Tag @balise@ wurde nicht richtig für  @from@ deklariert.',
681
-	'zbug_balise_sans_argument' => 'Dem Tag @balise@ fehlt ein Parameter',
682
-	'zbug_boucle' => 'Schleife',
683
-	'zbug_boucle_recursive_undef' => 'Die rekursive Schleife @nom@ ist nicht definiert',
684
-	'zbug_calcul' => 'berechnen',
685
-	'zbug_champ_hors_boucle' => 'Feld @champ@ ausserhalb einer Schleife',
686
-	'zbug_champ_hors_critere' => 'Feld @champ@ ohne Kriterium @critere@',
687
-	'zbug_champ_hors_motif' => 'Feld @champ@ befindet sich ausserhalb eines Kontexts @motif@',
688
-	'zbug_code' => 'Code',
689
-	'zbug_critere_inconnu' => 'Unbekanntes Kriterium @critere@',
690
-	'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} für eine Tabelle ohne eindeutigen Schlüssel',
691
-	'zbug_distant_interdit' => 'Extern unzulässig',
692
-	'zbug_doublon_table_sans_cle_primaire' => 'Dublette in einer Tabelle ohne eindeutigen Primärschlüssel',
693
-	'zbug_doublon_table_sans_index' => 'Dublette in Tabelle ohne Index',
694
-	'zbug_erreur_boucle_double' => 'Schleife (BOUCLE) @id@ doppelt vorhanden',
695
-	'zbug_erreur_boucle_fermant' => 'Schleife (BOUCLE) @id@: Schluss-Tag fehlt',
696
-	'zbug_erreur_boucle_syntaxe' => 'Syntax der Schleife @id@ fehlerhaft',
697
-	'zbug_erreur_compilation' => 'Fehler beim Kompilieren',
698
-	'zbug_erreur_execution_page' => 'Fehler beim Ausführen',
699
-	'zbug_erreur_filtre' => 'Der Filter @filtre@ ist nicht definiert.',
700
-	'zbug_erreur_filtre_nbarg_min' => 'Filter @filtre@: es fehlen @nb@ Argument(e)',
701
-	'zbug_erreur_meme_parent' => 'Das Kriterium {meme_parent} funktioniert nur mit den Schleifen (FORUMS) und (RUBRIQUES).',
702
-	'zbug_erreur_squelette' => 'Fehler in Layoutvorlage (Skelett)',
703
-	'zbug_hors_compilation' => 'Außerhalb der Kompilation',
704
-	'zbug_info_erreur_squelette' => 'Irrtum auf der Seite',
705
-	'zbug_inversion_ordre_inexistant' => 'Umkehrung einer inexistenten Sortierung ',
706
-	'zbug_pagination_sans_critere' => '#PAGINATION ohne Kriterium {pagination} oder in rekursiver Schleife',
707
-	'zbug_parametres_inclus_incorrects' => 'INCLUDE-Parameter fehlerhaft: @param@',
708
-	'zbug_profile' => 'Rechenzeit: @time@',
709
-	'zbug_resultat' => 'Ergebnis',
710
-	'zbug_serveur_indefini' => 'SQL-Server nicht definiert',
711
-	'zbug_statistiques' => 'Statistik der SQL Abfragen nach Dauer',
712
-	'zbug_table_inconnue' => 'SQL-Tabelle « @table@ » unbekannt',
713
-	'zxml_connus_attributs' => 'bekannte Attribute',
714
-	'zxml_de' => 'von',
715
-	'zxml_inconnu_attribut' => 'Attribut unbekannt',
716
-	'zxml_inconnu_balise' => 'Tag unbekannt',
717
-	'zxml_inconnu_entite' => 'Entity unbekannt',
718
-	'zxml_inconnu_id' => 'ID unbekannt',
719
-	'zxml_mais_de' => 'aber',
720
-	'zxml_non_conforme' => 'entspricht nicht dem Motiv',
721
-	'zxml_non_fils' => 'ist kein Kind von',
722
-	'zxml_nonvide_balise' => 'kein leerer Tag',
723
-	'zxml_obligatoire_attribut' => 'obligatorisches Attribut fehlt in',
724
-	'zxml_succession_fils_incorrecte' => 'Objektreihenfolge inkorrekt',
725
-	'zxml_survoler' => 'Mouseover zeigt korrekte',
726
-	'zxml_valeur_attribut' => 'Attributwert',
727
-	'zxml_vide_balise' => 'leerer Tag',
728
-	'zxml_vu' => 'bereits gesehen'
678
+    // Z
679
+    'zbug_balise_b_aval' => ' : Tag B muss vor der Schleife stehen',
680
+    'zbug_balise_inexistante' => 'Fehler: Der Tag @balise@ wurde nicht richtig für  @from@ deklariert.',
681
+    'zbug_balise_sans_argument' => 'Dem Tag @balise@ fehlt ein Parameter',
682
+    'zbug_boucle' => 'Schleife',
683
+    'zbug_boucle_recursive_undef' => 'Die rekursive Schleife @nom@ ist nicht definiert',
684
+    'zbug_calcul' => 'berechnen',
685
+    'zbug_champ_hors_boucle' => 'Feld @champ@ ausserhalb einer Schleife',
686
+    'zbug_champ_hors_critere' => 'Feld @champ@ ohne Kriterium @critere@',
687
+    'zbug_champ_hors_motif' => 'Feld @champ@ befindet sich ausserhalb eines Kontexts @motif@',
688
+    'zbug_code' => 'Code',
689
+    'zbug_critere_inconnu' => 'Unbekanntes Kriterium @critere@',
690
+    'zbug_critere_sur_table_sans_cle_primaire' => '{@critere@} für eine Tabelle ohne eindeutigen Schlüssel',
691
+    'zbug_distant_interdit' => 'Extern unzulässig',
692
+    'zbug_doublon_table_sans_cle_primaire' => 'Dublette in einer Tabelle ohne eindeutigen Primärschlüssel',
693
+    'zbug_doublon_table_sans_index' => 'Dublette in Tabelle ohne Index',
694
+    'zbug_erreur_boucle_double' => 'Schleife (BOUCLE) @id@ doppelt vorhanden',
695
+    'zbug_erreur_boucle_fermant' => 'Schleife (BOUCLE) @id@: Schluss-Tag fehlt',
696
+    'zbug_erreur_boucle_syntaxe' => 'Syntax der Schleife @id@ fehlerhaft',
697
+    'zbug_erreur_compilation' => 'Fehler beim Kompilieren',
698
+    'zbug_erreur_execution_page' => 'Fehler beim Ausführen',
699
+    'zbug_erreur_filtre' => 'Der Filter @filtre@ ist nicht definiert.',
700
+    'zbug_erreur_filtre_nbarg_min' => 'Filter @filtre@: es fehlen @nb@ Argument(e)',
701
+    'zbug_erreur_meme_parent' => 'Das Kriterium {meme_parent} funktioniert nur mit den Schleifen (FORUMS) und (RUBRIQUES).',
702
+    'zbug_erreur_squelette' => 'Fehler in Layoutvorlage (Skelett)',
703
+    'zbug_hors_compilation' => 'Außerhalb der Kompilation',
704
+    'zbug_info_erreur_squelette' => 'Irrtum auf der Seite',
705
+    'zbug_inversion_ordre_inexistant' => 'Umkehrung einer inexistenten Sortierung ',
706
+    'zbug_pagination_sans_critere' => '#PAGINATION ohne Kriterium {pagination} oder in rekursiver Schleife',
707
+    'zbug_parametres_inclus_incorrects' => 'INCLUDE-Parameter fehlerhaft: @param@',
708
+    'zbug_profile' => 'Rechenzeit: @time@',
709
+    'zbug_resultat' => 'Ergebnis',
710
+    'zbug_serveur_indefini' => 'SQL-Server nicht definiert',
711
+    'zbug_statistiques' => 'Statistik der SQL Abfragen nach Dauer',
712
+    'zbug_table_inconnue' => 'SQL-Tabelle « @table@ » unbekannt',
713
+    'zxml_connus_attributs' => 'bekannte Attribute',
714
+    'zxml_de' => 'von',
715
+    'zxml_inconnu_attribut' => 'Attribut unbekannt',
716
+    'zxml_inconnu_balise' => 'Tag unbekannt',
717
+    'zxml_inconnu_entite' => 'Entity unbekannt',
718
+    'zxml_inconnu_id' => 'ID unbekannt',
719
+    'zxml_mais_de' => 'aber',
720
+    'zxml_non_conforme' => 'entspricht nicht dem Motiv',
721
+    'zxml_non_fils' => 'ist kein Kind von',
722
+    'zxml_nonvide_balise' => 'kein leerer Tag',
723
+    'zxml_obligatoire_attribut' => 'obligatorisches Attribut fehlt in',
724
+    'zxml_succession_fils_incorrecte' => 'Objektreihenfolge inkorrekt',
725
+    'zxml_survoler' => 'Mouseover zeigt korrekte',
726
+    'zxml_valeur_attribut' => 'Attributwert',
727
+    'zxml_vide_balise' => 'leerer Tag',
728
+    'zxml_vu' => 'bereits gesehen'
729 729
 );
Please login to merge, or discard this patch.
prive/formulaires/editer_article.php 1 patch
Indentation   +93 added lines, -93 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/actions');
@@ -45,30 +45,30 @@  discard block
 block discarded – undo
45 45
  *     Environnement du formulaire
46 46
  **/
47 47
 function formulaires_editer_article_charger_dist(
48
-	$id_article = 'new',
49
-	$id_rubrique = 0,
50
-	$retour = '',
51
-	$lier_trad = 0,
52
-	$config_fonc = 'articles_edit_config',
53
-	$row = [],
54
-	$hidden = ''
48
+    $id_article = 'new',
49
+    $id_rubrique = 0,
50
+    $retour = '',
51
+    $lier_trad = 0,
52
+    $config_fonc = 'articles_edit_config',
53
+    $row = [],
54
+    $hidden = ''
55 55
 ) {
56
-	$valeurs = formulaires_editer_objet_charger(
57
-		'article',
58
-		$id_article,
59
-		$id_rubrique,
60
-		$lier_trad,
61
-		$retour,
62
-		$config_fonc,
63
-		$row,
64
-		$hidden
65
-	);
56
+    $valeurs = formulaires_editer_objet_charger(
57
+        'article',
58
+        $id_article,
59
+        $id_rubrique,
60
+        $lier_trad,
61
+        $retour,
62
+        $config_fonc,
63
+        $row,
64
+        $hidden
65
+    );
66 66
 
67
-	if (intval($id_article) and !autoriser('modifier', 'article', intval($id_article))) {
68
-		$valeurs['editable'] = '';
69
-	}
67
+    if (intval($id_article) and !autoriser('modifier', 'article', intval($id_article))) {
68
+        $valeurs['editable'] = '';
69
+    }
70 70
 
71
-	return $valeurs;
71
+    return $valeurs;
72 72
 }
73 73
 
74 74
 /**
@@ -93,15 +93,15 @@  discard block
 block discarded – undo
93 93
  *     Hash du formulaire
94 94
  */
95 95
 function formulaires_editer_article_identifier_dist(
96
-	$id_article = 'new',
97
-	$id_rubrique = 0,
98
-	$retour = '',
99
-	$lier_trad = 0,
100
-	$config_fonc = 'articles_edit_config',
101
-	$row = [],
102
-	$hidden = ''
96
+    $id_article = 'new',
97
+    $id_rubrique = 0,
98
+    $retour = '',
99
+    $lier_trad = 0,
100
+    $config_fonc = 'articles_edit_config',
101
+    $row = [],
102
+    $hidden = ''
103 103
 ) {
104
-	return serialize([intval($id_article), $lier_trad]);
104
+    return serialize([intval($id_article), $lier_trad]);
105 105
 }
106 106
 
107 107
 /**
@@ -114,12 +114,12 @@  discard block
 block discarded – undo
114 114
  */
115 115
 function articles_edit_config(array $row): array {
116 116
 
117
-	$config = [];
118
-	$config['lignes'] = 8;
119
-	$config['langue'] = $GLOBALS['spip_lang'];
120
-	$config['restreint'] = ($row['statut'] === 'publie');
117
+    $config = [];
118
+    $config['lignes'] = 8;
119
+    $config['langue'] = $GLOBALS['spip_lang'];
120
+    $config['restreint'] = ($row['statut'] === 'publie');
121 121
 
122
-	return $config;
122
+    return $config;
123 123
 }
124 124
 
125 125
 /**
@@ -145,43 +145,43 @@  discard block
 block discarded – undo
145 145
  *     Erreurs du formulaire
146 146
  **/
147 147
 function formulaires_editer_article_verifier_dist(
148
-	$id_article = 'new',
149
-	$id_rubrique = 0,
150
-	$retour = '',
151
-	$lier_trad = 0,
152
-	$config_fonc = 'articles_edit_config',
153
-	$row = [],
154
-	$hidden = ''
148
+    $id_article = 'new',
149
+    $id_rubrique = 0,
150
+    $retour = '',
151
+    $lier_trad = 0,
152
+    $config_fonc = 'articles_edit_config',
153
+    $row = [],
154
+    $hidden = ''
155 155
 ) {
156
-	// auto-renseigner le titre si il n'existe pas
157
-	titre_automatique('titre', ['descriptif', 'chapo', 'texte']);
158
-	if (!_request('id_parent') and !intval($id_article)) {
159
-		$valeurs = formulaires_editer_objet_charger(
160
-			'article',
161
-			$id_article,
162
-			$id_rubrique,
163
-			$lier_trad,
164
-			$retour,
165
-			$config_fonc,
166
-			$row,
167
-			$hidden
168
-		);
169
-		set_request('id_parent', $valeurs['id_parent']);
170
-	}
171
-	// on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide
172
-	$erreurs = formulaires_editer_objet_verifier('article', $id_article, ['id_parent']);
173
-	// si on utilise le formulaire dans le public
174
-	if (!function_exists('autoriser')) {
175
-		include_spip('inc/autoriser');
176
-	}
177
-	if (
178
-		!isset($erreurs['id_parent'])
179
-		and !autoriser('creerarticledans', 'rubrique', _request('id_parent'))
180
-	) {
181
-		$erreurs['id_parent'] = _T('info_creerdansrubrique_non_autorise');
182
-	}
156
+    // auto-renseigner le titre si il n'existe pas
157
+    titre_automatique('titre', ['descriptif', 'chapo', 'texte']);
158
+    if (!_request('id_parent') and !intval($id_article)) {
159
+        $valeurs = formulaires_editer_objet_charger(
160
+            'article',
161
+            $id_article,
162
+            $id_rubrique,
163
+            $lier_trad,
164
+            $retour,
165
+            $config_fonc,
166
+            $row,
167
+            $hidden
168
+        );
169
+        set_request('id_parent', $valeurs['id_parent']);
170
+    }
171
+    // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide
172
+    $erreurs = formulaires_editer_objet_verifier('article', $id_article, ['id_parent']);
173
+    // si on utilise le formulaire dans le public
174
+    if (!function_exists('autoriser')) {
175
+        include_spip('inc/autoriser');
176
+    }
177
+    if (
178
+        !isset($erreurs['id_parent'])
179
+        and !autoriser('creerarticledans', 'rubrique', _request('id_parent'))
180
+    ) {
181
+        $erreurs['id_parent'] = _T('info_creerdansrubrique_non_autorise');
182
+    }
183 183
 
184
-	return $erreurs;
184
+    return $erreurs;
185 185
 }
186 186
 
187 187
 /**
@@ -207,29 +207,29 @@  discard block
 block discarded – undo
207 207
  *     Retours des traitements
208 208
  **/
209 209
 function formulaires_editer_article_traiter_dist(
210
-	$id_article = 'new',
211
-	$id_rubrique = 0,
212
-	$retour = '',
213
-	$lier_trad = 0,
214
-	$config_fonc = 'articles_edit_config',
215
-	$row = [],
216
-	$hidden = ''
210
+    $id_article = 'new',
211
+    $id_rubrique = 0,
212
+    $retour = '',
213
+    $lier_trad = 0,
214
+    $config_fonc = 'articles_edit_config',
215
+    $row = [],
216
+    $hidden = ''
217 217
 ) {
218
-	// ici on ignore changer_lang qui est poste en cas de trad,
219
-	// car l'heuristique du choix de la langue est pris en charge par article_inserer
220
-	// en fonction de la config du site et de la rubrique choisie
221
-	if (!$lier_trad) {
222
-		set_request('changer_lang');
223
-	}
218
+    // ici on ignore changer_lang qui est poste en cas de trad,
219
+    // car l'heuristique du choix de la langue est pris en charge par article_inserer
220
+    // en fonction de la config du site et de la rubrique choisie
221
+    if (!$lier_trad) {
222
+        set_request('changer_lang');
223
+    }
224 224
 
225
-	return formulaires_editer_objet_traiter(
226
-		'article',
227
-		$id_article,
228
-		$id_rubrique,
229
-		$lier_trad,
230
-		$retour,
231
-		$config_fonc,
232
-		$row,
233
-		$hidden
234
-	);
225
+    return formulaires_editer_objet_traiter(
226
+        'article',
227
+        $id_article,
228
+        $id_rubrique,
229
+        $lier_trad,
230
+        $retour,
231
+        $config_fonc,
232
+        $row,
233
+        $hidden
234
+    );
235 235
 }
Please login to merge, or discard this patch.
ecrire/lang/public_ja.php 1 patch
Indentation   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -4,123 +4,123 @@
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'accueil_site' => 'ホーム',
14
-	'article' => '記事',
15
-	'articles' => '記事',
16
-	'articles_auteur' => 'この著者の記事',
17
-	'articles_populaires' => '人気のある記事',
18
-	'articles_rubrique' => 'このセクションにある記事',
19
-	'aucun_article' => 'このアドレスに記事はありません',
20
-	'aucun_auteur' => 'このアドレスに著者はいません',
21
-	'aucun_site' => 'このアドレスにサイトはありません',
22
-	'aucune_breve' => 'このアドレスにニュースはありません',
23
-	'aucune_rubrique' => 'このアドレスにセクションはありません',
24
-	'auteur' => '著者',
25
-	'autres' => 'その他',
26
-	'autres_breves' => '他のニュース',
27
-	'autres_groupes_mots_clefs' => 'キーワードの他のグループ',
28
-	'autres_sites' => '他のサイト',
29
-
30
-	// B
31
-	'bonjour' => 'こんにちは',
32
-
33
-	// C
34
-	'commenter_site' => 'このサイトについてコメントして下さい',
35
-	'contact' => '連絡先',
36
-	'copie_document_impossible' => 'ファイルのコーピは不可能です',
37
-
38
-	// D
39
-	'date' => '日付',
40
-	'dernier_ajout' => '最新の追加',
41
-	'dernieres_breves' => '最新のニュース',
42
-	'derniers_articles' => '最新の記事',
43
-	'derniers_commentaires' => '最新のコメント',
44
-	'derniers_messages_forum' => 'フォーラムで投稿された最新のメッセージ',
45
-
46
-	// E
47
-	'edition_mode_texte' => 'テキストモード編集',
48
-	'en_reponse' => '返事として:',
49
-	'en_resume' => 'まとめとして',
50
-	'envoyer_message' => 'メッセージを送る',
51
-	'espace_prive' => '管理エリア',
52
-
53
-	// F
54
-	'formats_acceptes' => '受け入れるファイルのフォーマット: @formats@です。',
55
-
56
-	// H
57
-	'hierarchie_site' => 'サイトの階層',
58
-
59
-	// J
60
-	'jours' => '日付',
61
-
62
-	// L
63
-	'lien_connecter' => 'ログイン',
64
-
65
-	// M
66
-	'meme_auteur' => '同じ著者',
67
-	'meme_rubrique' => '同じセクションの中で',
68
-	'memes_auteurs' => '同じ著者',
69
-	'message' => 'フォーラムのメッセージ',
70
-	'messages_forum' => 'フォーラムのメッセージ',
71
-	'messages_recents' => '最新のフォーラムのメッセージ',
72
-	'mots_clef' => 'キーワード',
73
-	'mots_clefs' => 'キーワード',
74
-	'mots_clefs_meme_groupe' => '同じグループのキーワード',
75
-
76
-	// N
77
-	'navigation' => 'ナビゲーション',
78
-	'nom' => 'お名前',
79
-	'nouveautes' => '最新刊',
80
-	'nouveautes_web' => 'ウェブに関する最新刊',
81
-	'nouveaux_articles' => '新しい記事',
82
-	'nouvelles_breves' => '新しいニュース',
83
-
84
-	// P
85
-	'page_precedente' => '前のページ',
86
-	'page_suivante' => '次のページ',
87
-	'par_auteur' => '著者:',
88
-	'participer_site' => 'サインアップすると、サイトにご自分の記事を書くことが出来ます。申し込みしてから、管理エリアへのアクセスコードがメールで届きます。',
89
-	'plan_site' => 'サイトマップ',
90
-	'popularite' => '人気',
91
-	'poster_message' => 'メッセージを投稿する',
92
-	'proposer_site' => '追加するサイトを提案できるセクション:',
93
-
94
-	// R
95
-	'repondre_article' => 'この記事に返信する',
96
-	'repondre_breve' => 'このニュースに返信する',
97
-	'resultats_recherche' => '検索結果',
98
-	'retour_debut_forums' => 'フォーラムの最初のページに戻る',
99
-	'rss_abonnement' => '以下のURLをアグリゲーターにコピーしてください。',
100
-	'rss_abonnement_titre' => '購読してください。',
101
-	'rss_abonnement_titre_page' => '購読してください。',
102
-	'rss_explication' => 'RSSフィードは、サイトの更新情報を収集するものです。投稿やコメントの内容やその抜粋、全文へのリンクなどの情報を提供します。このフィードは、RSSアグリゲーターで読み込むことを想定しています。',
103
-	'rss_explication_titre' => 'RSSフィードとは?',
104
-	'rubrique' => 'セクション',
105
-	'rubriques' => 'セクション',
106
-
107
-	// S
108
-	'signatures_petition' => '署名',
109
-	'site_realise_avec_spip' => 'SPIPで創造されたサイトです',
110
-	'sites_web' => 'ウェブサイト',
111
-	'sous_rubriques' => 'サブセクション',
112
-	'spam' => '迷惑メール',
113
-	'suite' => '次へ',
114
-	'sur_web' => 'ウェブ上',
115
-	'syndiquer_rubrique' => 'このセクションを供給する',
116
-	'syndiquer_site' => '全サイトを供給する',
117
-
118
-	// T
119
-	'texte_lettre_information' => 'サイトのニュースレター',
120
-	'texte_lettre_information_2' => '最新刊をまとめるニュースレター',
121
-
122
-	// V
123
-	'ver_imprimer' => '印刷用のバージョン',
124
-	'voir_en_ligne' => 'オンラインで見る',
125
-	'voir_squelette' => 'ページのテンプレートを見る'
12
+    // A
13
+    'accueil_site' => 'ホーム',
14
+    'article' => '記事',
15
+    'articles' => '記事',
16
+    'articles_auteur' => 'この著者の記事',
17
+    'articles_populaires' => '人気のある記事',
18
+    'articles_rubrique' => 'このセクションにある記事',
19
+    'aucun_article' => 'このアドレスに記事はありません',
20
+    'aucun_auteur' => 'このアドレスに著者はいません',
21
+    'aucun_site' => 'このアドレスにサイトはありません',
22
+    'aucune_breve' => 'このアドレスにニュースはありません',
23
+    'aucune_rubrique' => 'このアドレスにセクションはありません',
24
+    'auteur' => '著者',
25
+    'autres' => 'その他',
26
+    'autres_breves' => '他のニュース',
27
+    'autres_groupes_mots_clefs' => 'キーワードの他のグループ',
28
+    'autres_sites' => '他のサイト',
29
+
30
+    // B
31
+    'bonjour' => 'こんにちは',
32
+
33
+    // C
34
+    'commenter_site' => 'このサイトについてコメントして下さい',
35
+    'contact' => '連絡先',
36
+    'copie_document_impossible' => 'ファイルのコーピは不可能です',
37
+
38
+    // D
39
+    'date' => '日付',
40
+    'dernier_ajout' => '最新の追加',
41
+    'dernieres_breves' => '最新のニュース',
42
+    'derniers_articles' => '最新の記事',
43
+    'derniers_commentaires' => '最新のコメント',
44
+    'derniers_messages_forum' => 'フォーラムで投稿された最新のメッセージ',
45
+
46
+    // E
47
+    'edition_mode_texte' => 'テキストモード編集',
48
+    'en_reponse' => '返事として:',
49
+    'en_resume' => 'まとめとして',
50
+    'envoyer_message' => 'メッセージを送る',
51
+    'espace_prive' => '管理エリア',
52
+
53
+    // F
54
+    'formats_acceptes' => '受け入れるファイルのフォーマット: @formats@です。',
55
+
56
+    // H
57
+    'hierarchie_site' => 'サイトの階層',
58
+
59
+    // J
60
+    'jours' => '日付',
61
+
62
+    // L
63
+    'lien_connecter' => 'ログイン',
64
+
65
+    // M
66
+    'meme_auteur' => '同じ著者',
67
+    'meme_rubrique' => '同じセクションの中で',
68
+    'memes_auteurs' => '同じ著者',
69
+    'message' => 'フォーラムのメッセージ',
70
+    'messages_forum' => 'フォーラムのメッセージ',
71
+    'messages_recents' => '最新のフォーラムのメッセージ',
72
+    'mots_clef' => 'キーワード',
73
+    'mots_clefs' => 'キーワード',
74
+    'mots_clefs_meme_groupe' => '同じグループのキーワード',
75
+
76
+    // N
77
+    'navigation' => 'ナビゲーション',
78
+    'nom' => 'お名前',
79
+    'nouveautes' => '最新刊',
80
+    'nouveautes_web' => 'ウェブに関する最新刊',
81
+    'nouveaux_articles' => '新しい記事',
82
+    'nouvelles_breves' => '新しいニュース',
83
+
84
+    // P
85
+    'page_precedente' => '前のページ',
86
+    'page_suivante' => '次のページ',
87
+    'par_auteur' => '著者:',
88
+    'participer_site' => 'サインアップすると、サイトにご自分の記事を書くことが出来ます。申し込みしてから、管理エリアへのアクセスコードがメールで届きます。',
89
+    'plan_site' => 'サイトマップ',
90
+    'popularite' => '人気',
91
+    'poster_message' => 'メッセージを投稿する',
92
+    'proposer_site' => '追加するサイトを提案できるセクション:',
93
+
94
+    // R
95
+    'repondre_article' => 'この記事に返信する',
96
+    'repondre_breve' => 'このニュースに返信する',
97
+    'resultats_recherche' => '検索結果',
98
+    'retour_debut_forums' => 'フォーラムの最初のページに戻る',
99
+    'rss_abonnement' => '以下のURLをアグリゲーターにコピーしてください。',
100
+    'rss_abonnement_titre' => '購読してください。',
101
+    'rss_abonnement_titre_page' => '購読してください。',
102
+    'rss_explication' => 'RSSフィードは、サイトの更新情報を収集するものです。投稿やコメントの内容やその抜粋、全文へのリンクなどの情報を提供します。このフィードは、RSSアグリゲーターで読み込むことを想定しています。',
103
+    'rss_explication_titre' => 'RSSフィードとは?',
104
+    'rubrique' => 'セクション',
105
+    'rubriques' => 'セクション',
106
+
107
+    // S
108
+    'signatures_petition' => '署名',
109
+    'site_realise_avec_spip' => 'SPIPで創造されたサイトです',
110
+    'sites_web' => 'ウェブサイト',
111
+    'sous_rubriques' => 'サブセクション',
112
+    'spam' => '迷惑メール',
113
+    'suite' => '次へ',
114
+    'sur_web' => 'ウェブ上',
115
+    'syndiquer_rubrique' => 'このセクションを供給する',
116
+    'syndiquer_site' => '全サイトを供給する',
117
+
118
+    // T
119
+    'texte_lettre_information' => 'サイトのニュースレター',
120
+    'texte_lettre_information_2' => '最新刊をまとめるニュースレター',
121
+
122
+    // V
123
+    'ver_imprimer' => '印刷用のバージョン',
124
+    'voir_en_ligne' => 'オンラインで見る',
125
+    'voir_squelette' => 'ページのテンプレートを見る'
126 126
 );
Please login to merge, or discard this patch.
config/ecran_securite.php 3 patches
Indentation   +439 added lines, -439 removed lines patch added patch discarded remove patch
@@ -15,11 +15,11 @@  discard block
 block discarded – undo
15 15
  * Test utilisateur
16 16
  */
17 17
 if (isset($_GET['test_ecran_securite'])) {
18
-	$ecran_securite_raison = 'test ' . _ECRAN_SECURITE;
18
+    $ecran_securite_raison = 'test ' . _ECRAN_SECURITE;
19 19
 }
20 20
 
21 21
 if (file_exists($f = __DIR__ . DIRECTORY_SEPARATOR  . 'ecran_securite_options.php')) {
22
-	include ($f);
22
+    include ($f);
23 23
 }
24 24
 
25 25
 /*
@@ -29,222 +29,222 @@  discard block
 block discarded – undo
29 29
  * le load depasse ECRAN_SECURITE_LOAD)
30 30
  */
31 31
 if (!defined('_IS_BOT') and isset($_GET['var_isbot'])) {
32
-	define('_IS_BOT', $_GET['var_isbot'] ? true : false);
32
+    define('_IS_BOT', $_GET['var_isbot'] ? true : false);
33 33
 }
34 34
 
35 35
 /*
36 36
  * Détecteur de robot d'indexation
37 37
  */
38 38
 if (!defined('_IS_BOT')) {
39
-	define(
40
-		'_IS_BOT',
41
-		isset($_SERVER['HTTP_USER_AGENT'])
42
-			and preg_match(
43
-				','
44
-					. implode('|', array(
45
-						// mots generiques
46
-						'bot',
47
-						'slurp',
48
-						'crawler',
49
-						'crwlr',
50
-						'java',
51
-						'monitoring',
52
-						'spider',
53
-						'webvac',
54
-						'yandex',
55
-						'MSIE 6\.0', // botnet 99,9% du temps
56
-						// UA plus cibles
57
-						'200please',
58
-						'80legs',
59
-						'a6-indexer',
60
-						'aboundex',
61
-						'accoona',
62
-						'acrylicapps',
63
-						'addthis',
64
-						'adressendeutschland',
65
-						'alexa',
66
-						'altavista',
67
-						'analyticsseo',
68
-						'antennapod',
69
-						'arachnys',
70
-						'archive',
71
-						'argclrint',
72
-						'aspseek',
73
-						'baidu',
74
-						'begunadvertising',
75
-						'bing',
76
-						'bloglines',
77
-						'buck',
78
-						'browsershots',
79
-						'bubing',
80
-						'butterfly',
81
-						'changedetection',
82
-						'charlotte',
83
-						'chilkat',
84
-						'china',
85
-						'coccoc',
86
-						'crowsnest',
87
-						'dataminr',
88
-						'daumoa',
89
-						'dlvr\.it',
90
-						'dlweb',
91
-						'drupal',
92
-						'ec2linkfinder',
93
-						'eset\.com',
94
-						'estyle',
95
-						'exalead',
96
-						'ezooms',
97
-						'facebookexternalhit',
98
-						'facebookplatform',
99
-						'fairshare',
100
-						'feedfetcher',
101
-						'feedfetcher-google',
102
-						'feedly',
103
-						'fetch',
104
-						'flipboardproxy',
105
-						'genieo',
106
-						'google',
107
-						'go-http-client',
108
-						'grapeshot',
109
-						'hatena-useragent',
110
-						'head',
111
-						'hosttracker',
112
-						'hubspot',
113
-						'ia_archiver',
114
-						'ichiro',
115
-						'iltrovatore-setaccio',
116
-						'immediatenet',
117
-						'ina',
118
-						'inoreader',
119
-						'infegyatlas',
120
-						'infohelfer',
121
-						'instapaper',
122
-						'jabse',
123
-						'james',
124
-						'jersey',
125
-						'kumkie',
126
-						'linkdex',
127
-						'linkfluence',
128
-						'linkwalker',
129
-						'litefinder',
130
-						'loadimpactpageanalyzer',
131
-						'ltx71',
132
-						'luminate',
133
-						'lycos',
134
-						'lycosa',
135
-						'mediapartners-google',
136
-						'msai',
137
-						'myapp',
138
-						'nativehost',
139
-						'najdi',
140
-						'netcraftsurveyagent',
141
-						'netestate',
142
-						'netseer',
143
-						'netnewswire',
144
-						'newspaper',
145
-						'newsblur',
146
-						'nuhk',
147
-						'nuzzel',
148
-						'okhttp',
149
-						'otmedia',
150
-						'owlin',
151
-						'owncloud',
152
-						'panscient',
153
-						'paper\.li',
154
-						'parsijoo',
155
-						'protopage',
156
-						'plukkie',
157
-						'proximic',
158
-						'pubsub',
159
-						'python',
160
-						'qirina',
161
-						'qoshe',
162
-						'qualidator',
163
-						'qwantify',
164
-						'rambler',
165
-						'readability',
166
-						'ruby',
167
-						'sbsearch',
168
-						'scoop\.it',
169
-						'scooter',
170
-						'scoutjet',
171
-						'scrapy',
172
-						'scrubby',
173
-						'scrubbybloglines',
174
-						'shareaholic',
175
-						'shopwiki',
176
-						'simplepie',
177
-						'sistrix',
178
-						'sitechecker',
179
-						'siteexplorer',
180
-						'snapshot',
181
-						'sogou',
182
-						'special_archiver',
183
-						'speedy',
184
-						'spinn3r',
185
-						'spreadtrum',
186
-						'steeler',
187
-						'subscriber',
188
-						'suma',
189
-						'superdownloads',
190
-						'svenska-webbsido',
191
-						'teoma',
192
-						'the knowledge AI',
193
-						'thumbshots',
194
-						'tineye',
195
-						'traackr',
196
-						'trendiction',
197
-						'trendsmap',
198
-						'tweetedtimes',
199
-						'tweetmeme',
200
-						'universalfeedparser',
201
-						'uaslinkchecker',
202
-						'undrip',
203
-						'unwindfetchor',
204
-						'upday',
205
-						'vedma',
206
-						'vkshare',
207
-						'vm',
208
-						'wch',
209
-						'webalta',
210
-						'webcookies',
211
-						'webparser',
212
-						'webthumbnail',
213
-						'wesee',
214
-						'wise-guys',
215
-						'woko',
216
-						'wordpress',
217
-						'wotbox',
218
-						'y!j-bri',
219
-						'y!j-bro',
220
-						'y!j-brw',
221
-						'y!j-bsc',
222
-						'yahoo',
223
-						'yahoo!',
224
-						'yahooysmcm',
225
-						'ymobactus',
226
-						'yats',
227
-						'yeti',
228
-						'zeerch'
229
-					)) . ',i',
230
-				(string)$_SERVER['HTTP_USER_AGENT']
231
-			)
232
-	);
39
+    define(
40
+        '_IS_BOT',
41
+        isset($_SERVER['HTTP_USER_AGENT'])
42
+            and preg_match(
43
+                ','
44
+                    . implode('|', array(
45
+                        // mots generiques
46
+                        'bot',
47
+                        'slurp',
48
+                        'crawler',
49
+                        'crwlr',
50
+                        'java',
51
+                        'monitoring',
52
+                        'spider',
53
+                        'webvac',
54
+                        'yandex',
55
+                        'MSIE 6\.0', // botnet 99,9% du temps
56
+                        // UA plus cibles
57
+                        '200please',
58
+                        '80legs',
59
+                        'a6-indexer',
60
+                        'aboundex',
61
+                        'accoona',
62
+                        'acrylicapps',
63
+                        'addthis',
64
+                        'adressendeutschland',
65
+                        'alexa',
66
+                        'altavista',
67
+                        'analyticsseo',
68
+                        'antennapod',
69
+                        'arachnys',
70
+                        'archive',
71
+                        'argclrint',
72
+                        'aspseek',
73
+                        'baidu',
74
+                        'begunadvertising',
75
+                        'bing',
76
+                        'bloglines',
77
+                        'buck',
78
+                        'browsershots',
79
+                        'bubing',
80
+                        'butterfly',
81
+                        'changedetection',
82
+                        'charlotte',
83
+                        'chilkat',
84
+                        'china',
85
+                        'coccoc',
86
+                        'crowsnest',
87
+                        'dataminr',
88
+                        'daumoa',
89
+                        'dlvr\.it',
90
+                        'dlweb',
91
+                        'drupal',
92
+                        'ec2linkfinder',
93
+                        'eset\.com',
94
+                        'estyle',
95
+                        'exalead',
96
+                        'ezooms',
97
+                        'facebookexternalhit',
98
+                        'facebookplatform',
99
+                        'fairshare',
100
+                        'feedfetcher',
101
+                        'feedfetcher-google',
102
+                        'feedly',
103
+                        'fetch',
104
+                        'flipboardproxy',
105
+                        'genieo',
106
+                        'google',
107
+                        'go-http-client',
108
+                        'grapeshot',
109
+                        'hatena-useragent',
110
+                        'head',
111
+                        'hosttracker',
112
+                        'hubspot',
113
+                        'ia_archiver',
114
+                        'ichiro',
115
+                        'iltrovatore-setaccio',
116
+                        'immediatenet',
117
+                        'ina',
118
+                        'inoreader',
119
+                        'infegyatlas',
120
+                        'infohelfer',
121
+                        'instapaper',
122
+                        'jabse',
123
+                        'james',
124
+                        'jersey',
125
+                        'kumkie',
126
+                        'linkdex',
127
+                        'linkfluence',
128
+                        'linkwalker',
129
+                        'litefinder',
130
+                        'loadimpactpageanalyzer',
131
+                        'ltx71',
132
+                        'luminate',
133
+                        'lycos',
134
+                        'lycosa',
135
+                        'mediapartners-google',
136
+                        'msai',
137
+                        'myapp',
138
+                        'nativehost',
139
+                        'najdi',
140
+                        'netcraftsurveyagent',
141
+                        'netestate',
142
+                        'netseer',
143
+                        'netnewswire',
144
+                        'newspaper',
145
+                        'newsblur',
146
+                        'nuhk',
147
+                        'nuzzel',
148
+                        'okhttp',
149
+                        'otmedia',
150
+                        'owlin',
151
+                        'owncloud',
152
+                        'panscient',
153
+                        'paper\.li',
154
+                        'parsijoo',
155
+                        'protopage',
156
+                        'plukkie',
157
+                        'proximic',
158
+                        'pubsub',
159
+                        'python',
160
+                        'qirina',
161
+                        'qoshe',
162
+                        'qualidator',
163
+                        'qwantify',
164
+                        'rambler',
165
+                        'readability',
166
+                        'ruby',
167
+                        'sbsearch',
168
+                        'scoop\.it',
169
+                        'scooter',
170
+                        'scoutjet',
171
+                        'scrapy',
172
+                        'scrubby',
173
+                        'scrubbybloglines',
174
+                        'shareaholic',
175
+                        'shopwiki',
176
+                        'simplepie',
177
+                        'sistrix',
178
+                        'sitechecker',
179
+                        'siteexplorer',
180
+                        'snapshot',
181
+                        'sogou',
182
+                        'special_archiver',
183
+                        'speedy',
184
+                        'spinn3r',
185
+                        'spreadtrum',
186
+                        'steeler',
187
+                        'subscriber',
188
+                        'suma',
189
+                        'superdownloads',
190
+                        'svenska-webbsido',
191
+                        'teoma',
192
+                        'the knowledge AI',
193
+                        'thumbshots',
194
+                        'tineye',
195
+                        'traackr',
196
+                        'trendiction',
197
+                        'trendsmap',
198
+                        'tweetedtimes',
199
+                        'tweetmeme',
200
+                        'universalfeedparser',
201
+                        'uaslinkchecker',
202
+                        'undrip',
203
+                        'unwindfetchor',
204
+                        'upday',
205
+                        'vedma',
206
+                        'vkshare',
207
+                        'vm',
208
+                        'wch',
209
+                        'webalta',
210
+                        'webcookies',
211
+                        'webparser',
212
+                        'webthumbnail',
213
+                        'wesee',
214
+                        'wise-guys',
215
+                        'woko',
216
+                        'wordpress',
217
+                        'wotbox',
218
+                        'y!j-bri',
219
+                        'y!j-bro',
220
+                        'y!j-brw',
221
+                        'y!j-bsc',
222
+                        'yahoo',
223
+                        'yahoo!',
224
+                        'yahooysmcm',
225
+                        'ymobactus',
226
+                        'yats',
227
+                        'yeti',
228
+                        'zeerch'
229
+                    )) . ',i',
230
+                (string)$_SERVER['HTTP_USER_AGENT']
231
+            )
232
+    );
233 233
 }
234 234
 if (!defined('_IS_BOT_FRIEND')) {
235
-	define(
236
-		'_IS_BOT_FRIEND',
237
-		isset($_SERVER['HTTP_USER_AGENT'])
238
-			and preg_match(
239
-				',' . implode('|', array(
240
-					'facebookexternalhit',
241
-					'twitterbot',
242
-					'flipboardproxy',
243
-					'wordpress'
244
-				)) . ',i',
245
-				(string)$_SERVER['HTTP_USER_AGENT']
246
-			)
247
-	);
235
+    define(
236
+        '_IS_BOT_FRIEND',
237
+        isset($_SERVER['HTTP_USER_AGENT'])
238
+            and preg_match(
239
+                ',' . implode('|', array(
240
+                    'facebookexternalhit',
241
+                    'twitterbot',
242
+                    'flipboardproxy',
243
+                    'wordpress'
244
+                )) . ',i',
245
+                (string)$_SERVER['HTTP_USER_AGENT']
246
+            )
247
+    );
248 248
 }
249 249
 
250 250
 /*
@@ -256,28 +256,28 @@  discard block
 block discarded – undo
256 256
  */
257 257
 $_exceptions = array('id_table', 'id_base', 'id_parent', 'id_article_pdf');
258 258
 foreach ($_GET as $var => $val) {
259
-	if (
260
-		$_GET[$var] and strncmp($var, "id_", 3) == 0
261
-		and !in_array($var, $_exceptions)
262
-	) {
263
-		$_GET[$var] = is_array($_GET[$var]) ? @array_map('intval', $_GET[$var]) : intval($_GET[$var]);
264
-	}
259
+    if (
260
+        $_GET[$var] and strncmp($var, "id_", 3) == 0
261
+        and !in_array($var, $_exceptions)
262
+    ) {
263
+        $_GET[$var] = is_array($_GET[$var]) ? @array_map('intval', $_GET[$var]) : intval($_GET[$var]);
264
+    }
265 265
 }
266 266
 foreach ($_POST as $var => $val) {
267
-	if (
268
-		$_POST[$var] and strncmp($var, "id_", 3) == 0
269
-		and !in_array($var, $_exceptions)
270
-	) {
271
-		$_POST[$var] = is_array($_POST[$var]) ? @array_map('intval', $_POST[$var]) : intval($_POST[$var]);
272
-	}
267
+    if (
268
+        $_POST[$var] and strncmp($var, "id_", 3) == 0
269
+        and !in_array($var, $_exceptions)
270
+    ) {
271
+        $_POST[$var] = is_array($_POST[$var]) ? @array_map('intval', $_POST[$var]) : intval($_POST[$var]);
272
+    }
273 273
 }
274 274
 foreach ($GLOBALS as $var => $val) {
275
-	if (
276
-		$GLOBALS[$var] and strncmp($var, "id_", 3) == 0
277
-		and !in_array($var, $_exceptions)
278
-	) {
279
-		$GLOBALS[$var] = is_array($GLOBALS[$var]) ? @array_map('intval', $GLOBALS[$var]) : intval($GLOBALS[$var]);
280
-	}
275
+    if (
276
+        $GLOBALS[$var] and strncmp($var, "id_", 3) == 0
277
+        and !in_array($var, $_exceptions)
278
+    ) {
279
+        $GLOBALS[$var] = is_array($GLOBALS[$var]) ? @array_map('intval', $GLOBALS[$var]) : intval($GLOBALS[$var]);
280
+    }
281 281
 }
282 282
 
283 283
 /*
@@ -290,116 +290,116 @@  discard block
 block discarded – undo
290 290
  * Contrôle de quelques variables (XSS)
291 291
  */
292 292
 foreach (array('lang', 'var_recherche', 'aide', 'var_lang_r', 'lang_r', 'var_ajax_ancre', 'nom_fichier') as $var) {
293
-	if (isset($_GET[$var])) {
294
-		$_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_GET[$var]);
295
-	}
296
-	if (isset($_POST[$var])) {
297
-		$_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_POST[$var]);
298
-	}
293
+    if (isset($_GET[$var])) {
294
+        $_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_GET[$var]);
295
+    }
296
+    if (isset($_POST[$var])) {
297
+        $_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_POST[$var]);
298
+    }
299 299
 }
300 300
 
301 301
 /*
302 302
  * Filtre l'accès à spip_acces_doc (injection SQL en 1.8.2x)
303 303
  */
304 304
 if (isset($_SERVER['REQUEST_URI'])) {
305
-	if (preg_match(',^(.*/)?spip_acces_doc\.,', (string)$_SERVER['REQUEST_URI'])) {
306
-		$file = addslashes((string)$_GET['file']);
307
-	}
305
+    if (preg_match(',^(.*/)?spip_acces_doc\.,', (string)$_SERVER['REQUEST_URI'])) {
306
+        $file = addslashes((string)$_GET['file']);
307
+    }
308 308
 }
309 309
 
310 310
 /*
311 311
  * Pas d'inscription abusive
312 312
  */
313 313
 if (
314
-	isset($_REQUEST['mode']) and isset($_REQUEST['page'])
315
-	and !in_array($_REQUEST['mode'], array("6forum", "1comite"))
316
-	and $_REQUEST['page'] == "identifiants"
314
+    isset($_REQUEST['mode']) and isset($_REQUEST['page'])
315
+    and !in_array($_REQUEST['mode'], array("6forum", "1comite"))
316
+    and $_REQUEST['page'] == "identifiants"
317 317
 ) {
318
-	$ecran_securite_raison = "identifiants";
318
+    $ecran_securite_raison = "identifiants";
319 319
 }
320 320
 
321 321
 /*
322 322
  * Agenda joue à l'injection php
323 323
  */
324 324
 if (
325
-	isset($_REQUEST['partie_cal'])
326
-	and $_REQUEST['partie_cal'] !== htmlentities((string)$_REQUEST['partie_cal'])
325
+    isset($_REQUEST['partie_cal'])
326
+    and $_REQUEST['partie_cal'] !== htmlentities((string)$_REQUEST['partie_cal'])
327 327
 ) {
328
-	$ecran_securite_raison = "partie_cal";
328
+    $ecran_securite_raison = "partie_cal";
329 329
 }
330 330
 if (
331
-	isset($_REQUEST['echelle'])
332
-	and $_REQUEST['echelle'] !== htmlentities((string)$_REQUEST['echelle'])
331
+    isset($_REQUEST['echelle'])
332
+    and $_REQUEST['echelle'] !== htmlentities((string)$_REQUEST['echelle'])
333 333
 ) {
334
-	$ecran_securite_raison = "echelle";
334
+    $ecran_securite_raison = "echelle";
335 335
 }
336 336
 
337 337
 /*
338 338
  * Espace privé
339 339
  */
340 340
 if (
341
-	isset($_REQUEST['exec'])
342
-	and !preg_match(',^[\w-]+$,', (string)$_REQUEST['exec'])
341
+    isset($_REQUEST['exec'])
342
+    and !preg_match(',^[\w-]+$,', (string)$_REQUEST['exec'])
343 343
 ) {
344
-	$ecran_securite_raison = "exec";
344
+    $ecran_securite_raison = "exec";
345 345
 }
346 346
 if (
347
-	isset($_REQUEST['cherche_auteur'])
348
-	and preg_match(',[<],', (string)$_REQUEST['cherche_auteur'])
347
+    isset($_REQUEST['cherche_auteur'])
348
+    and preg_match(',[<],', (string)$_REQUEST['cherche_auteur'])
349 349
 ) {
350
-	$ecran_securite_raison = "cherche_auteur";
350
+    $ecran_securite_raison = "cherche_auteur";
351 351
 }
352 352
 if (
353
-	isset($_REQUEST['exec'])
354
-	and $_REQUEST['exec'] == 'auteurs'
355
-	and isset($_REQUEST['recherche'])
356
-	and preg_match(',[<],', (string)$_REQUEST['recherche'])
353
+    isset($_REQUEST['exec'])
354
+    and $_REQUEST['exec'] == 'auteurs'
355
+    and isset($_REQUEST['recherche'])
356
+    and preg_match(',[<],', (string)$_REQUEST['recherche'])
357 357
 ) {
358
-	$ecran_securite_raison = "recherche";
358
+    $ecran_securite_raison = "recherche";
359 359
 }
360 360
 if (
361
-	isset($_REQUEST['exec'])
362
-	and $_REQUEST['exec'] == 'info_plugin'
363
-	and isset($_REQUEST['plugin'])
364
-	and preg_match(',[<],', (string)$_REQUEST['plugin'])
361
+    isset($_REQUEST['exec'])
362
+    and $_REQUEST['exec'] == 'info_plugin'
363
+    and isset($_REQUEST['plugin'])
364
+    and preg_match(',[<],', (string)$_REQUEST['plugin'])
365 365
 ) {
366
-	$ecran_securite_raison = "plugin";
366
+    $ecran_securite_raison = "plugin";
367 367
 }
368 368
 if (
369
-	isset($_REQUEST['exec'])
370
-	and $_REQUEST['exec'] == 'puce_statut'
371
-	and isset($_REQUEST['id'])
372
-	and !intval($_REQUEST['id'])
369
+    isset($_REQUEST['exec'])
370
+    and $_REQUEST['exec'] == 'puce_statut'
371
+    and isset($_REQUEST['id'])
372
+    and !intval($_REQUEST['id'])
373 373
 ) {
374
-	$ecran_securite_raison = "puce_statut";
374
+    $ecran_securite_raison = "puce_statut";
375 375
 }
376 376
 if (
377
-	isset($_REQUEST['action'])
378
-	and $_REQUEST['action'] == 'configurer'
377
+    isset($_REQUEST['action'])
378
+    and $_REQUEST['action'] == 'configurer'
379 379
 ) {
380
-	if (
381
-		@file_exists('inc_version.php')
382
-		or @file_exists('ecrire/inc_version.php')
383
-	) {
384
-		function action_configurer() {
385
-			include_spip('inc/autoriser');
386
-			if (!autoriser('configurer', _request('configuration'))) {
387
-				include_spip('inc/minipres');
388
-				echo minipres(_T('info_acces_interdit'));
389
-				exit;
390
-			}
391
-			require _DIR_RESTREINT . 'action/configurer.php';
392
-			action_configurer_dist();
393
-		}
394
-	}
380
+    if (
381
+        @file_exists('inc_version.php')
382
+        or @file_exists('ecrire/inc_version.php')
383
+    ) {
384
+        function action_configurer() {
385
+            include_spip('inc/autoriser');
386
+            if (!autoriser('configurer', _request('configuration'))) {
387
+                include_spip('inc/minipres');
388
+                echo minipres(_T('info_acces_interdit'));
389
+                exit;
390
+            }
391
+            require _DIR_RESTREINT . 'action/configurer.php';
392
+            action_configurer_dist();
393
+        }
394
+    }
395 395
 }
396 396
 if (
397
-	isset($_REQUEST['action'])
398
-	and $_REQUEST['action'] == 'ordonner_liens_documents'
399
-	and isset($_REQUEST['ordre'])
400
-	and is_string($_REQUEST['ordre'])
397
+    isset($_REQUEST['action'])
398
+    and $_REQUEST['action'] == 'ordonner_liens_documents'
399
+    and isset($_REQUEST['ordre'])
400
+    and is_string($_REQUEST['ordre'])
401 401
 ) {
402
-	$ecran_securite_raison = "ordre a la chaine";
402
+    $ecran_securite_raison = "ordre a la chaine";
403 403
 }
404 404
 
405 405
 
@@ -407,29 +407,29 @@  discard block
 block discarded – undo
407 407
  * Bloque les requêtes contenant %00 (manipulation d'include)
408 408
  */
409 409
 if (strpos(
410
-	(function_exists('get_magic_quotes_gpc') and @get_magic_quotes_gpc())
411
-		? stripslashes(serialize($_REQUEST))
412
-		: serialize($_REQUEST),
413
-	chr(0)
410
+    (function_exists('get_magic_quotes_gpc') and @get_magic_quotes_gpc())
411
+        ? stripslashes(serialize($_REQUEST))
412
+        : serialize($_REQUEST),
413
+    chr(0)
414 414
 ) !== false) {
415
-	$ecran_securite_raison = "%00";
415
+    $ecran_securite_raison = "%00";
416 416
 }
417 417
 
418 418
 /*
419 419
  * Bloque les requêtes fond=formulaire_
420 420
  */
421 421
 if (
422
-	isset($_REQUEST['fond'])
423
-	and preg_match(',^formulaire_,i', $_REQUEST['fond'])
422
+    isset($_REQUEST['fond'])
423
+    and preg_match(',^formulaire_,i', $_REQUEST['fond'])
424 424
 ) {
425
-	$ecran_securite_raison = "fond=formulaire_";
425
+    $ecran_securite_raison = "fond=formulaire_";
426 426
 }
427 427
 
428 428
 /*
429 429
  * Bloque les requêtes du type ?GLOBALS[type_urls]=toto (bug vieux php)
430 430
  */
431 431
 if (isset($_REQUEST['GLOBALS'])) {
432
-	$ecran_securite_raison = "GLOBALS[GLOBALS]";
432
+    $ecran_securite_raison = "GLOBALS[GLOBALS]";
433 433
 }
434 434
 
435 435
 /*
@@ -438,14 +438,14 @@  discard block
 block discarded – undo
438 438
  * les paginations entremélées
439 439
  */
440 440
 if (_IS_BOT) {
441
-	if (
442
-		(isset($_REQUEST['echelle']) and isset($_REQUEST['partie_cal']) and isset($_REQUEST['type']))
443
-		or (strpos((string)$_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string)$_SERVER['REQUEST_URI']))
444
-		or (isset($_REQUEST['calendrier_annee']) and strpos((string)$_SERVER['REQUEST_URI'], 'debut_'))
445
-		or (isset($_REQUEST['calendrier_annee']) and preg_match(',[?&]calendrier_annee=.*&calendrier_annee=,', (string)$_SERVER['REQUEST_URI']))
446
-	) {
447
-		$ecran_securite_raison = "robot agenda/double pagination";
448
-	}
441
+    if (
442
+        (isset($_REQUEST['echelle']) and isset($_REQUEST['partie_cal']) and isset($_REQUEST['type']))
443
+        or (strpos((string)$_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string)$_SERVER['REQUEST_URI']))
444
+        or (isset($_REQUEST['calendrier_annee']) and strpos((string)$_SERVER['REQUEST_URI'], 'debut_'))
445
+        or (isset($_REQUEST['calendrier_annee']) and preg_match(',[?&]calendrier_annee=.*&calendrier_annee=,', (string)$_SERVER['REQUEST_URI']))
446
+    ) {
447
+        $ecran_securite_raison = "robot agenda/double pagination";
448
+    }
449 449
 }
450 450
 
451 451
 /*
@@ -453,82 +453,82 @@  discard block
 block discarded – undo
453 453
  * Bloque un XSS sur une page inexistante
454 454
  */
455 455
 if (isset($_REQUEST['page'])) {
456
-	if ($_REQUEST['page'] == 'test_cfg') {
457
-		$ecran_securite_raison = "test_cfg";
458
-	}
459
-	if ($_REQUEST['page'] !== htmlspecialchars((string)$_REQUEST['page'])) {
460
-		$ecran_securite_raison = "xsspage";
461
-	}
462
-	if (
463
-		$_REQUEST['page'] == '404'
464
-		and isset($_REQUEST['erreur'])
465
-	) {
466
-		$ecran_securite_raison = "xss404";
467
-	}
456
+    if ($_REQUEST['page'] == 'test_cfg') {
457
+        $ecran_securite_raison = "test_cfg";
458
+    }
459
+    if ($_REQUEST['page'] !== htmlspecialchars((string)$_REQUEST['page'])) {
460
+        $ecran_securite_raison = "xsspage";
461
+    }
462
+    if (
463
+        $_REQUEST['page'] == '404'
464
+        and isset($_REQUEST['erreur'])
465
+    ) {
466
+        $ecran_securite_raison = "xss404";
467
+    }
468 468
 }
469 469
 
470 470
 /*
471 471
  * XSS par array
472 472
  */
473 473
 foreach (array('var_login') as $var) {
474
-	if (isset($_REQUEST[$var]) and is_array($_REQUEST[$var])) {
475
-		$ecran_securite_raison = "xss " . $var;
476
-	}
474
+    if (isset($_REQUEST[$var]) and is_array($_REQUEST[$var])) {
475
+        $ecran_securite_raison = "xss " . $var;
476
+    }
477 477
 }
478 478
 
479 479
 /*
480 480
  * Parade antivirale contre un cheval de troie
481 481
  */
482 482
 if (!function_exists('tmp_lkojfghx')) {
483
-	function tmp_lkojfghx() {}
484
-	function tmp_lkojfghx2($a = 0, $b = 0, $c = 0, $d = 0) {
485
-		// si jamais on est arrivé ici sur une erreur php
486
-		// et qu'un autre gestionnaire d'erreur est défini, l'appeller
487
-		if ($b && $GLOBALS['tmp_xhgfjokl']) {
488
-			call_user_func($GLOBALS['tmp_xhgfjokl'], $a, $b, $c, $d);
489
-		}
490
-	}
483
+    function tmp_lkojfghx() {}
484
+    function tmp_lkojfghx2($a = 0, $b = 0, $c = 0, $d = 0) {
485
+        // si jamais on est arrivé ici sur une erreur php
486
+        // et qu'un autre gestionnaire d'erreur est défini, l'appeller
487
+        if ($b && $GLOBALS['tmp_xhgfjokl']) {
488
+            call_user_func($GLOBALS['tmp_xhgfjokl'], $a, $b, $c, $d);
489
+        }
490
+    }
491 491
 }
492 492
 if (isset($_POST['tmp_lkojfghx3'])) {
493
-	$ecran_securite_raison = "gumblar";
493
+    $ecran_securite_raison = "gumblar";
494 494
 }
495 495
 
496 496
 /*
497 497
  * Outils XML mal sécurisés < 2.0.9
498 498
  */
499 499
 if (isset($_REQUEST['transformer_xml'])) {
500
-	$ecran_securite_raison = "transformer_xml";
500
+    $ecran_securite_raison = "transformer_xml";
501 501
 }
502 502
 
503 503
 /*
504 504
  * Outils XML mal sécurisés again
505 505
  */
506 506
 if (isset($_REQUEST['var_url']) and $_REQUEST['var_url'] and isset($_REQUEST['exec']) and $_REQUEST['exec'] == 'valider_xml') {
507
-	$url = trim($_REQUEST['var_url']);
508
-	if (
509
-		strncmp($url, '/', 1) == 0
510
-		or (($p = strpos($url, '..')) !== false and strpos($url, '..', $p + 3) !== false)
511
-		or (($p = strpos($url, '..')) !== false and strpos($url, 'IMG', $p + 3) !== false)
512
-		or (strpos($url, '://') !== false or strpos($url, ':\\') !== false)
513
-	) {
514
-		$ecran_securite_raison = 'URL interdite pour var_url';
515
-	}
507
+    $url = trim($_REQUEST['var_url']);
508
+    if (
509
+        strncmp($url, '/', 1) == 0
510
+        or (($p = strpos($url, '..')) !== false and strpos($url, '..', $p + 3) !== false)
511
+        or (($p = strpos($url, '..')) !== false and strpos($url, 'IMG', $p + 3) !== false)
512
+        or (strpos($url, '://') !== false or strpos($url, ':\\') !== false)
513
+    ) {
514
+        $ecran_securite_raison = 'URL interdite pour var_url';
515
+    }
516 516
 }
517 517
 
518 518
 /*
519 519
  * Sauvegarde mal securisée < 2.0.9
520 520
  */
521 521
 if (
522
-	isset($_REQUEST['nom_sauvegarde'])
523
-	and strstr((string)$_REQUEST['nom_sauvegarde'], '/')
522
+    isset($_REQUEST['nom_sauvegarde'])
523
+    and strstr((string)$_REQUEST['nom_sauvegarde'], '/')
524 524
 ) {
525
-	$ecran_securite_raison = 'nom_sauvegarde manipulee';
525
+    $ecran_securite_raison = 'nom_sauvegarde manipulee';
526 526
 }
527 527
 if (
528
-	isset($_REQUEST['znom_sauvegarde'])
529
-	and strstr((string)$_REQUEST['znom_sauvegarde'], '/')
528
+    isset($_REQUEST['znom_sauvegarde'])
529
+    and strstr((string)$_REQUEST['znom_sauvegarde'], '/')
530 530
 ) {
531
-	$ecran_securite_raison = 'znom_sauvegarde manipulee';
531
+    $ecran_securite_raison = 'znom_sauvegarde manipulee';
532 532
 }
533 533
 
534 534
 
@@ -537,57 +537,57 @@  discard block
 block discarded – undo
537 537
  * on vérifie 'page' pour ne pas bloquer ... drupal
538 538
  */
539 539
 if (
540
-	isset($_REQUEST['op']) and isset($_REQUEST['page'])
541
-	and $_REQUEST['op'] !== preg_replace('/[^\\-\w]/', '', $_REQUEST['op'])
540
+    isset($_REQUEST['op']) and isset($_REQUEST['page'])
541
+    and $_REQUEST['op'] !== preg_replace('/[^\\-\w]/', '', $_REQUEST['op'])
542 542
 ) {
543
-	$ecran_securite_raison = 'op';
543
+    $ecran_securite_raison = 'op';
544 544
 }
545 545
 
546 546
 /*
547 547
  * Forms & Table ne se méfiait pas assez des uploads de fichiers
548 548
  */
549 549
 if (count($_FILES)) {
550
-	foreach ($_FILES as $k => $v) {
551
-		if (
552
-			preg_match(',^fichier_\d+$,', $k)
553
-			and preg_match(',\.php,i', $v['name'])
554
-		) {
555
-			unset($_FILES[$k]);
556
-		}
557
-	}
550
+    foreach ($_FILES as $k => $v) {
551
+        if (
552
+            preg_match(',^fichier_\d+$,', $k)
553
+            and preg_match(',\.php,i', $v['name'])
554
+        ) {
555
+            unset($_FILES[$k]);
556
+        }
557
+    }
558 558
 }
559 559
 /*
560 560
  * et Contact trop laxiste avec une variable externe
561 561
  * on bloque pas le post pour eviter de perdre des donnees mais on unset la variable et c'est tout
562 562
  */
563 563
 if (isset($_REQUEST['pj_enregistrees_nom']) and $_REQUEST['pj_enregistrees_nom']) {
564
-	unset($_REQUEST['pj_enregistrees_nom']);
565
-	unset($_GET['pj_enregistrees_nom']);
566
-	unset($_POST['pj_enregistrees_nom']);
564
+    unset($_REQUEST['pj_enregistrees_nom']);
565
+    unset($_GET['pj_enregistrees_nom']);
566
+    unset($_POST['pj_enregistrees_nom']);
567 567
 }
568 568
 
569 569
 /*
570 570
  * reinstall=oui un peu trop permissif
571 571
  */
572 572
 if (
573
-	isset($_REQUEST['reinstall'])
574
-	and $_REQUEST['reinstall'] == 'oui'
573
+    isset($_REQUEST['reinstall'])
574
+    and $_REQUEST['reinstall'] == 'oui'
575 575
 ) {
576
-	$ecran_securite_raison = 'reinstall=oui';
576
+    $ecran_securite_raison = 'reinstall=oui';
577 577
 }
578 578
 
579 579
 /*
580 580
  * Pas d'action pendant l'install
581 581
  */
582 582
 if (isset($_REQUEST['exec']) and $_REQUEST['exec'] === 'install' and isset($_REQUEST['action'])) {
583
-	$ecran_securite_raison = 'install&action impossibles';
583
+    $ecran_securite_raison = 'install&action impossibles';
584 584
 }
585 585
 
586 586
 /*
587 587
  * Échappement xss referer
588 588
  */
589 589
 if (isset($_SERVER['HTTP_REFERER'])) {
590
-	$_SERVER['HTTP_REFERER'] = strtr($_SERVER['HTTP_REFERER'], '<>"\'', '[]##');
590
+    $_SERVER['HTTP_REFERER'] = strtr($_SERVER['HTTP_REFERER'], '<>"\'', '[]##');
591 591
 }
592 592
 
593 593
 
@@ -595,7 +595,7 @@  discard block
 block discarded – undo
595 595
  * Echappement HTTP_X_FORWARDED_HOST
596 596
  */
597 597
 if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
598
-	$_SERVER['HTTP_X_FORWARDED_HOST'] = strtr($_SERVER['HTTP_X_FORWARDED_HOST'], "<>?\"\{\}\$'` \r\n", '____________');
598
+    $_SERVER['HTTP_X_FORWARDED_HOST'] = strtr($_SERVER['HTTP_X_FORWARDED_HOST'], "<>?\"\{\}\$'` \r\n", '____________');
599 599
 }
600 600
 
601 601
 
@@ -603,9 +603,9 @@  discard block
 block discarded – undo
603 603
  * Pas d'erreur dans l'erreur
604 604
  */
605 605
 if (isset($_REQUEST['var_erreur']) and isset($_REQUEST['page']) and $_REQUEST['page'] === 'login') {
606
-	if (strlen($_REQUEST['var_erreur']) !== strcspn($_REQUEST['var_erreur'], '<>')) {
607
-		$ecran_securite_raison = 'var_erreur incorrecte';
608
-	}
606
+    if (strlen($_REQUEST['var_erreur']) !== strcspn($_REQUEST['var_erreur'], '<>')) {
607
+        $ecran_securite_raison = 'var_erreur incorrecte';
608
+    }
609 609
 }
610 610
 
611 611
 
@@ -613,30 +613,30 @@  discard block
 block discarded – undo
613 613
  * Réinjection des clés en html dans l'admin r19561
614 614
  */
615 615
 if (
616
-	(isset($_SERVER['REQUEST_URI']) and strpos($_SERVER['REQUEST_URI'], "ecrire/") !== false)
617
-	or isset($_REQUEST['var_memotri'])
616
+    (isset($_SERVER['REQUEST_URI']) and strpos($_SERVER['REQUEST_URI'], "ecrire/") !== false)
617
+    or isset($_REQUEST['var_memotri'])
618 618
 ) {
619
-	$zzzz = implode("", array_keys($_REQUEST));
620
-	if (strlen($zzzz) != strcspn($zzzz, '<>"\'')) {
621
-		$ecran_securite_raison = 'Cle incorrecte en $_REQUEST';
622
-	}
619
+    $zzzz = implode("", array_keys($_REQUEST));
620
+    if (strlen($zzzz) != strcspn($zzzz, '<>"\'')) {
621
+        $ecran_securite_raison = 'Cle incorrecte en $_REQUEST';
622
+    }
623 623
 }
624 624
 
625 625
 /*
626 626
  * Injection par connect
627 627
  */
628 628
 if (
629
-	isset($_REQUEST['connect'])
630
-	// cas qui permettent de sortir d'un commentaire PHP
631
-	and (
632
-		strpos($_REQUEST['connect'], "?") !== false
633
-		or strpos($_REQUEST['connect'], "<") !== false
634
-		or strpos($_REQUEST['connect'], ">") !== false
635
-		or strpos($_REQUEST['connect'], "\n") !== false
636
-		or strpos($_REQUEST['connect'], "\r") !== false
637
-	)
629
+    isset($_REQUEST['connect'])
630
+    // cas qui permettent de sortir d'un commentaire PHP
631
+    and (
632
+        strpos($_REQUEST['connect'], "?") !== false
633
+        or strpos($_REQUEST['connect'], "<") !== false
634
+        or strpos($_REQUEST['connect'], ">") !== false
635
+        or strpos($_REQUEST['connect'], "\n") !== false
636
+        or strpos($_REQUEST['connect'], "\r") !== false
637
+    )
638 638
 ) {
639
-	$ecran_securite_raison = "malformed connect argument";
639
+    $ecran_securite_raison = "malformed connect argument";
640 640
 }
641 641
 
642 642
 
@@ -644,25 +644,25 @@  discard block
 block discarded – undo
644 644
  * _oups donc
645 645
  */
646 646
 if (
647
-	isset($_REQUEST['_oups'])
648
-	and base64_decode($_REQUEST['_oups'], true) === false) {
649
-	$ecran_securite_raison = "malformed _oups argument";
647
+    isset($_REQUEST['_oups'])
648
+    and base64_decode($_REQUEST['_oups'], true) === false) {
649
+    $ecran_securite_raison = "malformed _oups argument";
650 650
 }
651 651
 
652 652
 if (
653
-	isset($_REQUEST['formulaire_action_args'])
653
+    isset($_REQUEST['formulaire_action_args'])
654 654
 ) {
655
-	foreach ($_REQUEST as $k => $v) {
656
-		if (is_string($v)
657
-		  and strpos($v, ':') !== false
658
-		  and strpos($v, '"') !==false
659
-		  and preg_match(',[bidsaO]:,', $v)
660
-		  and @unserialize($v)) {
661
-			$_REQUEST[$k] = htmlentities($v);
662
-			if (isset($_POST[$k])) $_POST[$k] = $_REQUEST[$k];
663
-			if (isset($_GET[$k])) $_GET[$k] = $_REQUEST[$k];
664
-		}
665
-	}
655
+    foreach ($_REQUEST as $k => $v) {
656
+        if (is_string($v)
657
+          and strpos($v, ':') !== false
658
+          and strpos($v, '"') !==false
659
+          and preg_match(',[bidsaO]:,', $v)
660
+          and @unserialize($v)) {
661
+            $_REQUEST[$k] = htmlentities($v);
662
+            if (isset($_POST[$k])) $_POST[$k] = $_REQUEST[$k];
663
+            if (isset($_GET[$k])) $_GET[$k] = $_REQUEST[$k];
664
+        }
665
+    }
666 666
 }
667 667
 
668 668
 
@@ -670,23 +670,23 @@  discard block
 block discarded – undo
670 670
  * S'il y a une raison de mourir, mourons
671 671
  */
672 672
 if (isset($ecran_securite_raison)) {
673
-	header("HTTP/1.0 403 Forbidden");
674
-	header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
675
-	header("Cache-Control: no-cache, must-revalidate");
676
-	header("Pragma: no-cache");
677
-	header("Content-Type: text/html");
678
-	header("Connection: close");
679
-	die("<html><title>Error 403: Forbidden</title><body><h1>Error 403</h1><p>You are not authorized to view this page ($ecran_securite_raison)</p></body></html>");
673
+    header("HTTP/1.0 403 Forbidden");
674
+    header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
675
+    header("Cache-Control: no-cache, must-revalidate");
676
+    header("Pragma: no-cache");
677
+    header("Content-Type: text/html");
678
+    header("Connection: close");
679
+    die("<html><title>Error 403: Forbidden</title><body><h1>Error 403</h1><p>You are not authorized to view this page ($ecran_securite_raison)</p></body></html>");
680 680
 }
681 681
 
682 682
 /*
683 683
  * Un filtre filtrer_entites securise
684 684
  */
685 685
 if (!function_exists('filtre_filtrer_entites_dist')) {
686
-	function filtre_filtrer_entites_dist($t) {
687
-		include_spip('inc/texte');
688
-		return interdire_scripts(filtrer_entites($t));
689
-	}
686
+    function filtre_filtrer_entites_dist($t) {
687
+        include_spip('inc/texte');
688
+        return interdire_scripts(filtrer_entites($t));
689
+    }
690 690
 }
691 691
 
692 692
 
@@ -700,35 +700,35 @@  discard block
 block discarded – undo
700 700
  * Bloque les bots quand le load déborde
701 701
  */
702 702
 if (!defined('_ECRAN_SECURITE_LOAD')) {
703
-	define('_ECRAN_SECURITE_LOAD', 4);
703
+    define('_ECRAN_SECURITE_LOAD', 4);
704 704
 }
705 705
 
706 706
 if (
707
-	defined('_ECRAN_SECURITE_LOAD')
708
-	and _ECRAN_SECURITE_LOAD > 0
709
-	and _IS_BOT
710
-	and !_IS_BOT_FRIEND
711
-	and $_SERVER['REQUEST_METHOD'] === 'GET'
712
-	and (
713
-		(function_exists('sys_getloadavg')
714
-			and $load = sys_getloadavg()
715
-			and is_array($load)
716
-			and $load = array_shift($load))
717
-		or
718
-		(@is_readable('/proc/loadavg')
719
-			and $load = file_get_contents('/proc/loadavg')
720
-			and $load = floatval($load))
721
-	)
722
-	and $load > _ECRAN_SECURITE_LOAD // eviter l'evaluation suivante si de toute facon le load est inferieur a la limite
723
-	and rand(0, (int) ($load * $load)) > _ECRAN_SECURITE_LOAD * _ECRAN_SECURITE_LOAD
707
+    defined('_ECRAN_SECURITE_LOAD')
708
+    and _ECRAN_SECURITE_LOAD > 0
709
+    and _IS_BOT
710
+    and !_IS_BOT_FRIEND
711
+    and $_SERVER['REQUEST_METHOD'] === 'GET'
712
+    and (
713
+        (function_exists('sys_getloadavg')
714
+            and $load = sys_getloadavg()
715
+            and is_array($load)
716
+            and $load = array_shift($load))
717
+        or
718
+        (@is_readable('/proc/loadavg')
719
+            and $load = file_get_contents('/proc/loadavg')
720
+            and $load = floatval($load))
721
+    )
722
+    and $load > _ECRAN_SECURITE_LOAD // eviter l'evaluation suivante si de toute facon le load est inferieur a la limite
723
+    and rand(0, (int) ($load * $load)) > _ECRAN_SECURITE_LOAD * _ECRAN_SECURITE_LOAD
724 724
 ) {
725
-	//https://webmasters.stackexchange.com/questions/65674/should-i-return-a-429-or-503-status-code-to-a-bot
726
-	header("HTTP/1.0 429 Too Many Requests");
727
-	header("Retry-After: 300");
728
-	header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
729
-	header("Cache-Control: no-cache, must-revalidate");
730
-	header("Pragma: no-cache");
731
-	header("Content-Type: text/html");
732
-	header("Connection: close");
733
-	die("<html><title>Status 429: Too Many Requests</title><body><h1>Status 429</h1><p>Too Many Requests (try again soon)</p></body></html>");
725
+    //https://webmasters.stackexchange.com/questions/65674/should-i-return-a-429-or-503-status-code-to-a-bot
726
+    header("HTTP/1.0 429 Too Many Requests");
727
+    header("Retry-After: 300");
728
+    header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
729
+    header("Cache-Control: no-cache, must-revalidate");
730
+    header("Pragma: no-cache");
731
+    header("Content-Type: text/html");
732
+    header("Connection: close");
733
+    die("<html><title>Status 429: Too Many Requests</title><body><h1>Status 429</h1><p>Too Many Requests (try again soon)</p></body></html>");
734 734
 }
Please login to merge, or discard this patch.
Spacing   +26 added lines, -26 removed lines patch added patch discarded remove patch
@@ -15,10 +15,10 @@  discard block
 block discarded – undo
15 15
  * Test utilisateur
16 16
  */
17 17
 if (isset($_GET['test_ecran_securite'])) {
18
-	$ecran_securite_raison = 'test ' . _ECRAN_SECURITE;
18
+	$ecran_securite_raison = 'test '._ECRAN_SECURITE;
19 19
 }
20 20
 
21
-if (file_exists($f = __DIR__ . DIRECTORY_SEPARATOR  . 'ecran_securite_options.php')) {
21
+if (file_exists($f = __DIR__.DIRECTORY_SEPARATOR.'ecran_securite_options.php')) {
22 22
 	include ($f);
23 23
 }
24 24
 
@@ -226,8 +226,8 @@  discard block
 block discarded – undo
226 226
 						'yats',
227 227
 						'yeti',
228 228
 						'zeerch'
229
-					)) . ',i',
230
-				(string)$_SERVER['HTTP_USER_AGENT']
229
+					)).',i',
230
+				(string) $_SERVER['HTTP_USER_AGENT']
231 231
 			)
232 232
 	);
233 233
 }
@@ -236,13 +236,13 @@  discard block
 block discarded – undo
236 236
 		'_IS_BOT_FRIEND',
237 237
 		isset($_SERVER['HTTP_USER_AGENT'])
238 238
 			and preg_match(
239
-				',' . implode('|', array(
239
+				','.implode('|', array(
240 240
 					'facebookexternalhit',
241 241
 					'twitterbot',
242 242
 					'flipboardproxy',
243 243
 					'wordpress'
244
-				)) . ',i',
245
-				(string)$_SERVER['HTTP_USER_AGENT']
244
+				)).',i',
245
+				(string) $_SERVER['HTTP_USER_AGENT']
246 246
 			)
247 247
 	);
248 248
 }
@@ -291,10 +291,10 @@  discard block
 block discarded – undo
291 291
  */
292 292
 foreach (array('lang', 'var_recherche', 'aide', 'var_lang_r', 'lang_r', 'var_ajax_ancre', 'nom_fichier') as $var) {
293 293
 	if (isset($_GET[$var])) {
294
-		$_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_GET[$var]);
294
+		$_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string) $_GET[$var]);
295 295
 	}
296 296
 	if (isset($_POST[$var])) {
297
-		$_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_POST[$var]);
297
+		$_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string) $_POST[$var]);
298 298
 	}
299 299
 }
300 300
 
@@ -302,8 +302,8 @@  discard block
 block discarded – undo
302 302
  * Filtre l'accès à spip_acces_doc (injection SQL en 1.8.2x)
303 303
  */
304 304
 if (isset($_SERVER['REQUEST_URI'])) {
305
-	if (preg_match(',^(.*/)?spip_acces_doc\.,', (string)$_SERVER['REQUEST_URI'])) {
306
-		$file = addslashes((string)$_GET['file']);
305
+	if (preg_match(',^(.*/)?spip_acces_doc\.,', (string) $_SERVER['REQUEST_URI'])) {
306
+		$file = addslashes((string) $_GET['file']);
307 307
 	}
308 308
 }
309 309
 
@@ -323,13 +323,13 @@  discard block
 block discarded – undo
323 323
  */
324 324
 if (
325 325
 	isset($_REQUEST['partie_cal'])
326
-	and $_REQUEST['partie_cal'] !== htmlentities((string)$_REQUEST['partie_cal'])
326
+	and $_REQUEST['partie_cal'] !== htmlentities((string) $_REQUEST['partie_cal'])
327 327
 ) {
328 328
 	$ecran_securite_raison = "partie_cal";
329 329
 }
330 330
 if (
331 331
 	isset($_REQUEST['echelle'])
332
-	and $_REQUEST['echelle'] !== htmlentities((string)$_REQUEST['echelle'])
332
+	and $_REQUEST['echelle'] !== htmlentities((string) $_REQUEST['echelle'])
333 333
 ) {
334 334
 	$ecran_securite_raison = "echelle";
335 335
 }
@@ -339,13 +339,13 @@  discard block
 block discarded – undo
339 339
  */
340 340
 if (
341 341
 	isset($_REQUEST['exec'])
342
-	and !preg_match(',^[\w-]+$,', (string)$_REQUEST['exec'])
342
+	and !preg_match(',^[\w-]+$,', (string) $_REQUEST['exec'])
343 343
 ) {
344 344
 	$ecran_securite_raison = "exec";
345 345
 }
346 346
 if (
347 347
 	isset($_REQUEST['cherche_auteur'])
348
-	and preg_match(',[<],', (string)$_REQUEST['cherche_auteur'])
348
+	and preg_match(',[<],', (string) $_REQUEST['cherche_auteur'])
349 349
 ) {
350 350
 	$ecran_securite_raison = "cherche_auteur";
351 351
 }
@@ -353,7 +353,7 @@  discard block
 block discarded – undo
353 353
 	isset($_REQUEST['exec'])
354 354
 	and $_REQUEST['exec'] == 'auteurs'
355 355
 	and isset($_REQUEST['recherche'])
356
-	and preg_match(',[<],', (string)$_REQUEST['recherche'])
356
+	and preg_match(',[<],', (string) $_REQUEST['recherche'])
357 357
 ) {
358 358
 	$ecran_securite_raison = "recherche";
359 359
 }
@@ -361,7 +361,7 @@  discard block
 block discarded – undo
361 361
 	isset($_REQUEST['exec'])
362 362
 	and $_REQUEST['exec'] == 'info_plugin'
363 363
 	and isset($_REQUEST['plugin'])
364
-	and preg_match(',[<],', (string)$_REQUEST['plugin'])
364
+	and preg_match(',[<],', (string) $_REQUEST['plugin'])
365 365
 ) {
366 366
 	$ecran_securite_raison = "plugin";
367 367
 }
@@ -388,7 +388,7 @@  discard block
 block discarded – undo
388 388
 				echo minipres(_T('info_acces_interdit'));
389 389
 				exit;
390 390
 			}
391
-			require _DIR_RESTREINT . 'action/configurer.php';
391
+			require _DIR_RESTREINT.'action/configurer.php';
392 392
 			action_configurer_dist();
393 393
 		}
394 394
 	}
@@ -440,9 +440,9 @@  discard block
 block discarded – undo
440 440
 if (_IS_BOT) {
441 441
 	if (
442 442
 		(isset($_REQUEST['echelle']) and isset($_REQUEST['partie_cal']) and isset($_REQUEST['type']))
443
-		or (strpos((string)$_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string)$_SERVER['REQUEST_URI']))
444
-		or (isset($_REQUEST['calendrier_annee']) and strpos((string)$_SERVER['REQUEST_URI'], 'debut_'))
445
-		or (isset($_REQUEST['calendrier_annee']) and preg_match(',[?&]calendrier_annee=.*&calendrier_annee=,', (string)$_SERVER['REQUEST_URI']))
443
+		or (strpos((string) $_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string) $_SERVER['REQUEST_URI']))
444
+		or (isset($_REQUEST['calendrier_annee']) and strpos((string) $_SERVER['REQUEST_URI'], 'debut_'))
445
+		or (isset($_REQUEST['calendrier_annee']) and preg_match(',[?&]calendrier_annee=.*&calendrier_annee=,', (string) $_SERVER['REQUEST_URI']))
446 446
 	) {
447 447
 		$ecran_securite_raison = "robot agenda/double pagination";
448 448
 	}
@@ -456,7 +456,7 @@  discard block
 block discarded – undo
456 456
 	if ($_REQUEST['page'] == 'test_cfg') {
457 457
 		$ecran_securite_raison = "test_cfg";
458 458
 	}
459
-	if ($_REQUEST['page'] !== htmlspecialchars((string)$_REQUEST['page'])) {
459
+	if ($_REQUEST['page'] !== htmlspecialchars((string) $_REQUEST['page'])) {
460 460
 		$ecran_securite_raison = "xsspage";
461 461
 	}
462 462
 	if (
@@ -472,7 +472,7 @@  discard block
 block discarded – undo
472 472
  */
473 473
 foreach (array('var_login') as $var) {
474 474
 	if (isset($_REQUEST[$var]) and is_array($_REQUEST[$var])) {
475
-		$ecran_securite_raison = "xss " . $var;
475
+		$ecran_securite_raison = "xss ".$var;
476 476
 	}
477 477
 }
478 478
 
@@ -520,13 +520,13 @@  discard block
 block discarded – undo
520 520
  */
521 521
 if (
522 522
 	isset($_REQUEST['nom_sauvegarde'])
523
-	and strstr((string)$_REQUEST['nom_sauvegarde'], '/')
523
+	and strstr((string) $_REQUEST['nom_sauvegarde'], '/')
524 524
 ) {
525 525
 	$ecran_securite_raison = 'nom_sauvegarde manipulee';
526 526
 }
527 527
 if (
528 528
 	isset($_REQUEST['znom_sauvegarde'])
529
-	and strstr((string)$_REQUEST['znom_sauvegarde'], '/')
529
+	and strstr((string) $_REQUEST['znom_sauvegarde'], '/')
530 530
 ) {
531 531
 	$ecran_securite_raison = 'znom_sauvegarde manipulee';
532 532
 }
@@ -655,7 +655,7 @@  discard block
 block discarded – undo
655 655
 	foreach ($_REQUEST as $k => $v) {
656 656
 		if (is_string($v)
657 657
 		  and strpos($v, ':') !== false
658
-		  and strpos($v, '"') !==false
658
+		  and strpos($v, '"') !== false
659 659
 		  and preg_match(',[bidsaO]:,', $v)
660 660
 		  and @unserialize($v)) {
661 661
 			$_REQUEST[$k] = htmlentities($v);
Please login to merge, or discard this patch.
Braces   +6 added lines, -2 removed lines patch added patch discarded remove patch
@@ -659,8 +659,12 @@
 block discarded – undo
659 659
 		  and preg_match(',[bidsaO]:,', $v)
660 660
 		  and @unserialize($v)) {
661 661
 			$_REQUEST[$k] = htmlentities($v);
662
-			if (isset($_POST[$k])) $_POST[$k] = $_REQUEST[$k];
663
-			if (isset($_GET[$k])) $_GET[$k] = $_REQUEST[$k];
662
+			if (isset($_POST[$k])) {
663
+			    $_POST[$k] = $_REQUEST[$k];
664
+			}
665
+			if (isset($_GET[$k])) {
666
+			    $_GET[$k] = $_REQUEST[$k];
667
+			}
664 668
 		}
665 669
 	}
666 670
 }
Please login to merge, or discard this patch.
ecrire/lang/ecrire_ja.php 1 patch
Indentation   +832 added lines, -832 removed lines patch added patch discarded remove patch
@@ -4,862 +4,862 @@
 block discarded – undo
4 4
 // ** ne pas modifier le fichier **
5 5
 
6 6
 if (!defined('_ECRIRE_INC_VERSION')) {
7
-	return;
7
+    return;
8 8
 }
9 9
 
10 10
 $GLOBALS[$GLOBALS['idx_lang']] = array(
11 11
 
12
-	// A
13
-	'activer_plugin' => 'プラグインを有効にする',
14
-	'affichage' => '表示',
15
-	'aide_non_disponible' => '現在の言語の設定では、このオンラインヘルプはまだご利用になれません。',
16
-	'annuler_recherche' => '検索を取り消す',
17
-	'auteur' => '著者:',
18
-	'avis_acces_interdit' => 'アクセス禁止',
19
-	'avis_acces_interdit_prive' => '<b>@exec@</b>ページにアクセス禁止。',
20
-	'avis_article_modifie' => 'ご注意ください。@nom_auteur_modif@が@date_diff@分前にこの記事を編集しました。',
21
-	'avis_aucun_resultat' => '当たるデータがありません。',
22
-	'avis_base_inaccessible' => 'データーベース@base@に接続出来ません。',
23
-	'avis_chemin_invalide_1' => 'パスが有効ではないみたいです。',
24
-	'avis_chemin_invalide_2' => '前のページに戻って、入力された情報を確認してください。',
25
-	'avis_connexion_echec_1' => 'SQLサーバーへの接続は失敗しました。',
26
-	'avis_connexion_echec_2' => '前のページに戻って、入力された情報を確認してください。',
27
-	'avis_connexion_echec_3' => '<b>注意</b>多くのサーバーには、データーベースにアクセス権を要求していただいた上でご利用になります。接続が出来なければ、アクセス権を確認してください。',
28
-	'avis_connexion_erreur_creer_base' => 'データーベース作成は失敗です。',
29
-	'avis_connexion_erreur_fichier_cle_manquant_1' => 'インストールは、ウェブマスターがキーとパスワードのバックアップをとって行う必要があります。',
30
-	'avis_connexion_erreur_fichier_cle_manquant_2' => 'インストールはウェブマスターがキーのバックアップをとって行う必要があります',
31
-	'avis_connexion_erreur_nom_base' => 'データーベース名には、文字、数字、およびハイフンのみ使ってください。',
32
-	'avis_connexion_ldap_echec_1' => 'LDAPサーバへの接続は失敗しました。',
33
-	'avis_connexion_ldap_echec_2' => '前のページに戻って、与えられている情報を確認してください。',
34
-	'avis_connexion_ldap_echec_3' => 'ユーザのインポートのためにLDAPサポートを利用しないでください。',
35
-	'avis_deplacement_rubrique' => '注意!このセクションには、ニュースが@contient_breves@件入っています。移す場合
12
+    // A
13
+    'activer_plugin' => 'プラグインを有効にする',
14
+    'affichage' => '表示',
15
+    'aide_non_disponible' => '現在の言語の設定では、このオンラインヘルプはまだご利用になれません。',
16
+    'annuler_recherche' => '検索を取り消す',
17
+    'auteur' => '著者:',
18
+    'avis_acces_interdit' => 'アクセス禁止',
19
+    'avis_acces_interdit_prive' => '<b>@exec@</b>ページにアクセス禁止。',
20
+    'avis_article_modifie' => 'ご注意ください。@nom_auteur_modif@が@date_diff@分前にこの記事を編集しました。',
21
+    'avis_aucun_resultat' => '当たるデータがありません。',
22
+    'avis_base_inaccessible' => 'データーベース@base@に接続出来ません。',
23
+    'avis_chemin_invalide_1' => 'パスが有効ではないみたいです。',
24
+    'avis_chemin_invalide_2' => '前のページに戻って、入力された情報を確認してください。',
25
+    'avis_connexion_echec_1' => 'SQLサーバーへの接続は失敗しました。',
26
+    'avis_connexion_echec_2' => '前のページに戻って、入力された情報を確認してください。',
27
+    'avis_connexion_echec_3' => '<b>注意</b>多くのサーバーには、データーベースにアクセス権を要求していただいた上でご利用になります。接続が出来なければ、アクセス権を確認してください。',
28
+    'avis_connexion_erreur_creer_base' => 'データーベース作成は失敗です。',
29
+    'avis_connexion_erreur_fichier_cle_manquant_1' => 'インストールは、ウェブマスターがキーとパスワードのバックアップをとって行う必要があります。',
30
+    'avis_connexion_erreur_fichier_cle_manquant_2' => 'インストールはウェブマスターがキーのバックアップをとって行う必要があります',
31
+    'avis_connexion_erreur_nom_base' => 'データーベース名には、文字、数字、およびハイフンのみ使ってください。',
32
+    'avis_connexion_ldap_echec_1' => 'LDAPサーバへの接続は失敗しました。',
33
+    'avis_connexion_ldap_echec_2' => '前のページに戻って、与えられている情報を確認してください。',
34
+    'avis_connexion_ldap_echec_3' => 'ユーザのインポートのためにLDAPサポートを利用しないでください。',
35
+    'avis_deplacement_rubrique' => '注意!このセクションには、ニュースが@contient_breves@件入っています。移す場合
36 36
 は、確認ボックスをチェックしてください。',
37
-	'avis_erreur_connexion_mysql' => 'SQL接続のエラー',
38
-	'avis_erreur_creation_compte' => 'アカウント初期化失敗',
39
-	'avis_espace_interdit' => '<b>禁止エリア</b><div>SPIPが既にインストールされています。</div>',
40
-	'avis_lecture_noms_bases_1' => 'インストールプログラムは、データベースの名を読むことが出来ませんでした。',
41
-	'avis_lecture_noms_bases_2' => 'データベースが有効ではないか、データーベースのリストを表示する機能が有効されていないかのことです。これはプロバイダーのセキュリティ上の理由によります。',
42
-	'avis_lecture_noms_bases_3' => '二つ目の選択において、あなたのIDを含むデータベースが利用可能のようです:',
43
-	'avis_non_acces_page' => 'このページにはアクセス権を持っていません。',
44
-	'avis_operation_echec' => '操作エラーです。',
45
-	'avis_operation_impossible' => '操作不可です。',
46
-	'avis_suppression_base' => '注意!データの削除は不可逆です。',
37
+    'avis_erreur_connexion_mysql' => 'SQL接続のエラー',
38
+    'avis_erreur_creation_compte' => 'アカウント初期化失敗',
39
+    'avis_espace_interdit' => '<b>禁止エリア</b><div>SPIPが既にインストールされています。</div>',
40
+    'avis_lecture_noms_bases_1' => 'インストールプログラムは、データベースの名を読むことが出来ませんでした。',
41
+    'avis_lecture_noms_bases_2' => 'データベースが有効ではないか、データーベースのリストを表示する機能が有効されていないかのことです。これはプロバイダーのセキュリティ上の理由によります。',
42
+    'avis_lecture_noms_bases_3' => '二つ目の選択において、あなたのIDを含むデータベースが利用可能のようです:',
43
+    'avis_non_acces_page' => 'このページにはアクセス権を持っていません。',
44
+    'avis_operation_echec' => '操作エラーです。',
45
+    'avis_operation_impossible' => '操作不可です。',
46
+    'avis_suppression_base' => '注意!データの削除は不可逆です。',
47 47
 
48
-	// B
49
-	'bouton_acces_ldap' => 'LDAPへのアクセスを追加する',
50
-	'bouton_ajouter' => '追加する',
51
-	'bouton_annuler' => '取り消す',
52
-	'bouton_cache_activer' => 'キャッシュを再有効にする',
53
-	'bouton_cache_desactiver' => '一時的にキャッシュを無効にする',
54
-	'bouton_demande_publication' => 'この記事の公開を要求する',
55
-	'bouton_desactive_tout' => '全部無効にする',
56
-	'bouton_desinstaller' => 'アンインストールする',
57
-	'bouton_effacer_tout' => '全部削除する',
58
-	'bouton_envoyer_message' => '決定的なメッセージですから:送信する',
59
-	'bouton_fermer' => '閉じる',
60
-	'bouton_mettre_a_jour_base' => 'データベースを更新する',
61
-	'bouton_modifier' => '修正',
62
-	'bouton_radio_afficher' => '表示',
63
-	'bouton_radio_apparaitre_liste_redacteurs_connectes' => '接続されている著者のリストに表示する',
64
-	'bouton_radio_envoi_annonces_adresse' => 'アナウンスを送信するアドレス:',
65
-	'bouton_radio_envoi_liste_nouveautes' => '最新のニュースリストを送信する',
66
-	'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => '接続されている著者のリストに表示しない',
67
-	'bouton_radio_non_envoi_annonces_editoriales' => '編集の発表を送信しない',
68
-	'bouton_redirection' => 'リダイレクト',
69
-	'bouton_reinitialiser_aux_valeurs_par_defaut' => 'デフォルトにリセットする',
70
-	'bouton_relancer_inscription' => '登録を再開する',
71
-	'bouton_relancer_inscriptions' => '登録を再開する',
72
-	'bouton_relancer_installation' => 'インストールを再開する',
73
-	'bouton_reset_password' => '新規パスワードを生成して、メールで送信する',
74
-	'bouton_suivant' => '次',
75
-	'bouton_tenter_recuperation' => '修復を試みる',
76
-	'bouton_test_proxy' => 'プロキシーをテストする',
77
-	'bouton_vider_cache' => 'キャッシュを空白にする。',
48
+    // B
49
+    'bouton_acces_ldap' => 'LDAPへのアクセスを追加する',
50
+    'bouton_ajouter' => '追加する',
51
+    'bouton_annuler' => '取り消す',
52
+    'bouton_cache_activer' => 'キャッシュを再有効にする',
53
+    'bouton_cache_desactiver' => '一時的にキャッシュを無効にする',
54
+    'bouton_demande_publication' => 'この記事の公開を要求する',
55
+    'bouton_desactive_tout' => '全部無効にする',
56
+    'bouton_desinstaller' => 'アンインストールする',
57
+    'bouton_effacer_tout' => '全部削除する',
58
+    'bouton_envoyer_message' => '決定的なメッセージですから:送信する',
59
+    'bouton_fermer' => '閉じる',
60
+    'bouton_mettre_a_jour_base' => 'データベースを更新する',
61
+    'bouton_modifier' => '修正',
62
+    'bouton_radio_afficher' => '表示',
63
+    'bouton_radio_apparaitre_liste_redacteurs_connectes' => '接続されている著者のリストに表示する',
64
+    'bouton_radio_envoi_annonces_adresse' => 'アナウンスを送信するアドレス:',
65
+    'bouton_radio_envoi_liste_nouveautes' => '最新のニュースリストを送信する',
66
+    'bouton_radio_non_apparaitre_liste_redacteurs_connectes' => '接続されている著者のリストに表示しない',
67
+    'bouton_radio_non_envoi_annonces_editoriales' => '編集の発表を送信しない',
68
+    'bouton_redirection' => 'リダイレクト',
69
+    'bouton_reinitialiser_aux_valeurs_par_defaut' => 'デフォルトにリセットする',
70
+    'bouton_relancer_inscription' => '登録を再開する',
71
+    'bouton_relancer_inscriptions' => '登録を再開する',
72
+    'bouton_relancer_installation' => 'インストールを再開する',
73
+    'bouton_reset_password' => '新規パスワードを生成して、メールで送信する',
74
+    'bouton_suivant' => '次',
75
+    'bouton_tenter_recuperation' => '修復を試みる',
76
+    'bouton_test_proxy' => 'プロキシーをテストする',
77
+    'bouton_vider_cache' => 'キャッシュを空白にする。',
78 78
 
79
-	// C
80
-	'cache_modifiable_webmestre' => 'この設定はウェブマスターが修正出来ます。',
81
-	'calendrier_synchro' => '<b>iCal</b>互換のカレンダーを使用する場合、当サイトの情報と同期することが出来ます',
82
-	'config_activer_champs' => 'フィルドを有効にしてください。',
83
-	'config_choix_base_sup' => 'データーベースを選んでください。',
84
-	'config_erreur_base_sup' => 'SPIPは使用可能なデータベースのリストにアクセス出来ない。',
85
-	'config_info_base_sup' => 'このSQLサーバーであれ、それ以外のサーバーであれ、SPIPを使用して他のデータベーを照会する必要がある場合は、このフォームを使用して設定してください。フィールドを空白のままにすると、主なデータベースへの接続設定が使用されます。',
86
-	'config_info_base_sup_disponibles' => '補足のデータベースへ、クエリを送信できる:',
87
-	'config_info_enregistree' => '新しい設定が保存されました。',
88
-	'config_info_logos' => 'サイトの各オブシェクトは、独自のロゴと「オーバーロゴ」を持つことができます。',
89
-	'config_info_logos_utiliser' => 'ロゴを使用する',
90
-	'config_info_logos_utiliser_non' => 'ロゴを使用しない',
91
-	'config_info_logos_utiliser_survol' => 'マウスオーバーロゴを使用する',
92
-	'config_info_logos_utiliser_survol_non' => 'マウスオーバーロゴを使用しない',
93
-	'config_info_redirection' => 'このオプションを有効にすると、仮想記事を作成できます。仮想記事とは、(必ずしもSPIPを使用されない)他のサイトに公開された記事へのリンクです。',
94
-	'config_redirection' => '仮想記事',
95
-	'config_titre_base_sup' => '新規データーベースを作成',
96
-	'config_titre_base_sup_choix' => '補足のデータベースを選択してください。',
97
-	'connexion_ldap' => '接続:',
98
-	'creer_et_associer_un_auteur' => '新規著者を作成して関連付ける',
79
+    // C
80
+    'cache_modifiable_webmestre' => 'この設定はウェブマスターが修正出来ます。',
81
+    'calendrier_synchro' => '<b>iCal</b>互換のカレンダーを使用する場合、当サイトの情報と同期することが出来ます',
82
+    'config_activer_champs' => 'フィルドを有効にしてください。',
83
+    'config_choix_base_sup' => 'データーベースを選んでください。',
84
+    'config_erreur_base_sup' => 'SPIPは使用可能なデータベースのリストにアクセス出来ない。',
85
+    'config_info_base_sup' => 'このSQLサーバーであれ、それ以外のサーバーであれ、SPIPを使用して他のデータベーを照会する必要がある場合は、このフォームを使用して設定してください。フィールドを空白のままにすると、主なデータベースへの接続設定が使用されます。',
86
+    'config_info_base_sup_disponibles' => '補足のデータベースへ、クエリを送信できる:',
87
+    'config_info_enregistree' => '新しい設定が保存されました。',
88
+    'config_info_logos' => 'サイトの各オブシェクトは、独自のロゴと「オーバーロゴ」を持つことができます。',
89
+    'config_info_logos_utiliser' => 'ロゴを使用する',
90
+    'config_info_logos_utiliser_non' => 'ロゴを使用しない',
91
+    'config_info_logos_utiliser_survol' => 'マウスオーバーロゴを使用する',
92
+    'config_info_logos_utiliser_survol_non' => 'マウスオーバーロゴを使用しない',
93
+    'config_info_redirection' => 'このオプションを有効にすると、仮想記事を作成できます。仮想記事とは、(必ずしもSPIPを使用されない)他のサイトに公開された記事へのリンクです。',
94
+    'config_redirection' => '仮想記事',
95
+    'config_titre_base_sup' => '新規データーベースを作成',
96
+    'config_titre_base_sup_choix' => '補足のデータベースを選択してください。',
97
+    'connexion_ldap' => '接続:',
98
+    'creer_et_associer_un_auteur' => '新規著者を作成して関連付ける',
99 99
 
100
-	// D
101
-	'date_mot_heures' => '時',
100
+    // D
101
+    'date_mot_heures' => '時',
102 102
 
103
-	// E
104
-	'ecran_connexion_couleur_principale' => '主なカラー',
105
-	'ecran_connexion_image_fond' => '背景画像',
106
-	'ecran_securite' => '+安全スクリーン@version@',
107
-	'email' => 'メール',
108
-	'email_2' => 'メール:',
109
-	'en_savoir_plus' => '詳細について',
110
-	'entree_adresse_annuaire' => 'ディレクトリのアドレス',
111
-	'entree_adresse_email' => 'メールアドレス',
112
-	'entree_adresse_email_2' => 'メールアドレス',
113
-	'entree_base_donnee_1' => 'データベースアドレス',
114
-	'entree_base_donnee_2' => '(このアドレスはサイトのアドレスと同じか、場合によって«localhost»の設定になるか、空白のままに残すかのことです。)',
115
-	'entree_biographie' => '伝記を短く入力してください。',
116
-	'entree_chemin_acces' => 'パスを<b>入力</b>:',
117
-	'entree_cle_pgp' => 'あなたのPGPキー',
118
-	'entree_cle_pgp_2' => 'PGPキー',
119
-	'entree_contenu_rubrique' => '(セクションの内容を短く入力してください。)',
120
-	'entree_identifiants_connexion' => 'あなたの接続ID…',
121
-	'entree_identifiants_connexion_2' => 'あなたの接続ID…',
122
-	'entree_informations_connexion_ldap' => 'このフォームには、システムまたはネットワーク管理者よりのLDAP接続情報を入力してください。',
123
-	'entree_infos_perso' => 'あなたは誰ですか?',
124
-	'entree_infos_perso_2' => 'どんな著者ですか?',
125
-	'entree_interieur_rubrique' => 'セクションの中に:',
126
-	'entree_liens_sites' => '<b>ハイパーリンク</b>(訪問サイトの参照...)',
127
-	'entree_login' => 'ログインID',
128
-	'entree_login_connexion_1' => '接続するログインID',
129
-	'entree_login_connexion_2' => 'FTPアクセスパスワードと一致になるか、空白のままに残るか、どちらかです。',
130
-	'entree_mot_passe' => 'パスワード',
131
-	'entree_mot_passe_1' => '接続パスワード',
132
-	'entree_mot_passe_2' => 'FTPアクセスパスワードと一致になるか、空白のままに残るか、どちらかです。',
133
-	'entree_nom_fichier' => 'ファイル名@texte_compresse@を記入してください:',
134
-	'entree_nom_pseudo' => 'お名前/偽名入力',
135
-	'entree_nom_pseudo_1' => '(お名前/偽名入力)',
136
-	'entree_nom_pseudo_2' => '名前/偽名',
137
-	'entree_nom_site' => '個人サイトの名前',
138
-	'entree_nom_site_2' => 'サイト主のお名前',
139
-	'entree_nouveau_passe' => '新規パスワード',
140
-	'entree_passe_ldap' => 'パスワード',
141
-	'entree_port_annuaire' => 'ディレクトリのポートナンバー',
142
-	'entree_signature' => '署名',
143
-	'entree_titre_obligatoire' => '[必須]<b>タイトル</b><br/>',
144
-	'entree_url' => '個人サイトのURL',
145
-	'entree_url_2' => 'サイトのURL',
146
-	'erreur_connect_deja_existant' => 'この名のあるサーバーが既にあります。',
147
-	'erreur_contenu_suspect' => 'テキストのフォーマットが正しくはありません。',
148
-	'erreur_email_deja_existant' => 'このメールアドレスは既に登録されています。',
149
-	'erreur_nom_connect_incorrect' => 'サーバー名は許可されていません。',
150
-	'erreur_plugin_attribut_balise_manquant' => '@balise@タグに@attribut@属性が欠けています。',
151
-	'erreur_plugin_desinstalation_echouee' => 'プラグインのアンインストールが失敗しました。まず、プラグインを無効にしてください。',
152
-	'erreur_plugin_fichier_absent' => 'ファイルが見つかりません。',
153
-	'erreur_plugin_fichier_def_absent' => '定義ファイルが見つかりません。',
154
-	'erreur_plugin_nom_fonction_interdit' => '関数名は不可です。',
155
-	'erreur_plugin_nom_manquant' => 'プラーグイン名が見つかりません。',
156
-	'erreur_plugin_prefix_manquant' => 'このプラグインの命名エリアは未定義です。',
157
-	'erreur_plugin_tag_plugin_absent' => '定義ファイルには「プラーグイン」が見つかりません。',
158
-	'erreur_plugin_version_manquant' => 'プラーグインバーションが欠けています。',
103
+    // E
104
+    'ecran_connexion_couleur_principale' => '主なカラー',
105
+    'ecran_connexion_image_fond' => '背景画像',
106
+    'ecran_securite' => '+安全スクリーン@version@',
107
+    'email' => 'メール',
108
+    'email_2' => 'メール:',
109
+    'en_savoir_plus' => '詳細について',
110
+    'entree_adresse_annuaire' => 'ディレクトリのアドレス',
111
+    'entree_adresse_email' => 'メールアドレス',
112
+    'entree_adresse_email_2' => 'メールアドレス',
113
+    'entree_base_donnee_1' => 'データベースアドレス',
114
+    'entree_base_donnee_2' => '(このアドレスはサイトのアドレスと同じか、場合によって«localhost»の設定になるか、空白のままに残すかのことです。)',
115
+    'entree_biographie' => '伝記を短く入力してください。',
116
+    'entree_chemin_acces' => 'パスを<b>入力</b>:',
117
+    'entree_cle_pgp' => 'あなたのPGPキー',
118
+    'entree_cle_pgp_2' => 'PGPキー',
119
+    'entree_contenu_rubrique' => '(セクションの内容を短く入力してください。)',
120
+    'entree_identifiants_connexion' => 'あなたの接続ID…',
121
+    'entree_identifiants_connexion_2' => 'あなたの接続ID…',
122
+    'entree_informations_connexion_ldap' => 'このフォームには、システムまたはネットワーク管理者よりのLDAP接続情報を入力してください。',
123
+    'entree_infos_perso' => 'あなたは誰ですか?',
124
+    'entree_infos_perso_2' => 'どんな著者ですか?',
125
+    'entree_interieur_rubrique' => 'セクションの中に:',
126
+    'entree_liens_sites' => '<b>ハイパーリンク</b>(訪問サイトの参照...)',
127
+    'entree_login' => 'ログインID',
128
+    'entree_login_connexion_1' => '接続するログインID',
129
+    'entree_login_connexion_2' => 'FTPアクセスパスワードと一致になるか、空白のままに残るか、どちらかです。',
130
+    'entree_mot_passe' => 'パスワード',
131
+    'entree_mot_passe_1' => '接続パスワード',
132
+    'entree_mot_passe_2' => 'FTPアクセスパスワードと一致になるか、空白のままに残るか、どちらかです。',
133
+    'entree_nom_fichier' => 'ファイル名@texte_compresse@を記入してください:',
134
+    'entree_nom_pseudo' => 'お名前/偽名入力',
135
+    'entree_nom_pseudo_1' => '(お名前/偽名入力)',
136
+    'entree_nom_pseudo_2' => '名前/偽名',
137
+    'entree_nom_site' => '個人サイトの名前',
138
+    'entree_nom_site_2' => 'サイト主のお名前',
139
+    'entree_nouveau_passe' => '新規パスワード',
140
+    'entree_passe_ldap' => 'パスワード',
141
+    'entree_port_annuaire' => 'ディレクトリのポートナンバー',
142
+    'entree_signature' => '署名',
143
+    'entree_titre_obligatoire' => '[必須]<b>タイトル</b><br/>',
144
+    'entree_url' => '個人サイトのURL',
145
+    'entree_url_2' => 'サイトのURL',
146
+    'erreur_connect_deja_existant' => 'この名のあるサーバーが既にあります。',
147
+    'erreur_contenu_suspect' => 'テキストのフォーマットが正しくはありません。',
148
+    'erreur_email_deja_existant' => 'このメールアドレスは既に登録されています。',
149
+    'erreur_nom_connect_incorrect' => 'サーバー名は許可されていません。',
150
+    'erreur_plugin_attribut_balise_manquant' => '@balise@タグに@attribut@属性が欠けています。',
151
+    'erreur_plugin_desinstalation_echouee' => 'プラグインのアンインストールが失敗しました。まず、プラグインを無効にしてください。',
152
+    'erreur_plugin_fichier_absent' => 'ファイルが見つかりません。',
153
+    'erreur_plugin_fichier_def_absent' => '定義ファイルが見つかりません。',
154
+    'erreur_plugin_nom_fonction_interdit' => '関数名は不可です。',
155
+    'erreur_plugin_nom_manquant' => 'プラーグイン名が見つかりません。',
156
+    'erreur_plugin_prefix_manquant' => 'このプラグインの命名エリアは未定義です。',
157
+    'erreur_plugin_tag_plugin_absent' => '定義ファイルには「プラーグイン」が見つかりません。',
158
+    'erreur_plugin_version_manquant' => 'プラーグインバーションが欠けています。',
159 159
 
160
-	// H
161
-	'htaccess_a_simuler' => '警告:HTTPサーバー設定は@htaccess@ファイルを無視しています。適切なセキュリティを確保するには、この設定を変更する必要があります。
160
+    // H
161
+    'htaccess_a_simuler' => '警告:HTTPサーバー設定は@htaccess@ファイルを無視しています。適切なセキュリティを確保するには、この設定を変更する必要があります。
162 162
 または、(ファイルmy_options.phpで定義できる)@constantes@は、@document_root@の外にあるフォルダーの値を持たなければなりません。',
163
-	'htaccess_inoperant' => 'htaccessは不作動です。',
163
+    'htaccess_inoperant' => 'htaccessは不作動です。',
164 164
 
165
-	// I
166
-	'ical_info1' => 'このページは、サイトの生活に協力するために、いくつかの方法を示しています。',
167
-	'ical_info2' => '技術的な詳細が欲しい場合、迷わずに、<a href="@spipnet@">SPIPの取扱い書</a>を訪れてください。',
168
-	'ical_info_calendrier' => 'カレンダーを2つ自由に使用できます。1つ目は、公開されたすべての記事を発表するサイトマップです。2つ目は、最近の個人的なメッセージも、出版的な告知も表します。このカレンダーは、(パスワードを更新する時、いつでも変更できる)個人用のキーで表されています。',
169
-	'ical_methode_http' => 'ダウンロードする',
170
-	'ical_methode_webcal' => '(webcal://)同期する',
171
-	'ical_texte_prive' => '厳密に個人的な使用するこのカレンダーは、サイトの個人的な編集活動(個人的なタスクや予定、記事、短いニュース項目など)を通知します。',
172
-	'ical_texte_public' => 'このカレンダーでは、一般的な活動(記事やニュースを公開)を管理することができます。',
173
-	'ical_texte_rss' => 'XML / RSS形式(Rich Site Summary)で、任意のファイルリーダーで、このサイトのニュースを参照できます。また、互換性のある交換フォーマットを使用して、他のサイトに公開されているニュースをSPIPが読むことができるフォーマットです。',
174
-	'ical_titre_js' => 'Javascript',
175
-	'ical_titre_mailing' => 'メーリングリスト',
176
-	'ical_titre_rss' => 'Backendファイル',
177
-	'icone_accueil' => 'ホーム',
178
-	'icone_activer_cookie' => 'クッキーを置く',
179
-	'icone_activite' => '活動',
180
-	'icone_admin_plugin' => 'プラグイン管理',
181
-	'icone_administration' => '整備',
182
-	'icone_afficher_auteurs' => '著者を表示',
183
-	'icone_afficher_visiteurs' => '訪問者を表示',
184
-	'icone_arret_discussion' => '話し合いに参加することを停止する',
185
-	'icone_calendrier' => 'カレンダー',
186
-	'icone_configuration' => '環境設定',
187
-	'icone_creer_auteur' => '新しい著者を作って、彼をこの記事に参加させる。',
188
-	'icone_creer_mot_cle' => '新規キーワードを作成して、記事に関連付ける',
189
-	'icone_creer_rubrique_2' => '新規セクション作成',
190
-	'icone_developpement' => '開発',
191
-	'icone_edition' => '編集',
192
-	'icone_ma_langue' => '私の言語',
193
-	'icone_mes_infos' => '私についての情報',
194
-	'icone_mes_preferences' => '私の環境設定',
195
-	'icone_modifier_article' => '記事を修正する',
196
-	'icone_modifier_rubrique' => 'セクションを修正する',
197
-	'icone_publication' => '公開',
198
-	'icone_relancer_signataire' => '署名者を再開する',
199
-	'icone_retour' => '戻る',
200
-	'icone_retour_article' => '記事に戻る',
201
-	'icone_squelette' => 'テンプレート',
202
-	'icone_suivi_publication' => '公開物のフォローアップ',
203
-	'icone_supprimer_cookie' => 'クッキーを削除する',
204
-	'icone_supprimer_rubrique' => 'セクションを削除する',
205
-	'icone_supprimer_signature' => '署名を削除する',
206
-	'icone_valider_signature' => '署名を確認する',
207
-	'image_administrer_rubrique' => 'あなたはこのセクションを管理することができる',
208
-	'impossible_modifier_login_auteur' => 'ログイン編集不可',
209
-	'impossible_modifier_pass_auteur' => 'パスワード編集不可',
210
-	'info_1_article' => '記事1件',
211
-	'info_1_auteur' => '著者1名',
212
-	'info_1_message' => 'メッセージ1件',
213
-	'info_1_mot_cle' => 'キーワード1つ',
214
-	'info_1_rubrique' => 'セクション1つ',
215
-	'info_1_visiteur' => '訪問者1名',
216
-	'info_activer_cookie' => '<b>管理者用クッキー</b>を有効にすると、公開サイトから管理サイトに簡単に切り替えることが出来ます。',
217
-	'info_activer_menu_developpement' => '開発メニューを表示する',
218
-	'info_admin_etre_webmestre' => 'ウェブマスターのアクセス権を与えてもらう。',
219
-	'info_admin_je_suis_webmestre' => '私は<b>ウェブマスター</b>です。',
220
-	'info_admin_statuer_webmestre' => 'この管理者にウェブマスターのアクセス権を与える。',
221
-	'info_admin_webmestre' => 'この管理者は<b>ウェブマスター</b>です。',
222
-	'info_administrateur' => '管理者',
223
-	'info_administrateur_1' => '管理者',
224
-	'info_administrateur_2' => 'サイトについて(<b>注意して使って</b>)',
225
-	'info_administrateur_site_01' => 'サイトの管理者であれば',
226
-	'info_administrateur_site_02' => 'このリンクをクリックしてください。',
227
-	'info_administrateurs' => '管理者',
228
-	'info_administrer_rubrique' => 'あなたはこのセクションを管理することができる',
229
-	'info_adresse' => 'そのアドレスへ:',
230
-	'info_adresse_desinscription' => '登録解除するには:',
231
-	'info_adresse_url' => '公開サイトのアドレス(URL):',
232
-	'info_afficher_par_nb' => '番号による表示',
233
-	'info_aide_en_ligne' => 'SPIPオンラインヘルプ',
234
-	'info_ajout_image' => '記事に書類として画像を添付するとき、SPIPが画像のサムネイルを作成します。それで、自動的に写真集などを作成することが出来ます。',
235
-	'info_ajouter_rubrique' => '管理ができるセクションを追加する:',
236
-	'info_annonce_nouveautes' => '最新の告知',
237
-	'info_article' => '記事',
238
-	'info_article_2' => '記事',
239
-	'info_article_a_paraitre' => '公開する後日付けの記事を投稿する',
240
-	'info_articles_02' => '記事',
241
-	'info_articles_2' => '記事',
242
-	'info_articles_auteur' => 'この著者の記事',
243
-	'info_articles_miens' => '私の記事',
244
-	'info_articles_tous' => '全ての記事',
245
-	'info_articles_trouves' => '見つかった記事',
246
-	'info_attente_validation' => '未確認の私の記事',
247
-	'info_aucun_article' => '記事なし',
248
-	'info_aucun_auteur' => '著者なし',
249
-	'info_aucun_message' => 'メッセージなし',
250
-	'info_aucun_rubrique' => 'セクションなし',
251
-	'info_aujourdhui' => '今日:',
252
-	'info_auteur_gere_rubriques' => 'この著者は次のセクションを管理しています:',
253
-	'info_auteur_gere_toutes_rubriques' => 'この著者は<b>全てのセクション</b>を管理しています。',
254
-	'info_auteur_gere_toutes_rubriques_2' => '私は<b>全てのセクション</b>を管理しています。',
255
-	'info_auteurs' => '著者',
256
-	'info_auteurs_par_tri' => '著者@partri@',
257
-	'info_auteurs_trouves' => '見つかった著者',
258
-	'info_authentification_externe' => '外部の認証',
259
-	'info_avertissement' => '警告',
260
-	'info_barre_outils' => 'ツールバーと共に?',
261
-	'info_base_installee' => 'データベースの構造がインストールされています。',
262
-	'info_bio' => '伝記',
263
-	'info_cache_desactive' => 'キャッシュが一時的に無効になっています。',
264
-	'info_chapeau' => '飾り',
265
-	'info_chapeau_2' => '序説:',
266
-	'info_chemin_acces_1' => 'オプション:<b>ディレクトリのアクセス・パス</b>',
267
-	'info_chemin_acces_2' => 'ディレクトリ内(名簿)の情報にアクセス・パスを設定してください。この情報は、ディレクトリに保存されているユーザープロファイルを読み取るために必要です。',
268
-	'info_chemin_acces_annuaire' => 'オプション : <b>ディレクトリのアクセス・パス',
269
-	'info_choix_base' => '3番目のステップ:',
270
-	'info_classement_1' => ' @liste@ の外',
271
-	'info_classement_2' => ' @liste@ 外',
272
-	'info_code_acces' => 'アクセスコードを忘れないで下さい!',
273
-	'info_config_suivi' => 'もしもこのアドレスがメーリングリストのものと一致する場合、サイト参加者が登録可能なアドレスを下記に表示することができます。記すべきアドレスは、URL(例えばWeb経由の登録ページなど)、サブジェクトを特定してあるメールアドレス (たとえば: <tt>@adresse_suivi@?subject=subscribe</tt>)がいいでしょう。',
274
-	'info_config_suivi_explication' => 'サイトのメーリングリストに登録したら、公開された記事およびニュース項目に関する告知のメールを受け取ります',
275
-	'info_confirmer_passe' => '新規パスワード確認:',
276
-	'info_conflit_edition_avis_non_sauvegarde' => '注意:次のフィールドは他の場所で変更されました。従って、フィールドへの変更は保存されません。',
277
-	'info_conflit_edition_differences' => '違い:',
278
-	'info_conflit_edition_version_enregistree' => '保存されたバーション:',
279
-	'info_conflit_edition_votre_version' => '私のバーション:',
280
-	'info_connexion_base' => '2番目のステップ:<b>データベースに接続しようとしています。</b>',
281
-	'info_connexion_base_donnee' => '最初のステップ:<b>データベースに接続</b>',
282
-	'info_connexion_ldap_ok' => '<b>LDAP接続が成功しました。</b><p>次のステップに進みます。</p>',
283
-	'info_connexion_mysql' => '最初のステップ:<b>データベースに接続</b>',
284
-	'info_connexion_ok' => '接続が成功しました。',
285
-	'info_contact' => '連絡方法',
286
-	'info_contenu_articles' => '記事の内容',
287
-	'info_contributions' => '貢献',
288
-	'info_creation_paragraphe' => '段落・文節を作るには、空の一行を入れてくだい。',
289
-	'info_creation_rubrique' => '記事を作成する前に、<br/>最低セクションを1つ作成する必要があります。<br/>',
290
-	'info_creation_tables' => '4番目のステップ:<b>データベースのテーブルを作成する</b>',
291
-	'info_creer_base' => '新規データベースを<b>作成</b>する:',
292
-	'info_dans_rubrique' => 'セクション内:',
293
-	'info_date_publication_anterieure' => '前日付の公開:',
294
-	'info_date_referencement' => 'サイトを参照した日付:',
295
-	'info_derniere_etape' => '最後のステップ:終わりました!',
296
-	'info_descriptif' => '記述:',
297
-	'info_desinstaller_plugin' => 'プラグインを無効にして、データを削除します。',
298
-	'info_discussion_cours' => '議論中',
299
-	'info_ecrire_article' => '記事を作成する前に、最低セクションを1つ作らなければなりません。',
300
-	'info_email_envoi' => '送信者のメールアドレス(任意)',
301
-	'info_email_envoi_txt' => 'e-mailを送るのに使っている送り主のe-mailアドレスを入力してください(デフォルトで、受信者のアドレスは送信者のアドレスが入力してあります :',
302
-	'info_email_webmestre' => 'ウェブマスターのメールアドレス(任意)',
303
-	'info_envoi_email_automatique' => 'メールの自動送信',
304
-	'info_envoyer_maintenant' => '今送信する',
305
-	'info_etape_suivante' => '次のステップに進む',
306
-	'info_etape_suivante_1' => '次のステップに移ることが出来ます。',
307
-	'info_etape_suivante_2' => '次のステップに移ることが出来ます。',
308
-	'info_exceptions_proxy' => 'プロキシの例外',
309
-	'info_exportation_base' => '@archive@へデータベースを移す。',
310
-	'info_facilite_suivi_activite' => 'サイトの管理を容易にするために、SPIPは、著者のメーリングリストへ「記事の確認と記事の公開」を依頼するメールを送信することができます。一つまたは複数のアドレスをカンマで区切って入力します。',
311
-	'info_fichiers_authent' => '認証ファイル「.htpasswd」',
312
-	'info_forums_abo_invites' => 'サイトは購読者用の掲示板を持っています。参加するために、訪問者は公開サイトで、購読するように招かれています。',
313
-	'info_gauche_admin_tech' => '<p>技術的な整備のこのページには<b>管理者しかアクセスが出来ません。</b>特別な認証プロセスがあるので、WebサイトへのFTPアクセスが必要です。</p>',
314
-	'info_gauche_admin_vider' => '<p>技術的な整備のこのページには<b>管理者しかアクセスが出来ません。</b>特別な認証プロセスがあるので、WebサイトへのFTPアクセスが必要です。</p>',
315
-	'info_gauche_auteurs' => 'サイトの全著者が表示されています。管理者は緑のアイコン、編集者は黄色いアイコンで示されています。',
316
-	'info_gauche_auteurs_exterieurs' => 'サイトへのアクセス権のない外部の著者は、青いアイコンで示し、削除された著者はゴミ箱のアイコンで示されています。',
317
-	'info_gauche_messagerie' => '内部メールを使用すると、著者間のメッセージを交換したり、リマインダー(個人使用)を保管したりします。管理者は管理エリアのホームページに告知を表示することが出来ます。',
318
-	'info_gauche_statistiques_referers' => 'このページは、<b>参照</b>、つまり、当サイトへのリンクを持っているサイトのリス
165
+    // I
166
+    'ical_info1' => 'このページは、サイトの生活に協力するために、いくつかの方法を示しています。',
167
+    'ical_info2' => '技術的な詳細が欲しい場合、迷わずに、<a href="@spipnet@">SPIPの取扱い書</a>を訪れてください。',
168
+    'ical_info_calendrier' => 'カレンダーを2つ自由に使用できます。1つ目は、公開されたすべての記事を発表するサイトマップです。2つ目は、最近の個人的なメッセージも、出版的な告知も表します。このカレンダーは、(パスワードを更新する時、いつでも変更できる)個人用のキーで表されています。',
169
+    'ical_methode_http' => 'ダウンロードする',
170
+    'ical_methode_webcal' => '(webcal://)同期する',
171
+    'ical_texte_prive' => '厳密に個人的な使用するこのカレンダーは、サイトの個人的な編集活動(個人的なタスクや予定、記事、短いニュース項目など)を通知します。',
172
+    'ical_texte_public' => 'このカレンダーでは、一般的な活動(記事やニュースを公開)を管理することができます。',
173
+    'ical_texte_rss' => 'XML / RSS形式(Rich Site Summary)で、任意のファイルリーダーで、このサイトのニュースを参照できます。また、互換性のある交換フォーマットを使用して、他のサイトに公開されているニュースをSPIPが読むことができるフォーマットです。',
174
+    'ical_titre_js' => 'Javascript',
175
+    'ical_titre_mailing' => 'メーリングリスト',
176
+    'ical_titre_rss' => 'Backendファイル',
177
+    'icone_accueil' => 'ホーム',
178
+    'icone_activer_cookie' => 'クッキーを置く',
179
+    'icone_activite' => '活動',
180
+    'icone_admin_plugin' => 'プラグイン管理',
181
+    'icone_administration' => '整備',
182
+    'icone_afficher_auteurs' => '著者を表示',
183
+    'icone_afficher_visiteurs' => '訪問者を表示',
184
+    'icone_arret_discussion' => '話し合いに参加することを停止する',
185
+    'icone_calendrier' => 'カレンダー',
186
+    'icone_configuration' => '環境設定',
187
+    'icone_creer_auteur' => '新しい著者を作って、彼をこの記事に参加させる。',
188
+    'icone_creer_mot_cle' => '新規キーワードを作成して、記事に関連付ける',
189
+    'icone_creer_rubrique_2' => '新規セクション作成',
190
+    'icone_developpement' => '開発',
191
+    'icone_edition' => '編集',
192
+    'icone_ma_langue' => '私の言語',
193
+    'icone_mes_infos' => '私についての情報',
194
+    'icone_mes_preferences' => '私の環境設定',
195
+    'icone_modifier_article' => '記事を修正する',
196
+    'icone_modifier_rubrique' => 'セクションを修正する',
197
+    'icone_publication' => '公開',
198
+    'icone_relancer_signataire' => '署名者を再開する',
199
+    'icone_retour' => '戻る',
200
+    'icone_retour_article' => '記事に戻る',
201
+    'icone_squelette' => 'テンプレート',
202
+    'icone_suivi_publication' => '公開物のフォローアップ',
203
+    'icone_supprimer_cookie' => 'クッキーを削除する',
204
+    'icone_supprimer_rubrique' => 'セクションを削除する',
205
+    'icone_supprimer_signature' => '署名を削除する',
206
+    'icone_valider_signature' => '署名を確認する',
207
+    'image_administrer_rubrique' => 'あなたはこのセクションを管理することができる',
208
+    'impossible_modifier_login_auteur' => 'ログイン編集不可',
209
+    'impossible_modifier_pass_auteur' => 'パスワード編集不可',
210
+    'info_1_article' => '記事1件',
211
+    'info_1_auteur' => '著者1名',
212
+    'info_1_message' => 'メッセージ1件',
213
+    'info_1_mot_cle' => 'キーワード1つ',
214
+    'info_1_rubrique' => 'セクション1つ',
215
+    'info_1_visiteur' => '訪問者1名',
216
+    'info_activer_cookie' => '<b>管理者用クッキー</b>を有効にすると、公開サイトから管理サイトに簡単に切り替えることが出来ます。',
217
+    'info_activer_menu_developpement' => '開発メニューを表示する',
218
+    'info_admin_etre_webmestre' => 'ウェブマスターのアクセス権を与えてもらう。',
219
+    'info_admin_je_suis_webmestre' => '私は<b>ウェブマスター</b>です。',
220
+    'info_admin_statuer_webmestre' => 'この管理者にウェブマスターのアクセス権を与える。',
221
+    'info_admin_webmestre' => 'この管理者は<b>ウェブマスター</b>です。',
222
+    'info_administrateur' => '管理者',
223
+    'info_administrateur_1' => '管理者',
224
+    'info_administrateur_2' => 'サイトについて(<b>注意して使って</b>)',
225
+    'info_administrateur_site_01' => 'サイトの管理者であれば',
226
+    'info_administrateur_site_02' => 'このリンクをクリックしてください。',
227
+    'info_administrateurs' => '管理者',
228
+    'info_administrer_rubrique' => 'あなたはこのセクションを管理することができる',
229
+    'info_adresse' => 'そのアドレスへ:',
230
+    'info_adresse_desinscription' => '登録解除するには:',
231
+    'info_adresse_url' => '公開サイトのアドレス(URL):',
232
+    'info_afficher_par_nb' => '番号による表示',
233
+    'info_aide_en_ligne' => 'SPIPオンラインヘルプ',
234
+    'info_ajout_image' => '記事に書類として画像を添付するとき、SPIPが画像のサムネイルを作成します。それで、自動的に写真集などを作成することが出来ます。',
235
+    'info_ajouter_rubrique' => '管理ができるセクションを追加する:',
236
+    'info_annonce_nouveautes' => '最新の告知',
237
+    'info_article' => '記事',
238
+    'info_article_2' => '記事',
239
+    'info_article_a_paraitre' => '公開する後日付けの記事を投稿する',
240
+    'info_articles_02' => '記事',
241
+    'info_articles_2' => '記事',
242
+    'info_articles_auteur' => 'この著者の記事',
243
+    'info_articles_miens' => '私の記事',
244
+    'info_articles_tous' => '全ての記事',
245
+    'info_articles_trouves' => '見つかった記事',
246
+    'info_attente_validation' => '未確認の私の記事',
247
+    'info_aucun_article' => '記事なし',
248
+    'info_aucun_auteur' => '著者なし',
249
+    'info_aucun_message' => 'メッセージなし',
250
+    'info_aucun_rubrique' => 'セクションなし',
251
+    'info_aujourdhui' => '今日:',
252
+    'info_auteur_gere_rubriques' => 'この著者は次のセクションを管理しています:',
253
+    'info_auteur_gere_toutes_rubriques' => 'この著者は<b>全てのセクション</b>を管理しています。',
254
+    'info_auteur_gere_toutes_rubriques_2' => '私は<b>全てのセクション</b>を管理しています。',
255
+    'info_auteurs' => '著者',
256
+    'info_auteurs_par_tri' => '著者@partri@',
257
+    'info_auteurs_trouves' => '見つかった著者',
258
+    'info_authentification_externe' => '外部の認証',
259
+    'info_avertissement' => '警告',
260
+    'info_barre_outils' => 'ツールバーと共に?',
261
+    'info_base_installee' => 'データベースの構造がインストールされています。',
262
+    'info_bio' => '伝記',
263
+    'info_cache_desactive' => 'キャッシュが一時的に無効になっています。',
264
+    'info_chapeau' => '飾り',
265
+    'info_chapeau_2' => '序説:',
266
+    'info_chemin_acces_1' => 'オプション:<b>ディレクトリのアクセス・パス</b>',
267
+    'info_chemin_acces_2' => 'ディレクトリ内(名簿)の情報にアクセス・パスを設定してください。この情報は、ディレクトリに保存されているユーザープロファイルを読み取るために必要です。',
268
+    'info_chemin_acces_annuaire' => 'オプション : <b>ディレクトリのアクセス・パス',
269
+    'info_choix_base' => '3番目のステップ:',
270
+    'info_classement_1' => ' @liste@ の外',
271
+    'info_classement_2' => ' @liste@ 外',
272
+    'info_code_acces' => 'アクセスコードを忘れないで下さい!',
273
+    'info_config_suivi' => 'もしもこのアドレスがメーリングリストのものと一致する場合、サイト参加者が登録可能なアドレスを下記に表示することができます。記すべきアドレスは、URL(例えばWeb経由の登録ページなど)、サブジェクトを特定してあるメールアドレス (たとえば: <tt>@adresse_suivi@?subject=subscribe</tt>)がいいでしょう。',
274
+    'info_config_suivi_explication' => 'サイトのメーリングリストに登録したら、公開された記事およびニュース項目に関する告知のメールを受け取ります',
275
+    'info_confirmer_passe' => '新規パスワード確認:',
276
+    'info_conflit_edition_avis_non_sauvegarde' => '注意:次のフィールドは他の場所で変更されました。従って、フィールドへの変更は保存されません。',
277
+    'info_conflit_edition_differences' => '違い:',
278
+    'info_conflit_edition_version_enregistree' => '保存されたバーション:',
279
+    'info_conflit_edition_votre_version' => '私のバーション:',
280
+    'info_connexion_base' => '2番目のステップ:<b>データベースに接続しようとしています。</b>',
281
+    'info_connexion_base_donnee' => '最初のステップ:<b>データベースに接続</b>',
282
+    'info_connexion_ldap_ok' => '<b>LDAP接続が成功しました。</b><p>次のステップに進みます。</p>',
283
+    'info_connexion_mysql' => '最初のステップ:<b>データベースに接続</b>',
284
+    'info_connexion_ok' => '接続が成功しました。',
285
+    'info_contact' => '連絡方法',
286
+    'info_contenu_articles' => '記事の内容',
287
+    'info_contributions' => '貢献',
288
+    'info_creation_paragraphe' => '段落・文節を作るには、空の一行を入れてくだい。',
289
+    'info_creation_rubrique' => '記事を作成する前に、<br/>最低セクションを1つ作成する必要があります。<br/>',
290
+    'info_creation_tables' => '4番目のステップ:<b>データベースのテーブルを作成する</b>',
291
+    'info_creer_base' => '新規データベースを<b>作成</b>する:',
292
+    'info_dans_rubrique' => 'セクション内:',
293
+    'info_date_publication_anterieure' => '前日付の公開:',
294
+    'info_date_referencement' => 'サイトを参照した日付:',
295
+    'info_derniere_etape' => '最後のステップ:終わりました!',
296
+    'info_descriptif' => '記述:',
297
+    'info_desinstaller_plugin' => 'プラグインを無効にして、データを削除します。',
298
+    'info_discussion_cours' => '議論中',
299
+    'info_ecrire_article' => '記事を作成する前に、最低セクションを1つ作らなければなりません。',
300
+    'info_email_envoi' => '送信者のメールアドレス(任意)',
301
+    'info_email_envoi_txt' => 'e-mailを送るのに使っている送り主のe-mailアドレスを入力してください(デフォルトで、受信者のアドレスは送信者のアドレスが入力してあります :',
302
+    'info_email_webmestre' => 'ウェブマスターのメールアドレス(任意)',
303
+    'info_envoi_email_automatique' => 'メールの自動送信',
304
+    'info_envoyer_maintenant' => '今送信する',
305
+    'info_etape_suivante' => '次のステップに進む',
306
+    'info_etape_suivante_1' => '次のステップに移ることが出来ます。',
307
+    'info_etape_suivante_2' => '次のステップに移ることが出来ます。',
308
+    'info_exceptions_proxy' => 'プロキシの例外',
309
+    'info_exportation_base' => '@archive@へデータベースを移す。',
310
+    'info_facilite_suivi_activite' => 'サイトの管理を容易にするために、SPIPは、著者のメーリングリストへ「記事の確認と記事の公開」を依頼するメールを送信することができます。一つまたは複数のアドレスをカンマで区切って入力します。',
311
+    'info_fichiers_authent' => '認証ファイル「.htpasswd」',
312
+    'info_forums_abo_invites' => 'サイトは購読者用の掲示板を持っています。参加するために、訪問者は公開サイトで、購読するように招かれています。',
313
+    'info_gauche_admin_tech' => '<p>技術的な整備のこのページには<b>管理者しかアクセスが出来ません。</b>特別な認証プロセスがあるので、WebサイトへのFTPアクセスが必要です。</p>',
314
+    'info_gauche_admin_vider' => '<p>技術的な整備のこのページには<b>管理者しかアクセスが出来ません。</b>特別な認証プロセスがあるので、WebサイトへのFTPアクセスが必要です。</p>',
315
+    'info_gauche_auteurs' => 'サイトの全著者が表示されています。管理者は緑のアイコン、編集者は黄色いアイコンで示されています。',
316
+    'info_gauche_auteurs_exterieurs' => 'サイトへのアクセス権のない外部の著者は、青いアイコンで示し、削除された著者はゴミ箱のアイコンで示されています。',
317
+    'info_gauche_messagerie' => '内部メールを使用すると、著者間のメッセージを交換したり、リマインダー(個人使用)を保管したりします。管理者は管理エリアのホームページに告知を表示することが出来ます。',
318
+    'info_gauche_statistiques_referers' => 'このページは、<b>参照</b>、つまり、当サイトへのリンクを持っているサイトのリス
319 319
 トを表示しています。このリストは24時間ごとにリセットされます。',
320
-	'info_gauche_visiteurs_enregistres' => 'ここでサイトのパブリックなエリアで登録された訪問者たちを探せるでしょう(寄付による掲示板)。',
321
-	'info_generation_miniatures_images' => '画像のサムネイルの生成',
322
-	'info_gerer_trad_objets' => '@objets@:翻訳リンクを管理する。',
323
-	'info_hebergeur_desactiver_envoi_email' => '若干のホストでは、それらサーバー上から自動的にメールを送ることが出来ません。そういう場合、SPIPの次の機能は実施できません。',
324
-	'info_hier' => '昨日:',
325
-	'info_identification_publique' => '公開ID…',
326
-	'info_image_process' => 'サムネイルを作る最も良い方法を、対応する写真の上を、クリックして選んでください。',
327
-	'info_image_process2' => '<b>付記</b> 画像が表れなければ、サーバーではソフトが使えるように設定してありません。この機能を使いたい場合、プロバイダの技術サポートに「GD」か「Imagick」拡張をインストールしてもらって下さい。',
328
-	'info_images_auto' => '画像の自動制作',
329
-	'info_informations_personnelles' => '5番目のステップ:<b>個人情報</b>',
330
-	'info_inscription' => '登録された日付:',
331
-	'info_inscription_automatique' => '新規編集者の自動登録',
332
-	'info_jeu_caractere' => 'サイトの文字コード',
333
-	'info_jours' => '日',
334
-	'info_laisser_champs_vides' => 'これらのフィールドを空白のままにしておく事が出来ます。)',
335
-	'info_langues' => 'サイトの言語',
336
-	'info_ldap_ok' => 'LDAP認証はインストールされています。',
337
-	'info_lien_hypertexte' => 'リンク:',
338
-	'info_liste_nouveautes_envoyee' => '新らしい公開物のリストが送信されました。',
339
-	'info_liste_redacteurs_connectes' => '接続している編集者のリスト',
340
-	'info_login_existant' => 'このIDは既に使われています。',
341
-	'info_login_trop_court' => 'ログインIDが短すぎます。',
342
-	'info_login_trop_court_car_pluriel' => 'ログインには少なくとも@nb@文字を含める必要があります。',
343
-	'info_logos' => 'ロゴ',
344
-	'info_maximum' => '最大:',
345
-	'info_meme_rubrique' => '同じセクションの中には',
346
-	'info_message_en_redaction' => '編集中のメッセージ',
347
-	'info_message_technique' => '技術的なメッセージ:',
348
-	'info_messagerie_interne' => '内部のメッセージ交換',
349
-	'info_mise_a_niveau_base' => 'SQLデータベースがアップグレードした',
350
-	'info_mise_a_niveau_base_2' => '<b>警告!</b>現在のサイトよりも、インストールされたSPIPのバージョンが古いです。データベースが失われ、サイトはもはや動作しない恐れがあります。<b>SPIPを再インストールしてください。</b>',
351
-	'info_modification_enregistree' => '変更が保存されました。',
352
-	'info_modifier_auteur' => '著者を修正する',
353
-	'info_modifier_rubrique' => 'セクションを修正する',
354
-	'info_modifier_titre' => '@titre@を修正する',
355
-	'info_mon_site_spip' => '私のSPIPサイト',
356
-	'info_moyenne' => '平均:',
357
-	'info_multi_cet_article' => 'この記事の言語:',
358
-	'info_multi_langues_choisies' => 'あなたのサイトのエディターが利用できる言語を下で選んでください。もうすでにあなたのサイト内で(リストの上で)使われている言語は無効に出来ません。',
359
-	'info_multi_objets' => '@objets@:言語メニューを有効にする',
360
-	'info_multi_secteurs' => '... ルートにあるセクションだけ有効にしますか?',
361
-	'info_nb_articles' => '記事@nb@件',
362
-	'info_nb_auteurs' => '著者@nb@名',
363
-	'info_nb_messages' => 'メッセージ@nb@件',
364
-	'info_nb_mots_cles' => 'キーワード@nb@つ',
365
-	'info_nb_rubriques' => 'セクション@nb@つ',
366
-	'info_nb_visiteurs' => '訪問者@nb@名',
367
-	'info_nom' => 'お名前',
368
-	'info_nom_destinataire' => '受取人のお名前',
369
-	'info_nom_pas_conforme' => 'HTMLタグは使用できません。',
370
-	'info_nom_site' => 'HPの名前',
371
-	'info_nombre_articles' => '記事@nb_articles@件、',
372
-	'info_nombre_rubriques' => 'セクション@nb_rubriques@件、',
373
-	'info_nombre_sites' => 'サイト@nb_sites@件、',
374
-	'info_non_deplacer' => '移さないでください。',
375
-	'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIPは、サイトの最新の公開物を定期的に送ることができます。',
376
-	'info_non_envoi_liste_nouveautes' => '最新のニュースを送信しません。',
377
-	'info_non_modifiable' => '変更できません',
378
-	'info_non_suppression_mot_cle' => 'このキーワードを削除したくはありません。',
379
-	'info_notes' => '補足',
380
-	'info_nouvel_article' => '新規記事',
381
-	'info_nouvelle_traduction' => '新規翻訳:',
382
-	'info_numero_article' => '記事番号:',
383
-	'info_obligatoire_02' => '[必須]',
384
-	'info_option_accepter_visiteurs' => '公開サイトから、訪問者の登録を受け取る',
385
-	'info_option_ne_pas_accepter_visiteurs' => '訪問者の登録を断る',
386
-	'info_options_avancees' => '詳細オプション',
387
-	'info_ou' => '又は...',
388
-	'info_page_interdite' => 'ページ禁止',
389
-	'info_par_nom' => '名前によるソート',
390
-	'info_par_nombre_article' => '記事の数によって',
391
-	'info_par_statut' => 'ステータスによるソート',
392
-	'info_par_tri' => '「(@tri@によって)」',
393
-	'info_passe_trop_court' => 'パスワードは短すぎます。',
394
-	'info_passe_trop_court_car_pluriel' => 'パスワードは少なくとも@nb@文字を含める必要があります。',
395
-	'info_passes_identiques' => 'その二つのパスワードは違います。',
396
-	'info_plus_cinq_car' => '6文字以上',
397
-	'info_plus_cinq_car_2' => '(6文字以上)',
398
-	'info_plus_trois_car' => '(4文字以上)',
399
-	'info_popularite' => '人気度: @popularite@; 訪問者: @visites@',
400
-	'info_post_scriptum' => '追伸',
401
-	'info_post_scriptum_2' => '追伸:',
402
-	'info_pour' => 'for',
403
-	'info_preview_texte' => '「提案済み」のステータスがある様々な編集物をプレビューすることが出来、および自分が著者のある記事を見ることができます。この機能は、管理者、編集者、または誰でも利用するのですか?',
404
-	'info_procedez_par_etape' => '一方一方して進んでください。',
405
-	'info_procedure_maj_version' => '新しいバージョンのSPIPに順応させるために、データベースをアップグレードするべきです。',
406
-	'info_proxy_ok' => 'プロキシテストの成功。',
407
-	'info_ps' => '追伸',
408
-	'info_publier' => '公開',
409
-	'info_publies' => '公開された私の記事',
410
-	'info_question_accepter_visiteurs' => 'サイトのテンプレートがプライベートエリアに入らないで、訪問者の登録を提案したら、以下のオプションを有効にしてください:',
411
-	'info_question_inscription_nouveaux_redacteurs' => '公開サイトより新規著者の登録を受け入れますか。<br/>そうであれば、ご訪問者はフォームを使って自動で登録ができます。管理エリアに入ってご自分の記事を提出します。<br/><div class = "notice">登録プロセスで、ご訪問者は管理エリアに入るためにアクセスコードをもたらすメールを受信します。<br/>プロバイダーによっては、メールの自動送信が無効にされることがあります。 その場合、自動登録は不可能です。</div>',
412
-	'info_qui_edite' => '@nom_auteur_modif@が@date_diff@分前に中味を編集しました。',
413
-	'info_racine_site' => 'サイトのルート',
414
-	'info_recharger_page' => 'ちょっとしてからこのページを再読込してください。',
415
-	'info_recherche_auteur_zero' => '「@cherche_auteur@」に関しては何も見つかりませんでした。',
416
-	'info_recommencer' => 'やり直してください。',
417
-	'info_redacteur_1' => '編集者',
418
-	'info_redacteur_2' => '管理エリアへのアクセス権を持ちながら。<b>すすめ</b>',
419
-	'info_redacteurs' => '編集者',
420
-	'info_redaction_en_cours' => '編集中',
421
-	'info_redirection' => 'リダイレクション',
422
-	'info_redirection_activee' => 'リダイレクションは有効にされます。',
423
-	'info_redirection_boucle' => 'この記事を記事自身に向けてリダイレクトしようとしています。',
424
-	'info_redirection_desactivee' => 'リダイレクションは無効にされます。',
425
-	'info_refuses' => '記事は拒絶されました。',
426
-	'info_reglage_ldap' => 'オプション:<b>LDAPインポートの設定</b>',
427
-	'info_renvoi_article' => '<b>リダイレクション</b>この記事はそのページを参照します:',
428
-	'info_reserve_admin' => '管理者しかこのアドレスの変更が出来ません。',
429
-	'info_restreindre_rubrique' => '管理はこのセクションに制限されています:',
430
-	'info_resultat_recherche' => '検索結果:',
431
-	'info_rubriques' => 'セクション',
432
-	'info_rubriques_02' => 'セクション',
433
-	'info_rubriques_trouvees' => '見つかったセクション',
434
-	'info_sans_titre' => '無名',
435
-	'info_selection_chemin_acces' => '次にディレクトリのアクセスパスを<b>選択</b>してください。',
436
-	'info_signatures' => '署名',
437
-	'info_site' => 'サイト',
438
-	'info_site_2' => 'サイト:',
439
-	'info_site_min' => 'サイト',
440
-	'info_site_reference_2' => '参照されたサイト',
441
-	'info_site_web' => 'ウェブサイト:',
442
-	'info_sites' => 'サイト',
443
-	'info_sites_lies_mot' => '参照されたサイトをこのキーワードと関連付ける',
444
-	'info_sites_proxy' => 'プロキシ使用',
445
-	'info_sites_trouves' => '見つかったサイト',
446
-	'info_sous_titre' => 'サブタイトル:',
447
-	'info_statut_administrateur' => '管理者です。',
448
-	'info_statut_auteur' => '管理者のステータス:',
449
-	'info_statut_auteur_2' => '私は、',
450
-	'info_statut_auteur_a_confirmer' => '確認されるべきの登録',
451
-	'info_statut_auteur_autre' => 'その他のステータス:',
452
-	'info_statut_redacteur' => 'エディターです。',
453
-	'info_statut_utilisateurs_1' => '読み込まれたユーザーの標準のステータス',
454
-	'info_statut_utilisateurs_2' => 'LDAPディレクトリ内のユーザーが初めてログインする時には、ユーザー用のステータスを選択してください。その後、各ユーザーのステータスを管理することができます。',
455
-	'info_suivi_activite' => '編集活動に従うこと',
456
-	'info_surtitre' => 'トップタイトル:',
457
-	'info_syndication_integrale_1' => '当サイトは参照ファイルを提供します。(「<a href=\\"@url@\\">@titre@</a>」を見てください。)',
458
-	'info_syndication_integrale_2' => '記事全体か、または数百文字の要約のみ送信しますか?',
459
-	'info_table_prefix' => '複数のサイトは同じデータベースを読み込むなら、データベーステーブルの名前の接頭辞を変更する必要があります。(接頭辞は、スペースなし小文字で書いてください。)',
460
-	'info_taille_maximale_images' => 'SPIPは処理ができる画像の最大サイズをテストします。<br/>大きすぎる画像は縮小されません。',
461
-	'info_taille_maximale_vignette' => 'SPIPが処理するサムネイルの最大サイズ:',
462
-	'info_terminer_installation' => 'これで標準インストール手順を完了できます。',
463
-	'info_texte' => 'テキスト',
464
-	'info_texte_explicatif' => '説明用の文章',
465
-	'info_texte_long' => '(文章が長い:いくつかに文章に分けられていますが、確認後、システムが自動で繋ぎます。)',
466
-	'info_texte_message' => 'メッセージの文章:',
467
-	'info_texte_message_02' => 'メッセージの文章:',
468
-	'info_titre' => '題名:',
469
-	'info_total' => '合計:',
470
-	'info_tous_articles_en_redaction' => '編集中の記事',
471
-	'info_tous_articles_presents' => 'このセクションに公開されたすべての記事',
472
-	'info_tous_articles_refuses' => '拒否された記事',
473
-	'info_tous_les' => 'すべて:',
474
-	'info_tout_site' => '全サイト',
475
-	'info_tout_site2' => '記事はこの言語へ翻訳されていません。',
476
-	'info_tout_site3' => '記事はこの言語へ翻訳されましたが、後ほど元の記事が修正されたので、翻訳を更新する必要もあります。',
477
-	'info_tout_site4' => '記事はこの言語へ翻訳されており、翻訳も更新になりました。',
478
-	'info_tout_site5' => '元の記事。',
479
-	'info_tout_site6' => '<b>警告:</b>元の記事のみ表示されています。これに関連付けられる翻訳は、ステータスを示す色で表示されます:',
480
-	'info_traductions' => '翻訳',
481
-	'info_travail_colaboratif' => '記事の共同作業',
482
-	'info_un_article' => '記事1件、',
483
-	'info_un_site' => 'サイト1つ、',
484
-	'info_une_rubrique' => 'セクション1つ、',
485
-	'info_une_rubrique_02' => 'セッション1つ',
486
-	'info_url' => 'URL:',
487
-	'info_url_proxy' => 'プロクシURL',
488
-	'info_url_proxy_pas_conforme' => 'プロクシのURLは無効です。',
489
-	'info_url_site_pas_conforme' => 'サイトのURLは無効です。',
490
-	'info_url_test_proxy' => 'テストのURL',
491
-	'info_urlref' => 'リンク:',
492
-	'info_utilisation_spip' => 'SPIPが使えるようになってきました。',
493
-	'info_visites_par_mois' => '月で表示:',
494
-	'info_visiteur_1' => '訪問者',
495
-	'info_visiteur_2' => '公開サイトの',
496
-	'info_visiteurs' => '訪問者',
497
-	'info_visiteurs_02' => '公開サイトの訪問者数',
498
-	'info_webmestre_forces' => 'ウェブマスターは<b>@file_options@</b>に設定されています。',
499
-	'install_adresse_base_hebergeur' => 'データベースURLはプロバイダによって提供されています。',
500
-	'install_connect_ok' => '新しいデータベースは@connect@と名付けられたサーバーとして設定されています。',
501
-	'install_echec_annonce' => 'インストールが失敗する恐れがあって、サイトを作動させられないかもしれません。',
502
-	'install_extension_mbstring' => 'SPIPはこれで作動しません:',
503
-	'install_extension_php_obligatoire' => 'SPIPにはこのphpの拡張モジュールが必要です:',
504
-	'install_login_base_hebergeur' => 'ログインはプロバイダによって提供されています。',
505
-	'install_nom_base_hebergeur' => 'プロバイダによって提供されたデーターベース名は:',
506
-	'install_pas_table' => '現在データーベースのテーブルは設定していません。',
507
-	'install_pass_base_hebergeur' => 'パスワードはプロバイダによって提供されています。',
508
-	'install_php_version' => 'PHPバージョン@version@はあまり古いです。(最低 = @minimum@)',
509
-	'install_select_langue' => '言語を選択し、「次へ」ボタンをクリックすると、インストールが始まります。',
510
-	'install_select_type_db' => 'データベース型を選択してください:',
511
-	'install_select_type_mysql' => 'MySQL',
512
-	'install_select_type_pg' => 'PostgreSQL',
513
-	'install_select_type_sqlite2' => 'SQLite 2',
514
-	'install_select_type_sqlite3' => 'SQLite 3',
515
-	'install_serveur_hebergeur' => 'データーベース・サーバーはプロバイダによって提供されています。',
516
-	'install_table_prefix_hebergeur' => 'テーブル接頭辞はプロバイダによって提供されています。',
517
-	'install_tables_base' => 'データーベースのテーブル',
518
-	'install_types_db_connus' => 'SPIPは<b>MySQL</b>(最も一般的)と<b>SQLite</b>を使用できます。',
519
-	'install_types_db_connus_avertissement' => '実際<b>PostgreSQL</b>は実験的にサポートされています。',
520
-	'instituer_erreur_statut_a_change' => 'ステータスは既に変更されています。',
521
-	'instituer_erreur_statut_non_autorise' => 'このステータスを選択することができません。',
522
-	'intem_redacteur' => '編集者',
523
-	'intitule_licence' => 'ライセンス',
524
-	'item_accepter_inscriptions' => '登録を受け取る',
525
-	'item_activer_messages_avertissement' => '警告メッセージを有効にする',
526
-	'item_administrateur_2' => '管理者です。',
527
-	'item_afficher_calendrier' => 'カレンダー上に表示',
528
-	'item_autoriser_syndication_integrale' => '参照フィードに記事全体を含める',
529
-	'item_choix_administrateurs' => '管理者',
530
-	'item_choix_generation_miniature' => '画像のサムネイルを自動製作する',
531
-	'item_choix_non_generation_miniature' => '画像のサムネイルを製作しない',
532
-	'item_choix_redacteurs' => '編集者',
533
-	'item_choix_visiteurs' => '公開サイトの訪問者',
534
-	'item_creer_fichiers_authent' => '.htpasswdファイルを制作する',
535
-	'item_login' => 'ログインID',
536
-	'item_messagerie_agenda' => 'メッセージングシステムとカレンダーを有効にする',
537
-	'item_mots_cles_association_articles' => '記事に',
538
-	'item_mots_cles_association_rubriques' => 'セクションに',
539
-	'item_mots_cles_association_sites' => '参照か供給(シンジケート)しているサイト',
540
-	'item_non' => 'いいえ',
541
-	'item_non_accepter_inscriptions' => '登録を受け取らない',
542
-	'item_non_activer_messages_avertissement' => '警告メッセージを表示しない',
543
-	'item_non_afficher_calendrier' => 'カレンダー上に表示しない',
544
-	'item_non_autoriser_syndication_integrale' => '要約のみ送信する',
545
-	'item_non_creer_fichiers_authent' => 'これらファイルを制作しません',
546
-	'item_non_messagerie_agenda' => 'メッセージングシステムとカレンダーを無効にする',
547
-	'item_non_publier_articles' => '設定された公開日前に記事を公開しない。',
548
-	'item_nouvel_auteur' => '新規著者',
549
-	'item_nouvelle_rubrique' => '新規セクション',
550
-	'item_oui' => 'はい',
551
-	'item_publier_articles' => '公開日に関係なく、記事を公開する。',
552
-	'item_reponse_article' => '記事に返信する',
553
-	'item_visiteur' => '訪問者',
320
+    'info_gauche_visiteurs_enregistres' => 'ここでサイトのパブリックなエリアで登録された訪問者たちを探せるでしょう(寄付による掲示板)。',
321
+    'info_generation_miniatures_images' => '画像のサムネイルの生成',
322
+    'info_gerer_trad_objets' => '@objets@:翻訳リンクを管理する。',
323
+    'info_hebergeur_desactiver_envoi_email' => '若干のホストでは、それらサーバー上から自動的にメールを送ることが出来ません。そういう場合、SPIPの次の機能は実施できません。',
324
+    'info_hier' => '昨日:',
325
+    'info_identification_publique' => '公開ID…',
326
+    'info_image_process' => 'サムネイルを作る最も良い方法を、対応する写真の上を、クリックして選んでください。',
327
+    'info_image_process2' => '<b>付記</b> 画像が表れなければ、サーバーではソフトが使えるように設定してありません。この機能を使いたい場合、プロバイダの技術サポートに「GD」か「Imagick」拡張をインストールしてもらって下さい。',
328
+    'info_images_auto' => '画像の自動制作',
329
+    'info_informations_personnelles' => '5番目のステップ:<b>個人情報</b>',
330
+    'info_inscription' => '登録された日付:',
331
+    'info_inscription_automatique' => '新規編集者の自動登録',
332
+    'info_jeu_caractere' => 'サイトの文字コード',
333
+    'info_jours' => '日',
334
+    'info_laisser_champs_vides' => 'これらのフィールドを空白のままにしておく事が出来ます。)',
335
+    'info_langues' => 'サイトの言語',
336
+    'info_ldap_ok' => 'LDAP認証はインストールされています。',
337
+    'info_lien_hypertexte' => 'リンク:',
338
+    'info_liste_nouveautes_envoyee' => '新らしい公開物のリストが送信されました。',
339
+    'info_liste_redacteurs_connectes' => '接続している編集者のリスト',
340
+    'info_login_existant' => 'このIDは既に使われています。',
341
+    'info_login_trop_court' => 'ログインIDが短すぎます。',
342
+    'info_login_trop_court_car_pluriel' => 'ログインには少なくとも@nb@文字を含める必要があります。',
343
+    'info_logos' => 'ロゴ',
344
+    'info_maximum' => '最大:',
345
+    'info_meme_rubrique' => '同じセクションの中には',
346
+    'info_message_en_redaction' => '編集中のメッセージ',
347
+    'info_message_technique' => '技術的なメッセージ:',
348
+    'info_messagerie_interne' => '内部のメッセージ交換',
349
+    'info_mise_a_niveau_base' => 'SQLデータベースがアップグレードした',
350
+    'info_mise_a_niveau_base_2' => '<b>警告!</b>現在のサイトよりも、インストールされたSPIPのバージョンが古いです。データベースが失われ、サイトはもはや動作しない恐れがあります。<b>SPIPを再インストールしてください。</b>',
351
+    'info_modification_enregistree' => '変更が保存されました。',
352
+    'info_modifier_auteur' => '著者を修正する',
353
+    'info_modifier_rubrique' => 'セクションを修正する',
354
+    'info_modifier_titre' => '@titre@を修正する',
355
+    'info_mon_site_spip' => '私のSPIPサイト',
356
+    'info_moyenne' => '平均:',
357
+    'info_multi_cet_article' => 'この記事の言語:',
358
+    'info_multi_langues_choisies' => 'あなたのサイトのエディターが利用できる言語を下で選んでください。もうすでにあなたのサイト内で(リストの上で)使われている言語は無効に出来ません。',
359
+    'info_multi_objets' => '@objets@:言語メニューを有効にする',
360
+    'info_multi_secteurs' => '... ルートにあるセクションだけ有効にしますか?',
361
+    'info_nb_articles' => '記事@nb@件',
362
+    'info_nb_auteurs' => '著者@nb@名',
363
+    'info_nb_messages' => 'メッセージ@nb@件',
364
+    'info_nb_mots_cles' => 'キーワード@nb@つ',
365
+    'info_nb_rubriques' => 'セクション@nb@つ',
366
+    'info_nb_visiteurs' => '訪問者@nb@名',
367
+    'info_nom' => 'お名前',
368
+    'info_nom_destinataire' => '受取人のお名前',
369
+    'info_nom_pas_conforme' => 'HTMLタグは使用できません。',
370
+    'info_nom_site' => 'HPの名前',
371
+    'info_nombre_articles' => '記事@nb_articles@件、',
372
+    'info_nombre_rubriques' => 'セクション@nb_rubriques@件、',
373
+    'info_nombre_sites' => 'サイト@nb_sites@件、',
374
+    'info_non_deplacer' => '移さないでください。',
375
+    'info_non_envoi_annonce_dernieres_nouveautes' => 'SPIPは、サイトの最新の公開物を定期的に送ることができます。',
376
+    'info_non_envoi_liste_nouveautes' => '最新のニュースを送信しません。',
377
+    'info_non_modifiable' => '変更できません',
378
+    'info_non_suppression_mot_cle' => 'このキーワードを削除したくはありません。',
379
+    'info_notes' => '補足',
380
+    'info_nouvel_article' => '新規記事',
381
+    'info_nouvelle_traduction' => '新規翻訳:',
382
+    'info_numero_article' => '記事番号:',
383
+    'info_obligatoire_02' => '[必須]',
384
+    'info_option_accepter_visiteurs' => '公開サイトから、訪問者の登録を受け取る',
385
+    'info_option_ne_pas_accepter_visiteurs' => '訪問者の登録を断る',
386
+    'info_options_avancees' => '詳細オプション',
387
+    'info_ou' => '又は...',
388
+    'info_page_interdite' => 'ページ禁止',
389
+    'info_par_nom' => '名前によるソート',
390
+    'info_par_nombre_article' => '記事の数によって',
391
+    'info_par_statut' => 'ステータスによるソート',
392
+    'info_par_tri' => '「(@tri@によって)」',
393
+    'info_passe_trop_court' => 'パスワードは短すぎます。',
394
+    'info_passe_trop_court_car_pluriel' => 'パスワードは少なくとも@nb@文字を含める必要があります。',
395
+    'info_passes_identiques' => 'その二つのパスワードは違います。',
396
+    'info_plus_cinq_car' => '6文字以上',
397
+    'info_plus_cinq_car_2' => '(6文字以上)',
398
+    'info_plus_trois_car' => '(4文字以上)',
399
+    'info_popularite' => '人気度: @popularite@; 訪問者: @visites@',
400
+    'info_post_scriptum' => '追伸',
401
+    'info_post_scriptum_2' => '追伸:',
402
+    'info_pour' => 'for',
403
+    'info_preview_texte' => '「提案済み」のステータスがある様々な編集物をプレビューすることが出来、および自分が著者のある記事を見ることができます。この機能は、管理者、編集者、または誰でも利用するのですか?',
404
+    'info_procedez_par_etape' => '一方一方して進んでください。',
405
+    'info_procedure_maj_version' => '新しいバージョンのSPIPに順応させるために、データベースをアップグレードするべきです。',
406
+    'info_proxy_ok' => 'プロキシテストの成功。',
407
+    'info_ps' => '追伸',
408
+    'info_publier' => '公開',
409
+    'info_publies' => '公開された私の記事',
410
+    'info_question_accepter_visiteurs' => 'サイトのテンプレートがプライベートエリアに入らないで、訪問者の登録を提案したら、以下のオプションを有効にしてください:',
411
+    'info_question_inscription_nouveaux_redacteurs' => '公開サイトより新規著者の登録を受け入れますか。<br/>そうであれば、ご訪問者はフォームを使って自動で登録ができます。管理エリアに入ってご自分の記事を提出します。<br/><div class = "notice">登録プロセスで、ご訪問者は管理エリアに入るためにアクセスコードをもたらすメールを受信します。<br/>プロバイダーによっては、メールの自動送信が無効にされることがあります。 その場合、自動登録は不可能です。</div>',
412
+    'info_qui_edite' => '@nom_auteur_modif@が@date_diff@分前に中味を編集しました。',
413
+    'info_racine_site' => 'サイトのルート',
414
+    'info_recharger_page' => 'ちょっとしてからこのページを再読込してください。',
415
+    'info_recherche_auteur_zero' => '「@cherche_auteur@」に関しては何も見つかりませんでした。',
416
+    'info_recommencer' => 'やり直してください。',
417
+    'info_redacteur_1' => '編集者',
418
+    'info_redacteur_2' => '管理エリアへのアクセス権を持ちながら。<b>すすめ</b>',
419
+    'info_redacteurs' => '編集者',
420
+    'info_redaction_en_cours' => '編集中',
421
+    'info_redirection' => 'リダイレクション',
422
+    'info_redirection_activee' => 'リダイレクションは有効にされます。',
423
+    'info_redirection_boucle' => 'この記事を記事自身に向けてリダイレクトしようとしています。',
424
+    'info_redirection_desactivee' => 'リダイレクションは無効にされます。',
425
+    'info_refuses' => '記事は拒絶されました。',
426
+    'info_reglage_ldap' => 'オプション:<b>LDAPインポートの設定</b>',
427
+    'info_renvoi_article' => '<b>リダイレクション</b>この記事はそのページを参照します:',
428
+    'info_reserve_admin' => '管理者しかこのアドレスの変更が出来ません。',
429
+    'info_restreindre_rubrique' => '管理はこのセクションに制限されています:',
430
+    'info_resultat_recherche' => '検索結果:',
431
+    'info_rubriques' => 'セクション',
432
+    'info_rubriques_02' => 'セクション',
433
+    'info_rubriques_trouvees' => '見つかったセクション',
434
+    'info_sans_titre' => '無名',
435
+    'info_selection_chemin_acces' => '次にディレクトリのアクセスパスを<b>選択</b>してください。',
436
+    'info_signatures' => '署名',
437
+    'info_site' => 'サイト',
438
+    'info_site_2' => 'サイト:',
439
+    'info_site_min' => 'サイト',
440
+    'info_site_reference_2' => '参照されたサイト',
441
+    'info_site_web' => 'ウェブサイト:',
442
+    'info_sites' => 'サイト',
443
+    'info_sites_lies_mot' => '参照されたサイトをこのキーワードと関連付ける',
444
+    'info_sites_proxy' => 'プロキシ使用',
445
+    'info_sites_trouves' => '見つかったサイト',
446
+    'info_sous_titre' => 'サブタイトル:',
447
+    'info_statut_administrateur' => '管理者です。',
448
+    'info_statut_auteur' => '管理者のステータス:',
449
+    'info_statut_auteur_2' => '私は、',
450
+    'info_statut_auteur_a_confirmer' => '確認されるべきの登録',
451
+    'info_statut_auteur_autre' => 'その他のステータス:',
452
+    'info_statut_redacteur' => 'エディターです。',
453
+    'info_statut_utilisateurs_1' => '読み込まれたユーザーの標準のステータス',
454
+    'info_statut_utilisateurs_2' => 'LDAPディレクトリ内のユーザーが初めてログインする時には、ユーザー用のステータスを選択してください。その後、各ユーザーのステータスを管理することができます。',
455
+    'info_suivi_activite' => '編集活動に従うこと',
456
+    'info_surtitre' => 'トップタイトル:',
457
+    'info_syndication_integrale_1' => '当サイトは参照ファイルを提供します。(「<a href=\\"@url@\\">@titre@</a>」を見てください。)',
458
+    'info_syndication_integrale_2' => '記事全体か、または数百文字の要約のみ送信しますか?',
459
+    'info_table_prefix' => '複数のサイトは同じデータベースを読み込むなら、データベーステーブルの名前の接頭辞を変更する必要があります。(接頭辞は、スペースなし小文字で書いてください。)',
460
+    'info_taille_maximale_images' => 'SPIPは処理ができる画像の最大サイズをテストします。<br/>大きすぎる画像は縮小されません。',
461
+    'info_taille_maximale_vignette' => 'SPIPが処理するサムネイルの最大サイズ:',
462
+    'info_terminer_installation' => 'これで標準インストール手順を完了できます。',
463
+    'info_texte' => 'テキスト',
464
+    'info_texte_explicatif' => '説明用の文章',
465
+    'info_texte_long' => '(文章が長い:いくつかに文章に分けられていますが、確認後、システムが自動で繋ぎます。)',
466
+    'info_texte_message' => 'メッセージの文章:',
467
+    'info_texte_message_02' => 'メッセージの文章:',
468
+    'info_titre' => '題名:',
469
+    'info_total' => '合計:',
470
+    'info_tous_articles_en_redaction' => '編集中の記事',
471
+    'info_tous_articles_presents' => 'このセクションに公開されたすべての記事',
472
+    'info_tous_articles_refuses' => '拒否された記事',
473
+    'info_tous_les' => 'すべて:',
474
+    'info_tout_site' => '全サイト',
475
+    'info_tout_site2' => '記事はこの言語へ翻訳されていません。',
476
+    'info_tout_site3' => '記事はこの言語へ翻訳されましたが、後ほど元の記事が修正されたので、翻訳を更新する必要もあります。',
477
+    'info_tout_site4' => '記事はこの言語へ翻訳されており、翻訳も更新になりました。',
478
+    'info_tout_site5' => '元の記事。',
479
+    'info_tout_site6' => '<b>警告:</b>元の記事のみ表示されています。これに関連付けられる翻訳は、ステータスを示す色で表示されます:',
480
+    'info_traductions' => '翻訳',
481
+    'info_travail_colaboratif' => '記事の共同作業',
482
+    'info_un_article' => '記事1件、',
483
+    'info_un_site' => 'サイト1つ、',
484
+    'info_une_rubrique' => 'セクション1つ、',
485
+    'info_une_rubrique_02' => 'セッション1つ',
486
+    'info_url' => 'URL:',
487
+    'info_url_proxy' => 'プロクシURL',
488
+    'info_url_proxy_pas_conforme' => 'プロクシのURLは無効です。',
489
+    'info_url_site_pas_conforme' => 'サイトのURLは無効です。',
490
+    'info_url_test_proxy' => 'テストのURL',
491
+    'info_urlref' => 'リンク:',
492
+    'info_utilisation_spip' => 'SPIPが使えるようになってきました。',
493
+    'info_visites_par_mois' => '月で表示:',
494
+    'info_visiteur_1' => '訪問者',
495
+    'info_visiteur_2' => '公開サイトの',
496
+    'info_visiteurs' => '訪問者',
497
+    'info_visiteurs_02' => '公開サイトの訪問者数',
498
+    'info_webmestre_forces' => 'ウェブマスターは<b>@file_options@</b>に設定されています。',
499
+    'install_adresse_base_hebergeur' => 'データベースURLはプロバイダによって提供されています。',
500
+    'install_connect_ok' => '新しいデータベースは@connect@と名付けられたサーバーとして設定されています。',
501
+    'install_echec_annonce' => 'インストールが失敗する恐れがあって、サイトを作動させられないかもしれません。',
502
+    'install_extension_mbstring' => 'SPIPはこれで作動しません:',
503
+    'install_extension_php_obligatoire' => 'SPIPにはこのphpの拡張モジュールが必要です:',
504
+    'install_login_base_hebergeur' => 'ログインはプロバイダによって提供されています。',
505
+    'install_nom_base_hebergeur' => 'プロバイダによって提供されたデーターベース名は:',
506
+    'install_pas_table' => '現在データーベースのテーブルは設定していません。',
507
+    'install_pass_base_hebergeur' => 'パスワードはプロバイダによって提供されています。',
508
+    'install_php_version' => 'PHPバージョン@version@はあまり古いです。(最低 = @minimum@)',
509
+    'install_select_langue' => '言語を選択し、「次へ」ボタンをクリックすると、インストールが始まります。',
510
+    'install_select_type_db' => 'データベース型を選択してください:',
511
+    'install_select_type_mysql' => 'MySQL',
512
+    'install_select_type_pg' => 'PostgreSQL',
513
+    'install_select_type_sqlite2' => 'SQLite 2',
514
+    'install_select_type_sqlite3' => 'SQLite 3',
515
+    'install_serveur_hebergeur' => 'データーベース・サーバーはプロバイダによって提供されています。',
516
+    'install_table_prefix_hebergeur' => 'テーブル接頭辞はプロバイダによって提供されています。',
517
+    'install_tables_base' => 'データーベースのテーブル',
518
+    'install_types_db_connus' => 'SPIPは<b>MySQL</b>(最も一般的)と<b>SQLite</b>を使用できます。',
519
+    'install_types_db_connus_avertissement' => '実際<b>PostgreSQL</b>は実験的にサポートされています。',
520
+    'instituer_erreur_statut_a_change' => 'ステータスは既に変更されています。',
521
+    'instituer_erreur_statut_non_autorise' => 'このステータスを選択することができません。',
522
+    'intem_redacteur' => '編集者',
523
+    'intitule_licence' => 'ライセンス',
524
+    'item_accepter_inscriptions' => '登録を受け取る',
525
+    'item_activer_messages_avertissement' => '警告メッセージを有効にする',
526
+    'item_administrateur_2' => '管理者です。',
527
+    'item_afficher_calendrier' => 'カレンダー上に表示',
528
+    'item_autoriser_syndication_integrale' => '参照フィードに記事全体を含める',
529
+    'item_choix_administrateurs' => '管理者',
530
+    'item_choix_generation_miniature' => '画像のサムネイルを自動製作する',
531
+    'item_choix_non_generation_miniature' => '画像のサムネイルを製作しない',
532
+    'item_choix_redacteurs' => '編集者',
533
+    'item_choix_visiteurs' => '公開サイトの訪問者',
534
+    'item_creer_fichiers_authent' => '.htpasswdファイルを制作する',
535
+    'item_login' => 'ログインID',
536
+    'item_messagerie_agenda' => 'メッセージングシステムとカレンダーを有効にする',
537
+    'item_mots_cles_association_articles' => '記事に',
538
+    'item_mots_cles_association_rubriques' => 'セクションに',
539
+    'item_mots_cles_association_sites' => '参照か供給(シンジケート)しているサイト',
540
+    'item_non' => 'いいえ',
541
+    'item_non_accepter_inscriptions' => '登録を受け取らない',
542
+    'item_non_activer_messages_avertissement' => '警告メッセージを表示しない',
543
+    'item_non_afficher_calendrier' => 'カレンダー上に表示しない',
544
+    'item_non_autoriser_syndication_integrale' => '要約のみ送信する',
545
+    'item_non_creer_fichiers_authent' => 'これらファイルを制作しません',
546
+    'item_non_messagerie_agenda' => 'メッセージングシステムとカレンダーを無効にする',
547
+    'item_non_publier_articles' => '設定された公開日前に記事を公開しない。',
548
+    'item_nouvel_auteur' => '新規著者',
549
+    'item_nouvelle_rubrique' => '新規セクション',
550
+    'item_oui' => 'はい',
551
+    'item_publier_articles' => '公開日に関係なく、記事を公開する。',
552
+    'item_reponse_article' => '記事に返信する',
553
+    'item_visiteur' => '訪問者',
554 554
 
555
-	// J
556
-	'jour_non_connu_nc' => '未定義',
555
+    // J
556
+    'jour_non_connu_nc' => '未定義',
557 557
 
558
-	// L
559
-	'label_bando_outils' => 'ツールバー',
560
-	'label_bando_outils_afficher' => 'ツールを表示する',
561
-	'label_bando_outils_masquer' => 'ツールを隠す',
562
-	'label_choix_langue' => '言語を選択してください。',
563
-	'label_nom_fichier_connect' => 'サーバー名を記入してください。',
564
-	'label_slogan_site' => 'サイトの標語',
565
-	'label_taille_ecran' => '画面の幅',
566
-	'label_texte_et_icones_navigation' => 'ナビゲーションメニュー',
567
-	'label_texte_et_icones_page' => 'ページ上に表示する',
568
-	'ldap_correspondance' => 'フィールド@champ@を継承する',
569
-	'ldap_correspondance_1' => 'フィールドLDAPを継承する',
570
-	'ldap_correspondance_2' => 'これらの各SPIPフィールドに、対応するLDAPフィールドの名前を入力します。入力したくない場合、空白のままに残し、スペースやコンマで区切って複数のLDAPフィールドを試してください。',
571
-	'lien_ajouter_auteur' => 'この著者を追加する',
572
-	'lien_ajouter_une_rubrique' => 'このセクションを追加する',
573
-	'lien_email' => 'e-mail',
574
-	'lien_nom_site' => 'サイトの名前:',
575
-	'lien_rapide_contenu' => '中味に行く',
576
-	'lien_rapide_navigation' => 'ナビゲーションに行く',
577
-	'lien_rapide_recherche' => '検索に行く',
578
-	'lien_retirer_auteur' => '著者を取り外す',
579
-	'lien_retirer_rubrique' => 'セクションを削除する',
580
-	'lien_retirer_tous_auteurs' => '全著者を取り外す',
581
-	'lien_retirer_toutes_rubriques' => '全セクションを削除する',
582
-	'lien_site' => 'サイト',
583
-	'lien_tout_decocher' => '全てのチェックを外す',
584
-	'lien_tout_deplier' => '全て広げる',
585
-	'lien_tout_replier' => '全て畳む',
586
-	'lien_tout_supprimer' => '全て削除する',
587
-	'lien_trier_nom' => '名前でソートする',
588
-	'lien_trier_nombre_articles' => '記事番号でソートする',
589
-	'lien_trier_statut' => 'ステータスでソートする',
590
-	'lien_voir_en_ligne' => 'オンラインで見る:',
591
-	'logo_article' => '記事のロゴ',
592
-	'logo_auteur' => '著者のロゴ',
593
-	'logo_rubrique' => 'セクションのロゴ',
594
-	'logo_site' => 'サイトのロゴ',
595
-	'logo_standard_rubrique' => 'セクション用の標準的なロゴ',
596
-	'logo_survol' => 'オーバーロゴ',
558
+    // L
559
+    'label_bando_outils' => 'ツールバー',
560
+    'label_bando_outils_afficher' => 'ツールを表示する',
561
+    'label_bando_outils_masquer' => 'ツールを隠す',
562
+    'label_choix_langue' => '言語を選択してください。',
563
+    'label_nom_fichier_connect' => 'サーバー名を記入してください。',
564
+    'label_slogan_site' => 'サイトの標語',
565
+    'label_taille_ecran' => '画面の幅',
566
+    'label_texte_et_icones_navigation' => 'ナビゲーションメニュー',
567
+    'label_texte_et_icones_page' => 'ページ上に表示する',
568
+    'ldap_correspondance' => 'フィールド@champ@を継承する',
569
+    'ldap_correspondance_1' => 'フィールドLDAPを継承する',
570
+    'ldap_correspondance_2' => 'これらの各SPIPフィールドに、対応するLDAPフィールドの名前を入力します。入力したくない場合、空白のままに残し、スペースやコンマで区切って複数のLDAPフィールドを試してください。',
571
+    'lien_ajouter_auteur' => 'この著者を追加する',
572
+    'lien_ajouter_une_rubrique' => 'このセクションを追加する',
573
+    'lien_email' => 'e-mail',
574
+    'lien_nom_site' => 'サイトの名前:',
575
+    'lien_rapide_contenu' => '中味に行く',
576
+    'lien_rapide_navigation' => 'ナビゲーションに行く',
577
+    'lien_rapide_recherche' => '検索に行く',
578
+    'lien_retirer_auteur' => '著者を取り外す',
579
+    'lien_retirer_rubrique' => 'セクションを削除する',
580
+    'lien_retirer_tous_auteurs' => '全著者を取り外す',
581
+    'lien_retirer_toutes_rubriques' => '全セクションを削除する',
582
+    'lien_site' => 'サイト',
583
+    'lien_tout_decocher' => '全てのチェックを外す',
584
+    'lien_tout_deplier' => '全て広げる',
585
+    'lien_tout_replier' => '全て畳む',
586
+    'lien_tout_supprimer' => '全て削除する',
587
+    'lien_trier_nom' => '名前でソートする',
588
+    'lien_trier_nombre_articles' => '記事番号でソートする',
589
+    'lien_trier_statut' => 'ステータスでソートする',
590
+    'lien_voir_en_ligne' => 'オンラインで見る:',
591
+    'logo_article' => '記事のロゴ',
592
+    'logo_auteur' => '著者のロゴ',
593
+    'logo_rubrique' => 'セクションのロゴ',
594
+    'logo_site' => 'サイトのロゴ',
595
+    'logo_standard_rubrique' => 'セクション用の標準的なロゴ',
596
+    'logo_survol' => 'オーバーロゴ',
597 597
 
598
-	// M
599
-	'menu_aide_installation_choix_base' => 'データベースの選択する',
600
-	'module_fichier_langue' => '言語ファイル',
601
-	'module_raccourci' => '言語ショートカット',
602
-	'module_texte_affiche' => '表示されたテキスト',
603
-	'module_texte_explicatif' => 'サイトのファイルテンプレートには、言語ショートカットを挿入できます。使いたい言語の翻訳ファイルがあれば、自動的に翻訳されます。',
604
-	'module_texte_traduction' => '「@module@」の言語ファイルは次の言語が使用可能:',
605
-	'mois_non_connu' => '無知',
598
+    // M
599
+    'menu_aide_installation_choix_base' => 'データベースの選択する',
600
+    'module_fichier_langue' => '言語ファイル',
601
+    'module_raccourci' => '言語ショートカット',
602
+    'module_texte_affiche' => '表示されたテキスト',
603
+    'module_texte_explicatif' => 'サイトのファイルテンプレートには、言語ショートカットを挿入できます。使いたい言語の翻訳ファイルがあれば、自動的に翻訳されます。',
604
+    'module_texte_traduction' => '「@module@」の言語ファイルは次の言語が使用可能:',
605
+    'mois_non_connu' => '無知',
606 606
 
607
-	// N
608
-	'nouvelle_version_spip' => 'SPIPの@version@は利用可能です。',
609
-	'nouvelle_version_spip_majeure' => '新規SPIPの@version@は利用可能です。',
607
+    // N
608
+    'nouvelle_version_spip' => 'SPIPの@version@は利用可能です。',
609
+    'nouvelle_version_spip_majeure' => '新規SPIPの@version@は利用可能です。',
610 610
 
611
-	// O
612
-	'onglet_contenu' => '中味',
613
-	'onglet_declarer_une_autre_base' => '他のデータベースを設定する',
614
-	'onglet_discuter' => '分かち合う',
615
-	'onglet_interactivite' => '相互関係',
616
-	'onglet_proprietes' => '特徴',
617
-	'onglet_repartition_actuelle' => '現在',
618
-	'onglet_sous_rubriques' => 'サブセクション',
611
+    // O
612
+    'onglet_contenu' => '中味',
613
+    'onglet_declarer_une_autre_base' => '他のデータベースを設定する',
614
+    'onglet_discuter' => '分かち合う',
615
+    'onglet_interactivite' => '相互関係',
616
+    'onglet_proprietes' => '特徴',
617
+    'onglet_repartition_actuelle' => '現在',
618
+    'onglet_sous_rubriques' => 'サブセクション',
619 619
 
620
-	// P
621
-	'page_pas_proxy' => 'このページはプロキシを経由してはならない。',
622
-	'pas_de_proxy_pour' => '必要ならば、このプロキシが適用しないマシン、またはドメインを設定してください。(例えば:@exemple@-)',
623
-	'phpinfo' => 'PHP設定',
624
-	'plugin_charge_paquet' => 'アーカイファイル@name@を読み込む',
625
-	'plugin_charger' => 'ダウンロード',
626
-	'plugin_erreur_charger' => 'エラー:zipファイル@zip@は読み込めない',
627
-	'plugin_erreur_droit1' => 'フォルダー<code>@dest@</code>へ書き込めない。',
628
-	'plugin_erreur_droit2' => 'このフォルダーのアクセス権を確認してください。必要ならば、フォルダーを作成してください。FTPでファイルをインストールする可能性もあります。',
629
-	'plugin_erreur_zip' => 'pclzipエラー:@status@エラー',
630
-	'plugin_etat_developpement' => '開発中',
631
-	'plugin_etat_experimental' => '実験中',
632
-	'plugin_etat_stable' => '安定の良い',
633
-	'plugin_etat_test' => '試し中',
634
-	'plugin_impossible_activer' => 'プラグイン@plugin@を有効にできませんでした。',
635
-	'plugin_info_automatique1' => 'プラグインの自動インストールを有効にする:',
636
-	'plugin_info_automatique1_lib' => 'イブラリーの自動インストールを有効にする:',
637
-	'plugin_info_automatique2' => 'フォルダー<code>@rep@</code>を作成する;',
638
-	'plugin_info_automatique3' => 'ザーバーがこのフォルダーに書き込むアクセス権を持っていることを確認してくださ
620
+    // P
621
+    'page_pas_proxy' => 'このページはプロキシを経由してはならない。',
622
+    'pas_de_proxy_pour' => '必要ならば、このプロキシが適用しないマシン、またはドメインを設定してください。(例えば:@exemple@-)',
623
+    'phpinfo' => 'PHP設定',
624
+    'plugin_charge_paquet' => 'アーカイファイル@name@を読み込む',
625
+    'plugin_charger' => 'ダウンロード',
626
+    'plugin_erreur_charger' => 'エラー:zipファイル@zip@は読み込めない',
627
+    'plugin_erreur_droit1' => 'フォルダー<code>@dest@</code>へ書き込めない。',
628
+    'plugin_erreur_droit2' => 'このフォルダーのアクセス権を確認してください。必要ならば、フォルダーを作成してください。FTPでファイルをインストールする可能性もあります。',
629
+    'plugin_erreur_zip' => 'pclzipエラー:@status@エラー',
630
+    'plugin_etat_developpement' => '開発中',
631
+    'plugin_etat_experimental' => '実験中',
632
+    'plugin_etat_stable' => '安定の良い',
633
+    'plugin_etat_test' => '試し中',
634
+    'plugin_impossible_activer' => 'プラグイン@plugin@を有効にできませんでした。',
635
+    'plugin_info_automatique1' => 'プラグインの自動インストールを有効にする:',
636
+    'plugin_info_automatique1_lib' => 'イブラリーの自動インストールを有効にする:',
637
+    'plugin_info_automatique2' => 'フォルダー<code>@rep@</code>を作成する;',
638
+    'plugin_info_automatique3' => 'ザーバーがこのフォルダーに書き込むアクセス権を持っていることを確認してくださ
639 639
 い。',
640
-	'plugin_info_automatique_creer' => 'ウェブサイトのルートに作成してください。',
641
-	'plugin_info_automatique_exemples' => '例:',
642
-	'plugin_info_automatique_ftp' => 'FTPで<b>@rep@</b>フォルダーにプラグインをインストールすることができます。',
643
-	'plugin_info_automatique_lib' => 'プラグインは、<code>lib/</code>フォルダーにファイルを書き込む必要があります。ウェブサイトのルートに、このフォルダーを作成してください。',
644
-	'plugin_info_automatique_liste' => 'プラグインリスト:',
645
-	'plugin_info_automatique_liste_officielle' => '公式のプラグイン',
646
-	'plugin_info_automatique_liste_update' => 'リストを更新する',
647
-	'plugin_info_automatique_ou' => 'または…',
648
-	'plugin_info_automatique_select' => 'SPIPは、以下に選択されたプラグインを<code>@rep@</code>フォルダーにインストールします。プラグインは既に存在されたら、更新されます。',
649
-	'plugin_info_credit' => 'クレジット',
650
-	'plugin_info_erreur_xml' => 'プラグイン申告が正しくありません。',
651
-	'plugin_info_install_ok' => 'インストール済み',
652
-	'plugin_info_necessite' => '必要とするのは:',
653
-	'plugin_info_non_compatible_spip' => 'このプラグインは、現在のSPIPバージョンと互換性がありません。',
654
-	'plugin_info_plugins_dist_1' => '次のプラグインは、@plugins_dist@フォルダーの中にあって、有効にされています。',
655
-	'plugin_info_plugins_dist_2' => '無効にすることができません。',
656
-	'plugin_info_telecharger' => '@url@からダウンロードし、@rep@にインストールする',
657
-	'plugin_info_upgrade_ok' => '更新済み',
658
-	'plugin_librairies_installees' => 'インストールされたライブラリ',
659
-	'plugin_necessite_extension_php' => 'PHP拡張@plugin@のバーション@version@が必要です。',
660
-	'plugin_necessite_extension_php_sans_version' => 'PHP拡張@plugin@が必要です。',
661
-	'plugin_necessite_lib' => 'このプラグインにはライブラリ@lib@が必要です。',
662
-	'plugin_necessite_php' => 'プラグイン@plugin@のバーション@version@が必要です。',
663
-	'plugin_necessite_plugin' => '@plugin@のバーション@version@が必要です。',
664
-	'plugin_necessite_plugin_sans_version' => 'プラグイン@plugin@が必要です',
665
-	'plugin_necessite_spip' => 'SPIPバージョン@バージョン@以上が必要です/',
666
-	'plugin_source' => 'ソース:',
667
-	'plugin_titre_automatique' => '自動インストール',
668
-	'plugin_titre_automatique_ajouter' => 'プラグインを追加する',
669
-	'plugin_titre_installation' => 'プラグイン@plugin@のインストール',
670
-	'plugin_titre_modifier' => '私のプラグイン',
671
-	'plugin_utilise_extension_php' => 'PHP拡張@plugin@は最低@version@のバーションを使用しています。',
672
-	'plugin_utilise_php' => '@plugin@のプラグインのバージョンは@version@でなければなりません。',
673
-	'plugin_utilise_plugin' => '@plugin@のプラグインは最低@version@バージョンが必要です。',
674
-	'plugin_zip_active' => '有効にするように続けてください。',
675
-	'plugin_zip_adresse' => '圧縮されたプラグインファイル、またはプラグインのリストをロードするには、以下のパスを入力します。',
676
-	'plugin_zip_adresse_champ' => 'プラグインまたはリストのパス',
677
-	'plugin_zip_content' => 'zip(@taille@)ファイルには、<code>@rep@</code>フォルダーにインストールができる次のファイルが含まれています',
678
-	'plugin_zip_installe_finie' => '@zip@ファイルがアンパックされて、インストールされました。',
679
-	'plugin_zip_installe_rep_finie' => '@rep@フォルダーに@zip@ファイルがアンパックされて、インストールされました。',
680
-	'plugin_zip_installer' => 'これでインストールできます。',
681
-	'plugin_zip_telecharge' => '@zip@ファイルはロードされました。',
682
-	'plugins_actif_aucun' => '有効にされたプラグインはありません。',
683
-	'plugins_actif_un' => '有効にされたプラグインは1つ',
684
-	'plugins_actifs' => '有効にされたプラグインは@count@つ',
685
-	'plugins_actifs_liste' => '有効',
686
-	'plugins_compte' => 'プラグイン@count@つ',
687
-	'plugins_disponible_un' => '利用可能のプラグインは1つ',
688
-	'plugins_disponibles' => '利用可能のプラグインは1@count@',
689
-	'plugins_erreur' => 'プラグインエラー:@plugins@',
690
-	'plugins_liste' => 'プラグインのリスト',
691
-	'plugins_liste_dist' => 'ロックされたプラグイン',
692
-	'plugins_recents' => '最近のプラグイン',
693
-	'plugins_tous_liste' => '全てのプラグイン',
694
-	'plugins_vue_hierarchie' => 'パス',
695
-	'plugins_vue_liste' => 'リスト',
696
-	'protocole_ldap' => 'プロトコルバージョン:',
640
+    'plugin_info_automatique_creer' => 'ウェブサイトのルートに作成してください。',
641
+    'plugin_info_automatique_exemples' => '例:',
642
+    'plugin_info_automatique_ftp' => 'FTPで<b>@rep@</b>フォルダーにプラグインをインストールすることができます。',
643
+    'plugin_info_automatique_lib' => 'プラグインは、<code>lib/</code>フォルダーにファイルを書き込む必要があります。ウェブサイトのルートに、このフォルダーを作成してください。',
644
+    'plugin_info_automatique_liste' => 'プラグインリスト:',
645
+    'plugin_info_automatique_liste_officielle' => '公式のプラグイン',
646
+    'plugin_info_automatique_liste_update' => 'リストを更新する',
647
+    'plugin_info_automatique_ou' => 'または…',
648
+    'plugin_info_automatique_select' => 'SPIPは、以下に選択されたプラグインを<code>@rep@</code>フォルダーにインストールします。プラグインは既に存在されたら、更新されます。',
649
+    'plugin_info_credit' => 'クレジット',
650
+    'plugin_info_erreur_xml' => 'プラグイン申告が正しくありません。',
651
+    'plugin_info_install_ok' => 'インストール済み',
652
+    'plugin_info_necessite' => '必要とするのは:',
653
+    'plugin_info_non_compatible_spip' => 'このプラグインは、現在のSPIPバージョンと互換性がありません。',
654
+    'plugin_info_plugins_dist_1' => '次のプラグインは、@plugins_dist@フォルダーの中にあって、有効にされています。',
655
+    'plugin_info_plugins_dist_2' => '無効にすることができません。',
656
+    'plugin_info_telecharger' => '@url@からダウンロードし、@rep@にインストールする',
657
+    'plugin_info_upgrade_ok' => '更新済み',
658
+    'plugin_librairies_installees' => 'インストールされたライブラリ',
659
+    'plugin_necessite_extension_php' => 'PHP拡張@plugin@のバーション@version@が必要です。',
660
+    'plugin_necessite_extension_php_sans_version' => 'PHP拡張@plugin@が必要です。',
661
+    'plugin_necessite_lib' => 'このプラグインにはライブラリ@lib@が必要です。',
662
+    'plugin_necessite_php' => 'プラグイン@plugin@のバーション@version@が必要です。',
663
+    'plugin_necessite_plugin' => '@plugin@のバーション@version@が必要です。',
664
+    'plugin_necessite_plugin_sans_version' => 'プラグイン@plugin@が必要です',
665
+    'plugin_necessite_spip' => 'SPIPバージョン@バージョン@以上が必要です/',
666
+    'plugin_source' => 'ソース:',
667
+    'plugin_titre_automatique' => '自動インストール',
668
+    'plugin_titre_automatique_ajouter' => 'プラグインを追加する',
669
+    'plugin_titre_installation' => 'プラグイン@plugin@のインストール',
670
+    'plugin_titre_modifier' => '私のプラグイン',
671
+    'plugin_utilise_extension_php' => 'PHP拡張@plugin@は最低@version@のバーションを使用しています。',
672
+    'plugin_utilise_php' => '@plugin@のプラグインのバージョンは@version@でなければなりません。',
673
+    'plugin_utilise_plugin' => '@plugin@のプラグインは最低@version@バージョンが必要です。',
674
+    'plugin_zip_active' => '有効にするように続けてください。',
675
+    'plugin_zip_adresse' => '圧縮されたプラグインファイル、またはプラグインのリストをロードするには、以下のパスを入力します。',
676
+    'plugin_zip_adresse_champ' => 'プラグインまたはリストのパス',
677
+    'plugin_zip_content' => 'zip(@taille@)ファイルには、<code>@rep@</code>フォルダーにインストールができる次のファイルが含まれています',
678
+    'plugin_zip_installe_finie' => '@zip@ファイルがアンパックされて、インストールされました。',
679
+    'plugin_zip_installe_rep_finie' => '@rep@フォルダーに@zip@ファイルがアンパックされて、インストールされました。',
680
+    'plugin_zip_installer' => 'これでインストールできます。',
681
+    'plugin_zip_telecharge' => '@zip@ファイルはロードされました。',
682
+    'plugins_actif_aucun' => '有効にされたプラグインはありません。',
683
+    'plugins_actif_un' => '有効にされたプラグインは1つ',
684
+    'plugins_actifs' => '有効にされたプラグインは@count@つ',
685
+    'plugins_actifs_liste' => '有効',
686
+    'plugins_compte' => 'プラグイン@count@つ',
687
+    'plugins_disponible_un' => '利用可能のプラグインは1つ',
688
+    'plugins_disponibles' => '利用可能のプラグインは1@count@',
689
+    'plugins_erreur' => 'プラグインエラー:@plugins@',
690
+    'plugins_liste' => 'プラグインのリスト',
691
+    'plugins_liste_dist' => 'ロックされたプラグイン',
692
+    'plugins_recents' => '最近のプラグイン',
693
+    'plugins_tous_liste' => '全てのプラグイン',
694
+    'plugins_vue_hierarchie' => 'パス',
695
+    'plugins_vue_liste' => 'リスト',
696
+    'protocole_ldap' => 'プロトコルバージョン:',
697 697
 
698
-	// Q
699
-	'queue_executer_maintenant' => '今すぐ実行する',
700
-	'queue_info_purger' => '全ての保留中のタスクを削除して、定期タスクのリストを再設定するのにリセットすることも出来ます。',
701
-	'queue_nb_jobs_in_queue' => '保留中のタスクは@nb@つあります。',
702
-	'queue_next_job_in_nb_sec' => '次のタスクが@nb@秒後に始まる',
703
-	'queue_no_job_in_queue' => '保留中のタスクなし',
704
-	'queue_one_job_in_queue' => '保留中のタスク1つ',
705
-	'queue_priorite_tache' => '優先',
706
-	'queue_purger_queue' => 'タスクのリストをリセットする',
707
-	'queue_titre' => 'バックグラウンドのタスク',
698
+    // Q
699
+    'queue_executer_maintenant' => '今すぐ実行する',
700
+    'queue_info_purger' => '全ての保留中のタスクを削除して、定期タスクのリストを再設定するのにリセットすることも出来ます。',
701
+    'queue_nb_jobs_in_queue' => '保留中のタスクは@nb@つあります。',
702
+    'queue_next_job_in_nb_sec' => '次のタスクが@nb@秒後に始まる',
703
+    'queue_no_job_in_queue' => '保留中のタスクなし',
704
+    'queue_one_job_in_queue' => '保留中のタスク1つ',
705
+    'queue_priorite_tache' => '優先',
706
+    'queue_purger_queue' => 'タスクのリストをリセットする',
707
+    'queue_titre' => 'バックグラウンドのタスク',
708 708
 
709
-	// R
710
-	'repertoire_plugins' => 'フォルダー:',
711
-	'required' => '[必須]',
709
+    // R
710
+    'repertoire_plugins' => 'フォルダー:',
711
+    'required' => '[必須]',
712 712
 
713
-	// S
714
-	'sans_heure' => '時間指定なし',
715
-	'statut_admin_restreint' => '限定のある管理者',
716
-	'statut_webmestre' => 'ウェブマスター',
713
+    // S
714
+    'sans_heure' => '時間指定なし',
715
+    'statut_admin_restreint' => '限定のある管理者',
716
+    'statut_webmestre' => 'ウェブマスター',
717 717
 
718
-	// T
719
-	'tache_cron_asap' => 'CRONタスク@function@(できるだけ早く)',
720
-	'tache_cron_secondes' => 'CRONタスク@function@(@nb@秒間ごとに)',
721
-	'taille_cache_image' => 'SPIPが自動的に生成されたイメージ(サムネイル、画像に変換されたタイトル、TeX形式の数式など)は、@dir@フォルダーに@taille@かかります。',
722
-	'taille_cache_moins_de' => 'キャッシュサイズは@octets@未満です。',
723
-	'taille_cache_octets' => 'キャッシュサイズは現在@octets@です。',
724
-	'taille_cache_vide' => 'キャッシュは空です。',
725
-	'taille_repertoire_cache' => '現在のキャッシュサイズ',
726
-	'text_article_propose_publication' => 'この記事は公開のために提出されています。',
727
-	'texte_acces_ldap_anonyme_1' => '次のフィールドは空白のままにすることができます。ただし、一部のLDAPサーバーは匿名アクセスを受け入れません。その場合、名簿内の情報を検索するには、ログインIDを指定する必要があります。',
728
-	'texte_admin_effacer_01' => 'このコマンドは、データベースの内容を<b>すべて</b>消去します、管理者や全編集者のアクセス権を含めて。行なった上で、SPIPを再インストールし、新規データベースと最初の管理者アクセス権を再作成する必要があります。',
729
-	'texte_adresse_annuaire_1' => 'ディレクトリがウェブサイトと同じコンピュータにインストールされていれば、おそらく「localhost」です。',
730
-	'texte_ajout_auteur' => '次の著者が記事に追加されました:',
731
-	'texte_annuaire_ldap_1' => 'LDAP名簿にアクセスがあれば、SPIPでユーザを自動的にインポートすることができます。',
732
-	'texte_article_statut' => '記事のステータス:',
733
-	'texte_article_virtuel' => '仮想記事',
734
-	'texte_article_virtuel_reference' => '<b>仮想記事:</b>SPIPサイト内に記事が参照されているが、ほかのURLへとリダイレクトしているリダイレクションを取り消すには、上のURLを削除して下さい。',
735
-	'texte_aucun_resultat_auteur' => '「@cherche_auteur@」には、検索結果なし',
736
-	'texte_auteur_messagerie' => '接続中の著者は表示されています。その著者とライブメッセージを交換できます。このリストに自分を表示しないようにすると、他のユーザーには隠れます。',
737
-	'texte_auteurs' => '著者',
738
-	'texte_choix_base_1' => 'データベースを選択してください:',
739
-	'texte_choix_base_2' => 'SQLサーバーはいくつかのデータベースを含んでいます。',
740
-	'texte_choix_base_3' => 'プロバイダがあなたに割り当てたデータベース1つを選んで下さい。',
741
-	'texte_choix_table_prefix' => 'テーブルの接頭辞:',
742
-	'texte_compte_element' => '@count@ 要素',
743
-	'texte_compte_elements' => '@count@ 要素',
744
-	'texte_conflit_edition_correction' => '2つのバージョンの違いを比べてください。変更をコピーしてやり直すこともできます。',
745
-	'texte_connexion_mysql' => 'プロバイダが提供したデータベースのサーバーの接続コードを調べてください。',
746
-	'texte_contenu_article' => '(記事についての短い説明)',
747
-	'texte_contenu_articles' => 'あなたのサイト用に決めたレイアウトに基づいて、あなたはいくつかの記事の項目を使うか使わないか決めることが出来ます。次のリストの中から使うものを選択してください。',
748
-	'texte_crash_base' => 'もしあなたのデータベースが壊れたら、あなたは自動的に復元に挑戦することが出来ます。',
749
-	'texte_creer_rubrique' => '記事を書き始める前に、セクションを作成しなければなりません。',
750
-	'texte_date_creation_article' => '記事が作成された日時:',
751
-	'texte_date_creation_objet' => '作成された日時:', # on ajoute le ":"
752
-	'texte_date_publication_anterieure' => '公開前の日付:',
753
-	'texte_date_publication_anterieure_nonaffichee' => '公表前の日時を隠す。',
754
-	'texte_date_publication_article' => 'オンラインに公表された日時:',
755
-	'texte_date_publication_objet' => '公表された日時:',
756
-	'texte_definir_comme_traduction_rubrique' => 'このセクションは、そのセクションの翻訳です:',
757
-	'texte_descriptif_rapide' => '短い記述',
758
-	'texte_effacer_base' => 'SPIPデータベースを削除する',
759
-	'texte_effacer_statistiques' => '統計情報を削除する',
760
-	'texte_en_cours_validation' => '確認のために以下の記事とニュースが提出されました。掲示板を通してご意見を述べてください。',
761
-	'texte_enrichir_mise_a_jour' => '「上のショートカット」を使用すると、テキストのレイアウトを充実させることができます。',
762
-	'texte_fichier_authent' => '<p>SPIPは@dossier@フォルダーに特別なファイル.htpasswdと.htpasswd-adminを作成する必要がありますか?</p><p>これらのファイルを使用したら、サイトの他のエリア(外部統計プログラムなど)に作成者や管理者だけへのアクセスが制限されます。</p><p>このようなファイルを必要としなければ、デフォルトである「ファイル作成なし」オプションにしておくことができます。</p>',
763
-	'texte_informations_personnelles_1' => 'SPIPはこのサイト用あなたの個人アカウントを作成します。',
764
-	'texte_informations_personnelles_2' => '(注:再インストールの場合、以前のアクセスがまだ有効していたら、',
765
-	'texte_introductif_article' => '(記事の紹介文章)',
766
-	'texte_jeu_caractere' => 'ユニバーサル文字セット<code>utf-8</code>を使用することをお勧めします。これによって、任意の言語でテキストを表示することが可能になります。最新のブラウザーは皆、この文字セットに完全に互換性です。',
767
-	'texte_jeu_caractere_3' => '現在、使用される文字セットは:',
768
-	'texte_jeu_caractere_4' => 'これは現在のデータに対応していない場合(バックアップからデータベースを修復した後に発生する可能性があります)、別の文字セットを指定することも出来ます。設定したください:',
769
-	'texte_login_ldap_1' => '匿名アクセスのために空白のままに残すか、完全なパスを入力します(例えば、「<code>uid=Kantaro, ou=users, dc=my-domain, dc=com</code>」)',
770
-	'texte_login_precaution' => '警告!これはあなたが現在使っているログインIDです。注意してこのフォームを使用してください。',
771
-	'texte_messagerie_agenda' => 'メッセージングシステムによって、著者などは管理エリアで直接通信することができます。それにカレンダーにリンクされています。',
772
-	'texte_mise_a_niveau_base_1' => 'SPIPファイルを更新されました。データベースをアップグレードする必要もあります。',
773
-	'texte_modifier_article' => '記事を修正する:',
774
-	'texte_multilinguisme' => '複雑なナビゲーションでオブジェクトを複数の言語で管理する場合は、サイトの構成によって、このオブジェクト用の言語選択メニューを追加できます。',
775
-	'texte_multilinguisme_trad' => 'オブジェクト上の異なる翻訳のリンクを管理する機能を有効にすることもできます。',
776
-	'texte_non_compresse' => '<b>未圧縮</b>(サーバーにはこの機能が対応されません。)',
777
-	'texte_nouvelle_version_spip_1' => 'SPIPの新しいバージョンをインストールしました。',
778
-	'texte_nouvelle_version_spip_2' => 'この新しいバージョンでは、通常よりも完全な更新が必要ですウェブマスターは、@connect@ファイルを削除し、インストールを再開して、データベース接続設定を更新してください。<p>(注意:データベース接続設定を忘れてしまった場合、@connect@ファイルを削除する前に、中身を見てください。)</p>',
779
-	'texte_operation_echec' => '前のページに戻って、他のデータベースを選択するか、新規データベースを作成してください。プロバイダーが提供した情報を確認してください。',
780
-	'texte_plus_trois_car' => '3文字以上',
781
-	'texte_plusieurs_articles' => '「@cherche_auteur@」を検索して、数人の著者を見つけました。',
782
-	'texte_port_annuaire' => '(普通、デフォルトの値が適切です。)',
783
-	'texte_presente_plugin' => 'このページには利用可能なプラグインが表示されます。対応するボックスにチェックを入れることを通して、使って欲しいプラグインを有効にしてください。',
784
-	'texte_proposer_publication' => '記事が出来上がったら、<br/>公開にしてもらうために提出してください。',
785
-	'texte_proxy' => '場合によっては(イントラネット、保護されたネットワーク)、リモートサイト(SPIPの取扱い書、照合されたサイトなど)は、<b>HTTPプロキシ</b>を経由してのみアクセスができます。そうであれば、@proxy_en_cours@の形式で、HTTPプロキシのアドレスを指定してください。そうではない場合、このボックスを空白のままに残してください。',
786
-	'texte_publication_articles_post_dates' => '出版用に未来の日付が設定された記事に対するSPIPの対応を決めて下さい。',
787
-	'texte_rappel_selection_champs' => '(忘れずに、このフィルドをきちんと選択してください。)',
788
-	'texte_recalcul_page' => 'もしあなたが1つのページだけリフレッシュしたい場合、公開エリアで« リフレッシュ »ボタンを使った方が良いです。',
789
-	'texte_recuperer_base' => 'データベースを修理する',
790
-	'texte_reference_mais_redirige' => '記事は、SPIPサイトで参照されていますが、別のURLにリダイレクトされています。',
791
-	'texte_requetes_echouent' => '<p>いくつかのSQLクエリが失敗し、明白な原因がない場合、データベース自体の問題が起きた可能性があります。</p><p>SQLサーバには、損傷されたテーブルを修理する機能が入っています。修理を試すことができます。</p><p>失敗だったら、エラーの手がかりを表示するディスプレイのコピーを保管してください。解決しない場合、プロバイダーと連絡してください。</p>',
792
-	'texte_selection_langue_principale' => 'サイトの「主な言語」を選択してください。<br />選択した言語で記事を書く義務はないのですが、「主な言語」を選択すると、<ul><li>公開サイトの日付のデフォルト形式も</li><li>正しくテキストを表す事も</li><li>公開サイトのフォームで使用される言語も</li><li>管理用のエリアに表示される言語も</li></ul>設定します。',
793
-	'texte_sous_titre' => 'サブタイトル',
794
-	'texte_statistiques_visites' => '(黒い線:日曜日・黒い曲線:平均水準)',
795
-	'texte_statut_attente_validation' => '確認の期待中',
796
-	'texte_statut_publies' => '公開中',
797
-	'texte_statut_refuses' => '拒否',
798
-	'texte_suppression_fichiers' => 'これを使うとSPIPのすべてのキャッシュファイルが削除されます。これを許可すると、特にサイトの構造や画像の重要な変更を入力している場合に備えて、すべてのページのリフレッシュを強制します。',
799
-	'texte_sur_titre' => 'トップタイトル',
800
-	'texte_table_ok' => ': このテーブルはオケです。',
801
-	'texte_tentative_recuperation' => '復元を試みる',
802
-	'texte_tenter_reparation' => 'データベースの復元を試みる',
803
-	'texte_test_proxy' => 'このプロキシをテストするには、テストするWebサイトのアドレスをここに入力します。',
804
-	'texte_titre_02' => '件名:',
805
-	'texte_titre_obligatoire' => '[必須]<b>タイトル</b>',
806
-	'texte_travail_article' => '@nom_auteur_modif@はこの記事を@date_diff@分前に編集しました。',
807
-	'texte_travail_collaboratif' => '数人の著者が同じ記事をよく編集する場合、SPIPは、同時に記事の変更を避けるために、「最近開いた記事」を表示する事ができます。このオプションは、不要な警告メッセージを表示しないように、デフォルトでは無効になっています。',
808
-	'texte_vide' => '空白にする',
809
-	'texte_vider_cache' => 'キャッシュを空白にする',
810
-	'titre_admin_tech' => '技術的な整備',
811
-	'titre_admin_vider' => '技術的な整備',
812
-	'titre_ajouter_un_auteur' => '著者を追加する',
813
-	'titre_ajouter_un_mot' => 'キーワードを追加する',
814
-	'titre_cadre_afficher_article' => '記事を表示する:',
815
-	'titre_cadre_afficher_traductions' => '次の言語に関する翻訳のステータスを表示する:',
816
-	'titre_cadre_ajouter_auteur' => '著者追加:',
817
-	'titre_cadre_interieur_rubrique' => 'セクションの中に',
818
-	'titre_cadre_numero_auteur' => '著者番号',
819
-	'titre_cadre_numero_objet' => '@objet@番号:',
820
-	'titre_cadre_signature_obligatoire' => '[必須]<b>署名</b>',
821
-	'titre_config_contenu_notifications' => '通知',
822
-	'titre_config_contenu_prive' => '管理エリア内',
823
-	'titre_config_contenu_public' => '公開サイト内',
824
-	'titre_config_fonctions' => 'サイトの設定',
825
-	'titre_config_langage' => '言語設定',
826
-	'titre_configuration' => 'サイトの設定',
827
-	'titre_configurer_preferences' => '個人環境設定',
828
-	'titre_configurer_preferences_menus' => 'メニュー環境設定',
829
-	'titre_conflit_edition' => '編集中の競合',
830
-	'titre_connexion_ldap' => 'オプション:<b>LDAP接続</b>',
831
-	'titre_groupe_mots' => 'キーワードグループ:',
832
-	'titre_identite_site' => 'サイトのアイデンティティ',
833
-	'titre_langue_article' => '記事の言語',
834
-	'titre_langue_rubrique' => 'セクションの言語',
835
-	'titre_langue_trad_article' => '記事の言語と翻訳版',
836
-	'titre_les_articles' => '記事',
837
-	'titre_messagerie_agenda' => 'メッセージ交換とカレンダー',
838
-	'titre_naviguer_dans_le_site' => 'サイト内のナビ',
839
-	'titre_nouvelle_rubrique' => '新規セクション',
840
-	'titre_numero_rubrique' => 'セクション番号:',
841
-	'titre_page_articles_edit' => '@titre@を変更する',
842
-	'titre_page_articles_page' => '記事',
843
-	'titre_page_articles_tous' => '全てのサイト',
844
-	'titre_page_calendrier' => '@annee@年@nom_mois@月・カレンダー',
845
-	'titre_page_config_contenu' => 'サイト環境設定',
846
-	'titre_page_delete_all' => '不可逆的に完全な削除',
847
-	'titre_page_recherche' => '@recherche@に関する検索結果',
848
-	'titre_page_statistiques_referers' => '統計(入ってくるリンク)',
849
-	'titre_page_upgrade' => 'SPIPアップグレード',
850
-	'titre_preference_menus_favoris' => 'お気に入り項目のメニュー',
851
-	'titre_publication_articles_post_dates' => '将来の日付に公開される記事',
852
-	'titre_reparation' => '修理',
853
-	'titre_suivi_petition' => '誓願書管理',
854
-	'tls_ldap' => 'トランスポート層のセキュリティ:',
855
-	'trad_article_traduction' => 'それぞれの翻訳',
856
-	'trad_delier' => 'この記事をその翻訳に関連付けないで下さい。',
857
-	'trad_lier' => '翻訳に関する、記事の番号は:',
858
-	'trad_new' => '記事の新規翻訳を書く',
718
+    // T
719
+    'tache_cron_asap' => 'CRONタスク@function@(できるだけ早く)',
720
+    'tache_cron_secondes' => 'CRONタスク@function@(@nb@秒間ごとに)',
721
+    'taille_cache_image' => 'SPIPが自動的に生成されたイメージ(サムネイル、画像に変換されたタイトル、TeX形式の数式など)は、@dir@フォルダーに@taille@かかります。',
722
+    'taille_cache_moins_de' => 'キャッシュサイズは@octets@未満です。',
723
+    'taille_cache_octets' => 'キャッシュサイズは現在@octets@です。',
724
+    'taille_cache_vide' => 'キャッシュは空です。',
725
+    'taille_repertoire_cache' => '現在のキャッシュサイズ',
726
+    'text_article_propose_publication' => 'この記事は公開のために提出されています。',
727
+    'texte_acces_ldap_anonyme_1' => '次のフィールドは空白のままにすることができます。ただし、一部のLDAPサーバーは匿名アクセスを受け入れません。その場合、名簿内の情報を検索するには、ログインIDを指定する必要があります。',
728
+    'texte_admin_effacer_01' => 'このコマンドは、データベースの内容を<b>すべて</b>消去します、管理者や全編集者のアクセス権を含めて。行なった上で、SPIPを再インストールし、新規データベースと最初の管理者アクセス権を再作成する必要があります。',
729
+    'texte_adresse_annuaire_1' => 'ディレクトリがウェブサイトと同じコンピュータにインストールされていれば、おそらく「localhost」です。',
730
+    'texte_ajout_auteur' => '次の著者が記事に追加されました:',
731
+    'texte_annuaire_ldap_1' => 'LDAP名簿にアクセスがあれば、SPIPでユーザを自動的にインポートすることができます。',
732
+    'texte_article_statut' => '記事のステータス:',
733
+    'texte_article_virtuel' => '仮想記事',
734
+    'texte_article_virtuel_reference' => '<b>仮想記事:</b>SPIPサイト内に記事が参照されているが、ほかのURLへとリダイレクトしているリダイレクションを取り消すには、上のURLを削除して下さい。',
735
+    'texte_aucun_resultat_auteur' => '「@cherche_auteur@」には、検索結果なし',
736
+    'texte_auteur_messagerie' => '接続中の著者は表示されています。その著者とライブメッセージを交換できます。このリストに自分を表示しないようにすると、他のユーザーには隠れます。',
737
+    'texte_auteurs' => '著者',
738
+    'texte_choix_base_1' => 'データベースを選択してください:',
739
+    'texte_choix_base_2' => 'SQLサーバーはいくつかのデータベースを含んでいます。',
740
+    'texte_choix_base_3' => 'プロバイダがあなたに割り当てたデータベース1つを選んで下さい。',
741
+    'texte_choix_table_prefix' => 'テーブルの接頭辞:',
742
+    'texte_compte_element' => '@count@ 要素',
743
+    'texte_compte_elements' => '@count@ 要素',
744
+    'texte_conflit_edition_correction' => '2つのバージョンの違いを比べてください。変更をコピーしてやり直すこともできます。',
745
+    'texte_connexion_mysql' => 'プロバイダが提供したデータベースのサーバーの接続コードを調べてください。',
746
+    'texte_contenu_article' => '(記事についての短い説明)',
747
+    'texte_contenu_articles' => 'あなたのサイト用に決めたレイアウトに基づいて、あなたはいくつかの記事の項目を使うか使わないか決めることが出来ます。次のリストの中から使うものを選択してください。',
748
+    'texte_crash_base' => 'もしあなたのデータベースが壊れたら、あなたは自動的に復元に挑戦することが出来ます。',
749
+    'texte_creer_rubrique' => '記事を書き始める前に、セクションを作成しなければなりません。',
750
+    'texte_date_creation_article' => '記事が作成された日時:',
751
+    'texte_date_creation_objet' => '作成された日時:', # on ajoute le ":"
752
+    'texte_date_publication_anterieure' => '公開前の日付:',
753
+    'texte_date_publication_anterieure_nonaffichee' => '公表前の日時を隠す。',
754
+    'texte_date_publication_article' => 'オンラインに公表された日時:',
755
+    'texte_date_publication_objet' => '公表された日時:',
756
+    'texte_definir_comme_traduction_rubrique' => 'このセクションは、そのセクションの翻訳です:',
757
+    'texte_descriptif_rapide' => '短い記述',
758
+    'texte_effacer_base' => 'SPIPデータベースを削除する',
759
+    'texte_effacer_statistiques' => '統計情報を削除する',
760
+    'texte_en_cours_validation' => '確認のために以下の記事とニュースが提出されました。掲示板を通してご意見を述べてください。',
761
+    'texte_enrichir_mise_a_jour' => '「上のショートカット」を使用すると、テキストのレイアウトを充実させることができます。',
762
+    'texte_fichier_authent' => '<p>SPIPは@dossier@フォルダーに特別なファイル.htpasswdと.htpasswd-adminを作成する必要がありますか?</p><p>これらのファイルを使用したら、サイトの他のエリア(外部統計プログラムなど)に作成者や管理者だけへのアクセスが制限されます。</p><p>このようなファイルを必要としなければ、デフォルトである「ファイル作成なし」オプションにしておくことができます。</p>',
763
+    'texte_informations_personnelles_1' => 'SPIPはこのサイト用あなたの個人アカウントを作成します。',
764
+    'texte_informations_personnelles_2' => '(注:再インストールの場合、以前のアクセスがまだ有効していたら、',
765
+    'texte_introductif_article' => '(記事の紹介文章)',
766
+    'texte_jeu_caractere' => 'ユニバーサル文字セット<code>utf-8</code>を使用することをお勧めします。これによって、任意の言語でテキストを表示することが可能になります。最新のブラウザーは皆、この文字セットに完全に互換性です。',
767
+    'texte_jeu_caractere_3' => '現在、使用される文字セットは:',
768
+    'texte_jeu_caractere_4' => 'これは現在のデータに対応していない場合(バックアップからデータベースを修復した後に発生する可能性があります)、別の文字セットを指定することも出来ます。設定したください:',
769
+    'texte_login_ldap_1' => '匿名アクセスのために空白のままに残すか、完全なパスを入力します(例えば、「<code>uid=Kantaro, ou=users, dc=my-domain, dc=com</code>」)',
770
+    'texte_login_precaution' => '警告!これはあなたが現在使っているログインIDです。注意してこのフォームを使用してください。',
771
+    'texte_messagerie_agenda' => 'メッセージングシステムによって、著者などは管理エリアで直接通信することができます。それにカレンダーにリンクされています。',
772
+    'texte_mise_a_niveau_base_1' => 'SPIPファイルを更新されました。データベースをアップグレードする必要もあります。',
773
+    'texte_modifier_article' => '記事を修正する:',
774
+    'texte_multilinguisme' => '複雑なナビゲーションでオブジェクトを複数の言語で管理する場合は、サイトの構成によって、このオブジェクト用の言語選択メニューを追加できます。',
775
+    'texte_multilinguisme_trad' => 'オブジェクト上の異なる翻訳のリンクを管理する機能を有効にすることもできます。',
776
+    'texte_non_compresse' => '<b>未圧縮</b>(サーバーにはこの機能が対応されません。)',
777
+    'texte_nouvelle_version_spip_1' => 'SPIPの新しいバージョンをインストールしました。',
778
+    'texte_nouvelle_version_spip_2' => 'この新しいバージョンでは、通常よりも完全な更新が必要ですウェブマスターは、@connect@ファイルを削除し、インストールを再開して、データベース接続設定を更新してください。<p>(注意:データベース接続設定を忘れてしまった場合、@connect@ファイルを削除する前に、中身を見てください。)</p>',
779
+    'texte_operation_echec' => '前のページに戻って、他のデータベースを選択するか、新規データベースを作成してください。プロバイダーが提供した情報を確認してください。',
780
+    'texte_plus_trois_car' => '3文字以上',
781
+    'texte_plusieurs_articles' => '「@cherche_auteur@」を検索して、数人の著者を見つけました。',
782
+    'texte_port_annuaire' => '(普通、デフォルトの値が適切です。)',
783
+    'texte_presente_plugin' => 'このページには利用可能なプラグインが表示されます。対応するボックスにチェックを入れることを通して、使って欲しいプラグインを有効にしてください。',
784
+    'texte_proposer_publication' => '記事が出来上がったら、<br/>公開にしてもらうために提出してください。',
785
+    'texte_proxy' => '場合によっては(イントラネット、保護されたネットワーク)、リモートサイト(SPIPの取扱い書、照合されたサイトなど)は、<b>HTTPプロキシ</b>を経由してのみアクセスができます。そうであれば、@proxy_en_cours@の形式で、HTTPプロキシのアドレスを指定してください。そうではない場合、このボックスを空白のままに残してください。',
786
+    'texte_publication_articles_post_dates' => '出版用に未来の日付が設定された記事に対するSPIPの対応を決めて下さい。',
787
+    'texte_rappel_selection_champs' => '(忘れずに、このフィルドをきちんと選択してください。)',
788
+    'texte_recalcul_page' => 'もしあなたが1つのページだけリフレッシュしたい場合、公開エリアで« リフレッシュ »ボタンを使った方が良いです。',
789
+    'texte_recuperer_base' => 'データベースを修理する',
790
+    'texte_reference_mais_redirige' => '記事は、SPIPサイトで参照されていますが、別のURLにリダイレクトされています。',
791
+    'texte_requetes_echouent' => '<p>いくつかのSQLクエリが失敗し、明白な原因がない場合、データベース自体の問題が起きた可能性があります。</p><p>SQLサーバには、損傷されたテーブルを修理する機能が入っています。修理を試すことができます。</p><p>失敗だったら、エラーの手がかりを表示するディスプレイのコピーを保管してください。解決しない場合、プロバイダーと連絡してください。</p>',
792
+    'texte_selection_langue_principale' => 'サイトの「主な言語」を選択してください。<br />選択した言語で記事を書く義務はないのですが、「主な言語」を選択すると、<ul><li>公開サイトの日付のデフォルト形式も</li><li>正しくテキストを表す事も</li><li>公開サイトのフォームで使用される言語も</li><li>管理用のエリアに表示される言語も</li></ul>設定します。',
793
+    'texte_sous_titre' => 'サブタイトル',
794
+    'texte_statistiques_visites' => '(黒い線:日曜日・黒い曲線:平均水準)',
795
+    'texte_statut_attente_validation' => '確認の期待中',
796
+    'texte_statut_publies' => '公開中',
797
+    'texte_statut_refuses' => '拒否',
798
+    'texte_suppression_fichiers' => 'これを使うとSPIPのすべてのキャッシュファイルが削除されます。これを許可すると、特にサイトの構造や画像の重要な変更を入力している場合に備えて、すべてのページのリフレッシュを強制します。',
799
+    'texte_sur_titre' => 'トップタイトル',
800
+    'texte_table_ok' => ': このテーブルはオケです。',
801
+    'texte_tentative_recuperation' => '復元を試みる',
802
+    'texte_tenter_reparation' => 'データベースの復元を試みる',
803
+    'texte_test_proxy' => 'このプロキシをテストするには、テストするWebサイトのアドレスをここに入力します。',
804
+    'texte_titre_02' => '件名:',
805
+    'texte_titre_obligatoire' => '[必須]<b>タイトル</b>',
806
+    'texte_travail_article' => '@nom_auteur_modif@はこの記事を@date_diff@分前に編集しました。',
807
+    'texte_travail_collaboratif' => '数人の著者が同じ記事をよく編集する場合、SPIPは、同時に記事の変更を避けるために、「最近開いた記事」を表示する事ができます。このオプションは、不要な警告メッセージを表示しないように、デフォルトでは無効になっています。',
808
+    'texte_vide' => '空白にする',
809
+    'texte_vider_cache' => 'キャッシュを空白にする',
810
+    'titre_admin_tech' => '技術的な整備',
811
+    'titre_admin_vider' => '技術的な整備',
812
+    'titre_ajouter_un_auteur' => '著者を追加する',
813
+    'titre_ajouter_un_mot' => 'キーワードを追加する',
814
+    'titre_cadre_afficher_article' => '記事を表示する:',
815
+    'titre_cadre_afficher_traductions' => '次の言語に関する翻訳のステータスを表示する:',
816
+    'titre_cadre_ajouter_auteur' => '著者追加:',
817
+    'titre_cadre_interieur_rubrique' => 'セクションの中に',
818
+    'titre_cadre_numero_auteur' => '著者番号',
819
+    'titre_cadre_numero_objet' => '@objet@番号:',
820
+    'titre_cadre_signature_obligatoire' => '[必須]<b>署名</b>',
821
+    'titre_config_contenu_notifications' => '通知',
822
+    'titre_config_contenu_prive' => '管理エリア内',
823
+    'titre_config_contenu_public' => '公開サイト内',
824
+    'titre_config_fonctions' => 'サイトの設定',
825
+    'titre_config_langage' => '言語設定',
826
+    'titre_configuration' => 'サイトの設定',
827
+    'titre_configurer_preferences' => '個人環境設定',
828
+    'titre_configurer_preferences_menus' => 'メニュー環境設定',
829
+    'titre_conflit_edition' => '編集中の競合',
830
+    'titre_connexion_ldap' => 'オプション:<b>LDAP接続</b>',
831
+    'titre_groupe_mots' => 'キーワードグループ:',
832
+    'titre_identite_site' => 'サイトのアイデンティティ',
833
+    'titre_langue_article' => '記事の言語',
834
+    'titre_langue_rubrique' => 'セクションの言語',
835
+    'titre_langue_trad_article' => '記事の言語と翻訳版',
836
+    'titre_les_articles' => '記事',
837
+    'titre_messagerie_agenda' => 'メッセージ交換とカレンダー',
838
+    'titre_naviguer_dans_le_site' => 'サイト内のナビ',
839
+    'titre_nouvelle_rubrique' => '新規セクション',
840
+    'titre_numero_rubrique' => 'セクション番号:',
841
+    'titre_page_articles_edit' => '@titre@を変更する',
842
+    'titre_page_articles_page' => '記事',
843
+    'titre_page_articles_tous' => '全てのサイト',
844
+    'titre_page_calendrier' => '@annee@年@nom_mois@月・カレンダー',
845
+    'titre_page_config_contenu' => 'サイト環境設定',
846
+    'titre_page_delete_all' => '不可逆的に完全な削除',
847
+    'titre_page_recherche' => '@recherche@に関する検索結果',
848
+    'titre_page_statistiques_referers' => '統計(入ってくるリンク)',
849
+    'titre_page_upgrade' => 'SPIPアップグレード',
850
+    'titre_preference_menus_favoris' => 'お気に入り項目のメニュー',
851
+    'titre_publication_articles_post_dates' => '将来の日付に公開される記事',
852
+    'titre_reparation' => '修理',
853
+    'titre_suivi_petition' => '誓願書管理',
854
+    'tls_ldap' => 'トランスポート層のセキュリティ:',
855
+    'trad_article_traduction' => 'それぞれの翻訳',
856
+    'trad_delier' => 'この記事をその翻訳に関連付けないで下さい。',
857
+    'trad_lier' => '翻訳に関する、記事の番号は:',
858
+    'trad_new' => '記事の新規翻訳を書く',
859 859
 
860
-	// U
861
-	'utf8_convert_erreur_orig' => 'エラー:その文字セット@charset@は、対応されません。',
860
+    // U
861
+    'utf8_convert_erreur_orig' => 'エラー:その文字セット@charset@は、対応されません。',
862 862
 
863
-	// V
864
-	'version' => 'バージョン:'
863
+    // V
864
+    'version' => 'バージョン:'
865 865
 );
Please login to merge, or discard this patch.
ecrire/inc/filtres_dates.php 2 patches
Indentation   +590 added lines, -590 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Filtres
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 
@@ -36,11 +36,11 @@  discard block
 block discarded – undo
36 36
  *    Date au format SQL tel que `2008-04-01` sinon ''
37 37
  **/
38 38
 function extraire_date($texte): string {
39
-	// format = 2001-08
40
-	if (preg_match(',([1-2][0-9]{3})[^0-9]*(1[0-2]|0?[1-9]),', $texte, $regs)) {
41
-		return $regs[1] . '-' . sprintf('%02d', $regs[2]) . '-01';
42
-	}
43
-	return '';
39
+    // format = 2001-08
40
+    if (preg_match(',([1-2][0-9]{3})[^0-9]*(1[0-2]|0?[1-9]),', $texte, $regs)) {
41
+        return $regs[1] . '-' . sprintf('%02d', $regs[2]) . '-01';
42
+    }
43
+    return '';
44 44
 }
45 45
 
46 46
 
@@ -62,29 +62,29 @@  discard block
 block discarded – undo
62 62
  *     - une chaîne vide si la date est considérée nulle
63 63
  **/
64 64
 function normaliser_date($date, $forcer_jour = false): string {
65
-	$date = vider_date($date);
66
-	if ($date) {
67
-		if (preg_match('/^[0-9]{8,10}$/', $date)) {
68
-			$date = date('Y-m-d H:i:s', $date);
69
-		}
70
-		if (preg_match('#^([12][0-9]{3})([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
71
-			$regs = array_pad($regs, 4, null); // eviter notice php
72
-			$date = $regs[1] . '-00-00' . $regs[3];
73
-		} else {
74
-			if (preg_match('#^([12][0-9]{3}[-/][01]?[0-9])([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
75
-				$regs = array_pad($regs, 4, null); // eviter notice php
76
-				$date = preg_replace('@/@', '-', $regs[1]) . '-00' . $regs[3];
77
-			} else {
78
-				$date = date('Y-m-d H:i:s', strtotime($date));
79
-			}
80
-		}
81
-
82
-		if ($forcer_jour) {
83
-			$date = str_replace('-00', '-01', $date);
84
-		}
85
-	}
86
-
87
-	return $date;
65
+    $date = vider_date($date);
66
+    if ($date) {
67
+        if (preg_match('/^[0-9]{8,10}$/', $date)) {
68
+            $date = date('Y-m-d H:i:s', $date);
69
+        }
70
+        if (preg_match('#^([12][0-9]{3})([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
71
+            $regs = array_pad($regs, 4, null); // eviter notice php
72
+            $date = $regs[1] . '-00-00' . $regs[3];
73
+        } else {
74
+            if (preg_match('#^([12][0-9]{3}[-/][01]?[0-9])([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
75
+                $regs = array_pad($regs, 4, null); // eviter notice php
76
+                $date = preg_replace('@/@', '-', $regs[1]) . '-00' . $regs[3];
77
+            } else {
78
+                $date = date('Y-m-d H:i:s', strtotime($date));
79
+            }
80
+        }
81
+
82
+        if ($forcer_jour) {
83
+            $date = str_replace('-00', '-01', $date);
84
+        }
85
+    }
86
+
87
+    return $date;
88 88
 }
89 89
 
90 90
 /**
@@ -97,23 +97,23 @@  discard block
 block discarded – undo
97 97
  *     - Une chaine vide
98 98
  **/
99 99
 function vider_date($letexte, $verif_format_date = false): string {
100
-	$letexte ??= '';
101
-	if (
102
-		!$verif_format_date
103
-		or (in_array(strlen($letexte), [10,19]) and
104
-			  preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}(\s[0-9]{2}:[0-9]{2}:[0-9]{2})?$/', $letexte))
105
-	) {
106
-		if (strncmp('0000-00-00', $letexte, 10) == 0) {
107
-			return '';
108
-		}
109
-		if (strncmp('0001-01-01', $letexte, 10) == 0) {
110
-			return '';
111
-		}
112
-		if (strncmp('1970-01-01', $letexte, 10) == 0) {
113
-			return '';
114
-		}  // eviter le bug GMT-1
115
-	}
116
-	return $letexte;
100
+    $letexte ??= '';
101
+    if (
102
+        !$verif_format_date
103
+        or (in_array(strlen($letexte), [10,19]) and
104
+              preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}(\s[0-9]{2}:[0-9]{2}:[0-9]{2})?$/', $letexte))
105
+    ) {
106
+        if (strncmp('0000-00-00', $letexte, 10) == 0) {
107
+            return '';
108
+        }
109
+        if (strncmp('0001-01-01', $letexte, 10) == 0) {
110
+            return '';
111
+        }
112
+        if (strncmp('1970-01-01', $letexte, 10) == 0) {
113
+            return '';
114
+        }  // eviter le bug GMT-1
115
+    }
116
+    return $letexte;
117 117
 }
118 118
 
119 119
 /**
@@ -129,17 +129,17 @@  discard block
 block discarded – undo
129 129
  **/
130 130
 function recup_heure($date): array {
131 131
 
132
-	if (preg_match('#([0-9]{1,2}):([0-9]{1,2})(?::([0-9]{1,2}))?#', $date, $elements)) {
133
-		array_shift($elements);
134
-		if (!isset($elements[2])) {
135
-			$elements[2] = 0;
136
-		}
137
-		$heure = $elements;
138
-	} else {
139
-		$heure = [0, 0, 0];
140
-	}
141
-
142
-	return $heure;
132
+    if (preg_match('#([0-9]{1,2}):([0-9]{1,2})(?::([0-9]{1,2}))?#', $date, $elements)) {
133
+        array_shift($elements);
134
+        if (!isset($elements[2])) {
135
+            $elements[2] = 0;
136
+        }
137
+        $heure = $elements;
138
+    } else {
139
+        $heure = [0, 0, 0];
140
+    }
141
+
142
+    return $heure;
143 143
 }
144 144
 
145 145
 /**
@@ -153,13 +153,13 @@  discard block
 block discarded – undo
153 153
  * @return string heures, sinon 0
154 154
  **/
155 155
 function heures($numdate): string {
156
-	$heures = null;
157
-	$date_array = recup_heure($numdate);
158
-	if ($date_array) {
159
-		[$heures, $minutes, $secondes] = $date_array;
160
-	}
156
+    $heures = null;
157
+    $date_array = recup_heure($numdate);
158
+    if ($date_array) {
159
+        [$heures, $minutes, $secondes] = $date_array;
160
+    }
161 161
 
162
-	return $heures;
162
+    return $heures;
163 163
 }
164 164
 
165 165
 /**
@@ -173,13 +173,13 @@  discard block
 block discarded – undo
173 173
  * @return string minutes, sinon 0
174 174
  **/
175 175
 function minutes($numdate): string {
176
-	$minutes = null;
177
-	$date_array = recup_heure($numdate);
178
-	if ($date_array) {
179
-		[$heures, $minutes, $secondes] = $date_array;
180
-	}
176
+    $minutes = null;
177
+    $date_array = recup_heure($numdate);
178
+    if ($date_array) {
179
+        [$heures, $minutes, $secondes] = $date_array;
180
+    }
181 181
 
182
-	return $minutes;
182
+    return $minutes;
183 183
 }
184 184
 
185 185
 /**
@@ -193,13 +193,13 @@  discard block
 block discarded – undo
193 193
  * @return string secondes, sinon 0
194 194
  **/
195 195
 function secondes($numdate): string {
196
-	$secondes = null;
197
-	$date_array = recup_heure($numdate);
198
-	if ($date_array) {
199
-		[$heures, $minutes, $secondes] = $date_array;
200
-	}
196
+    $secondes = null;
197
+    $date_array = recup_heure($numdate);
198
+    if ($date_array) {
199
+        [$heures, $minutes, $secondes] = $date_array;
200
+    }
201 201
 
202
-	return $secondes;
202
+    return $secondes;
203 203
 }
204 204
 
205 205
 /**
@@ -218,11 +218,11 @@  discard block
 block discarded – undo
218 218
  * @return string L'heure formatée dans la langue en cours.
219 219
  **/
220 220
 function heures_minutes($numdate, $forme = ''): string {
221
-	if ($forme !== 'abbr') {
222
-		return _T('date_fmt_heures_minutes', ['h' => heures($numdate), 'm' => minutes($numdate)]);
223
-	} else {
224
-		return _T('date_fmt_heures_minutes_court', ['h' => heures($numdate), 'm' => minutes($numdate)]);
225
-	}
221
+    if ($forme !== 'abbr') {
222
+        return _T('date_fmt_heures_minutes', ['h' => heures($numdate), 'm' => minutes($numdate)]);
223
+    } else {
224
+        return _T('date_fmt_heures_minutes_court', ['h' => heures($numdate), 'm' => minutes($numdate)]);
225
+    }
226 226
 }
227 227
 
228 228
 /**
@@ -247,57 +247,57 @@  discard block
 block discarded – undo
247 247
  * @return array [année, mois, jour, heures, minutes, secondes] ou []
248 248
  **/
249 249
 function recup_date($numdate, $forcer_jour = true): array {
250
-	if (!$numdate) {
251
-		return [];
252
-	}
253
-	$heures = $minutes = $secondes = 0;
254
-	if (preg_match('#([0-9]{1,2})/([0-9]{1,2})/([0-9]{4}|[0-9]{1,2})#', $numdate, $regs)) {
255
-		$jour = $regs[1];
256
-		$mois = $regs[2];
257
-		$annee = $regs[3];
258
-		if ($annee < 90) {
259
-			$annee = 2000 + $annee;
260
-		} elseif ($annee < 100) {
261
-			$annee = 1900 + $annee;
262
-		}
263
-		[$heures, $minutes, $secondes] = recup_heure($numdate);
264
-	} elseif (preg_match('#([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})#', $numdate, $regs)) {
265
-		$annee = $regs[1];
266
-		$mois = $regs[2];
267
-		$jour = $regs[3];
268
-		[$heures, $minutes, $secondes] = recup_heure($numdate);
269
-	} elseif (preg_match('#([0-9]{4})-([0-9]{2})#', $numdate, $regs)) {
270
-		$annee = $regs[1];
271
-		$mois = $regs[2];
272
-		$jour = '';
273
-		[$heures, $minutes, $secondes] = recup_heure($numdate);
274
-	} elseif (preg_match('#^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$#', $numdate, $regs)) {
275
-		$annee = $regs[1];
276
-		$mois = $regs[2];
277
-		$jour = $regs[3];
278
-		$heures = $regs[4];
279
-		$minutes = $regs[5];
280
-		$secondes = $regs[6];
281
-	} else {
282
-		$annee = $mois = $jour = '';
283
-	}
284
-	if ($annee > 4000) {
285
-		$annee -= 9000;
286
-	}
287
-	if (strlen($jour) and substr($jour, 0, 1) == '0') {
288
-		$jour = substr($jour, 1);
289
-	}
290
-
291
-	if ($forcer_jour and $jour == '0') {
292
-		$jour = '1';
293
-	}
294
-	if ($forcer_jour and $mois == '0') {
295
-		$mois = '1';
296
-	}
297
-	if ($annee or $mois or $jour or $heures or $minutes or $secondes) {
298
-		return [$annee, $mois, $jour, $heures, $minutes, $secondes];
299
-	}
300
-	return [];
250
+    if (!$numdate) {
251
+        return [];
252
+    }
253
+    $heures = $minutes = $secondes = 0;
254
+    if (preg_match('#([0-9]{1,2})/([0-9]{1,2})/([0-9]{4}|[0-9]{1,2})#', $numdate, $regs)) {
255
+        $jour = $regs[1];
256
+        $mois = $regs[2];
257
+        $annee = $regs[3];
258
+        if ($annee < 90) {
259
+            $annee = 2000 + $annee;
260
+        } elseif ($annee < 100) {
261
+            $annee = 1900 + $annee;
262
+        }
263
+        [$heures, $minutes, $secondes] = recup_heure($numdate);
264
+    } elseif (preg_match('#([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})#', $numdate, $regs)) {
265
+        $annee = $regs[1];
266
+        $mois = $regs[2];
267
+        $jour = $regs[3];
268
+        [$heures, $minutes, $secondes] = recup_heure($numdate);
269
+    } elseif (preg_match('#([0-9]{4})-([0-9]{2})#', $numdate, $regs)) {
270
+        $annee = $regs[1];
271
+        $mois = $regs[2];
272
+        $jour = '';
273
+        [$heures, $minutes, $secondes] = recup_heure($numdate);
274
+    } elseif (preg_match('#^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})$#', $numdate, $regs)) {
275
+        $annee = $regs[1];
276
+        $mois = $regs[2];
277
+        $jour = $regs[3];
278
+        $heures = $regs[4];
279
+        $minutes = $regs[5];
280
+        $secondes = $regs[6];
281
+    } else {
282
+        $annee = $mois = $jour = '';
283
+    }
284
+    if ($annee > 4000) {
285
+        $annee -= 9000;
286
+    }
287
+    if (strlen($jour) and substr($jour, 0, 1) == '0') {
288
+        $jour = substr($jour, 1);
289
+    }
290
+
291
+    if ($forcer_jour and $jour == '0') {
292
+        $jour = '1';
293
+    }
294
+    if ($forcer_jour and $mois == '0') {
295
+        $mois = '1';
296
+    }
297
+    if ($annee or $mois or $jour or $heures or $minutes or $secondes) {
298
+        return [$annee, $mois, $jour, $heures, $minutes, $secondes];
299
+    }
300
+    return [];
301 301
 }
302 302
 
303 303
 /**
@@ -324,10 +324,10 @@  discard block
 block discarded – undo
324 324
  *     La date relative ou complète
325 325
  **/
326 326
 function date_interface($date, $decalage_maxi = 43200 /* 12*3600 */): string {
327
-	return sinon(
328
-		date_relative($date, $decalage_maxi),
329
-		affdate_heure($date)
330
-	);
327
+    return sinon(
328
+        date_relative($date, $decalage_maxi),
329
+        affdate_heure($date)
330
+    );
331 331
 }
332 332
 
333 333
 /**
@@ -360,86 +360,86 @@  discard block
 block discarded – undo
360 360
  **/
361 361
 function date_relative($date, $decalage_maxi = 0, $ref_date = null): string {
362 362
 
363
-	if (!$date) {
364
-		return '';
365
-	}
366
-
367
-	if (is_null($ref_date)) {
368
-		$ref_time = time();
369
-	} else {
370
-		$ref_time = strtotime($ref_date);
371
-	}
372
-
373
-	$decal = date('U', $ref_time) - date('U', strtotime($date));
374
-
375
-	if ($decalage_maxi and ($decal > $decalage_maxi or $decal < 0)) {
376
-		return '';
377
-	}
378
-
379
-	if ($decal < 0) {
380
-		$il_y_a = 'date_dans';
381
-		$decal = -1 * $decal;
382
-	} else {
383
-		$il_y_a = 'date_il_y_a';
384
-	}
385
-
386
-	if ($decal > 3600 * 24 * 30 * 6) {
387
-		return affdate_court($date);
388
-	}
389
-
390
-	if ($decal > 3600 * 24 * 30) {
391
-		$mois = floor($decal / (3600 * 24 * 30));
392
-		if ($mois < 2) {
393
-			$delai = "$mois " . _T('date_un_mois');
394
-		} else {
395
-			$delai = "$mois " . _T('date_mois');
396
-		}
397
-	} else {
398
-		if ($decal > 3600 * 24 * 7) {
399
-			$semaines = floor($decal / (3600 * 24 * 7));
400
-			if ($semaines < 2) {
401
-				$delai = "$semaines " . _T('date_une_semaine');
402
-			} else {
403
-				$delai = "$semaines " . _T('date_semaines');
404
-			}
405
-		} else {
406
-			if ($decal > 3600 * 24) {
407
-				$jours = floor($decal / (3600 * 24));
408
-				if ($jours < 2) {
409
-					return $il_y_a == 'date_dans' ? _T('date_demain') : _T('date_hier');
410
-				} else {
411
-					$delai = "$jours " . _T('date_jours');
412
-				}
413
-			} else {
414
-				if ($decal >= 3600) {
415
-					$heures = floor($decal / 3600);
416
-					if ($heures < 2) {
417
-						$delai = "$heures " . _T('date_une_heure');
418
-					} else {
419
-						$delai = "$heures " . _T('date_heures');
420
-					}
421
-				} else {
422
-					if ($decal >= 60) {
423
-						$minutes = floor($decal / 60);
424
-						if ($minutes < 2) {
425
-							$delai = "$minutes " . _T('date_une_minute');
426
-						} else {
427
-							$delai = "$minutes " . _T('date_minutes');
428
-						}
429
-					} else {
430
-						$secondes = ceil($decal);
431
-						if ($secondes < 2) {
432
-							$delai = "$secondes " . _T('date_une_seconde');
433
-						} else {
434
-							$delai = "$secondes " . _T('date_secondes');
435
-						}
436
-					}
437
-				}
438
-			}
439
-		}
440
-	}
441
-
442
-	return _T($il_y_a, ['delai' => $delai]);
363
+    if (!$date) {
364
+        return '';
365
+    }
366
+
367
+    if (is_null($ref_date)) {
368
+        $ref_time = time();
369
+    } else {
370
+        $ref_time = strtotime($ref_date);
371
+    }
372
+
373
+    $decal = date('U', $ref_time) - date('U', strtotime($date));
374
+
375
+    if ($decalage_maxi and ($decal > $decalage_maxi or $decal < 0)) {
376
+        return '';
377
+    }
378
+
379
+    if ($decal < 0) {
380
+        $il_y_a = 'date_dans';
381
+        $decal = -1 * $decal;
382
+    } else {
383
+        $il_y_a = 'date_il_y_a';
384
+    }
385
+
386
+    if ($decal > 3600 * 24 * 30 * 6) {
387
+        return affdate_court($date);
388
+    }
389
+
390
+    if ($decal > 3600 * 24 * 30) {
391
+        $mois = floor($decal / (3600 * 24 * 30));
392
+        if ($mois < 2) {
393
+            $delai = "$mois " . _T('date_un_mois');
394
+        } else {
395
+            $delai = "$mois " . _T('date_mois');
396
+        }
397
+    } else {
398
+        if ($decal > 3600 * 24 * 7) {
399
+            $semaines = floor($decal / (3600 * 24 * 7));
400
+            if ($semaines < 2) {
401
+                $delai = "$semaines " . _T('date_une_semaine');
402
+            } else {
403
+                $delai = "$semaines " . _T('date_semaines');
404
+            }
405
+        } else {
406
+            if ($decal > 3600 * 24) {
407
+                $jours = floor($decal / (3600 * 24));
408
+                if ($jours < 2) {
409
+                    return $il_y_a == 'date_dans' ? _T('date_demain') : _T('date_hier');
410
+                } else {
411
+                    $delai = "$jours " . _T('date_jours');
412
+                }
413
+            } else {
414
+                if ($decal >= 3600) {
415
+                    $heures = floor($decal / 3600);
416
+                    if ($heures < 2) {
417
+                        $delai = "$heures " . _T('date_une_heure');
418
+                    } else {
419
+                        $delai = "$heures " . _T('date_heures');
420
+                    }
421
+                } else {
422
+                    if ($decal >= 60) {
423
+                        $minutes = floor($decal / 60);
424
+                        if ($minutes < 2) {
425
+                            $delai = "$minutes " . _T('date_une_minute');
426
+                        } else {
427
+                            $delai = "$minutes " . _T('date_minutes');
428
+                        }
429
+                    } else {
430
+                        $secondes = ceil($decal);
431
+                        if ($secondes < 2) {
432
+                            $delai = "$secondes " . _T('date_une_seconde');
433
+                        } else {
434
+                            $delai = "$secondes " . _T('date_secondes');
435
+                        }
436
+                    }
437
+                }
438
+            }
439
+        }
440
+    }
441
+
442
+    return _T($il_y_a, ['delai' => $delai]);
443 443
 }
444 444
 
445 445
 
@@ -465,32 +465,32 @@  discard block
 block discarded – undo
465 465
  **/
466 466
 function date_relativecourt($date, $decalage_maxi = 0): string {
467 467
 
468
-	if (!$date) {
469
-		return '';
470
-	}
471
-	$decal = date('U', strtotime(date('Y-m-d')) - strtotime(date('Y-m-d', strtotime($date))));
472
-
473
-	if ($decalage_maxi and ($decal > $decalage_maxi or $decal < 0)) {
474
-		return '';
475
-	}
476
-
477
-	if ($decal < -24 * 3600) {
478
-		$retour = date_relative($date, $decalage_maxi);
479
-	} elseif ($decal < 0) {
480
-		$retour = _T('date_demain');
481
-	} else {
482
-		if ($decal < (3600 * 24)) {
483
-			$retour = _T('date_aujourdhui');
484
-		} else {
485
-			if ($decal < (3600 * 24 * 2)) {
486
-				$retour = _T('date_hier');
487
-			} else {
488
-				$retour = date_relative($date, $decalage_maxi);
489
-			}
490
-		}
491
-	}
492
-
493
-	return $retour;
468
+    if (!$date) {
469
+        return '';
470
+    }
471
+    $decal = date('U', strtotime(date('Y-m-d')) - strtotime(date('Y-m-d', strtotime($date))));
472
+
473
+    if ($decalage_maxi and ($decal > $decalage_maxi or $decal < 0)) {
474
+        return '';
475
+    }
476
+
477
+    if ($decal < -24 * 3600) {
478
+        $retour = date_relative($date, $decalage_maxi);
479
+    } elseif ($decal < 0) {
480
+        $retour = _T('date_demain');
481
+    } else {
482
+        if ($decal < (3600 * 24)) {
483
+            $retour = _T('date_aujourdhui');
484
+        } else {
485
+            if ($decal < (3600 * 24 * 2)) {
486
+                $retour = _T('date_hier');
487
+            } else {
488
+                $retour = date_relative($date, $decalage_maxi);
489
+            }
490
+        }
491
+    }
492
+
493
+    return $retour;
494 494
 }
495 495
 
496 496
 /**
@@ -507,175 +507,175 @@  discard block
 block discarded – undo
507 507
  * @return string
508 508
  */
509 509
 function affdate_base($numdate, $vue, $options = []): string {
510
-	if (is_string($options)) {
511
-		$options = ['param' => $options];
512
-	}
513
-	$date_array = recup_date($numdate, false);
514
-	if (!$date_array) {
515
-		return '';
516
-	}
517
-	[$annee, $mois, $jour, $heures, $minutes, $secondes] = $date_array;
518
-
519
-	// 1er, 21st, etc.
520
-	$journum = $jour;
521
-
522
-	if ($jour == 0) {
523
-		$jour = '';
524
-		$njour = 0;
525
-	} else {
526
-		$njour = intval($jour);
527
-		if ($jourth = _T('date_jnum' . $jour)) {
528
-			$jour = $jourth;
529
-		}
530
-	}
531
-
532
-	$mois = intval($mois);
533
-	if ($mois > 0 and $mois < 13) {
534
-		/* Traiter le cas "abbr" pour les noms de mois */
535
-		$param = ((isset($options['param']) and $options['param'] === 'abbr') ? '_' . $options['param'] : '');
536
-		$nommois = _T('date_mois_' . $mois . $param);
537
-		if ($jour) {
538
-			$jourmois = _T('date_de_mois_' . $mois, ['j' => $jour, 'nommois' => $nommois]);
539
-		} else {
540
-			$jourmois = $nommois;
541
-		}
542
-	} else {
543
-		$nommois = '';
544
-		$jourmois = '';
545
-	}
546
-
547
-	if ($annee < 0) {
548
-		$annee = -$annee . ' ' . _T('date_avant_jc');
549
-		$avjc = true;
550
-	} else {
551
-		$avjc = false;
552
-	}
553
-
554
-	switch ($vue) {
555
-		case 'saison':
556
-		case 'saison_annee':
557
-			$saison = '';
558
-			if ($mois > 0) {
559
-				$saison = ($options['param'] == 'sud') ? 3 : 1;
560
-				if (($mois == 3 and $jour >= 21) or $mois > 3) {
561
-					$saison = ($options['param'] == 'sud') ? 4 : 2;
562
-				}
563
-				if (($mois == 6 and $jour >= 21) or $mois > 6) {
564
-					$saison = ($options['param'] == 'sud') ? 1 : 3;
565
-				}
566
-				if (($mois == 9 and $jour >= 21) or $mois > 9) {
567
-					$saison = ($options['param'] == 'sud') ? 2 : 4;
568
-				}
569
-				if (($mois == 12 and $jour >= 21) or $mois > 12) {
570
-					$saison = ($options['param'] == 'sud') ? 3 : 1;
571
-				}
572
-			}
573
-			if ($vue == 'saison') {
574
-				return $saison ? _T('date_saison_' . $saison) : '';
575
-			} else {
576
-				return $saison ? trim(_T(
577
-					'date_fmt_saison_annee',
578
-					['saison' => _T('date_saison_' . $saison), 'annee' => $annee]
579
-				)) : '';
580
-			}
581
-
582
-		case 'court':
583
-			if ($avjc) {
584
-				return $annee;
585
-			}
586
-			$a = ((isset($options['annee_courante']) and $options['annee_courante']) ? $options['annee_courante'] : date('Y'));
587
-			if ($annee < ($a - 100) or $annee > ($a + 100)) {
588
-				return $annee;
589
-			}
590
-			if ($annee != $a) {
591
-				return _T(
592
-					'date_fmt_mois_annee',
593
-					['mois' => $mois, 'nommois' => spip_ucfirst($nommois), 'annee' => $annee]
594
-				);
595
-			}
596
-
597
-			return _T(
598
-				'date_fmt_jour_mois',
599
-				['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
600
-			);
601
-
602
-		case 'jourcourt':
603
-			if ($avjc) {
604
-				return $annee;
605
-			}
606
-			$a = ((isset($options['annee_courante']) and $options['annee_courante']) ? $options['annee_courante'] : date('Y'));
607
-			if ($annee < ($a - 100) or $annee > ($a + 100)) {
608
-				return $annee;
609
-			}
610
-			if ($annee != $a) {
611
-				return _T(
612
-					'date_fmt_jour_mois_annee',
613
-					['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
614
-				);
615
-			}
616
-
617
-			return _T(
618
-				'date_fmt_jour_mois',
619
-				['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
620
-			);
621
-
622
-		case 'entier':
623
-			if ($avjc) {
624
-				return $annee;
625
-			}
626
-			if ($jour) {
627
-				return _T(
628
-					'date_fmt_jour_mois_annee',
629
-					['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
630
-				);
631
-			} elseif ($mois) {
632
-				return trim(_T('date_fmt_mois_annee', ['mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]));
633
-			} else {
634
-				return $annee;
635
-			}
636
-
637
-		case 'nom_mois':
638
-			return $nommois;
639
-
640
-		case 'mois':
641
-			return sprintf('%02s', $mois);
642
-
643
-		case 'jour':
644
-			return $jour;
645
-
646
-		case 'journum':
647
-			return $journum;
648
-
649
-		case 'nom_jour':
650
-			if (!$mois or !$njour) {
651
-				return '';
652
-			}
653
-			$nom = mktime(1, 1, 1, $mois, $njour, $annee);
654
-			$nom = 1 + (int) date('w', $nom);
655
-			$param = ((isset($options['param']) and $options['param']) ? '_' . $options['param'] : '');
656
-
657
-			return _T('date_jour_' . $nom . $param);
658
-
659
-		case 'mois_annee':
660
-			if ($avjc) {
661
-				return $annee;
662
-			}
663
-
664
-			return trim(_T('date_fmt_mois_annee', ['mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]));
665
-
666
-		case 'annee':
667
-			return $annee;
668
-
669
-		// Cas d'une vue non definie : retomber sur le format
670
-		// de date propose par http://www.php.net/date
671
-		default:
672
-			[$annee, $mois, $jour, $heures, $minutes, $secondes] = $date_array;
673
-			// il faut envoyer jour = 1 si jour pas défini, c'est le comportement qu'on avait historiquement en envoyant ''
674
-			if (!$time = mktime($heures, $minutes, $secondes, $mois, is_numeric($jour) ? $jour : 1 , $annee)) {
675
-				$time = strtotime($numdate);
676
-			}
677
-			return date($vue, $time);
678
-	}
510
+    if (is_string($options)) {
511
+        $options = ['param' => $options];
512
+    }
513
+    $date_array = recup_date($numdate, false);
514
+    if (!$date_array) {
515
+        return '';
516
+    }
517
+    [$annee, $mois, $jour, $heures, $minutes, $secondes] = $date_array;
518
+
519
+    // 1er, 21st, etc.
520
+    $journum = $jour;
521
+
522
+    if ($jour == 0) {
523
+        $jour = '';
524
+        $njour = 0;
525
+    } else {
526
+        $njour = intval($jour);
527
+        if ($jourth = _T('date_jnum' . $jour)) {
528
+            $jour = $jourth;
529
+        }
530
+    }
531
+
532
+    $mois = intval($mois);
533
+    if ($mois > 0 and $mois < 13) {
534
+        /* Traiter le cas "abbr" pour les noms de mois */
535
+        $param = ((isset($options['param']) and $options['param'] === 'abbr') ? '_' . $options['param'] : '');
536
+        $nommois = _T('date_mois_' . $mois . $param);
537
+        if ($jour) {
538
+            $jourmois = _T('date_de_mois_' . $mois, ['j' => $jour, 'nommois' => $nommois]);
539
+        } else {
540
+            $jourmois = $nommois;
541
+        }
542
+    } else {
543
+        $nommois = '';
544
+        $jourmois = '';
545
+    }
546
+
547
+    if ($annee < 0) {
548
+        $annee = -$annee . ' ' . _T('date_avant_jc');
549
+        $avjc = true;
550
+    } else {
551
+        $avjc = false;
552
+    }
553
+
554
+    switch ($vue) {
555
+        case 'saison':
556
+        case 'saison_annee':
557
+            $saison = '';
558
+            if ($mois > 0) {
559
+                $saison = ($options['param'] == 'sud') ? 3 : 1;
560
+                if (($mois == 3 and $jour >= 21) or $mois > 3) {
561
+                    $saison = ($options['param'] == 'sud') ? 4 : 2;
562
+                }
563
+                if (($mois == 6 and $jour >= 21) or $mois > 6) {
564
+                    $saison = ($options['param'] == 'sud') ? 1 : 3;
565
+                }
566
+                if (($mois == 9 and $jour >= 21) or $mois > 9) {
567
+                    $saison = ($options['param'] == 'sud') ? 2 : 4;
568
+                }
569
+                if (($mois == 12 and $jour >= 21) or $mois > 12) {
570
+                    $saison = ($options['param'] == 'sud') ? 3 : 1;
571
+                }
572
+            }
573
+            if ($vue == 'saison') {
574
+                return $saison ? _T('date_saison_' . $saison) : '';
575
+            } else {
576
+                return $saison ? trim(_T(
577
+                    'date_fmt_saison_annee',
578
+                    ['saison' => _T('date_saison_' . $saison), 'annee' => $annee]
579
+                )) : '';
580
+            }
581
+
582
+        case 'court':
583
+            if ($avjc) {
584
+                return $annee;
585
+            }
586
+            $a = ((isset($options['annee_courante']) and $options['annee_courante']) ? $options['annee_courante'] : date('Y'));
587
+            if ($annee < ($a - 100) or $annee > ($a + 100)) {
588
+                return $annee;
589
+            }
590
+            if ($annee != $a) {
591
+                return _T(
592
+                    'date_fmt_mois_annee',
593
+                    ['mois' => $mois, 'nommois' => spip_ucfirst($nommois), 'annee' => $annee]
594
+                );
595
+            }
596
+
597
+            return _T(
598
+                'date_fmt_jour_mois',
599
+                ['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
600
+            );
601
+
602
+        case 'jourcourt':
603
+            if ($avjc) {
604
+                return $annee;
605
+            }
606
+            $a = ((isset($options['annee_courante']) and $options['annee_courante']) ? $options['annee_courante'] : date('Y'));
607
+            if ($annee < ($a - 100) or $annee > ($a + 100)) {
608
+                return $annee;
609
+            }
610
+            if ($annee != $a) {
611
+                return _T(
612
+                    'date_fmt_jour_mois_annee',
613
+                    ['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
614
+                );
615
+            }
616
+
617
+            return _T(
618
+                'date_fmt_jour_mois',
619
+                ['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
620
+            );
621
+
622
+        case 'entier':
623
+            if ($avjc) {
624
+                return $annee;
625
+            }
626
+            if ($jour) {
627
+                return _T(
628
+                    'date_fmt_jour_mois_annee',
629
+                    ['jourmois' => $jourmois, 'jour' => $jour, 'mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]
630
+                );
631
+            } elseif ($mois) {
632
+                return trim(_T('date_fmt_mois_annee', ['mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]));
633
+            } else {
634
+                return $annee;
635
+            }
636
+
637
+        case 'nom_mois':
638
+            return $nommois;
639
+
640
+        case 'mois':
641
+            return sprintf('%02s', $mois);
642
+
643
+        case 'jour':
644
+            return $jour;
645
+
646
+        case 'journum':
647
+            return $journum;
648
+
649
+        case 'nom_jour':
650
+            if (!$mois or !$njour) {
651
+                return '';
652
+            }
653
+            $nom = mktime(1, 1, 1, $mois, $njour, $annee);
654
+            $nom = 1 + (int) date('w', $nom);
655
+            $param = ((isset($options['param']) and $options['param']) ? '_' . $options['param'] : '');
656
+
657
+            return _T('date_jour_' . $nom . $param);
658
+
659
+        case 'mois_annee':
660
+            if ($avjc) {
661
+                return $annee;
662
+            }
663
+
664
+            return trim(_T('date_fmt_mois_annee', ['mois' => $mois, 'nommois' => $nommois, 'annee' => $annee]));
665
+
666
+        case 'annee':
667
+            return $annee;
668
+
669
+        // Cas d'une vue non definie : retomber sur le format
670
+        // de date propose par http://www.php.net/date
671
+        default:
672
+            [$annee, $mois, $jour, $heures, $minutes, $secondes] = $date_array;
673
+            // il faut envoyer jour = 1 si jour pas défini, c'est le comportement qu'on avait historiquement en envoyant ''
674
+            if (!$time = mktime($heures, $minutes, $secondes, $mois, is_numeric($jour) ? $jour : 1 , $annee)) {
675
+                $time = strtotime($numdate);
676
+            }
677
+            return date($vue, $time);
678
+    }
679 679
 }
680 680
 
681 681
 
@@ -702,11 +702,11 @@  discard block
 block discarded – undo
702 702
  *     Nom du jour
703 703
  **/
704 704
 function nom_jour($numdate, $forme = ''): string {
705
-	if (!($forme === 'abbr' or $forme === 'initiale')) {
706
-		$forme = '';
707
-	}
705
+    if (!($forme === 'abbr' or $forme === 'initiale')) {
706
+        $forme = '';
707
+    }
708 708
 
709
-	return affdate_base($numdate, 'nom_jour', ['param' => $forme]);
709
+    return affdate_base($numdate, 'nom_jour', ['param' => $forme]);
710 710
 }
711 711
 
712 712
 /**
@@ -728,7 +728,7 @@  discard block
 block discarded – undo
728 728
  *     Numéro du jour
729 729
  **/
730 730
 function jour($numdate): string {
731
-	return affdate_base($numdate, 'jour');
731
+    return affdate_base($numdate, 'jour');
732 732
 }
733 733
 
734 734
 /**
@@ -746,7 +746,7 @@  discard block
 block discarded – undo
746 746
  *     Numéro du jour
747 747
  **/
748 748
 function journum($numdate): string {
749
-	return affdate_base($numdate, 'journum');
749
+    return affdate_base($numdate, 'journum');
750 750
 }
751 751
 
752 752
 /**
@@ -764,7 +764,7 @@  discard block
 block discarded – undo
764 764
  *     Numéro du mois (sur 2 chiffres)
765 765
  **/
766 766
 function mois($numdate): string {
767
-	return  affdate_base($numdate, 'mois');
767
+    return  affdate_base($numdate, 'mois');
768 768
 }
769 769
 
770 770
 /**
@@ -788,11 +788,11 @@  discard block
 block discarded – undo
788 788
  *     Nom du mois
789 789
  **/
790 790
 function nom_mois($numdate, $forme = ''): string {
791
-	if (!($forme === 'abbr')) {
792
-		$forme = '';
793
-	}
791
+    if (!($forme === 'abbr')) {
792
+        $forme = '';
793
+    }
794 794
 
795
-	return affdate_base($numdate, 'nom_mois', ['param' => $forme]);
795
+    return affdate_base($numdate, 'nom_mois', ['param' => $forme]);
796 796
 }
797 797
 
798 798
 /**
@@ -810,7 +810,7 @@  discard block
 block discarded – undo
810 810
  *     Année (sur 4 chiffres)
811 811
  **/
812 812
 function annee($numdate): string {
813
-	return affdate_base($numdate, 'annee');
813
+    return affdate_base($numdate, 'annee');
814 814
 }
815 815
 
816 816
 
@@ -840,11 +840,11 @@  discard block
 block discarded – undo
840 840
  *     La date formatée
841 841
  **/
842 842
 function saison($numdate, $hemisphere = 'nord'): string {
843
-	if ($hemisphere !== 'sud') {
844
-		$hemisphere = 'nord';
845
-	}
843
+    if ($hemisphere !== 'sud') {
844
+        $hemisphere = 'nord';
845
+    }
846 846
 
847
-	return affdate_base($numdate, 'saison', ['param' => $hemisphere]);
847
+    return affdate_base($numdate, 'saison', ['param' => $hemisphere]);
848 848
 }
849 849
 
850 850
 
@@ -873,11 +873,11 @@  discard block
 block discarded – undo
873 873
  *     La date formatée
874 874
  **/
875 875
 function saison_annee($numdate, $hemisphere = 'nord'): string {
876
-	if ($hemisphere !== 'sud') {
877
-		$hemisphere = 'nord';
878
-	}
876
+    if ($hemisphere !== 'sud') {
877
+        $hemisphere = 'nord';
878
+    }
879 879
 
880
-	return affdate_base($numdate, 'saison_annee', ['param' => $hemisphere]);
880
+    return affdate_base($numdate, 'saison_annee', ['param' => $hemisphere]);
881 881
 }
882 882
 
883 883
 /**
@@ -905,7 +905,7 @@  discard block
 block discarded – undo
905 905
  *     La date formatée
906 906
  **/
907 907
 function affdate($numdate, $format = 'entier'): string {
908
-	return affdate_base($numdate, $format);
908
+    return affdate_base($numdate, $format);
909 909
 }
910 910
 
911 911
 
@@ -932,7 +932,7 @@  discard block
 block discarded – undo
932 932
  *     La date formatée
933 933
  **/
934 934
 function affdate_court($numdate, $annee_courante = null): string {
935
-	return affdate_base($numdate, 'court', ['annee_courante' => $annee_courante]);
935
+    return affdate_base($numdate, 'court', ['annee_courante' => $annee_courante]);
936 936
 }
937 937
 
938 938
 
@@ -959,7 +959,7 @@  discard block
 block discarded – undo
959 959
  *     La date formatée
960 960
  **/
961 961
 function affdate_jourcourt($numdate, $annee_courante = null): string {
962
-	return affdate_base($numdate, 'jourcourt', ['annee_courante' => $annee_courante]);
962
+    return affdate_base($numdate, 'jourcourt', ['annee_courante' => $annee_courante]);
963 963
 }
964 964
 
965 965
 /**
@@ -977,7 +977,7 @@  discard block
 block discarded – undo
977 977
  *     La date formatée
978 978
  **/
979 979
 function affdate_mois_annee($numdate): string {
980
-	return affdate_base($numdate, 'mois_annee');
980
+    return affdate_base($numdate, 'mois_annee');
981 981
 }
982 982
 
983 983
 /**
@@ -995,16 +995,16 @@  discard block
 block discarded – undo
995 995
  *     La date formatée, sinon ''
996 996
  **/
997 997
 function affdate_heure($numdate): string {
998
-	$date_array = recup_date($numdate);
999
-	if (!$date_array) {
1000
-		return '';
1001
-	}
1002
-	[$annee, $mois, $jour, $heures, $minutes, $sec] = $date_array;
1003
-
1004
-	return _T('date_fmt_jour_heure', [
1005
-		'jour' => affdate($numdate),
1006
-		'heure' => _T('date_fmt_heures_minutes', ['h' => $heures, 'm' => $minutes])
1007
-	]);
998
+    $date_array = recup_date($numdate);
999
+    if (!$date_array) {
1000
+        return '';
1001
+    }
1002
+    [$annee, $mois, $jour, $heures, $minutes, $sec] = $date_array;
1003
+
1004
+    return _T('date_fmt_jour_heure', [
1005
+        'jour' => affdate($numdate),
1006
+        'heure' => _T('date_fmt_heures_minutes', ['h' => $heures, 'm' => $minutes])
1007
+    ]);
1008 1008
 }
1009 1009
 
1010 1010
 /**
@@ -1036,117 +1036,117 @@  discard block
 block discarded – undo
1036 1036
  *     texte de la date
1037 1037
  */
1038 1038
 function affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui', $forme = ''): string {
1039
-	$abbr = $jour = '';
1040
-	$affdate = 'affdate_jourcourt';
1041
-	if (strpos($forme, 'abbr') !== false) {
1042
-		$abbr = 'abbr';
1043
-	}
1044
-	if (strpos($forme, 'annee') !== false) {
1045
-		$affdate = 'affdate';
1046
-	}
1047
-	if (strpos($forme, 'jour') !== false) {
1048
-		$jour = 'jour';
1049
-	}
1050
-
1051
-	$dtstart = $dtend = $dtabbr = '';
1052
-	if (strpos($forme, 'hcal') !== false) {
1053
-		$dtstart = "<abbr class='dtstart' title='" . date_iso($date_debut) . "'>";
1054
-		$dtend = "<abbr class='dtend' title='" . date_iso($date_fin) . "'>";
1055
-		$dtabbr = '</abbr>';
1056
-	}
1057
-
1058
-	$date_debut = strtotime($date_debut);
1059
-	$date_fin = strtotime($date_fin);
1060
-	$d = date('Y-m-d', $date_debut);
1061
-	$f = date('Y-m-d', $date_fin);
1062
-	$h = ($horaire === 'oui' or $horaire === true);
1063
-	$hd = _T('date_fmt_heures_minutes_court', ['h' => date('H', $date_debut), 'm' => date('i', $date_debut)]);
1064
-	$hf = _T('date_fmt_heures_minutes_court', ['h' => date('H', $date_fin), 'm' => date('i', $date_fin)]);
1065
-
1066
-	if ($d == $f) { // meme jour
1067
-		$nomjour = nom_jour($d, $abbr);
1068
-		$s = $affdate($d);
1069
-		$s = _T('date_fmt_jour', ['nomjour' => $nomjour, 'jour' => $s]);
1070
-		if ($h) {
1071
-			if ($hd == $hf) {
1072
-				// Lundi 20 fevrier a 18h25
1073
-				$s = spip_ucfirst(_T('date_fmt_jour_heure', ['jour' => $s, 'heure' => $hd]));
1074
-				$s = "$dtstart$s$dtabbr";
1075
-			} else {
1076
-				// Le <abbr...>lundi 20 fevrier de 18h00</abbr> a <abbr...>20h00</abbr>
1077
-				if ($dtabbr && $dtstart && $dtend) {
1078
-					$s = _T(
1079
-						'date_fmt_jour_heure_debut_fin_abbr',
1080
-						[
1081
-						'jour' => spip_ucfirst($s),
1082
-						'heure_debut' => $hd,
1083
-						'heure_fin' => $hf,
1084
-						'dtstart' => $dtstart,
1085
-						'dtend' => $dtend,
1086
-						'dtabbr' => $dtabbr
1087
-						],
1088
-						[
1089
-							'sanitize' => false
1090
-						]
1091
-					);
1092
-				} // Le lundi 20 fevrier de 18h00 a 20h00
1093
-				else {
1094
-					$s = spip_ucfirst(_T(
1095
-						'date_fmt_jour_heure_debut_fin',
1096
-						['jour' => $s, 'heure_debut' => $hd, 'heure_fin' => $hf]
1097
-					));
1098
-				}
1099
-			}
1100
-		} else {
1101
-			if ($dtabbr && $dtstart) {
1102
-				$s = $dtstart . spip_ucfirst($s) . $dtabbr;
1103
-			} else {
1104
-				$s = spip_ucfirst($s);
1105
-			}
1106
-		}
1107
-	} else {
1108
-		if ((date('Y-m', $date_debut)) == date('Y-m', $date_fin)) { // meme annee et mois, jours differents
1109
-			if (!$h) {
1110
-				$date_debut = jour($d);
1111
-			} else {
1112
-				$date_debut = affdate_jourcourt($d, date('Y', $date_fin));
1113
-			}
1114
-			$date_fin = $affdate($f);
1115
-			if ($jour) {
1116
-				$nomjour_debut = nom_jour($d, $abbr);
1117
-				$date_debut = _T('date_fmt_jour', ['nomjour' => $nomjour_debut, 'jour' => $date_debut]);
1118
-				$nomjour_fin = nom_jour($f, $abbr);
1119
-				$date_fin = _T('date_fmt_jour', ['nomjour' => $nomjour_fin, 'jour' => $date_fin]);
1120
-			}
1121
-			if ($h) {
1122
-				$date_debut = _T('date_fmt_jour_heure', ['jour' => $date_debut, 'heure' => $hd]);
1123
-				$date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1124
-			}
1125
-			$date_debut = $dtstart . $date_debut . $dtabbr;
1126
-			$date_fin = $dtend . $date_fin . $dtabbr;
1127
-
1128
-			$s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1129
-		} else {
1130
-			$date_debut = affdate_jourcourt($d, date('Y', $date_fin));
1131
-			$date_fin = $affdate($f);
1132
-			if ($jour) {
1133
-				$nomjour_debut = nom_jour($d, $abbr);
1134
-				$date_debut = _T('date_fmt_jour', ['nomjour' => $nomjour_debut, 'jour' => $date_debut]);
1135
-				$nomjour_fin = nom_jour($f, $abbr);
1136
-				$date_fin = _T('date_fmt_jour', ['nomjour' => $nomjour_fin, 'jour' => $date_fin]);
1137
-			}
1138
-			if ($h) {
1139
-				$date_debut = _T('date_fmt_jour_heure', ['jour' => $date_debut, 'heure' => $hd]);
1140
-				$date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1141
-			}
1142
-
1143
-			$date_debut = $dtstart . $date_debut . $dtabbr;
1144
-			$date_fin = $dtend . $date_fin . $dtabbr;
1145
-			$s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1146
-		}
1147
-	}
1148
-
1149
-	return $s;
1039
+    $abbr = $jour = '';
1040
+    $affdate = 'affdate_jourcourt';
1041
+    if (strpos($forme, 'abbr') !== false) {
1042
+        $abbr = 'abbr';
1043
+    }
1044
+    if (strpos($forme, 'annee') !== false) {
1045
+        $affdate = 'affdate';
1046
+    }
1047
+    if (strpos($forme, 'jour') !== false) {
1048
+        $jour = 'jour';
1049
+    }
1050
+
1051
+    $dtstart = $dtend = $dtabbr = '';
1052
+    if (strpos($forme, 'hcal') !== false) {
1053
+        $dtstart = "<abbr class='dtstart' title='" . date_iso($date_debut) . "'>";
1054
+        $dtend = "<abbr class='dtend' title='" . date_iso($date_fin) . "'>";
1055
+        $dtabbr = '</abbr>';
1056
+    }
1057
+
1058
+    $date_debut = strtotime($date_debut);
1059
+    $date_fin = strtotime($date_fin);
1060
+    $d = date('Y-m-d', $date_debut);
1061
+    $f = date('Y-m-d', $date_fin);
1062
+    $h = ($horaire === 'oui' or $horaire === true);
1063
+    $hd = _T('date_fmt_heures_minutes_court', ['h' => date('H', $date_debut), 'm' => date('i', $date_debut)]);
1064
+    $hf = _T('date_fmt_heures_minutes_court', ['h' => date('H', $date_fin), 'm' => date('i', $date_fin)]);
1065
+
1066
+    if ($d == $f) { // meme jour
1067
+        $nomjour = nom_jour($d, $abbr);
1068
+        $s = $affdate($d);
1069
+        $s = _T('date_fmt_jour', ['nomjour' => $nomjour, 'jour' => $s]);
1070
+        if ($h) {
1071
+            if ($hd == $hf) {
1072
+                // Lundi 20 fevrier a 18h25
1073
+                $s = spip_ucfirst(_T('date_fmt_jour_heure', ['jour' => $s, 'heure' => $hd]));
1074
+                $s = "$dtstart$s$dtabbr";
1075
+            } else {
1076
+                // Le <abbr...>lundi 20 fevrier de 18h00</abbr> a <abbr...>20h00</abbr>
1077
+                if ($dtabbr && $dtstart && $dtend) {
1078
+                    $s = _T(
1079
+                        'date_fmt_jour_heure_debut_fin_abbr',
1080
+                        [
1081
+                        'jour' => spip_ucfirst($s),
1082
+                        'heure_debut' => $hd,
1083
+                        'heure_fin' => $hf,
1084
+                        'dtstart' => $dtstart,
1085
+                        'dtend' => $dtend,
1086
+                        'dtabbr' => $dtabbr
1087
+                        ],
1088
+                        [
1089
+                            'sanitize' => false
1090
+                        ]
1091
+                    );
1092
+                } // Le lundi 20 fevrier de 18h00 a 20h00
1093
+                else {
1094
+                    $s = spip_ucfirst(_T(
1095
+                        'date_fmt_jour_heure_debut_fin',
1096
+                        ['jour' => $s, 'heure_debut' => $hd, 'heure_fin' => $hf]
1097
+                    ));
1098
+                }
1099
+            }
1100
+        } else {
1101
+            if ($dtabbr && $dtstart) {
1102
+                $s = $dtstart . spip_ucfirst($s) . $dtabbr;
1103
+            } else {
1104
+                $s = spip_ucfirst($s);
1105
+            }
1106
+        }
1107
+    } else {
1108
+        if ((date('Y-m', $date_debut)) == date('Y-m', $date_fin)) { // meme annee et mois, jours differents
1109
+            if (!$h) {
1110
+                $date_debut = jour($d);
1111
+            } else {
1112
+                $date_debut = affdate_jourcourt($d, date('Y', $date_fin));
1113
+            }
1114
+            $date_fin = $affdate($f);
1115
+            if ($jour) {
1116
+                $nomjour_debut = nom_jour($d, $abbr);
1117
+                $date_debut = _T('date_fmt_jour', ['nomjour' => $nomjour_debut, 'jour' => $date_debut]);
1118
+                $nomjour_fin = nom_jour($f, $abbr);
1119
+                $date_fin = _T('date_fmt_jour', ['nomjour' => $nomjour_fin, 'jour' => $date_fin]);
1120
+            }
1121
+            if ($h) {
1122
+                $date_debut = _T('date_fmt_jour_heure', ['jour' => $date_debut, 'heure' => $hd]);
1123
+                $date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1124
+            }
1125
+            $date_debut = $dtstart . $date_debut . $dtabbr;
1126
+            $date_fin = $dtend . $date_fin . $dtabbr;
1127
+
1128
+            $s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1129
+        } else {
1130
+            $date_debut = affdate_jourcourt($d, date('Y', $date_fin));
1131
+            $date_fin = $affdate($f);
1132
+            if ($jour) {
1133
+                $nomjour_debut = nom_jour($d, $abbr);
1134
+                $date_debut = _T('date_fmt_jour', ['nomjour' => $nomjour_debut, 'jour' => $date_debut]);
1135
+                $nomjour_fin = nom_jour($f, $abbr);
1136
+                $date_fin = _T('date_fmt_jour', ['nomjour' => $nomjour_fin, 'jour' => $date_fin]);
1137
+            }
1138
+            if ($h) {
1139
+                $date_debut = _T('date_fmt_jour_heure', ['jour' => $date_debut, 'heure' => $hd]);
1140
+                $date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1141
+            }
1142
+
1143
+            $date_debut = $dtstart . $date_debut . $dtabbr;
1144
+            $date_fin = $dtend . $date_fin . $dtabbr;
1145
+            $s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1146
+        }
1147
+    }
1148
+
1149
+    return $s;
1150 1150
 }
1151 1151
 
1152 1152
 /**
@@ -1167,10 +1167,10 @@  discard block
 block discarded – undo
1167 1167
  *     Date au format ical
1168 1168
  **/
1169 1169
 function date_ical($date, $addminutes = 0): string {
1170
-	[$heures, $minutes, $secondes] = recup_heure($date);
1171
-	[$annee, $mois, $jour] = recup_date($date);
1170
+    [$heures, $minutes, $secondes] = recup_heure($date);
1171
+    [$annee, $mois, $jour] = recup_date($date);
1172 1172
 
1173
-	return gmdate('Ymd\THis\Z', mktime($heures, $minutes + $addminutes, $secondes, $mois, $jour, $annee));
1173
+    return gmdate('Ymd\THis\Z', mktime($heures, $minutes + $addminutes, $secondes, $mois, $jour, $annee));
1174 1174
 }
1175 1175
 
1176 1176
 
@@ -1194,14 +1194,14 @@  discard block
 block discarded – undo
1194 1194
  *     La date formatée
1195 1195
  **/
1196 1196
 function date_iso($date_heure): string {
1197
-	$date = recup_date($date_heure);
1198
-	$annee = $date[0] ?? null;
1199
-	$mois = $date[1] ?? null;
1200
-	$jour = $date[2] ?? null;
1201
-	[$heures, $minutes, $secondes] = recup_heure($date_heure);
1202
-	$time = @mktime($heures, $minutes, $secondes, $mois, $jour, $annee);
1203
-
1204
-	return gmdate('Y-m-d\TH:i:s\Z', $time);
1197
+    $date = recup_date($date_heure);
1198
+    $annee = $date[0] ?? null;
1199
+    $mois = $date[1] ?? null;
1200
+    $jour = $date[2] ?? null;
1201
+    [$heures, $minutes, $secondes] = recup_heure($date_heure);
1202
+    $time = @mktime($heures, $minutes, $secondes, $mois, $jour, $annee);
1203
+
1204
+    return gmdate('Y-m-d\TH:i:s\Z', $time);
1205 1205
 }
1206 1206
 
1207 1207
 /**
@@ -1224,11 +1224,11 @@  discard block
 block discarded – undo
1224 1224
  *     La date formatée
1225 1225
  **/
1226 1226
 function date_822($date_heure): string {
1227
-	[$annee, $mois, $jour] = recup_date($date_heure);
1228
-	[$heures, $minutes, $secondes] = recup_heure($date_heure);
1229
-	$time = mktime($heures, $minutes, $secondes, $mois, $jour, $annee);
1227
+    [$annee, $mois, $jour] = recup_date($date_heure);
1228
+    [$heures, $minutes, $secondes] = recup_heure($date_heure);
1229
+    $time = mktime($heures, $minutes, $secondes, $mois, $jour, $annee);
1230 1230
 
1231
-	return date('r', $time);
1231
+    return date('r', $time);
1232 1232
 }
1233 1233
 
1234 1234
 /**
@@ -1244,11 +1244,11 @@  discard block
 block discarded – undo
1244 1244
  *     Date au format `Ymd`
1245 1245
  **/
1246 1246
 function date_anneemoisjour($d): string {
1247
-	if (!$d) {
1248
-		$d = date('Y-m-d');
1249
-	}
1247
+    if (!$d) {
1248
+        $d = date('Y-m-d');
1249
+    }
1250 1250
 
1251
-	return substr($d, 0, 4) . substr($d, 5, 2) . substr($d, 8, 2);
1251
+    return substr($d, 0, 4) . substr($d, 5, 2) . substr($d, 8, 2);
1252 1252
 }
1253 1253
 
1254 1254
 /**
@@ -1264,11 +1264,11 @@  discard block
 block discarded – undo
1264 1264
  *     Date au format `Ym`
1265 1265
  **/
1266 1266
 function date_anneemois($d): string {
1267
-	if (!$d) {
1268
-		$d = date('Y-m-d');
1269
-	}
1267
+    if (!$d) {
1268
+        $d = date('Y-m-d');
1269
+    }
1270 1270
 
1271
-	return substr($d, 0, 4) . substr($d, 5, 2);
1271
+    return substr($d, 0, 4) . substr($d, 5, 2);
1272 1272
 }
1273 1273
 
1274 1274
 /**
@@ -1284,13 +1284,13 @@  discard block
 block discarded – undo
1284 1284
  *     Date au lundi de la même semaine au format `Ymd`
1285 1285
  **/
1286 1286
 function date_debut_semaine($annee, $mois, $jour): string {
1287
-	$w_day = date('w', mktime(0, 0, 0, $mois, $jour, $annee));
1288
-	if ($w_day == 0) {
1289
-		$w_day = 7;
1290
-	} // Gaffe: le dimanche est zero
1291
-	$debut = $jour - $w_day + 1;
1287
+    $w_day = date('w', mktime(0, 0, 0, $mois, $jour, $annee));
1288
+    if ($w_day == 0) {
1289
+        $w_day = 7;
1290
+    } // Gaffe: le dimanche est zero
1291
+    $debut = $jour - $w_day + 1;
1292 1292
 
1293
-	return date('Ymd', mktime(0, 0, 0, $mois, $debut, $annee));
1293
+    return date('Ymd', mktime(0, 0, 0, $mois, $debut, $annee));
1294 1294
 }
1295 1295
 
1296 1296
 /**
@@ -1306,11 +1306,11 @@  discard block
 block discarded – undo
1306 1306
  *     Date au dimanche de la même semaine au format `Ymd`
1307 1307
  **/
1308 1308
 function date_fin_semaine($annee, $mois, $jour): string {
1309
-	$w_day = date('w', mktime(0, 0, 0, $mois, $jour, $annee));
1310
-	if ($w_day == 0) {
1311
-		$w_day = 7;
1312
-	} // Gaffe: le dimanche est zero
1313
-	$debut = $jour - $w_day + 1;
1309
+    $w_day = date('w', mktime(0, 0, 0, $mois, $jour, $annee));
1310
+    if ($w_day == 0) {
1311
+        $w_day = 7;
1312
+    } // Gaffe: le dimanche est zero
1313
+    $debut = $jour - $w_day + 1;
1314 1314
 
1315
-	return date('Ymd', mktime(0, 0, 0, $mois, $debut + 6, $annee));
1315
+    return date('Ymd', mktime(0, 0, 0, $mois, $debut + 6, $annee));
1316 1316
 }
Please login to merge, or discard this patch.
Spacing   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
 function extraire_date($texte): string {
39 39
 	// format = 2001-08
40 40
 	if (preg_match(',([1-2][0-9]{3})[^0-9]*(1[0-2]|0?[1-9]),', $texte, $regs)) {
41
-		return $regs[1] . '-' . sprintf('%02d', $regs[2]) . '-01';
41
+		return $regs[1].'-'.sprintf('%02d', $regs[2]).'-01';
42 42
 	}
43 43
 	return '';
44 44
 }
@@ -69,11 +69,11 @@  discard block
 block discarded – undo
69 69
 		}
70 70
 		if (preg_match('#^([12][0-9]{3})([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
71 71
 			$regs = array_pad($regs, 4, null); // eviter notice php
72
-			$date = $regs[1] . '-00-00' . $regs[3];
72
+			$date = $regs[1].'-00-00'.$regs[3];
73 73
 		} else {
74 74
 			if (preg_match('#^([12][0-9]{3}[-/][01]?[0-9])([-/]00)?( [-0-9:]+)?$#', $date, $regs)) {
75 75
 				$regs = array_pad($regs, 4, null); // eviter notice php
76
-				$date = preg_replace('@/@', '-', $regs[1]) . '-00' . $regs[3];
76
+				$date = preg_replace('@/@', '-', $regs[1]).'-00'.$regs[3];
77 77
 			} else {
78 78
 				$date = date('Y-m-d H:i:s', strtotime($date));
79 79
 			}
@@ -100,7 +100,7 @@  discard block
 block discarded – undo
100 100
 	$letexte ??= '';
101 101
 	if (
102 102
 		!$verif_format_date
103
-		or (in_array(strlen($letexte), [10,19]) and
103
+		or (in_array(strlen($letexte), [10, 19]) and
104 104
 			  preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}(\s[0-9]{2}:[0-9]{2}:[0-9]{2})?$/', $letexte))
105 105
 	) {
106 106
 		if (strncmp('0000-00-00', $letexte, 10) == 0) {
@@ -390,17 +390,17 @@  discard block
 block discarded – undo
390 390
 	if ($decal > 3600 * 24 * 30) {
391 391
 		$mois = floor($decal / (3600 * 24 * 30));
392 392
 		if ($mois < 2) {
393
-			$delai = "$mois " . _T('date_un_mois');
393
+			$delai = "$mois "._T('date_un_mois');
394 394
 		} else {
395
-			$delai = "$mois " . _T('date_mois');
395
+			$delai = "$mois "._T('date_mois');
396 396
 		}
397 397
 	} else {
398 398
 		if ($decal > 3600 * 24 * 7) {
399 399
 			$semaines = floor($decal / (3600 * 24 * 7));
400 400
 			if ($semaines < 2) {
401
-				$delai = "$semaines " . _T('date_une_semaine');
401
+				$delai = "$semaines "._T('date_une_semaine');
402 402
 			} else {
403
-				$delai = "$semaines " . _T('date_semaines');
403
+				$delai = "$semaines "._T('date_semaines');
404 404
 			}
405 405
 		} else {
406 406
 			if ($decal > 3600 * 24) {
@@ -408,30 +408,30 @@  discard block
 block discarded – undo
408 408
 				if ($jours < 2) {
409 409
 					return $il_y_a == 'date_dans' ? _T('date_demain') : _T('date_hier');
410 410
 				} else {
411
-					$delai = "$jours " . _T('date_jours');
411
+					$delai = "$jours "._T('date_jours');
412 412
 				}
413 413
 			} else {
414 414
 				if ($decal >= 3600) {
415 415
 					$heures = floor($decal / 3600);
416 416
 					if ($heures < 2) {
417
-						$delai = "$heures " . _T('date_une_heure');
417
+						$delai = "$heures "._T('date_une_heure');
418 418
 					} else {
419
-						$delai = "$heures " . _T('date_heures');
419
+						$delai = "$heures "._T('date_heures');
420 420
 					}
421 421
 				} else {
422 422
 					if ($decal >= 60) {
423 423
 						$minutes = floor($decal / 60);
424 424
 						if ($minutes < 2) {
425
-							$delai = "$minutes " . _T('date_une_minute');
425
+							$delai = "$minutes "._T('date_une_minute');
426 426
 						} else {
427
-							$delai = "$minutes " . _T('date_minutes');
427
+							$delai = "$minutes "._T('date_minutes');
428 428
 						}
429 429
 					} else {
430 430
 						$secondes = ceil($decal);
431 431
 						if ($secondes < 2) {
432
-							$delai = "$secondes " . _T('date_une_seconde');
432
+							$delai = "$secondes "._T('date_une_seconde');
433 433
 						} else {
434
-							$delai = "$secondes " . _T('date_secondes');
434
+							$delai = "$secondes "._T('date_secondes');
435 435
 						}
436 436
 					}
437 437
 				}
@@ -524,7 +524,7 @@  discard block
 block discarded – undo
524 524
 		$njour = 0;
525 525
 	} else {
526 526
 		$njour = intval($jour);
527
-		if ($jourth = _T('date_jnum' . $jour)) {
527
+		if ($jourth = _T('date_jnum'.$jour)) {
528 528
 			$jour = $jourth;
529 529
 		}
530 530
 	}
@@ -532,10 +532,10 @@  discard block
 block discarded – undo
532 532
 	$mois = intval($mois);
533 533
 	if ($mois > 0 and $mois < 13) {
534 534
 		/* Traiter le cas "abbr" pour les noms de mois */
535
-		$param = ((isset($options['param']) and $options['param'] === 'abbr') ? '_' . $options['param'] : '');
536
-		$nommois = _T('date_mois_' . $mois . $param);
535
+		$param = ((isset($options['param']) and $options['param'] === 'abbr') ? '_'.$options['param'] : '');
536
+		$nommois = _T('date_mois_'.$mois.$param);
537 537
 		if ($jour) {
538
-			$jourmois = _T('date_de_mois_' . $mois, ['j' => $jour, 'nommois' => $nommois]);
538
+			$jourmois = _T('date_de_mois_'.$mois, ['j' => $jour, 'nommois' => $nommois]);
539 539
 		} else {
540 540
 			$jourmois = $nommois;
541 541
 		}
@@ -545,7 +545,7 @@  discard block
 block discarded – undo
545 545
 	}
546 546
 
547 547
 	if ($annee < 0) {
548
-		$annee = -$annee . ' ' . _T('date_avant_jc');
548
+		$annee = -$annee.' '._T('date_avant_jc');
549 549
 		$avjc = true;
550 550
 	} else {
551 551
 		$avjc = false;
@@ -571,11 +571,11 @@  discard block
 block discarded – undo
571 571
 				}
572 572
 			}
573 573
 			if ($vue == 'saison') {
574
-				return $saison ? _T('date_saison_' . $saison) : '';
574
+				return $saison ? _T('date_saison_'.$saison) : '';
575 575
 			} else {
576 576
 				return $saison ? trim(_T(
577 577
 					'date_fmt_saison_annee',
578
-					['saison' => _T('date_saison_' . $saison), 'annee' => $annee]
578
+					['saison' => _T('date_saison_'.$saison), 'annee' => $annee]
579 579
 				)) : '';
580 580
 			}
581 581
 
@@ -652,9 +652,9 @@  discard block
 block discarded – undo
652 652
 			}
653 653
 			$nom = mktime(1, 1, 1, $mois, $njour, $annee);
654 654
 			$nom = 1 + (int) date('w', $nom);
655
-			$param = ((isset($options['param']) and $options['param']) ? '_' . $options['param'] : '');
655
+			$param = ((isset($options['param']) and $options['param']) ? '_'.$options['param'] : '');
656 656
 
657
-			return _T('date_jour_' . $nom . $param);
657
+			return _T('date_jour_'.$nom.$param);
658 658
 
659 659
 		case 'mois_annee':
660 660
 			if ($avjc) {
@@ -671,7 +671,7 @@  discard block
 block discarded – undo
671 671
 		default:
672 672
 			[$annee, $mois, $jour, $heures, $minutes, $secondes] = $date_array;
673 673
 			// il faut envoyer jour = 1 si jour pas défini, c'est le comportement qu'on avait historiquement en envoyant ''
674
-			if (!$time = mktime($heures, $minutes, $secondes, $mois, is_numeric($jour) ? $jour : 1 , $annee)) {
674
+			if (!$time = mktime($heures, $minutes, $secondes, $mois, is_numeric($jour) ? $jour : 1, $annee)) {
675 675
 				$time = strtotime($numdate);
676 676
 			}
677 677
 			return date($vue, $time);
@@ -1050,8 +1050,8 @@  discard block
 block discarded – undo
1050 1050
 
1051 1051
 	$dtstart = $dtend = $dtabbr = '';
1052 1052
 	if (strpos($forme, 'hcal') !== false) {
1053
-		$dtstart = "<abbr class='dtstart' title='" . date_iso($date_debut) . "'>";
1054
-		$dtend = "<abbr class='dtend' title='" . date_iso($date_fin) . "'>";
1053
+		$dtstart = "<abbr class='dtstart' title='".date_iso($date_debut)."'>";
1054
+		$dtend = "<abbr class='dtend' title='".date_iso($date_fin)."'>";
1055 1055
 		$dtabbr = '</abbr>';
1056 1056
 	}
1057 1057
 
@@ -1099,7 +1099,7 @@  discard block
 block discarded – undo
1099 1099
 			}
1100 1100
 		} else {
1101 1101
 			if ($dtabbr && $dtstart) {
1102
-				$s = $dtstart . spip_ucfirst($s) . $dtabbr;
1102
+				$s = $dtstart.spip_ucfirst($s).$dtabbr;
1103 1103
 			} else {
1104 1104
 				$s = spip_ucfirst($s);
1105 1105
 			}
@@ -1122,8 +1122,8 @@  discard block
 block discarded – undo
1122 1122
 				$date_debut = _T('date_fmt_jour_heure', ['jour' => $date_debut, 'heure' => $hd]);
1123 1123
 				$date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1124 1124
 			}
1125
-			$date_debut = $dtstart . $date_debut . $dtabbr;
1126
-			$date_fin = $dtend . $date_fin . $dtabbr;
1125
+			$date_debut = $dtstart.$date_debut.$dtabbr;
1126
+			$date_fin = $dtend.$date_fin.$dtabbr;
1127 1127
 
1128 1128
 			$s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1129 1129
 		} else {
@@ -1140,8 +1140,8 @@  discard block
 block discarded – undo
1140 1140
 				$date_fin = _T('date_fmt_jour_heure', ['jour' => $date_fin, 'heure' => $hf]);
1141 1141
 			}
1142 1142
 
1143
-			$date_debut = $dtstart . $date_debut . $dtabbr;
1144
-			$date_fin = $dtend . $date_fin . $dtabbr;
1143
+			$date_debut = $dtstart.$date_debut.$dtabbr;
1144
+			$date_fin = $dtend.$date_fin.$dtabbr;
1145 1145
 			$s = _T('date_fmt_periode', ['date_debut' => $date_debut, 'date_fin' => $date_fin]);
1146 1146
 		}
1147 1147
 	}
@@ -1248,7 +1248,7 @@  discard block
 block discarded – undo
1248 1248
 		$d = date('Y-m-d');
1249 1249
 	}
1250 1250
 
1251
-	return substr($d, 0, 4) . substr($d, 5, 2) . substr($d, 8, 2);
1251
+	return substr($d, 0, 4).substr($d, 5, 2).substr($d, 8, 2);
1252 1252
 }
1253 1253
 
1254 1254
 /**
@@ -1268,7 +1268,7 @@  discard block
 block discarded – undo
1268 1268
 		$d = date('Y-m-d');
1269 1269
 	}
1270 1270
 
1271
-	return substr($d, 0, 4) . substr($d, 5, 2);
1271
+	return substr($d, 0, 4).substr($d, 5, 2);
1272 1272
 }
1273 1273
 
1274 1274
 /**
Please login to merge, or discard this patch.
ecrire/inc/filtres_images_lib_mini.php 3 patches
Indentation   +1339 added lines, -1339 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 include_spip('inc/filtres'); // par precaution
23 23
 include_spip('inc/filtres_images_mini'); // par precaution
@@ -37,21 +37,21 @@  discard block
 block discarded – undo
37 37
  *     Le code de la couleur en hexadécimal.
38 38
  */
39 39
 function _couleur_dec_to_hex($red, $green, $blue) {
40
-	$red = dechex($red);
41
-	$green = dechex($green);
42
-	$blue = dechex($blue);
43
-
44
-	if (strlen($red) == 1) {
45
-		$red = '0' . $red;
46
-	}
47
-	if (strlen($green) == 1) {
48
-		$green = '0' . $green;
49
-	}
50
-	if (strlen($blue) == 1) {
51
-		$blue = '0' . $blue;
52
-	}
53
-
54
-	return "$red$green$blue";
40
+    $red = dechex($red);
41
+    $green = dechex($green);
42
+    $blue = dechex($blue);
43
+
44
+    if (strlen($red) == 1) {
45
+        $red = '0' . $red;
46
+    }
47
+    if (strlen($green) == 1) {
48
+        $green = '0' . $green;
49
+    }
50
+    if (strlen($blue) == 1) {
51
+        $blue = '0' . $blue;
52
+    }
53
+
54
+    return "$red$green$blue";
55 55
 }
56 56
 
57 57
 /**
@@ -63,18 +63,18 @@  discard block
 block discarded – undo
63 63
  *     Un tableau des 3 éléments : rouge, vert, bleu.
64 64
  */
65 65
 function _couleur_hex_to_dec($couleur) {
66
-	$couleur ??= '';
67
-	$couleur = couleur_html_to_hex($couleur);
68
-	$couleur = ltrim($couleur, '#');
69
-	if (strlen($couleur) === 3) {
70
-		$couleur = $couleur[0] . $couleur[0] . $couleur[1] . $couleur[1] . $couleur[2] . $couleur[2];
71
-	}
72
-	$retour = [];
73
-	$retour['red'] = hexdec(substr($couleur, 0, 2));
74
-	$retour['green'] = hexdec(substr($couleur, 2, 2));
75
-	$retour['blue'] = hexdec(substr($couleur, 4, 2));
76
-
77
-	return $retour;
66
+    $couleur ??= '';
67
+    $couleur = couleur_html_to_hex($couleur);
68
+    $couleur = ltrim($couleur, '#');
69
+    if (strlen($couleur) === 3) {
70
+        $couleur = $couleur[0] . $couleur[0] . $couleur[1] . $couleur[1] . $couleur[2] . $couleur[2];
71
+    }
72
+    $retour = [];
73
+    $retour['red'] = hexdec(substr($couleur, 0, 2));
74
+    $retour['green'] = hexdec(substr($couleur, 2, 2));
75
+    $retour['blue'] = hexdec(substr($couleur, 4, 2));
76
+
77
+    return $retour;
78 78
 }
79 79
 
80 80
 
@@ -91,8 +91,8 @@  discard block
 block discarded – undo
91 91
  *     Le code de la couleur en hexadécimal.
92 92
  */
93 93
 function _couleur_hsl_to_hex($hue, $saturation, $lightness) {
94
-	$rgb = _couleur_hsl_to_rgb($hue, $saturation, $lightness);
95
-	return _couleur_dec_to_hex($rgb['r'], $rgb['g'], $rgb['b']);
94
+    $rgb = _couleur_hsl_to_rgb($hue, $saturation, $lightness);
95
+    return _couleur_dec_to_hex($rgb['r'], $rgb['g'], $rgb['b']);
96 96
 }
97 97
 
98 98
 /**
@@ -104,8 +104,8 @@  discard block
 block discarded – undo
104 104
  *     Un tableau des 3 éléments : teinte, saturation, luminosité.
105 105
  */
106 106
 function _couleur_hex_to_hsl($couleur) {
107
-	$rgb = _couleur_hex_to_dec($couleur);
108
-	return _couleur_rgb_to_hsl($rgb['red'], $rgb['green'], $rgb['blue']);
107
+    $rgb = _couleur_hex_to_dec($couleur);
108
+    return _couleur_rgb_to_hsl($rgb['red'], $rgb['green'], $rgb['blue']);
109 109
 }
110 110
 
111 111
 /**
@@ -120,59 +120,59 @@  discard block
 block discarded – undo
120 120
  * @return array
121 121
  */
122 122
 function _couleur_rgb_to_hsl($R, $G, $B) {
123
-	$H = null;
124
-	$var_R = ($R / 255); // Where RGB values = 0 ÷ 255
125
-	$var_G = ($G / 255);
126
-	$var_B = ($B / 255);
127
-
128
-	$var_Min = min($var_R, $var_G, $var_B);   //Min. value of RGB
129
-	$var_Max = max($var_R, $var_G, $var_B);   //Max. value of RGB
130
-	$del_Max = $var_Max - $var_Min;           //Delta RGB value
131
-
132
-	$L = ($var_Max + $var_Min) / 2;
133
-
134
-	if ($del_Max == 0) {
135
-		//This is a gray, no chroma...
136
-		$H = 0; //HSL results = 0 ÷ 1
137
-		$S = 0;
138
-	} else {
139
-		// Chromatic data...
140
-		if ($L < 0.5) {
141
-			$S = $del_Max / ($var_Max + $var_Min);
142
-		} else {
143
-			$S = $del_Max / (2 - $var_Max - $var_Min);
144
-		}
145
-
146
-		$del_R = ((($var_Max - $var_R) / 6) + ($del_Max / 2)) / $del_Max;
147
-		$del_G = ((($var_Max - $var_G) / 6) + ($del_Max / 2)) / $del_Max;
148
-		$del_B = ((($var_Max - $var_B) / 6) + ($del_Max / 2)) / $del_Max;
149
-
150
-		if ($var_R == $var_Max) {
151
-			$H = $del_B - $del_G;
152
-		} else {
153
-			if ($var_G == $var_Max) {
154
-				$H = (1 / 3) + $del_R - $del_B;
155
-			} else {
156
-				if ($var_B == $var_Max) {
157
-					$H = (2 / 3) + $del_G - $del_R;
158
-				}
159
-			}
160
-		}
161
-
162
-		if ($H < 0) {
163
-			$H += 1;
164
-		}
165
-		if ($H > 1) {
166
-			$H -= 1;
167
-		}
168
-	}
169
-
170
-	$ret = [];
171
-	$ret['h'] = $H;
172
-	$ret['s'] = $S;
173
-	$ret['l'] = $L;
174
-
175
-	return $ret;
123
+    $H = null;
124
+    $var_R = ($R / 255); // Where RGB values = 0 ÷ 255
125
+    $var_G = ($G / 255);
126
+    $var_B = ($B / 255);
127
+
128
+    $var_Min = min($var_R, $var_G, $var_B);   //Min. value of RGB
129
+    $var_Max = max($var_R, $var_G, $var_B);   //Max. value of RGB
130
+    $del_Max = $var_Max - $var_Min;           //Delta RGB value
131
+
132
+    $L = ($var_Max + $var_Min) / 2;
133
+
134
+    if ($del_Max == 0) {
135
+        //This is a gray, no chroma...
136
+        $H = 0; //HSL results = 0 ÷ 1
137
+        $S = 0;
138
+    } else {
139
+        // Chromatic data...
140
+        if ($L < 0.5) {
141
+            $S = $del_Max / ($var_Max + $var_Min);
142
+        } else {
143
+            $S = $del_Max / (2 - $var_Max - $var_Min);
144
+        }
145
+
146
+        $del_R = ((($var_Max - $var_R) / 6) + ($del_Max / 2)) / $del_Max;
147
+        $del_G = ((($var_Max - $var_G) / 6) + ($del_Max / 2)) / $del_Max;
148
+        $del_B = ((($var_Max - $var_B) / 6) + ($del_Max / 2)) / $del_Max;
149
+
150
+        if ($var_R == $var_Max) {
151
+            $H = $del_B - $del_G;
152
+        } else {
153
+            if ($var_G == $var_Max) {
154
+                $H = (1 / 3) + $del_R - $del_B;
155
+            } else {
156
+                if ($var_B == $var_Max) {
157
+                    $H = (2 / 3) + $del_G - $del_R;
158
+                }
159
+            }
160
+        }
161
+
162
+        if ($H < 0) {
163
+            $H += 1;
164
+        }
165
+        if ($H > 1) {
166
+            $H -= 1;
167
+        }
168
+    }
169
+
170
+    $ret = [];
171
+    $ret['h'] = $H;
172
+    $ret['s'] = $S;
173
+    $ret['l'] = $L;
174
+
175
+    return $ret;
176 176
 }
177 177
 
178 178
 
@@ -188,52 +188,52 @@  discard block
 block discarded – undo
188 188
  * @return array
189 189
  */
190 190
 function _couleur_hsl_to_rgb($H, $S, $L) {
191
-	// helper
192
-	$hue_2_rgb = function ($v1, $v2, $vH) {
193
-		if ($vH < 0) {
194
-			$vH += 1;
195
-		}
196
-		if ($vH > 1) {
197
-			$vH -= 1;
198
-		}
199
-		if ((6 * $vH) < 1) {
200
-			return ($v1 + ($v2 - $v1) * 6 * $vH);
201
-		}
202
-		if ((2 * $vH) < 1) {
203
-			return ($v2);
204
-		}
205
-		if ((3 * $vH) < 2) {
206
-			return ($v1 + ($v2 - $v1) * ((2 / 3) - $vH) * 6);
207
-		}
208
-
209
-		return ($v1);
210
-	};
211
-
212
-	if ($S == 0) {
213
-		// HSV values = 0 -> 1
214
-		$R = $L * 255;
215
-		$G = $L * 255;
216
-		$B = $L * 255;
217
-	} else {
218
-		if ($L < 0.5) {
219
-			$var_2 = $L * (1 + $S);
220
-		} else {
221
-			$var_2 = ($L + $S) - ($S * $L);
222
-		}
223
-
224
-		$var_1 = 2 * $L - $var_2;
225
-
226
-		$R = 255 * $hue_2_rgb($var_1, $var_2, $H + (1 / 3));
227
-		$G = 255 * $hue_2_rgb($var_1, $var_2, $H);
228
-		$B = 255 * $hue_2_rgb($var_1, $var_2, $H - (1 / 3));
229
-	}
230
-
231
-	$ret = [];
232
-	$ret['r'] = floor($R);
233
-	$ret['g'] = floor($G);
234
-	$ret['b'] = floor($B);
235
-
236
-	return $ret;
191
+    // helper
192
+    $hue_2_rgb = function ($v1, $v2, $vH) {
193
+        if ($vH < 0) {
194
+            $vH += 1;
195
+        }
196
+        if ($vH > 1) {
197
+            $vH -= 1;
198
+        }
199
+        if ((6 * $vH) < 1) {
200
+            return ($v1 + ($v2 - $v1) * 6 * $vH);
201
+        }
202
+        if ((2 * $vH) < 1) {
203
+            return ($v2);
204
+        }
205
+        if ((3 * $vH) < 2) {
206
+            return ($v1 + ($v2 - $v1) * ((2 / 3) - $vH) * 6);
207
+        }
208
+
209
+        return ($v1);
210
+    };
211
+
212
+    if ($S == 0) {
213
+        // HSV values = 0 -> 1
214
+        $R = $L * 255;
215
+        $G = $L * 255;
216
+        $B = $L * 255;
217
+    } else {
218
+        if ($L < 0.5) {
219
+            $var_2 = $L * (1 + $S);
220
+        } else {
221
+            $var_2 = ($L + $S) - ($S * $L);
222
+        }
223
+
224
+        $var_1 = 2 * $L - $var_2;
225
+
226
+        $R = 255 * $hue_2_rgb($var_1, $var_2, $H + (1 / 3));
227
+        $G = 255 * $hue_2_rgb($var_1, $var_2, $H);
228
+        $B = 255 * $hue_2_rgb($var_1, $var_2, $H - (1 / 3));
229
+    }
230
+
231
+    $ret = [];
232
+    $ret['r'] = floor($R);
233
+    $ret['g'] = floor($G);
234
+    $ret['b'] = floor($B);
235
+
236
+    return $ret;
237 237
 }
238 238
 
239 239
 /**
@@ -251,11 +251,11 @@  discard block
 block discarded – undo
251 251
  *     true si il faut supprimer le fichier temporaire ; false sinon.
252 252
  */
253 253
 function statut_effacer_images_temporaires($stat) {
254
-	static $statut = false; // par defaut on grave toute les images
255
-	if ($stat === 'get') {
256
-		return $statut;
257
-	}
258
-	$statut = $stat ? true : false;
254
+    static $statut = false; // par defaut on grave toute les images
255
+    if ($stat === 'get') {
256
+        return $statut;
257
+    }
258
+    $statut = $stat ? true : false;
259 259
 }
260 260
 
261 261
 
@@ -308,253 +308,253 @@  discard block
 block discarded – undo
308 308
  *     - array : tableau décrivant de l'image
309 309
  */
310 310
 function _image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_creation = null, $find_in_path = false, $support_svg = false) {
311
-	$ret = [];
312
-	$f = null;
313
-	static $images_recalcul = [];
314
-	if (strlen($img) == 0) {
315
-		return false;
316
-	}
317
-
318
-	$source = trim(extraire_attribut($img, 'src') ?? '');
319
-	if (strlen($source) < 1) {
320
-		if (strpos($img, '<img ') !== 0) {
321
-			$source = $img;
322
-			$img = "<img src='$source' />";
323
-		}
324
-		else {
325
-			// pas d'attribut src sur cette balise <img../>
326
-			return false;
327
-		}
328
-	} elseif (
329
-		preg_match('@^data:image/([^;]*);base64,(.*)$@isS', $source, $regs)
330
-		and $extension = _image_trouver_extension_depuis_mime('image/' . $regs[1])
331
-		and in_array($extension, _image_extensions_acceptees_en_entree())
332
-	) {
333
-		# gerer img src="data:....base64"
334
-		$local = sous_repertoire(_DIR_VAR, 'image-data') . md5($regs[2]) . '.' . _image_extension_normalisee($extension);
335
-		if (!file_exists($local)) {
336
-			ecrire_fichier($local, base64_decode($regs[2]));
337
-		}
338
-		if ($sanitizer = charger_fonction($extension, 'sanitizer', true)) {
339
-			$sanitizer($local);
340
-		}
341
-		$source = $local;
342
-		$img = inserer_attribut($img, 'src', $source);
343
-		# eviter les mauvaises surprises lors de conversions de format
344
-		$img = inserer_attribut($img, 'width', '');
345
-		$img = inserer_attribut($img, 'height', '');
346
-	}
347
-
348
-	// les protocoles web prennent au moins 3 lettres
349
-	if (tester_url_absolue($source)) {
350
-		include_spip('inc/distant');
351
-		$fichier = _DIR_RACINE . copie_locale($source);
352
-		if (!$fichier) {
353
-			return '';
354
-		}
355
-		if (
356
-			$extension = _image_trouver_extension($fichier)
357
-			and $sanitizer = charger_fonction($extension, 'sanitizer', true)
358
-		) {
359
-			$sanitizer($fichier);
360
-		}
361
-	} else {
362
-		// enlever le timestamp eventuel
363
-		if (strpos($source, '?') !== false) {
364
-			$source = preg_replace(',[?][0-9]+$,', '', $source);
365
-		}
366
-		if (
367
-			strpos($source, '?') !== false
368
-			and strncmp($source, _DIR_IMG, strlen(_DIR_IMG)) == 0
369
-			and file_exists($f = preg_replace(',[?].*$,', '', $source))
370
-		) {
371
-			$source = $f;
372
-		}
373
-		$fichier = $source;
374
-	}
375
-
376
-	$terminaison_dest = '';
377
-	if ($terminaison = _image_trouver_extension($fichier)) {
378
-		$terminaison_dest = ($terminaison == 'gif') ? 'png' : $terminaison;
379
-	}
380
-
381
-	if (
382
-		$forcer_format !== false
383
-		// ignorer forcer_format si on a une image svg, que le filtre appelant ne supporte pas SVG, et que le forcage est un autre format image
384
-		and ($terminaison_dest !== 'svg' or $support_svg or !in_array($forcer_format, _image_extensions_acceptees_en_sortie()))
385
-	) {
386
-		$terminaison_dest = $forcer_format;
387
-	}
388
-
389
-	if (!$terminaison_dest) {
390
-		return false;
391
-	}
392
-
393
-	$nom_fichier = substr($fichier, 0, strlen($fichier) - (strlen($terminaison) + 1));
394
-	$fichier_dest = $nom_fichier;
395
-	if (
396
-		($find_in_path and $f = find_in_path($fichier) and $fichier = $f)
397
-		or @file_exists($f = $fichier)
398
-	) {
399
-		// on ne passe jamais la balise img qui est peut-être en x2 et à laquelle on ne peut pas faire confiance
400
-		// on lit directement les infos du fichier
401
-		[$ret['hauteur'], $ret['largeur']] = taille_image($f);
402
-		$date_src = @filemtime($f);
403
-	} elseif (
404
-		@file_exists($f = "$fichier.src")
405
-		and lire_fichier($f, $valeurs)
406
-		and $valeurs = unserialize($valeurs)
407
-		and isset($valeurs['hauteur_dest'])
408
-		and isset($valeurs['largeur_dest'])
409
-	) {
410
-		$ret['hauteur'] = $valeurs['hauteur_dest'];
411
-		$ret['largeur'] = $valeurs['largeur_dest'];
412
-		$date_src = $valeurs['date'];
413
-	} // pas de fichier source par la
414
-	else {
415
-		return false;
416
-	}
417
-
418
-	// pas de taille mesurable ?
419
-	if (!$ret['hauteur']
420
-		or !($ret['hauteur'] = intval(round($ret['hauteur'])))
421
-		or !$ret['largeur']
422
-		or !($ret['largeur'] = intval(round($ret['largeur'])))
423
-	) {
424
-		return false;
425
-	}
426
-
427
-	// les images calculees dependent du chemin du fichier source
428
-	// pour une meme image source et un meme filtre on aboutira a 2 fichiers selon si l'appel est dans le public ou dans le prive
429
-	// ce n'est pas totalement optimal en terme de stockage, mais chaque image est associee a un fichier .src
430
-	// qui contient la methode de reconstrucion (le filtre + les arguments d'appel) et les arguments different entre prive et public
431
-	// la mise en commun du fichier image cree donc un bug et des problemes qui necessiteraient beaucoup de complexite de code
432
-	// alors que ca concerne peu de site au final
433
-	// la release de r23632+r23633+r23634 a provoque peu de remontee de bug attestant du peu de sites impactes
434
-	$identifiant = $fichier;
435
-
436
-	// cas general :
437
-	// on a un dossier cache commun et un nom de fichier qui varie avec l'effet
438
-	// cas particulier de reduire :
439
-	// un cache par dimension, et le nom de fichier est conserve, suffixe par la dimension aussi
440
-	$cache = 'cache-gd2';
441
-	if (substr($effet, 0, 7) == 'reduire') {
442
-		[, $maxWidth, $maxHeight] = explode('-', $effet);
443
-		[$destWidth, $destHeight] = _image_ratio($ret['largeur'], $ret['hauteur'], $maxWidth, $maxHeight);
444
-		$ret['largeur_dest'] = $destWidth;
445
-		$ret['hauteur_dest'] = $destHeight;
446
-		$effet = "L{$destWidth}xH$destHeight";
447
-		$cache = 'cache-vignettes';
448
-		$fichier_dest = basename($fichier_dest);
449
-		if (($ret['largeur'] <= $maxWidth) && ($ret['hauteur'] <= $maxHeight)) {
450
-			// on garde la terminaison initiale car image simplement copiee
451
-			// et on postfixe son nom avec un md5 du path
452
-			$terminaison_dest = $terminaison;
453
-			$fichier_dest .= '-' . substr(md5("$identifiant"), 0, 5);
454
-		} else {
455
-			$fichier_dest .= '-' . substr(md5("$identifiant-$effet"), 0, 5);
456
-		}
457
-		$cache = sous_repertoire(_DIR_VAR, $cache);
458
-		$cache = sous_repertoire($cache, $effet);
459
-	} else {
460
-		$fichier_dest = md5("$identifiant-$effet");
461
-		$cache = sous_repertoire(_DIR_VAR, $cache);
462
-		$cache = sous_repertoire($cache, substr($fichier_dest, 0, 2));
463
-		$fichier_dest = substr($fichier_dest, 2);
464
-	}
465
-
466
-	$fichier_dest = $cache . $fichier_dest . '.' . $terminaison_dest;
467
-
468
-	$GLOBALS['images_calculees'][] = $fichier_dest;
469
-
470
-	$creer = true;
471
-	// si recalcul des images demande, recalculer chaque image une fois
472
-	if (defined('_VAR_IMAGES') and _VAR_IMAGES and !isset($images_recalcul[$fichier_dest])) {
473
-		$images_recalcul[$fichier_dest] = true;
474
-	} else {
475
-		if (@file_exists($f = $fichier_dest)) {
476
-			if (filemtime($f) >= $date_src) {
477
-				$creer = false;
478
-			}
479
-		} else {
480
-			if (
481
-				@file_exists($f = "$fichier_dest.src")
482
-				and lire_fichier($f, $valeurs)
483
-				and $valeurs = unserialize($valeurs)
484
-				and $valeurs['date'] >= $date_src
485
-			) {
486
-				$creer = false;
487
-			}
488
-		}
489
-	}
490
-	if ($creer) {
491
-		if (!@file_exists($fichier)) {
492
-			if (!@file_exists("$fichier.src")) {
493
-				spip_log("Image absente : $fichier", 'images' . _LOG_ERREUR);
494
-
495
-				return false;
496
-			}
497
-			# on reconstruit l'image source absente a partir de la chaine des .src
498
-			reconstruire_image_intermediaire($fichier);
499
-		}
500
-	}
501
-
502
-	if ($creer) {
503
-		spip_log(
504
-			'filtre image ' . ($fonction_creation ? reset($fonction_creation) : '') . "[$effet] sur $fichier",
505
-			'images' . _LOG_DEBUG
506
-		);
507
-	}
508
-
509
-	$term_fonction = _image_trouver_extension_pertinente($fichier);
510
-	$ret['fonction_imagecreatefrom'] = '_imagecreatefrom' . $term_fonction;
511
-	$ret['fichier'] = $fichier;
512
-	$ret['fonction_image'] = '_image_image' . $terminaison_dest;
513
-	$ret['fichier_dest'] = $fichier_dest;
514
-	$ret['format_source'] = _image_extension_normalisee($terminaison);
515
-	$ret['format_dest'] = $terminaison_dest;
516
-	$ret['date_src'] = $date_src;
517
-	$ret['creer'] = $creer;
518
-	$ret['class'] = extraire_attribut($img, 'class');
519
-	$ret['alt'] = extraire_attribut($img, 'alt');
520
-	$ret['style'] = extraire_attribut($img, 'style');
521
-	$ret['tag'] = $img;
522
-	if ($fonction_creation) {
523
-		$ret['reconstruction'] = $fonction_creation;
524
-		# ecrire ici comment creer le fichier, car il est pas sur qu'on l'ecrira reelement
525
-		# cas de image_reduire qui finalement ne reduit pas l'image source
526
-		# ca evite d'essayer de le creer au prochain hit si il n'est pas la
527
-		#ecrire_fichier($ret['fichier_dest'].'.src',serialize($ret),true);
528
-	}
529
-
530
-	$ret = pipeline('image_preparer_filtre', [
531
-			'args' => [
532
-				'img' => $img,
533
-				'effet' => $effet,
534
-				'forcer_format' => $forcer_format,
535
-				'fonction_creation' => $fonction_creation,
536
-				'find_in_path' => $find_in_path,
537
-			],
538
-			'data' => $ret
539
-		]);
540
-
541
-	// une globale pour le debug en cas de crash memoire
542
-	$GLOBALS['derniere_image_calculee'] = $ret;
543
-
544
-	// traiter le cas particulier des SVG : si le filtre n'a pas annonce explicitement qu'il savait faire, on delegue
545
-	if ($term_fonction === 'svg') {
546
-		if ($creer and !$support_svg) {
547
-			process_image_svg_identite($ret);
548
-			$ret['creer'] = false;
549
-		}
550
-	}
551
-	else {
552
-		if (!function_exists($ret['fonction_imagecreatefrom'])) {
553
-			return false;
554
-		}
555
-	}
556
-
557
-	return $ret;
311
+    $ret = [];
312
+    $f = null;
313
+    static $images_recalcul = [];
314
+    if (strlen($img) == 0) {
315
+        return false;
316
+    }
317
+
318
+    $source = trim(extraire_attribut($img, 'src') ?? '');
319
+    if (strlen($source) < 1) {
320
+        if (strpos($img, '<img ') !== 0) {
321
+            $source = $img;
322
+            $img = "<img src='$source' />";
323
+        }
324
+        else {
325
+            // pas d'attribut src sur cette balise <img../>
326
+            return false;
327
+        }
328
+    } elseif (
329
+        preg_match('@^data:image/([^;]*);base64,(.*)$@isS', $source, $regs)
330
+        and $extension = _image_trouver_extension_depuis_mime('image/' . $regs[1])
331
+        and in_array($extension, _image_extensions_acceptees_en_entree())
332
+    ) {
333
+        # gerer img src="data:....base64"
334
+        $local = sous_repertoire(_DIR_VAR, 'image-data') . md5($regs[2]) . '.' . _image_extension_normalisee($extension);
335
+        if (!file_exists($local)) {
336
+            ecrire_fichier($local, base64_decode($regs[2]));
337
+        }
338
+        if ($sanitizer = charger_fonction($extension, 'sanitizer', true)) {
339
+            $sanitizer($local);
340
+        }
341
+        $source = $local;
342
+        $img = inserer_attribut($img, 'src', $source);
343
+        # eviter les mauvaises surprises lors de conversions de format
344
+        $img = inserer_attribut($img, 'width', '');
345
+        $img = inserer_attribut($img, 'height', '');
346
+    }
347
+
348
+    // les protocoles web prennent au moins 3 lettres
349
+    if (tester_url_absolue($source)) {
350
+        include_spip('inc/distant');
351
+        $fichier = _DIR_RACINE . copie_locale($source);
352
+        if (!$fichier) {
353
+            return '';
354
+        }
355
+        if (
356
+            $extension = _image_trouver_extension($fichier)
357
+            and $sanitizer = charger_fonction($extension, 'sanitizer', true)
358
+        ) {
359
+            $sanitizer($fichier);
360
+        }
361
+    } else {
362
+        // enlever le timestamp eventuel
363
+        if (strpos($source, '?') !== false) {
364
+            $source = preg_replace(',[?][0-9]+$,', '', $source);
365
+        }
366
+        if (
367
+            strpos($source, '?') !== false
368
+            and strncmp($source, _DIR_IMG, strlen(_DIR_IMG)) == 0
369
+            and file_exists($f = preg_replace(',[?].*$,', '', $source))
370
+        ) {
371
+            $source = $f;
372
+        }
373
+        $fichier = $source;
374
+    }
375
+
376
+    $terminaison_dest = '';
377
+    if ($terminaison = _image_trouver_extension($fichier)) {
378
+        $terminaison_dest = ($terminaison == 'gif') ? 'png' : $terminaison;
379
+    }
380
+
381
+    if (
382
+        $forcer_format !== false
383
+        // ignorer forcer_format si on a une image svg, que le filtre appelant ne supporte pas SVG, et que le forcage est un autre format image
384
+        and ($terminaison_dest !== 'svg' or $support_svg or !in_array($forcer_format, _image_extensions_acceptees_en_sortie()))
385
+    ) {
386
+        $terminaison_dest = $forcer_format;
387
+    }
388
+
389
+    if (!$terminaison_dest) {
390
+        return false;
391
+    }
392
+
393
+    $nom_fichier = substr($fichier, 0, strlen($fichier) - (strlen($terminaison) + 1));
394
+    $fichier_dest = $nom_fichier;
395
+    if (
396
+        ($find_in_path and $f = find_in_path($fichier) and $fichier = $f)
397
+        or @file_exists($f = $fichier)
398
+    ) {
399
+        // on ne passe jamais la balise img qui est peut-être en x2 et à laquelle on ne peut pas faire confiance
400
+        // on lit directement les infos du fichier
401
+        [$ret['hauteur'], $ret['largeur']] = taille_image($f);
402
+        $date_src = @filemtime($f);
403
+    } elseif (
404
+        @file_exists($f = "$fichier.src")
405
+        and lire_fichier($f, $valeurs)
406
+        and $valeurs = unserialize($valeurs)
407
+        and isset($valeurs['hauteur_dest'])
408
+        and isset($valeurs['largeur_dest'])
409
+    ) {
410
+        $ret['hauteur'] = $valeurs['hauteur_dest'];
411
+        $ret['largeur'] = $valeurs['largeur_dest'];
412
+        $date_src = $valeurs['date'];
413
+    } // pas de fichier source par la
414
+    else {
415
+        return false;
416
+    }
417
+
418
+    // pas de taille mesurable ?
419
+    if (!$ret['hauteur']
420
+        or !($ret['hauteur'] = intval(round($ret['hauteur'])))
421
+        or !$ret['largeur']
422
+        or !($ret['largeur'] = intval(round($ret['largeur'])))
423
+    ) {
424
+        return false;
425
+    }
426
+
427
+    // les images calculees dependent du chemin du fichier source
428
+    // pour une meme image source et un meme filtre on aboutira a 2 fichiers selon si l'appel est dans le public ou dans le prive
429
+    // ce n'est pas totalement optimal en terme de stockage, mais chaque image est associee a un fichier .src
430
+    // qui contient la methode de reconstrucion (le filtre + les arguments d'appel) et les arguments different entre prive et public
431
+    // la mise en commun du fichier image cree donc un bug et des problemes qui necessiteraient beaucoup de complexite de code
432
+    // alors que ca concerne peu de site au final
433
+    // la release de r23632+r23633+r23634 a provoque peu de remontee de bug attestant du peu de sites impactes
434
+    $identifiant = $fichier;
435
+
436
+    // cas general :
437
+    // on a un dossier cache commun et un nom de fichier qui varie avec l'effet
438
+    // cas particulier de reduire :
439
+    // un cache par dimension, et le nom de fichier est conserve, suffixe par la dimension aussi
440
+    $cache = 'cache-gd2';
441
+    if (substr($effet, 0, 7) == 'reduire') {
442
+        [, $maxWidth, $maxHeight] = explode('-', $effet);
443
+        [$destWidth, $destHeight] = _image_ratio($ret['largeur'], $ret['hauteur'], $maxWidth, $maxHeight);
444
+        $ret['largeur_dest'] = $destWidth;
445
+        $ret['hauteur_dest'] = $destHeight;
446
+        $effet = "L{$destWidth}xH$destHeight";
447
+        $cache = 'cache-vignettes';
448
+        $fichier_dest = basename($fichier_dest);
449
+        if (($ret['largeur'] <= $maxWidth) && ($ret['hauteur'] <= $maxHeight)) {
450
+            // on garde la terminaison initiale car image simplement copiee
451
+            // et on postfixe son nom avec un md5 du path
452
+            $terminaison_dest = $terminaison;
453
+            $fichier_dest .= '-' . substr(md5("$identifiant"), 0, 5);
454
+        } else {
455
+            $fichier_dest .= '-' . substr(md5("$identifiant-$effet"), 0, 5);
456
+        }
457
+        $cache = sous_repertoire(_DIR_VAR, $cache);
458
+        $cache = sous_repertoire($cache, $effet);
459
+    } else {
460
+        $fichier_dest = md5("$identifiant-$effet");
461
+        $cache = sous_repertoire(_DIR_VAR, $cache);
462
+        $cache = sous_repertoire($cache, substr($fichier_dest, 0, 2));
463
+        $fichier_dest = substr($fichier_dest, 2);
464
+    }
465
+
466
+    $fichier_dest = $cache . $fichier_dest . '.' . $terminaison_dest;
467
+
468
+    $GLOBALS['images_calculees'][] = $fichier_dest;
469
+
470
+    $creer = true;
471
+    // si recalcul des images demande, recalculer chaque image une fois
472
+    if (defined('_VAR_IMAGES') and _VAR_IMAGES and !isset($images_recalcul[$fichier_dest])) {
473
+        $images_recalcul[$fichier_dest] = true;
474
+    } else {
475
+        if (@file_exists($f = $fichier_dest)) {
476
+            if (filemtime($f) >= $date_src) {
477
+                $creer = false;
478
+            }
479
+        } else {
480
+            if (
481
+                @file_exists($f = "$fichier_dest.src")
482
+                and lire_fichier($f, $valeurs)
483
+                and $valeurs = unserialize($valeurs)
484
+                and $valeurs['date'] >= $date_src
485
+            ) {
486
+                $creer = false;
487
+            }
488
+        }
489
+    }
490
+    if ($creer) {
491
+        if (!@file_exists($fichier)) {
492
+            if (!@file_exists("$fichier.src")) {
493
+                spip_log("Image absente : $fichier", 'images' . _LOG_ERREUR);
494
+
495
+                return false;
496
+            }
497
+            # on reconstruit l'image source absente a partir de la chaine des .src
498
+            reconstruire_image_intermediaire($fichier);
499
+        }
500
+    }
501
+
502
+    if ($creer) {
503
+        spip_log(
504
+            'filtre image ' . ($fonction_creation ? reset($fonction_creation) : '') . "[$effet] sur $fichier",
505
+            'images' . _LOG_DEBUG
506
+        );
507
+    }
508
+
509
+    $term_fonction = _image_trouver_extension_pertinente($fichier);
510
+    $ret['fonction_imagecreatefrom'] = '_imagecreatefrom' . $term_fonction;
511
+    $ret['fichier'] = $fichier;
512
+    $ret['fonction_image'] = '_image_image' . $terminaison_dest;
513
+    $ret['fichier_dest'] = $fichier_dest;
514
+    $ret['format_source'] = _image_extension_normalisee($terminaison);
515
+    $ret['format_dest'] = $terminaison_dest;
516
+    $ret['date_src'] = $date_src;
517
+    $ret['creer'] = $creer;
518
+    $ret['class'] = extraire_attribut($img, 'class');
519
+    $ret['alt'] = extraire_attribut($img, 'alt');
520
+    $ret['style'] = extraire_attribut($img, 'style');
521
+    $ret['tag'] = $img;
522
+    if ($fonction_creation) {
523
+        $ret['reconstruction'] = $fonction_creation;
524
+        # ecrire ici comment creer le fichier, car il est pas sur qu'on l'ecrira reelement
525
+        # cas de image_reduire qui finalement ne reduit pas l'image source
526
+        # ca evite d'essayer de le creer au prochain hit si il n'est pas la
527
+        #ecrire_fichier($ret['fichier_dest'].'.src',serialize($ret),true);
528
+    }
529
+
530
+    $ret = pipeline('image_preparer_filtre', [
531
+            'args' => [
532
+                'img' => $img,
533
+                'effet' => $effet,
534
+                'forcer_format' => $forcer_format,
535
+                'fonction_creation' => $fonction_creation,
536
+                'find_in_path' => $find_in_path,
537
+            ],
538
+            'data' => $ret
539
+        ]);
540
+
541
+    // une globale pour le debug en cas de crash memoire
542
+    $GLOBALS['derniere_image_calculee'] = $ret;
543
+
544
+    // traiter le cas particulier des SVG : si le filtre n'a pas annonce explicitement qu'il savait faire, on delegue
545
+    if ($term_fonction === 'svg') {
546
+        if ($creer and !$support_svg) {
547
+            process_image_svg_identite($ret);
548
+            $ret['creer'] = false;
549
+        }
550
+    }
551
+    else {
552
+        if (!function_exists($ret['fonction_imagecreatefrom'])) {
553
+            return false;
554
+        }
555
+    }
556
+
557
+    return $ret;
558 558
 }
559 559
 
560 560
 
@@ -563,54 +563,54 @@  discard block
 block discarded – undo
563 563
  * @return array
564 564
  */
565 565
 function _image_extensions_acceptees_en_entree() {
566
-	static $extensions = null;
567
-	if (empty($extensions)) {
568
-		$extensions = ['png', 'gif', 'jpg', 'jpeg'];
569
-		if (!empty($GLOBALS['meta']['gd_formats'])) {
570
-			// action=tester renseigne gd_formats et detecte le support de webp
571
-			$extensions = array_merge(explode(',', $GLOBALS['meta']['gd_formats']));
572
-			$extensions = array_map('trim', $extensions);
573
-			$extensions = array_filter($extensions);
574
-			if (in_array('jpg', $extensions)) {
575
-				$extensions[] = 'jpeg';
576
-			}
577
-			$extensions = array_unique($extensions);
578
-		}
579
-		$extensions[] = 'svg'; // on le supporte toujours avec des fonctions specifiques
580
-	}
581
-
582
-	return $extensions;
566
+    static $extensions = null;
567
+    if (empty($extensions)) {
568
+        $extensions = ['png', 'gif', 'jpg', 'jpeg'];
569
+        if (!empty($GLOBALS['meta']['gd_formats'])) {
570
+            // action=tester renseigne gd_formats et detecte le support de webp
571
+            $extensions = array_merge(explode(',', $GLOBALS['meta']['gd_formats']));
572
+            $extensions = array_map('trim', $extensions);
573
+            $extensions = array_filter($extensions);
574
+            if (in_array('jpg', $extensions)) {
575
+                $extensions[] = 'jpeg';
576
+            }
577
+            $extensions = array_unique($extensions);
578
+        }
579
+        $extensions[] = 'svg'; // on le supporte toujours avec des fonctions specifiques
580
+    }
581
+
582
+    return $extensions;
583 583
 }
584 584
 
585 585
 /**
586 586
  * @return array|string[]|null
587 587
  */
588 588
 function _image_extensions_acceptees_en_sortie() {
589
-	static $extensions = null;
590
-	if (empty($extensions)) {
591
-		$extensions = _image_extensions_acceptees_en_entree();
592
-		$extensions = array_diff($extensions, ['jpeg']);
593
-		if (in_array('gif', $extensions) and !function_exists('imagegif')) {
594
-			$extensions = array_diff($extensions, ['gif']);
595
-		}
596
-		if (in_array('webp', $extensions) and !function_exists('imagewebp')) {
597
-			$extensions = array_diff($extensions, ['webp']);
598
-		}
599
-	}
600
-
601
-	return $extensions;
589
+    static $extensions = null;
590
+    if (empty($extensions)) {
591
+        $extensions = _image_extensions_acceptees_en_entree();
592
+        $extensions = array_diff($extensions, ['jpeg']);
593
+        if (in_array('gif', $extensions) and !function_exists('imagegif')) {
594
+            $extensions = array_diff($extensions, ['gif']);
595
+        }
596
+        if (in_array('webp', $extensions) and !function_exists('imagewebp')) {
597
+            $extensions = array_diff($extensions, ['webp']);
598
+        }
599
+    }
600
+
601
+    return $extensions;
602 602
 }
603 603
 
604 604
 function _image_extension_normalisee($extension) {
605
-	$extension = strtolower($extension);
606
-	if ($extension === 'jpeg') {
607
-		$extension = 'jpg';
608
-	}
609
-	return $extension;
605
+    $extension = strtolower($extension);
606
+    if ($extension === 'jpeg') {
607
+        $extension = 'jpg';
608
+    }
609
+    return $extension;
610 610
 }
611 611
 
612 612
 function _image_extensions_conservent_transparence() {
613
-	return ['png', 'webp'];
613
+    return ['png', 'webp'];
614 614
 }
615 615
 
616 616
 
@@ -620,12 +620,12 @@  discard block
 block discarded – undo
620 620
  * @return string
621 621
  */
622 622
 function _image_trouver_extension($path) {
623
-	$preg_extensions = implode('|', _image_extensions_acceptees_en_entree());
624
-	if (preg_match(",\.($preg_extensions)($|[?]),i", $path, $regs)) {
625
-		$terminaison = strtolower($regs[1]);
626
-		return $terminaison;
627
-	}
628
-	return '';
623
+    $preg_extensions = implode('|', _image_extensions_acceptees_en_entree());
624
+    if (preg_match(",\.($preg_extensions)($|[?]),i", $path, $regs)) {
625
+        $terminaison = strtolower($regs[1]);
626
+        return $terminaison;
627
+    }
628
+    return '';
629 629
 }
630 630
 
631 631
 /**
@@ -636,33 +636,33 @@  discard block
 block discarded – undo
636 636
  * @return string Extension, dans le format attendu par les fonctions 'gd' ('jpeg' pour les .jpg par exemple)
637 637
  */
638 638
 function _image_trouver_extension_pertinente($path) {
639
-	$path = supprimer_timestamp($path);
640
-	$terminaison = _image_trouver_extension($path);
641
-	if ($terminaison == 'jpg') {
642
-		$terminaison = 'jpeg';
643
-	}
644
-
645
-	if (!file_exists($path)) {
646
-		return $terminaison;
647
-	}
648
-
649
-	if (!$info = @spip_getimagesize($path)) {
650
-		return $terminaison;
651
-	}
652
-
653
-	if (isset($info['mime'])) {
654
-		$mime = $info['mime'];
655
-	}
656
-	else {
657
-		$mime = image_type_to_mime_type($info[2]);
658
-	}
659
-
660
-	$_terminaison = _image_trouver_extension_depuis_mime($mime);
661
-	if ($_terminaison and $_terminaison !== $terminaison) {
662
-		spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.' . _LOG_INFO_IMPORTANTE);
663
-		$terminaison = $_terminaison;
664
-	}
665
-	return $terminaison;
639
+    $path = supprimer_timestamp($path);
640
+    $terminaison = _image_trouver_extension($path);
641
+    if ($terminaison == 'jpg') {
642
+        $terminaison = 'jpeg';
643
+    }
644
+
645
+    if (!file_exists($path)) {
646
+        return $terminaison;
647
+    }
648
+
649
+    if (!$info = @spip_getimagesize($path)) {
650
+        return $terminaison;
651
+    }
652
+
653
+    if (isset($info['mime'])) {
654
+        $mime = $info['mime'];
655
+    }
656
+    else {
657
+        $mime = image_type_to_mime_type($info[2]);
658
+    }
659
+
660
+    $_terminaison = _image_trouver_extension_depuis_mime($mime);
661
+    if ($_terminaison and $_terminaison !== $terminaison) {
662
+        spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.' . _LOG_INFO_IMPORTANTE);
663
+        $terminaison = $_terminaison;
664
+    }
665
+    return $terminaison;
666 666
 }
667 667
 
668 668
 /**
@@ -670,36 +670,36 @@  discard block
 block discarded – undo
670 670
  * @return string
671 671
  */
672 672
 function _image_trouver_extension_depuis_mime($mime) {
673
-	switch (strtolower($mime)) {
674
-		case 'image/png':
675
-		case 'image/x-png':
676
-			$terminaison = 'png';
677
-			break;
678
-
679
-		case 'image/jpg':
680
-		case 'image/jpeg':
681
-		case 'image/pjpeg':
682
-			$terminaison = 'jpeg';
683
-			break;
684
-
685
-		case 'image/gif':
686
-			$terminaison = 'gif';
687
-			break;
688
-
689
-		case 'image/webp':
690
-		case 'image/x-webp':
691
-			$terminaison = 'webp';
692
-			break;
693
-
694
-		case 'image/svg+xml':
695
-			$terminaison = 'svg';
696
-			break;
697
-
698
-		default:
699
-			$terminaison = '';
700
-	}
701
-
702
-	return $terminaison;
673
+    switch (strtolower($mime)) {
674
+        case 'image/png':
675
+        case 'image/x-png':
676
+            $terminaison = 'png';
677
+            break;
678
+
679
+        case 'image/jpg':
680
+        case 'image/jpeg':
681
+        case 'image/pjpeg':
682
+            $terminaison = 'jpeg';
683
+            break;
684
+
685
+        case 'image/gif':
686
+            $terminaison = 'gif';
687
+            break;
688
+
689
+        case 'image/webp':
690
+        case 'image/x-webp':
691
+            $terminaison = 'webp';
692
+            break;
693
+
694
+        case 'image/svg+xml':
695
+            $terminaison = 'svg';
696
+            break;
697
+
698
+        default:
699
+            $terminaison = '';
700
+    }
701
+
702
+    return $terminaison;
703 703
 }
704 704
 
705 705
 
@@ -719,18 +719,18 @@  discard block
 block discarded – undo
719 719
  *     Une ressource de type Image GD.
720 720
  */
721 721
 function _imagecreatefrom_func(string $func, string $filename) {
722
-	if (!function_exists($func)) {
723
-		spip_log("GD indisponible : $func inexistante. Traitement $filename impossible.", _LOG_CRITIQUE);
724
-		erreur_squelette("GD indisponible : $func inexistante. Traitement $filename impossible.");
725
-		return null;
726
-	}
727
-	$img = @$func($filename);
728
-	if (!$img) {
729
-		spip_log("Erreur lecture imagecreatefromjpeg $filename", _LOG_CRITIQUE);
730
-		erreur_squelette("Erreur lecture imagecreatefromjpeg $filename");
731
-		$img = imagecreate(10, 10);
732
-	}
733
-	return $img;
722
+    if (!function_exists($func)) {
723
+        spip_log("GD indisponible : $func inexistante. Traitement $filename impossible.", _LOG_CRITIQUE);
724
+        erreur_squelette("GD indisponible : $func inexistante. Traitement $filename impossible.");
725
+        return null;
726
+    }
727
+    $img = @$func($filename);
728
+    if (!$img) {
729
+        spip_log("Erreur lecture imagecreatefromjpeg $filename", _LOG_CRITIQUE);
730
+        erreur_squelette("Erreur lecture imagecreatefromjpeg $filename");
731
+        $img = imagecreate(10, 10);
732
+    }
733
+    return $img;
734 734
 }
735 735
 
736 736
 /**
@@ -746,7 +746,7 @@  discard block
 block discarded – undo
746 746
  *     Une ressource de type Image GD.
747 747
  */
748 748
 function _imagecreatefromjpeg($filename) {
749
-	return _imagecreatefrom_func('imagecreatefromjpeg', $filename);
749
+    return _imagecreatefrom_func('imagecreatefromjpeg', $filename);
750 750
 }
751 751
 
752 752
 /**
@@ -762,7 +762,7 @@  discard block
 block discarded – undo
762 762
  *     Une ressource de type Image GD.
763 763
  */
764 764
 function _imagecreatefrompng($filename) {
765
-	return _imagecreatefrom_func('imagecreatefrompng', $filename);
765
+    return _imagecreatefrom_func('imagecreatefrompng', $filename);
766 766
 }
767 767
 
768 768
 /**
@@ -778,7 +778,7 @@  discard block
 block discarded – undo
778 778
  *     Une ressource de type Image GD.
779 779
  */
780 780
 function _imagecreatefromgif($filename) {
781
-	return _imagecreatefrom_func('imagecreatefromgif', $filename);
781
+    return _imagecreatefrom_func('imagecreatefromgif', $filename);
782 782
 }
783 783
 
784 784
 
@@ -795,7 +795,7 @@  discard block
 block discarded – undo
795 795
  *     Une ressource de type Image GD.
796 796
  */
797 797
 function _imagecreatefromwebp($filename) {
798
-	return _imagecreatefrom_func('imagecreatefromwebp', $filename);
798
+    return _imagecreatefrom_func('imagecreatefromwebp', $filename);
799 799
 }
800 800
 
801 801
 /**
@@ -813,24 +813,24 @@  discard block
 block discarded – undo
813 813
  *     - true si une image est bien retournée.
814 814
  */
815 815
 function _image_imagepng($img, $fichier) {
816
-	if (!function_exists('imagepng')) {
817
-		return false;
818
-	}
819
-	$tmp = $fichier . '.tmp';
820
-	$ret = imagepng($img, $tmp);
821
-	if (file_exists($tmp)) {
822
-		$taille_test = @getimagesize($tmp);
823
-		if (empty($taille_test[0])) {
824
-			return false;
825
-		}
826
-
827
-		spip_unlink($fichier); // le fichier peut deja exister
828
-		@rename($tmp, $fichier);
829
-
830
-		return $ret;
831
-	}
832
-
833
-	return false;
816
+    if (!function_exists('imagepng')) {
817
+        return false;
818
+    }
819
+    $tmp = $fichier . '.tmp';
820
+    $ret = imagepng($img, $tmp);
821
+    if (file_exists($tmp)) {
822
+        $taille_test = @getimagesize($tmp);
823
+        if (empty($taille_test[0])) {
824
+            return false;
825
+        }
826
+
827
+        spip_unlink($fichier); // le fichier peut deja exister
828
+        @rename($tmp, $fichier);
829
+
830
+        return $ret;
831
+    }
832
+
833
+    return false;
834 834
 }
835 835
 
836 836
 /**
@@ -848,24 +848,24 @@  discard block
 block discarded – undo
848 848
  *     - true si une image est bien retournée.
849 849
  */
850 850
 function _image_imagegif($img, $fichier) {
851
-	if (!function_exists('imagegif')) {
852
-		return false;
853
-	}
854
-	$tmp = $fichier . '.tmp';
855
-	$ret = imagegif($img, $tmp);
856
-	if (file_exists($tmp)) {
857
-		$taille_test = @getimagesize($tmp);
858
-		if (empty($taille_test[0])) {
859
-			return false;
860
-		}
861
-
862
-		spip_unlink($fichier); // le fichier peut deja exister
863
-		@rename($tmp, $fichier);
864
-
865
-		return $ret;
866
-	}
867
-
868
-	return false;
851
+    if (!function_exists('imagegif')) {
852
+        return false;
853
+    }
854
+    $tmp = $fichier . '.tmp';
855
+    $ret = imagegif($img, $tmp);
856
+    if (file_exists($tmp)) {
857
+        $taille_test = @getimagesize($tmp);
858
+        if (empty($taille_test[0])) {
859
+            return false;
860
+        }
861
+
862
+        spip_unlink($fichier); // le fichier peut deja exister
863
+        @rename($tmp, $fichier);
864
+
865
+        return $ret;
866
+    }
867
+
868
+    return false;
869 869
 }
870 870
 
871 871
 /**
@@ -888,29 +888,29 @@  discard block
 block discarded – undo
888 888
  *     - true si une image est bien retournée.
889 889
  */
890 890
 function _image_imagejpg($img, $fichier, $qualite = _IMG_GD_QUALITE) {
891
-	if (!function_exists('imagejpeg')) {
892
-		return false;
893
-	}
894
-	$tmp = $fichier . '.tmp';
891
+    if (!function_exists('imagejpeg')) {
892
+        return false;
893
+    }
894
+    $tmp = $fichier . '.tmp';
895 895
 
896
-	// Enable interlancing
897
-	imageinterlace($img, true);
896
+    // Enable interlancing
897
+    imageinterlace($img, true);
898 898
 
899
-	$ret = imagejpeg($img, $tmp, $qualite);
899
+    $ret = imagejpeg($img, $tmp, $qualite);
900 900
 
901
-	if (file_exists($tmp)) {
902
-		$taille_test = @getimagesize($tmp);
903
-		if (empty($taille_test[0])) {
904
-			return false;
905
-		}
901
+    if (file_exists($tmp)) {
902
+        $taille_test = @getimagesize($tmp);
903
+        if (empty($taille_test[0])) {
904
+            return false;
905
+        }
906 906
 
907
-		spip_unlink($fichier); // le fichier peut deja exister
908
-		@rename($tmp, $fichier);
907
+        spip_unlink($fichier); // le fichier peut deja exister
908
+        @rename($tmp, $fichier);
909 909
 
910
-		return $ret;
911
-	}
910
+        return $ret;
911
+    }
912 912
 
913
-	return false;
913
+    return false;
914 914
 }
915 915
 
916 916
 /**
@@ -928,9 +928,9 @@  discard block
 block discarded – undo
928 928
  *     true si le fichier a bien été créé ; false sinon.
929 929
  */
930 930
 function _image_imageico($img, $fichier) {
931
-	$gd_image_array = [$img];
931
+    $gd_image_array = [$img];
932 932
 
933
-	return ecrire_fichier($fichier, phpthumb_functions::GD2ICOstring($gd_image_array));
933
+    return ecrire_fichier($fichier, phpthumb_functions::GD2ICOstring($gd_image_array));
934 934
 }
935 935
 
936 936
 
@@ -949,24 +949,24 @@  discard block
 block discarded – undo
949 949
  *     - true si une image est bien retournée.
950 950
  */
951 951
 function _image_imagewebp($img, $fichier, $qualite = _IMG_GD_QUALITE) {
952
-	if (!function_exists('imagewebp')) {
953
-		return false;
954
-	}
955
-	$tmp = $fichier . '.tmp';
956
-	$ret = imagewebp($img, $tmp, $qualite);
957
-	if (file_exists($tmp)) {
958
-		$taille_test = @getimagesize($tmp);
959
-		if (empty($taille_test[0])) {
960
-			return false;
961
-		}
962
-
963
-		spip_unlink($fichier); // le fichier peut deja exister
964
-		@rename($tmp, $fichier);
965
-
966
-		return $ret;
967
-	}
968
-
969
-	return false;
952
+    if (!function_exists('imagewebp')) {
953
+        return false;
954
+    }
955
+    $tmp = $fichier . '.tmp';
956
+    $ret = imagewebp($img, $tmp, $qualite);
957
+    if (file_exists($tmp)) {
958
+        $taille_test = @getimagesize($tmp);
959
+        if (empty($taille_test[0])) {
960
+            return false;
961
+        }
962
+
963
+        spip_unlink($fichier); // le fichier peut deja exister
964
+        @rename($tmp, $fichier);
965
+
966
+        return $ret;
967
+    }
968
+
969
+    return false;
970 970
 }
971 971
 
972 972
 /**
@@ -986,35 +986,35 @@  discard block
 block discarded – undo
986 986
  */
987 987
 function _image_imagesvg($img, $fichier) {
988 988
 
989
-	$tmp = $fichier . '.tmp';
990
-	if (strpos($img, '<') === false) {
991
-		$img = supprimer_timestamp($img);
992
-		if (!file_exists($img)) {
993
-			return false;
994
-		}
995
-		@copy($img, $tmp);
996
-		if (filesize($tmp) == filesize($img)) {
997
-			spip_unlink($fichier); // le fichier peut deja exister
998
-			@rename($tmp, $fichier);
999
-			return true;
1000
-		}
1001
-		return false;
1002
-	}
1003
-
1004
-	file_put_contents($tmp, $img);
1005
-	if (file_exists($tmp)) {
1006
-		$taille_test = spip_getimagesize($tmp);
1007
-		if (empty($taille_test[0])) {
1008
-			return false;
1009
-		}
1010
-
1011
-		spip_unlink($fichier); // le fichier peut deja exister
1012
-		@rename($tmp, $fichier);
1013
-
1014
-		return true;
1015
-	}
1016
-
1017
-	return false;
989
+    $tmp = $fichier . '.tmp';
990
+    if (strpos($img, '<') === false) {
991
+        $img = supprimer_timestamp($img);
992
+        if (!file_exists($img)) {
993
+            return false;
994
+        }
995
+        @copy($img, $tmp);
996
+        if (filesize($tmp) == filesize($img)) {
997
+            spip_unlink($fichier); // le fichier peut deja exister
998
+            @rename($tmp, $fichier);
999
+            return true;
1000
+        }
1001
+        return false;
1002
+    }
1003
+
1004
+    file_put_contents($tmp, $img);
1005
+    if (file_exists($tmp)) {
1006
+        $taille_test = spip_getimagesize($tmp);
1007
+        if (empty($taille_test[0])) {
1008
+            return false;
1009
+        }
1010
+
1011
+        spip_unlink($fichier); // le fichier peut deja exister
1012
+        @rename($tmp, $fichier);
1013
+
1014
+        return true;
1015
+    }
1016
+
1017
+    return false;
1018 1018
 }
1019 1019
 
1020 1020
 
@@ -1042,30 +1042,30 @@  discard block
 block discarded – undo
1042 1042
  *     - false sinon.
1043 1043
  */
1044 1044
 function _image_gd_output($img, $valeurs, $qualite = _IMG_GD_QUALITE, $fonction = null) {
1045
-	if (is_null($fonction)) {
1046
-		$fonction = '_image_image' . $valeurs['format_dest'];
1047
-	}
1048
-	$ret = false;
1049
-	#un flag pour reperer les images gravees
1050
-	$lock = (
1051
-		!statut_effacer_images_temporaires('get') // si la fonction n'a pas ete activee, on grave tout
1052
-		or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'] . '.src'))
1053
-	);
1054
-	if (
1055
-		function_exists($fonction)
1056
-		&& ($ret = $fonction($img, $valeurs['fichier_dest'], $qualite)) # on a reussi a creer l'image
1057
-		&& isset($valeurs['reconstruction']) # et on sait comment la resonctruire le cas echeant
1058
-		&& !$lock
1059
-	) {
1060
-		if (@file_exists($valeurs['fichier_dest'])) {
1061
-			// dans tous les cas mettre a jour la taille de l'image finale
1062
-			[$valeurs['hauteur_dest'], $valeurs['largeur_dest']] = taille_image($valeurs['fichier_dest']);
1063
-			$valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition
1064
-			ecrire_fichier($valeurs['fichier_dest'] . '.src', serialize($valeurs), true);
1065
-		}
1066
-	}
1067
-
1068
-	return $ret;
1045
+    if (is_null($fonction)) {
1046
+        $fonction = '_image_image' . $valeurs['format_dest'];
1047
+    }
1048
+    $ret = false;
1049
+    #un flag pour reperer les images gravees
1050
+    $lock = (
1051
+        !statut_effacer_images_temporaires('get') // si la fonction n'a pas ete activee, on grave tout
1052
+        or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'] . '.src'))
1053
+    );
1054
+    if (
1055
+        function_exists($fonction)
1056
+        && ($ret = $fonction($img, $valeurs['fichier_dest'], $qualite)) # on a reussi a creer l'image
1057
+        && isset($valeurs['reconstruction']) # et on sait comment la resonctruire le cas echeant
1058
+        && !$lock
1059
+    ) {
1060
+        if (@file_exists($valeurs['fichier_dest'])) {
1061
+            // dans tous les cas mettre a jour la taille de l'image finale
1062
+            [$valeurs['hauteur_dest'], $valeurs['largeur_dest']] = taille_image($valeurs['fichier_dest']);
1063
+            $valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition
1064
+            ecrire_fichier($valeurs['fichier_dest'] . '.src', serialize($valeurs), true);
1065
+        }
1066
+    }
1067
+
1068
+    return $ret;
1069 1069
 }
1070 1070
 
1071 1071
 /**
@@ -1078,27 +1078,27 @@  discard block
 block discarded – undo
1078 1078
  *     Chemin vers le fichier manquant
1079 1079
  **/
1080 1080
 function reconstruire_image_intermediaire($fichier_manquant) {
1081
-	$reconstruire = [];
1082
-	$fichier = $fichier_manquant;
1083
-	while (
1084
-		strpos($fichier, '://') === false
1085
-		and !@file_exists($fichier)
1086
-		and lire_fichier($src = "$fichier.src", $source)
1087
-		and $valeurs = unserialize($source)
1088
-		and ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...)
1089
-	) {
1090
-		spip_unlink($src); // si jamais on a un timeout pendant la reconstruction, elle se fera naturellement au hit suivant
1091
-		$reconstruire[] = $valeurs['reconstruction'];
1092
-	}
1093
-	while (count($reconstruire)) {
1094
-		$r = array_pop($reconstruire);
1095
-		$fonction = $r[0];
1096
-		$args = $r[1];
1097
-		$fonction(...$args);
1098
-	}
1099
-	// cette image intermediaire est commune a plusieurs series de filtre, il faut la conserver
1100
-	// mais l'on peut nettoyer les miettes de sa creation
1101
-	ramasse_miettes($fichier_manquant);
1081
+    $reconstruire = [];
1082
+    $fichier = $fichier_manquant;
1083
+    while (
1084
+        strpos($fichier, '://') === false
1085
+        and !@file_exists($fichier)
1086
+        and lire_fichier($src = "$fichier.src", $source)
1087
+        and $valeurs = unserialize($source)
1088
+        and ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...)
1089
+    ) {
1090
+        spip_unlink($src); // si jamais on a un timeout pendant la reconstruction, elle se fera naturellement au hit suivant
1091
+        $reconstruire[] = $valeurs['reconstruction'];
1092
+    }
1093
+    while (count($reconstruire)) {
1094
+        $r = array_pop($reconstruire);
1095
+        $fonction = $r[0];
1096
+        $args = $r[1];
1097
+        $fonction(...$args);
1098
+    }
1099
+    // cette image intermediaire est commune a plusieurs series de filtre, il faut la conserver
1100
+    // mais l'on peut nettoyer les miettes de sa creation
1101
+    ramasse_miettes($fichier_manquant);
1102 1102
 }
1103 1103
 
1104 1104
 /**
@@ -1118,28 +1118,28 @@  discard block
 block discarded – undo
1118 1118
  *     Chemin du fichier d'image calculé
1119 1119
  **/
1120 1120
 function ramasse_miettes($fichier) {
1121
-	if (
1122
-		strpos($fichier, '://') !== false
1123
-		or !lire_fichier($src = "$fichier.src", $source)
1124
-		or !$valeurs = unserialize($source)
1125
-	) {
1126
-		return;
1127
-	}
1128
-	spip_unlink($src); # on supprime la reference a sa source pour marquer cette image comme non intermediaire
1129
-	while (
1130
-		($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...)
1131
-		and (substr($fichier, 0, strlen(_DIR_VAR)) == _DIR_VAR) # et est dans local
1132
-		and (lire_fichier(
1133
-			$src = "$fichier.src",
1134
-			$source
1135
-		)) # le fichier a une source connue (c'est donc une image calculee intermediaire)
1136
-		and ($valeurs = unserialize($source))  # et valide
1137
-	) {
1138
-		# on efface le fichier
1139
-		spip_unlink($fichier);
1140
-		# mais laisse le .src qui permet de savoir comment reconstruire l'image si besoin
1141
-		#spip_unlink($src);
1142
-	}
1121
+    if (
1122
+        strpos($fichier, '://') !== false
1123
+        or !lire_fichier($src = "$fichier.src", $source)
1124
+        or !$valeurs = unserialize($source)
1125
+    ) {
1126
+        return;
1127
+    }
1128
+    spip_unlink($src); # on supprime la reference a sa source pour marquer cette image comme non intermediaire
1129
+    while (
1130
+        ($fichier = $valeurs['fichier']) # l'origine est connue (on ne verifie pas son existence, qu'importe ...)
1131
+        and (substr($fichier, 0, strlen(_DIR_VAR)) == _DIR_VAR) # et est dans local
1132
+        and (lire_fichier(
1133
+            $src = "$fichier.src",
1134
+            $source
1135
+        )) # le fichier a une source connue (c'est donc une image calculee intermediaire)
1136
+        and ($valeurs = unserialize($source))  # et valide
1137
+    ) {
1138
+        # on efface le fichier
1139
+        spip_unlink($fichier);
1140
+        # mais laisse le .src qui permet de savoir comment reconstruire l'image si besoin
1141
+        #spip_unlink($src);
1142
+    }
1143 1143
 }
1144 1144
 
1145 1145
 
@@ -1164,35 +1164,35 @@  discard block
 block discarded – undo
1164 1164
  *     Code HTML de l'image
1165 1165
  **/
1166 1166
 function image_graver($img) {
1167
-	// appeler le filtre post_image_filtrer qui permet de faire
1168
-	// des traitements auto a la fin d'une serie de filtres
1169
-	$img = pipeline('post_image_filtrer', $img);
1170
-
1171
-	$fichier_ori = $fichier = (extraire_attribut($img, 'src') ?? '');
1172
-	if (($p = strpos($fichier, '?')) !== false) {
1173
-		$fichier = substr($fichier, 0, $p);
1174
-	}
1175
-	if (strlen($fichier) < 1) {
1176
-		if (strpos($img, '<img ') !== 0) {
1177
-			$fichier = $img;
1178
-		}
1179
-	}
1180
-	if (strlen($fichier)) {
1181
-		# si jamais le fichier final n'a pas ete calcule car suppose temporaire
1182
-		# et qu'il ne s'agit pas d'une URL
1183
-		if (strpos($fichier, '://') === false and !@file_exists($fichier)) {
1184
-			reconstruire_image_intermediaire($fichier);
1185
-		}
1186
-		ramasse_miettes($fichier);
1187
-
1188
-		// ajouter le timestamp si besoin
1189
-		if (strpos($fichier_ori, '?') === false) {
1190
-			// on utilise str_replace pour attraper le onmouseover des logo si besoin
1191
-			$img = str_replace($fichier_ori, timestamp($fichier_ori), $img);
1192
-		}
1193
-	}
1194
-
1195
-	return $img;
1167
+    // appeler le filtre post_image_filtrer qui permet de faire
1168
+    // des traitements auto a la fin d'une serie de filtres
1169
+    $img = pipeline('post_image_filtrer', $img);
1170
+
1171
+    $fichier_ori = $fichier = (extraire_attribut($img, 'src') ?? '');
1172
+    if (($p = strpos($fichier, '?')) !== false) {
1173
+        $fichier = substr($fichier, 0, $p);
1174
+    }
1175
+    if (strlen($fichier) < 1) {
1176
+        if (strpos($img, '<img ') !== 0) {
1177
+            $fichier = $img;
1178
+        }
1179
+    }
1180
+    if (strlen($fichier)) {
1181
+        # si jamais le fichier final n'a pas ete calcule car suppose temporaire
1182
+        # et qu'il ne s'agit pas d'une URL
1183
+        if (strpos($fichier, '://') === false and !@file_exists($fichier)) {
1184
+            reconstruire_image_intermediaire($fichier);
1185
+        }
1186
+        ramasse_miettes($fichier);
1187
+
1188
+        // ajouter le timestamp si besoin
1189
+        if (strpos($fichier_ori, '?') === false) {
1190
+            // on utilise str_replace pour attraper le onmouseover des logo si besoin
1191
+            $img = str_replace($fichier_ori, timestamp($fichier_ori), $img);
1192
+        }
1193
+    }
1194
+
1195
+    return $img;
1196 1196
 }
1197 1197
 
1198 1198
 /**
@@ -1219,34 +1219,34 @@  discard block
 block discarded – undo
1219 1219
  *     Code html modifié de la balise.
1220 1220
  **/
1221 1221
 function _image_tag_changer_taille($tag, $width, $height, $style = false) {
1222
-	if ($style === false) {
1223
-		$style = extraire_attribut($tag, 'style');
1224
-	}
1225
-
1226
-	// enlever le width et height du style
1227
-	if ($style) {
1228
-		$style = preg_replace(',(^|;)\s*(width|height)\s*:\s*[^;]+,ims', '', $style);
1229
-	}
1230
-	if ($style and $style[0] === ';') {
1231
-		$style = substr($style, 1);
1232
-	}
1233
-
1234
-	// mettre des attributs de width et height sur les images,
1235
-	// ca accelere le rendu du navigateur
1236
-	// ca permet aux navigateurs de reserver la bonne taille
1237
-	// quand on a desactive l'affichage des images.
1238
-	$tag = inserer_attribut($tag, 'width', round($width));
1239
-	$tag = inserer_attribut($tag, 'height', round($height));
1240
-
1241
-	// attributs deprecies. Transformer en CSS
1242
-	if ($espace = extraire_attribut($tag, 'hspace')) {
1243
-		$style = "margin:{$espace}px;" . $style;
1244
-		$tag = inserer_attribut($tag, 'hspace', '');
1245
-	}
1246
-
1247
-	$tag = inserer_attribut($tag, 'style', (string) $style, true, $style ? false : true);
1248
-
1249
-	return $tag;
1222
+    if ($style === false) {
1223
+        $style = extraire_attribut($tag, 'style');
1224
+    }
1225
+
1226
+    // enlever le width et height du style
1227
+    if ($style) {
1228
+        $style = preg_replace(',(^|;)\s*(width|height)\s*:\s*[^;]+,ims', '', $style);
1229
+    }
1230
+    if ($style and $style[0] === ';') {
1231
+        $style = substr($style, 1);
1232
+    }
1233
+
1234
+    // mettre des attributs de width et height sur les images,
1235
+    // ca accelere le rendu du navigateur
1236
+    // ca permet aux navigateurs de reserver la bonne taille
1237
+    // quand on a desactive l'affichage des images.
1238
+    $tag = inserer_attribut($tag, 'width', round($width));
1239
+    $tag = inserer_attribut($tag, 'height', round($height));
1240
+
1241
+    // attributs deprecies. Transformer en CSS
1242
+    if ($espace = extraire_attribut($tag, 'hspace')) {
1243
+        $style = "margin:{$espace}px;" . $style;
1244
+        $tag = inserer_attribut($tag, 'hspace', '');
1245
+    }
1246
+
1247
+    $tag = inserer_attribut($tag, 'style', (string) $style, true, $style ? false : true);
1248
+
1249
+    return $tag;
1250 1250
 }
1251 1251
 
1252 1252
 
@@ -1272,72 +1272,72 @@  discard block
 block discarded – undo
1272 1272
  *     Retourne le code HTML de l'image
1273 1273
  **/
1274 1274
 function _image_ecrire_tag($valeurs, $surcharge = []) {
1275
-	$valeurs = pipeline('image_ecrire_tag_preparer', $valeurs);
1276
-
1277
-	// fermer les tags img pas bien fermes;
1278
-	$tag = str_replace('>', '/>', str_replace('/>', '>', $valeurs['tag']));
1279
-
1280
-	// le style
1281
-	$style = $valeurs['style'];
1282
-	if (isset($surcharge['style'])) {
1283
-		$style = $surcharge['style'];
1284
-		unset($surcharge['style']);
1285
-	}
1286
-
1287
-	// traiter specifiquement la largeur et la hauteur
1288
-	$width = $valeurs['largeur'];
1289
-	if (isset($surcharge['width'])) {
1290
-		$width = $surcharge['width'];
1291
-		unset($surcharge['width']);
1292
-	}
1293
-	$height = $valeurs['hauteur'];
1294
-	if (isset($surcharge['height'])) {
1295
-		$height = $surcharge['height'];
1296
-		unset($surcharge['height']);
1297
-	}
1298
-
1299
-	$tag = _image_tag_changer_taille($tag, $width, $height, $style);
1300
-	// traiter specifiquement le src qui peut etre repris dans un onmouseout
1301
-	// on remplace toute les ref a src dans le tag
1302
-	$src = extraire_attribut($tag, 'src');
1303
-	if (isset($surcharge['src'])) {
1304
-		$tag = str_replace($src, $surcharge['src'], $tag);
1305
-		// si il y a des & dans src, alors ils peuvent provenir d'un &amp
1306
-		// pas garanti comme methode, mais mieux que rien
1307
-		if (strpos($src, '&') !== false) {
1308
-			$tag = str_replace(str_replace('&', '&amp;', $src), $surcharge['src'], $tag);
1309
-		}
1310
-		$src = $surcharge['src'];
1311
-		unset($surcharge['src']);
1312
-	}
1313
-
1314
-	$class = $valeurs['class'];
1315
-	if (isset($surcharge['class'])) {
1316
-		$class = $surcharge['class'];
1317
-		unset($surcharge['class']);
1318
-	}
1319
-	if (is_scalar($class) && strlen($class)) {
1320
-		$tag = inserer_attribut($tag, 'class', $class);
1321
-	}
1322
-
1323
-	if (count($surcharge)) {
1324
-		foreach ($surcharge as $attribut => $valeur) {
1325
-			$tag = inserer_attribut($tag, $attribut, $valeur);
1326
-		}
1327
-	}
1328
-
1329
-	$tag = pipeline(
1330
-		'image_ecrire_tag_finir',
1331
-		[
1332
-			'args' => [
1333
-				'valeurs' => $valeurs,
1334
-				'surcharge' => $surcharge,
1335
-			],
1336
-			'data' => $tag
1337
-		]
1338
-	);
1339
-
1340
-	return $tag;
1275
+    $valeurs = pipeline('image_ecrire_tag_preparer', $valeurs);
1276
+
1277
+    // fermer les tags img pas bien fermes;
1278
+    $tag = str_replace('>', '/>', str_replace('/>', '>', $valeurs['tag']));
1279
+
1280
+    // le style
1281
+    $style = $valeurs['style'];
1282
+    if (isset($surcharge['style'])) {
1283
+        $style = $surcharge['style'];
1284
+        unset($surcharge['style']);
1285
+    }
1286
+
1287
+    // traiter specifiquement la largeur et la hauteur
1288
+    $width = $valeurs['largeur'];
1289
+    if (isset($surcharge['width'])) {
1290
+        $width = $surcharge['width'];
1291
+        unset($surcharge['width']);
1292
+    }
1293
+    $height = $valeurs['hauteur'];
1294
+    if (isset($surcharge['height'])) {
1295
+        $height = $surcharge['height'];
1296
+        unset($surcharge['height']);
1297
+    }
1298
+
1299
+    $tag = _image_tag_changer_taille($tag, $width, $height, $style);
1300
+    // traiter specifiquement le src qui peut etre repris dans un onmouseout
1301
+    // on remplace toute les ref a src dans le tag
1302
+    $src = extraire_attribut($tag, 'src');
1303
+    if (isset($surcharge['src'])) {
1304
+        $tag = str_replace($src, $surcharge['src'], $tag);
1305
+        // si il y a des & dans src, alors ils peuvent provenir d'un &amp
1306
+        // pas garanti comme methode, mais mieux que rien
1307
+        if (strpos($src, '&') !== false) {
1308
+            $tag = str_replace(str_replace('&', '&amp;', $src), $surcharge['src'], $tag);
1309
+        }
1310
+        $src = $surcharge['src'];
1311
+        unset($surcharge['src']);
1312
+    }
1313
+
1314
+    $class = $valeurs['class'];
1315
+    if (isset($surcharge['class'])) {
1316
+        $class = $surcharge['class'];
1317
+        unset($surcharge['class']);
1318
+    }
1319
+    if (is_scalar($class) && strlen($class)) {
1320
+        $tag = inserer_attribut($tag, 'class', $class);
1321
+    }
1322
+
1323
+    if (count($surcharge)) {
1324
+        foreach ($surcharge as $attribut => $valeur) {
1325
+            $tag = inserer_attribut($tag, $attribut, $valeur);
1326
+        }
1327
+    }
1328
+
1329
+    $tag = pipeline(
1330
+        'image_ecrire_tag_finir',
1331
+        [
1332
+            'args' => [
1333
+                'valeurs' => $valeurs,
1334
+                'surcharge' => $surcharge,
1335
+            ],
1336
+            'data' => $tag
1337
+        ]
1338
+    );
1339
+
1340
+    return $tag;
1341 1341
 }
1342 1342
 
1343 1343
 /**
@@ -1360,268 +1360,268 @@  discard block
 block discarded – undo
1360 1360
  *     Description de l'image, sinon null.
1361 1361
  **/
1362 1362
 function _image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process = 'AUTO', $force = false) {
1363
-	$srcHeight = null;
1364
-	$retour = [];
1365
-	// ordre de preference des formats graphiques pour creer les vignettes
1366
-	// le premier format disponible, selon la methode demandee, est utilise
1367
-	$image = $valeurs['fichier'];
1368
-	$format = $valeurs['format_source'];
1369
-	$destdir = dirname($valeurs['fichier_dest']);
1370
-	$destfile = basename($valeurs['fichier_dest'], '.' . $valeurs['format_dest']);
1371
-
1372
-	$format_sortie = $valeurs['format_dest'];
1373
-
1374
-	if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) {
1375
-		$process = $GLOBALS['meta']['image_process'];
1376
-	}
1377
-
1378
-	// si le doc n'est pas une image dans un format accetpable, refuser
1379
-	if (!$force and !in_array($format, formats_image_acceptables(in_array($process, ['gd1', 'gd2'])))) {
1380
-		return;
1381
-	}
1382
-	$destination = "$destdir/$destfile";
1383
-
1384
-	// calculer la taille
1385
-	if (($srcWidth = $valeurs['largeur']) && ($srcHeight = $valeurs['hauteur'])) {
1386
-		if (!($destWidth = $valeurs['largeur_dest']) || !($destHeight = $valeurs['hauteur_dest'])) {
1387
-			[$destWidth, $destHeight] = _image_ratio($srcWidth, $srcHeight, $maxWidth, $maxHeight);
1388
-		}
1389
-	} elseif ($process == 'convert' or $process == 'imagick') {
1390
-		$destWidth = $maxWidth;
1391
-		$destHeight = $maxHeight;
1392
-	} else {
1393
-		spip_log("echec $process sur $image");
1394
-
1395
-		return;
1396
-	}
1397
-
1398
-	$vignette = '';
1399
-
1400
-	// Si l'image est de la taille demandee (ou plus petite), simplement la retourner
1401
-	if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1402
-		$vignette = $destination . '.' . $format;
1403
-		@copy($image, $vignette);
1404
-	}
1405
-
1406
-	elseif ($valeurs['format_source'] === 'svg') {
1407
-		include_spip('inc/svg');
1408
-		if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) {
1409
-			$format_sortie = 'svg';
1410
-			$vignette = $destination . '.' . $format_sortie;
1411
-			$valeurs['fichier_dest'] = $vignette;
1412
-			_image_gd_output($svg, $valeurs);
1413
-		}
1414
-	}
1415
-
1416
-	// imagemagick en ligne de commande
1417
-	elseif ($process == 'convert') {
1418
-		if (!defined('_CONVERT_COMMAND')) {
1419
-			define('_CONVERT_COMMAND', 'convert');
1420
-		} // Securite : mes_options.php peut preciser le chemin absolu
1421
-		if (!defined('_RESIZE_COMMAND')) {
1422
-			define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest');
1423
-		}
1424
-		$vignette = $destination . '.' . $format_sortie;
1425
-		$commande = str_replace(
1426
-			['%x', '%y', '%src', '%dest'],
1427
-			[
1428
-				$destWidth,
1429
-				$destHeight,
1430
-				escapeshellcmd($image),
1431
-				escapeshellcmd($vignette)
1432
-			],
1433
-			_RESIZE_COMMAND
1434
-		);
1435
-		spip_log($commande);
1436
-		exec($commande);
1437
-		if (!@file_exists($vignette)) {
1438
-			spip_log("echec convert sur $vignette");
1439
-
1440
-			return;  // echec commande
1441
-		}
1442
-	}
1443
-
1444
-	// php5 imagemagick
1445
-	elseif ($process == 'imagick') {
1446
-		if (!class_exists(\Imagick::class)) {
1447
-			spip_log('Classe Imagick absente !', _LOG_ERREUR);
1448
-
1449
-			return;
1450
-		}
1451
-
1452
-		// chemin compatible Windows
1453
-		$output = realpath(dirname($destination));
1454
-		if (!$output) {
1455
-			return;
1456
-		}
1457
-		$vignette = $output . DIRECTORY_SEPARATOR . basename($destination) . '.' . $format_sortie;
1458
-
1459
-		$imagick = new Imagick();
1460
-		$imagick->readImage(realpath($image));
1461
-		$imagick->resizeImage(
1462
-			$destWidth,
1463
-			$destHeight,
1464
-			Imagick::FILTER_LANCZOS,
1465
-			1
1466
-		);//, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100);
1467
-		$imagick->writeImage($vignette);
1468
-
1469
-		if (!@file_exists($vignette)) {
1470
-			spip_log("echec imagick sur $vignette");
1471
-
1472
-			return;
1473
-		}
1474
-		// remettre le chemin relatif car c'est ce qu'attend SPIP pour la suite (en particlier action/tester)
1475
-		$vignette = $destination . '.' . $format_sortie;
1476
-	}
1477
-
1478
-	// netpbm
1479
-	elseif ($process == 'netpbm') {
1480
-		if (!defined('_PNMSCALE_COMMAND')) {
1481
-			define('_PNMSCALE_COMMAND', 'pnmscale');
1482
-		} // Securite : mes_options.php peut preciser le chemin absolu
1483
-		if (_PNMSCALE_COMMAND == '') {
1484
-			return;
1485
-		}
1486
-		$vignette = $destination . '.' . $format_sortie;
1487
-		$pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND);
1488
-		if ($format == 'jpg') {
1489
-			$jpegtopnm_command = str_replace('pnmscale', 'jpegtopnm', _PNMSCALE_COMMAND);
1490
-			exec("$jpegtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1491
-			if (!($s = @filesize($vignette))) {
1492
-				spip_unlink($vignette);
1493
-			}
1494
-			if (!@file_exists($vignette)) {
1495
-				spip_log("echec netpbm-jpg sur $vignette");
1496
-
1497
-				return;
1498
-			}
1499
-		} else {
1500
-			if ($format == 'gif') {
1501
-				$giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND);
1502
-				exec("$giftopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1503
-				if (!($s = @filesize($vignette))) {
1504
-					spip_unlink($vignette);
1505
-				}
1506
-				if (!@file_exists($vignette)) {
1507
-					spip_log("echec netpbm-gif sur $vignette");
1508
-
1509
-					return;
1510
-				}
1511
-			} else {
1512
-				if ($format == 'png') {
1513
-					$pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND);
1514
-					exec("$pngtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1515
-					if (!($s = @filesize($vignette))) {
1516
-						spip_unlink($vignette);
1517
-					}
1518
-					if (!@file_exists($vignette)) {
1519
-						spip_log("echec netpbm-png sur $vignette");
1520
-
1521
-						return;
1522
-					}
1523
-				}
1524
-			}
1525
-		}
1526
-	}
1527
-
1528
-	// gd ou gd2
1529
-	elseif ($process == 'gd1' or $process == 'gd2') {
1530
-		if (!function_exists('gd_info')) {
1531
-			spip_log('Librairie GD absente !', _LOG_ERREUR);
1532
-
1533
-			return;
1534
-		}
1535
-		if (_IMG_GD_MAX_PIXELS && $srcWidth * $srcHeight > _IMG_GD_MAX_PIXELS) {
1536
-			spip_log('vignette gd1/gd2 impossible : ' . $srcWidth * $srcHeight . 'pixels');
1537
-
1538
-			return;
1539
-		}
1540
-		$destFormat = $format_sortie;
1541
-		if (!$destFormat) {
1542
-			spip_log("pas de format pour $image");
1543
-
1544
-			return;
1545
-		}
1546
-
1547
-		$fonction_imagecreatefrom = $valeurs['fonction_imagecreatefrom'];
1548
-		if (!function_exists($fonction_imagecreatefrom)) {
1549
-			return;
1550
-		}
1551
-		$srcImage = @$fonction_imagecreatefrom($image);
1552
-		if (!$srcImage) {
1553
-			spip_log('echec gd1/gd2');
1554
-
1555
-			return;
1556
-		}
1557
-
1558
-		// Initialisation de l'image destination
1559
-		$destImage = null;
1560
-		if ($process == 'gd2' and $destFormat != 'gif') {
1561
-			$destImage = ImageCreateTrueColor($destWidth, $destHeight);
1562
-		}
1563
-		if (!$destImage) {
1564
-			$destImage = ImageCreate($destWidth, $destHeight);
1565
-		}
1566
-
1567
-		// Recopie de l'image d'origine avec adaptation de la taille
1568
-		$ok = false;
1569
-		if (($process == 'gd2') and function_exists('ImageCopyResampled')) {
1570
-			if ($format == 'gif') {
1571
-				// Si un GIF est transparent,
1572
-				// fabriquer un PNG transparent
1573
-				$transp = imagecolortransparent($srcImage);
1574
-				if ($transp > 0) {
1575
-					$destFormat = 'png';
1576
-				}
1577
-			}
1578
-			if (in_array($destFormat, _image_extensions_conservent_transparence())) {
1579
-				// Conserver la transparence
1580
-				if (function_exists('imageAntiAlias')) {
1581
-					imageAntiAlias($destImage, true);
1582
-				}
1583
-				@imagealphablending($destImage, false);
1584
-				@imagesavealpha($destImage, true);
1585
-			}
1586
-			$ok = @ImageCopyResampled($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
1587
-		}
1588
-		if (!$ok) {
1589
-			$ok = ImageCopyResized($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
1590
-		}
1591
-
1592
-		// Sauvegarde de l'image destination
1593
-		$valeurs['fichier_dest'] = $vignette = "$destination.$destFormat";
1594
-		$valeurs['format_dest'] = $format = $destFormat;
1595
-		_image_gd_output($destImage, $valeurs);
1596
-
1597
-		if ($srcImage) {
1598
-			ImageDestroy($srcImage);
1599
-		}
1600
-		ImageDestroy($destImage);
1601
-	}
1602
-
1603
-	if (!$vignette or !$size = @spip_getimagesize($vignette)) {
1604
-		$size = [$destWidth, $destHeight];
1605
-	}
1606
-
1607
-	// Gaffe: en safe mode, pas d'acces a la vignette,
1608
-	// donc risque de balancer "width='0'", ce qui masque l'image sous MSIE
1609
-	if ($size[0] < 1) {
1610
-		$size[0] = $destWidth;
1611
-	}
1612
-	if ($size[1] < 1) {
1613
-		$size[1] = $destHeight;
1614
-	}
1615
-
1616
-	$retour['width'] = $largeur = $size[0];
1617
-	$retour['height'] = $hauteur = $size[1];
1618
-
1619
-	$retour['fichier'] = $vignette;
1620
-	$retour['format'] = $format;
1621
-	$retour['date'] = @filemtime($vignette);
1622
-
1623
-	// renvoyer l'image
1624
-	return $retour;
1363
+    $srcHeight = null;
1364
+    $retour = [];
1365
+    // ordre de preference des formats graphiques pour creer les vignettes
1366
+    // le premier format disponible, selon la methode demandee, est utilise
1367
+    $image = $valeurs['fichier'];
1368
+    $format = $valeurs['format_source'];
1369
+    $destdir = dirname($valeurs['fichier_dest']);
1370
+    $destfile = basename($valeurs['fichier_dest'], '.' . $valeurs['format_dest']);
1371
+
1372
+    $format_sortie = $valeurs['format_dest'];
1373
+
1374
+    if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) {
1375
+        $process = $GLOBALS['meta']['image_process'];
1376
+    }
1377
+
1378
+    // si le doc n'est pas une image dans un format accetpable, refuser
1379
+    if (!$force and !in_array($format, formats_image_acceptables(in_array($process, ['gd1', 'gd2'])))) {
1380
+        return;
1381
+    }
1382
+    $destination = "$destdir/$destfile";
1383
+
1384
+    // calculer la taille
1385
+    if (($srcWidth = $valeurs['largeur']) && ($srcHeight = $valeurs['hauteur'])) {
1386
+        if (!($destWidth = $valeurs['largeur_dest']) || !($destHeight = $valeurs['hauteur_dest'])) {
1387
+            [$destWidth, $destHeight] = _image_ratio($srcWidth, $srcHeight, $maxWidth, $maxHeight);
1388
+        }
1389
+    } elseif ($process == 'convert' or $process == 'imagick') {
1390
+        $destWidth = $maxWidth;
1391
+        $destHeight = $maxHeight;
1392
+    } else {
1393
+        spip_log("echec $process sur $image");
1394
+
1395
+        return;
1396
+    }
1397
+
1398
+    $vignette = '';
1399
+
1400
+    // Si l'image est de la taille demandee (ou plus petite), simplement la retourner
1401
+    if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1402
+        $vignette = $destination . '.' . $format;
1403
+        @copy($image, $vignette);
1404
+    }
1405
+
1406
+    elseif ($valeurs['format_source'] === 'svg') {
1407
+        include_spip('inc/svg');
1408
+        if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) {
1409
+            $format_sortie = 'svg';
1410
+            $vignette = $destination . '.' . $format_sortie;
1411
+            $valeurs['fichier_dest'] = $vignette;
1412
+            _image_gd_output($svg, $valeurs);
1413
+        }
1414
+    }
1415
+
1416
+    // imagemagick en ligne de commande
1417
+    elseif ($process == 'convert') {
1418
+        if (!defined('_CONVERT_COMMAND')) {
1419
+            define('_CONVERT_COMMAND', 'convert');
1420
+        } // Securite : mes_options.php peut preciser le chemin absolu
1421
+        if (!defined('_RESIZE_COMMAND')) {
1422
+            define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest');
1423
+        }
1424
+        $vignette = $destination . '.' . $format_sortie;
1425
+        $commande = str_replace(
1426
+            ['%x', '%y', '%src', '%dest'],
1427
+            [
1428
+                $destWidth,
1429
+                $destHeight,
1430
+                escapeshellcmd($image),
1431
+                escapeshellcmd($vignette)
1432
+            ],
1433
+            _RESIZE_COMMAND
1434
+        );
1435
+        spip_log($commande);
1436
+        exec($commande);
1437
+        if (!@file_exists($vignette)) {
1438
+            spip_log("echec convert sur $vignette");
1439
+
1440
+            return;  // echec commande
1441
+        }
1442
+    }
1443
+
1444
+    // php5 imagemagick
1445
+    elseif ($process == 'imagick') {
1446
+        if (!class_exists(\Imagick::class)) {
1447
+            spip_log('Classe Imagick absente !', _LOG_ERREUR);
1448
+
1449
+            return;
1450
+        }
1451
+
1452
+        // chemin compatible Windows
1453
+        $output = realpath(dirname($destination));
1454
+        if (!$output) {
1455
+            return;
1456
+        }
1457
+        $vignette = $output . DIRECTORY_SEPARATOR . basename($destination) . '.' . $format_sortie;
1458
+
1459
+        $imagick = new Imagick();
1460
+        $imagick->readImage(realpath($image));
1461
+        $imagick->resizeImage(
1462
+            $destWidth,
1463
+            $destHeight,
1464
+            Imagick::FILTER_LANCZOS,
1465
+            1
1466
+        );//, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100);
1467
+        $imagick->writeImage($vignette);
1468
+
1469
+        if (!@file_exists($vignette)) {
1470
+            spip_log("echec imagick sur $vignette");
1471
+
1472
+            return;
1473
+        }
1474
+        // remettre le chemin relatif car c'est ce qu'attend SPIP pour la suite (en particlier action/tester)
1475
+        $vignette = $destination . '.' . $format_sortie;
1476
+    }
1477
+
1478
+    // netpbm
1479
+    elseif ($process == 'netpbm') {
1480
+        if (!defined('_PNMSCALE_COMMAND')) {
1481
+            define('_PNMSCALE_COMMAND', 'pnmscale');
1482
+        } // Securite : mes_options.php peut preciser le chemin absolu
1483
+        if (_PNMSCALE_COMMAND == '') {
1484
+            return;
1485
+        }
1486
+        $vignette = $destination . '.' . $format_sortie;
1487
+        $pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND);
1488
+        if ($format == 'jpg') {
1489
+            $jpegtopnm_command = str_replace('pnmscale', 'jpegtopnm', _PNMSCALE_COMMAND);
1490
+            exec("$jpegtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1491
+            if (!($s = @filesize($vignette))) {
1492
+                spip_unlink($vignette);
1493
+            }
1494
+            if (!@file_exists($vignette)) {
1495
+                spip_log("echec netpbm-jpg sur $vignette");
1496
+
1497
+                return;
1498
+            }
1499
+        } else {
1500
+            if ($format == 'gif') {
1501
+                $giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND);
1502
+                exec("$giftopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1503
+                if (!($s = @filesize($vignette))) {
1504
+                    spip_unlink($vignette);
1505
+                }
1506
+                if (!@file_exists($vignette)) {
1507
+                    spip_log("echec netpbm-gif sur $vignette");
1508
+
1509
+                    return;
1510
+                }
1511
+            } else {
1512
+                if ($format == 'png') {
1513
+                    $pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND);
1514
+                    exec("$pngtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1515
+                    if (!($s = @filesize($vignette))) {
1516
+                        spip_unlink($vignette);
1517
+                    }
1518
+                    if (!@file_exists($vignette)) {
1519
+                        spip_log("echec netpbm-png sur $vignette");
1520
+
1521
+                        return;
1522
+                    }
1523
+                }
1524
+            }
1525
+        }
1526
+    }
1527
+
1528
+    // gd ou gd2
1529
+    elseif ($process == 'gd1' or $process == 'gd2') {
1530
+        if (!function_exists('gd_info')) {
1531
+            spip_log('Librairie GD absente !', _LOG_ERREUR);
1532
+
1533
+            return;
1534
+        }
1535
+        if (_IMG_GD_MAX_PIXELS && $srcWidth * $srcHeight > _IMG_GD_MAX_PIXELS) {
1536
+            spip_log('vignette gd1/gd2 impossible : ' . $srcWidth * $srcHeight . 'pixels');
1537
+
1538
+            return;
1539
+        }
1540
+        $destFormat = $format_sortie;
1541
+        if (!$destFormat) {
1542
+            spip_log("pas de format pour $image");
1543
+
1544
+            return;
1545
+        }
1546
+
1547
+        $fonction_imagecreatefrom = $valeurs['fonction_imagecreatefrom'];
1548
+        if (!function_exists($fonction_imagecreatefrom)) {
1549
+            return;
1550
+        }
1551
+        $srcImage = @$fonction_imagecreatefrom($image);
1552
+        if (!$srcImage) {
1553
+            spip_log('echec gd1/gd2');
1554
+
1555
+            return;
1556
+        }
1557
+
1558
+        // Initialisation de l'image destination
1559
+        $destImage = null;
1560
+        if ($process == 'gd2' and $destFormat != 'gif') {
1561
+            $destImage = ImageCreateTrueColor($destWidth, $destHeight);
1562
+        }
1563
+        if (!$destImage) {
1564
+            $destImage = ImageCreate($destWidth, $destHeight);
1565
+        }
1566
+
1567
+        // Recopie de l'image d'origine avec adaptation de la taille
1568
+        $ok = false;
1569
+        if (($process == 'gd2') and function_exists('ImageCopyResampled')) {
1570
+            if ($format == 'gif') {
1571
+                // Si un GIF est transparent,
1572
+                // fabriquer un PNG transparent
1573
+                $transp = imagecolortransparent($srcImage);
1574
+                if ($transp > 0) {
1575
+                    $destFormat = 'png';
1576
+                }
1577
+            }
1578
+            if (in_array($destFormat, _image_extensions_conservent_transparence())) {
1579
+                // Conserver la transparence
1580
+                if (function_exists('imageAntiAlias')) {
1581
+                    imageAntiAlias($destImage, true);
1582
+                }
1583
+                @imagealphablending($destImage, false);
1584
+                @imagesavealpha($destImage, true);
1585
+            }
1586
+            $ok = @ImageCopyResampled($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
1587
+        }
1588
+        if (!$ok) {
1589
+            $ok = ImageCopyResized($destImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
1590
+        }
1591
+
1592
+        // Sauvegarde de l'image destination
1593
+        $valeurs['fichier_dest'] = $vignette = "$destination.$destFormat";
1594
+        $valeurs['format_dest'] = $format = $destFormat;
1595
+        _image_gd_output($destImage, $valeurs);
1596
+
1597
+        if ($srcImage) {
1598
+            ImageDestroy($srcImage);
1599
+        }
1600
+        ImageDestroy($destImage);
1601
+    }
1602
+
1603
+    if (!$vignette or !$size = @spip_getimagesize($vignette)) {
1604
+        $size = [$destWidth, $destHeight];
1605
+    }
1606
+
1607
+    // Gaffe: en safe mode, pas d'acces a la vignette,
1608
+    // donc risque de balancer "width='0'", ce qui masque l'image sous MSIE
1609
+    if ($size[0] < 1) {
1610
+        $size[0] = $destWidth;
1611
+    }
1612
+    if ($size[1] < 1) {
1613
+        $size[1] = $destHeight;
1614
+    }
1615
+
1616
+    $retour['width'] = $largeur = $size[0];
1617
+    $retour['height'] = $hauteur = $size[1];
1618
+
1619
+    $retour['fichier'] = $vignette;
1620
+    $retour['format'] = $format;
1621
+    $retour['date'] = @filemtime($vignette);
1622
+
1623
+    // renvoyer l'image
1624
+    return $retour;
1625 1625
 }
1626 1626
 
1627 1627
 /**
@@ -1641,25 +1641,25 @@  discard block
 block discarded – undo
1641 1641
  * @return array Liste [ largeur, hauteur, ratio de réduction ]
1642 1642
  **/
1643 1643
 function _image_ratio(int $srcWidth, int $srcHeight, int $maxWidth, int $maxHeight): array {
1644
-	$ratioWidth = $srcWidth / $maxWidth;
1645
-	$ratioHeight = $srcHeight / $maxHeight;
1646
-
1647
-	if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1648
-		$destWidth = $srcWidth;
1649
-		$destHeight = $srcHeight;
1650
-	} elseif ($ratioWidth < $ratioHeight) {
1651
-		$destWidth = $srcWidth / $ratioHeight;
1652
-		$destHeight = $maxHeight;
1653
-	} else {
1654
-		$destWidth = $maxWidth;
1655
-		$destHeight = $srcHeight / $ratioWidth;
1656
-	}
1657
-
1658
-	return [
1659
-		intval(round($destWidth)),
1660
-		intval(round($destHeight)),
1661
-		max($ratioWidth, $ratioHeight)
1662
-	];
1644
+    $ratioWidth = $srcWidth / $maxWidth;
1645
+    $ratioHeight = $srcHeight / $maxHeight;
1646
+
1647
+    if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1648
+        $destWidth = $srcWidth;
1649
+        $destHeight = $srcHeight;
1650
+    } elseif ($ratioWidth < $ratioHeight) {
1651
+        $destWidth = $srcWidth / $ratioHeight;
1652
+        $destHeight = $maxHeight;
1653
+    } else {
1654
+        $destWidth = $maxWidth;
1655
+        $destHeight = $srcHeight / $ratioWidth;
1656
+    }
1657
+
1658
+    return [
1659
+        intval(round($destWidth)),
1660
+        intval(round($destHeight)),
1661
+        max($ratioWidth, $ratioHeight)
1662
+    ];
1663 1663
 }
1664 1664
 
1665 1665
 /**
@@ -1679,25 +1679,25 @@  discard block
 block discarded – undo
1679 1679
  * @return array Liste [ largeur, hauteur, ratio de réduction ]
1680 1680
  **/
1681 1681
 function ratio_passe_partout(int $srcWidth, int $srcHeight, int $maxWidth, int $maxHeight): array {
1682
-	$ratioWidth = $srcWidth / $maxWidth;
1683
-	$ratioHeight = $srcHeight / $maxHeight;
1684
-
1685
-	if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1686
-		$destWidth = $srcWidth;
1687
-		$destHeight = $srcHeight;
1688
-	} elseif ($ratioWidth > $ratioHeight) {
1689
-		$destWidth = $srcWidth / $ratioHeight;
1690
-		$destHeight = $maxHeight;
1691
-	} else {
1692
-		$destWidth = $maxWidth;
1693
-		$destHeight = $srcHeight / $ratioWidth;
1694
-	}
1695
-
1696
-	return [
1697
-		intval(round($destWidth)),
1698
-		intval(round($destHeight)),
1699
-		min($ratioWidth, $ratioHeight)
1700
-	];
1682
+    $ratioWidth = $srcWidth / $maxWidth;
1683
+    $ratioHeight = $srcHeight / $maxHeight;
1684
+
1685
+    if ($srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1686
+        $destWidth = $srcWidth;
1687
+        $destHeight = $srcHeight;
1688
+    } elseif ($ratioWidth > $ratioHeight) {
1689
+        $destWidth = $srcWidth / $ratioHeight;
1690
+        $destHeight = $maxHeight;
1691
+    } else {
1692
+        $destWidth = $maxWidth;
1693
+        $destHeight = $srcHeight / $ratioWidth;
1694
+    }
1695
+
1696
+    return [
1697
+        intval(round($destWidth)),
1698
+        intval(round($destHeight)),
1699
+        min($ratioWidth, $ratioHeight)
1700
+    ];
1701 1701
 }
1702 1702
 
1703 1703
 
@@ -1710,12 +1710,12 @@  discard block
 block discarded – undo
1710 1710
  * @return string
1711 1711
  */
1712 1712
 function process_image_svg_identite($image) {
1713
-	if ($image['creer']) {
1714
-		$source = $image['fichier'];
1715
-		_image_gd_output($source, $image);
1716
-	}
1713
+    if ($image['creer']) {
1714
+        $source = $image['fichier'];
1715
+        _image_gd_output($source, $image);
1716
+    }
1717 1717
 
1718
-	return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]);
1718
+    return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]);
1719 1719
 }
1720 1720
 
1721 1721
 
@@ -1748,109 +1748,109 @@  discard block
 block discarded – undo
1748 1748
  *     Code HTML de la balise img produite
1749 1749
  **/
1750 1750
 function process_image_reduire($fonction, $img, $taille, $taille_y, $force, $process = 'AUTO') {
1751
-	$image = false;
1752
-	if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) {
1753
-		$process = $GLOBALS['meta']['image_process'];
1754
-	}
1755
-	# determiner le format de sortie
1756
-	$format_sortie = false; // le choix par defaut sera bon
1757
-	if ($process == 'netpbm') {
1758
-		$format_sortie = 'jpg';
1759
-	} elseif ($process == 'gd1' or $process == 'gd2') {
1760
-		$image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED);
1761
-		// on verifie que l'extension choisie est bonne (en principe oui)
1762
-		$gd_formats = formats_image_acceptables(true);
1763
-		if (
1764
-			is_array($image)
1765
-			and (!in_array($image['format_dest'], $gd_formats)
1766
-				or (!in_array($image['format_dest'], _image_extensions_acceptees_en_sortie()))
1767
-			)
1768
-		) {
1769
-			if ($image['format_source'] == 'jpg') {
1770
-				$formats_sortie = ['jpg', 'png', 'gif'];
1771
-			} else // les gif sont passes en png preferentiellement pour etre homogene aux autres filtres images
1772
-			{
1773
-				$formats_sortie = ['png', 'jpg', 'gif'];
1774
-			}
1775
-			// Choisir le format destination
1776
-			// - on sauve de preference en JPEG (meilleure compression)
1777
-			// - pour le GIF : les GD recentes peuvent le lire mais pas l'ecrire
1778
-			# bug : gd_formats contient la liste des fichiers qu'on sait *lire*,
1779
-			# pas *ecrire*
1780
-			$format_sortie = '';
1781
-			foreach ($formats_sortie as $fmt) {
1782
-				if (in_array($fmt, $gd_formats) and in_array($fmt, _image_extensions_acceptees_en_sortie())) {
1783
-					$format_sortie = $fmt;
1784
-					break;
1785
-				}
1786
-			}
1787
-			$image = false;
1788
-		}
1789
-	}
1790
-
1791
-	if (!is_array($image)) {
1792
-		$image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED);
1793
-	}
1794
-
1795
-	if (!is_array($image) or !$image['largeur'] or !$image['hauteur']) {
1796
-		spip_log("image_reduire_src:pas de version locale de $img ou extension non prise en charge");
1797
-		// on peut resizer en mode html si on dispose des elements
1798
-		[$srcw, $srch] = taille_image($img);
1799
-		if ($srcw and $srch) {
1800
-			[$w, $h] = _image_ratio($srcw, $srch, $taille, $taille_y);
1801
-
1802
-			return _image_tag_changer_taille($img, $w, $h);
1803
-		}
1804
-		// la on n'a pas d'infos sur l'image source... on refile le truc a css
1805
-		// sous la forme style='max-width: NNpx;'
1806
-		return inserer_attribut(
1807
-			$img,
1808
-			'style',
1809
-			"max-width: {$taille}px;max-width: min(100%,{$taille}px); max-height: {$taille_y}px"
1810
-		);
1811
-	}
1812
-
1813
-	// si l'image est plus petite que la cible retourner une copie cachee de l'image
1814
-	if (($image['largeur'] <= $taille) && ($image['hauteur'] <= $taille_y)) {
1815
-		if ($image['creer']) {
1816
-			@copy($image['fichier'], $image['fichier_dest']);
1817
-		}
1818
-
1819
-		return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]);
1820
-	}
1821
-
1822
-	if ($image['creer'] == false && !$force) {
1823
-		return _image_ecrire_tag(
1824
-			$image,
1825
-			['src' => $image['fichier_dest'], 'width' => $image['largeur_dest'], 'height' => $image['hauteur_dest']]
1826
-		);
1827
-	}
1828
-
1829
-	if (in_array($image['format_source'], _image_extensions_acceptees_en_entree())) {
1830
-		$destWidth = $image['largeur_dest'];
1831
-		$destHeight = $image['hauteur_dest'];
1832
-		$logo = $image['fichier'];
1833
-		$date = $image['date_src'];
1834
-		$preview = _image_creer_vignette($image, $taille, $taille_y, $process, $force);
1835
-
1836
-		if ($preview && $preview['fichier']) {
1837
-			$logo = $preview['fichier'];
1838
-			$destWidth = $preview['width'];
1839
-			$destHeight = $preview['height'];
1840
-			$date = $preview['date'];
1841
-		}
1842
-		// dans l'espace prive mettre un timestamp sur l'adresse
1843
-		// de l'image, de facon a tromper le cache du navigateur
1844
-		// quand on fait supprimer/reuploader un logo
1845
-		// (pas de filemtime si SAFE MODE)
1846
-		$date = test_espace_prive() ? ('?' . $date) : '';
1847
-
1848
-		return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]);
1849
-	}
1850
-	else {
1851
-		# BMP, tiff ... les redacteurs osent tout!
1852
-		return $img;
1853
-	}
1751
+    $image = false;
1752
+    if (($process == 'AUTO') and isset($GLOBALS['meta']['image_process'])) {
1753
+        $process = $GLOBALS['meta']['image_process'];
1754
+    }
1755
+    # determiner le format de sortie
1756
+    $format_sortie = false; // le choix par defaut sera bon
1757
+    if ($process == 'netpbm') {
1758
+        $format_sortie = 'jpg';
1759
+    } elseif ($process == 'gd1' or $process == 'gd2') {
1760
+        $image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED);
1761
+        // on verifie que l'extension choisie est bonne (en principe oui)
1762
+        $gd_formats = formats_image_acceptables(true);
1763
+        if (
1764
+            is_array($image)
1765
+            and (!in_array($image['format_dest'], $gd_formats)
1766
+                or (!in_array($image['format_dest'], _image_extensions_acceptees_en_sortie()))
1767
+            )
1768
+        ) {
1769
+            if ($image['format_source'] == 'jpg') {
1770
+                $formats_sortie = ['jpg', 'png', 'gif'];
1771
+            } else // les gif sont passes en png preferentiellement pour etre homogene aux autres filtres images
1772
+            {
1773
+                $formats_sortie = ['png', 'jpg', 'gif'];
1774
+            }
1775
+            // Choisir le format destination
1776
+            // - on sauve de preference en JPEG (meilleure compression)
1777
+            // - pour le GIF : les GD recentes peuvent le lire mais pas l'ecrire
1778
+            # bug : gd_formats contient la liste des fichiers qu'on sait *lire*,
1779
+            # pas *ecrire*
1780
+            $format_sortie = '';
1781
+            foreach ($formats_sortie as $fmt) {
1782
+                if (in_array($fmt, $gd_formats) and in_array($fmt, _image_extensions_acceptees_en_sortie())) {
1783
+                    $format_sortie = $fmt;
1784
+                    break;
1785
+                }
1786
+            }
1787
+            $image = false;
1788
+        }
1789
+    }
1790
+
1791
+    if (!is_array($image)) {
1792
+        $image = _image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}", $format_sortie, $fonction, false, _SVG_SUPPORTED);
1793
+    }
1794
+
1795
+    if (!is_array($image) or !$image['largeur'] or !$image['hauteur']) {
1796
+        spip_log("image_reduire_src:pas de version locale de $img ou extension non prise en charge");
1797
+        // on peut resizer en mode html si on dispose des elements
1798
+        [$srcw, $srch] = taille_image($img);
1799
+        if ($srcw and $srch) {
1800
+            [$w, $h] = _image_ratio($srcw, $srch, $taille, $taille_y);
1801
+
1802
+            return _image_tag_changer_taille($img, $w, $h);
1803
+        }
1804
+        // la on n'a pas d'infos sur l'image source... on refile le truc a css
1805
+        // sous la forme style='max-width: NNpx;'
1806
+        return inserer_attribut(
1807
+            $img,
1808
+            'style',
1809
+            "max-width: {$taille}px;max-width: min(100%,{$taille}px); max-height: {$taille_y}px"
1810
+        );
1811
+    }
1812
+
1813
+    // si l'image est plus petite que la cible retourner une copie cachee de l'image
1814
+    if (($image['largeur'] <= $taille) && ($image['hauteur'] <= $taille_y)) {
1815
+        if ($image['creer']) {
1816
+            @copy($image['fichier'], $image['fichier_dest']);
1817
+        }
1818
+
1819
+        return _image_ecrire_tag($image, ['src' => $image['fichier_dest']]);
1820
+    }
1821
+
1822
+    if ($image['creer'] == false && !$force) {
1823
+        return _image_ecrire_tag(
1824
+            $image,
1825
+            ['src' => $image['fichier_dest'], 'width' => $image['largeur_dest'], 'height' => $image['hauteur_dest']]
1826
+        );
1827
+    }
1828
+
1829
+    if (in_array($image['format_source'], _image_extensions_acceptees_en_entree())) {
1830
+        $destWidth = $image['largeur_dest'];
1831
+        $destHeight = $image['hauteur_dest'];
1832
+        $logo = $image['fichier'];
1833
+        $date = $image['date_src'];
1834
+        $preview = _image_creer_vignette($image, $taille, $taille_y, $process, $force);
1835
+
1836
+        if ($preview && $preview['fichier']) {
1837
+            $logo = $preview['fichier'];
1838
+            $destWidth = $preview['width'];
1839
+            $destHeight = $preview['height'];
1840
+            $date = $preview['date'];
1841
+        }
1842
+        // dans l'espace prive mettre un timestamp sur l'adresse
1843
+        // de l'image, de facon a tromper le cache du navigateur
1844
+        // quand on fait supprimer/reuploader un logo
1845
+        // (pas de filemtime si SAFE MODE)
1846
+        $date = test_espace_prive() ? ('?' . $date) : '';
1847
+
1848
+        return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]);
1849
+    }
1850
+    else {
1851
+        # BMP, tiff ... les redacteurs osent tout!
1852
+        return $img;
1853
+    }
1854 1854
 }
1855 1855
 
1856 1856
 /**
@@ -1864,145 +1864,145 @@  discard block
 block discarded – undo
1864 1864
  * Class phpthumb_functions
1865 1865
  */
1866 1866
 class phpthumb_functions {
1867
-	/**
1868
-	 * Retourne la couleur d'un pixel dans une image
1869
-	 *
1870
-	 * @param resource|GdImage $img
1871
-	 * @param int $x
1872
-	 * @param int $y
1873
-	 * @return array|bool
1874
-	 */
1875
-	public static function GetPixelColor(&$img, $x, $y) {
1876
-		if (is_resource($img) || (is_object($img) && $img instanceof \GdImage)) {
1877
-			return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y));
1878
-		}
1879
-		return false;
1880
-	}
1881
-
1882
-	/**
1883
-	 * Retourne un nombre dans une représentation en Little Endian
1884
-	 *
1885
-	 * @param int $number
1886
-	 * @param int $minbytes
1887
-	 * @return string
1888
-	 */
1889
-	public static function LittleEndian2String($number, $minbytes = 1) {
1890
-		$intstring = '';
1891
-		while ($number > 0) {
1892
-			$intstring = $intstring . chr($number & 255);
1893
-			$number >>= 8;
1894
-		}
1895
-
1896
-		return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT);
1897
-	}
1898
-
1899
-	/**
1900
-	 * Transforme une ressource GD en image au format ICO
1901
-	 *
1902
-	 * @param array $gd_image_array
1903
-	 *     Tableau de ressources d'images GD
1904
-	 * @return string
1905
-	 *     Image au format ICO
1906
-	 */
1907
-	public static function GD2ICOstring(&$gd_image_array) {
1908
-		foreach ($gd_image_array as $key => $gd_image) {
1909
-			$ImageWidths[$key] = ImageSX($gd_image);
1910
-			$ImageHeights[$key] = ImageSY($gd_image);
1911
-			$bpp[$key] = ImageIsTrueColor($gd_image) ? 32 : 24;
1912
-			$totalcolors[$key] = ImageColorsTotal($gd_image);
1913
-
1914
-			$icXOR[$key] = '';
1915
-			for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) {
1916
-				for ($x = 0; $x < $ImageWidths[$key]; $x++) {
1917
-					$argb = phpthumb_functions::GetPixelColor($gd_image, $x, $y);
1918
-					$a = round(255 * ((127 - $argb['alpha']) / 127));
1919
-					$r = $argb['red'];
1920
-					$g = $argb['green'];
1921
-					$b = $argb['blue'];
1922
-
1923
-					if ($bpp[$key] == 32) {
1924
-						$icXOR[$key] .= chr($b) . chr($g) . chr($r) . chr($a);
1925
-					} elseif ($bpp[$key] == 24) {
1926
-						$icXOR[$key] .= chr($b) . chr($g) . chr($r);
1927
-					}
1928
-
1929
-					if ($a < 128) {
1930
-						@$icANDmask[$key][$y] .= '1';
1931
-					} else {
1932
-						@$icANDmask[$key][$y] .= '0';
1933
-					}
1934
-				}
1935
-				// mask bits are 32-bit aligned per scanline
1936
-				while (strlen($icANDmask[$key][$y]) % 32) {
1937
-					$icANDmask[$key][$y] .= '0';
1938
-				}
1939
-			}
1940
-			$icAND[$key] = '';
1941
-			foreach ($icANDmask[$key] as $y => $scanlinemaskbits) {
1942
-				for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) {
1943
-					$icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT)));
1944
-				}
1945
-			}
1946
-		}
1947
-
1948
-		foreach ($gd_image_array as $key => $gd_image) {
1949
-			$biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8);
1950
-
1951
-			// BITMAPINFOHEADER - 40 bytes
1952
-			$BitmapInfoHeader[$key] = '';
1953
-			$BitmapInfoHeader[$key] .= "\x28\x00\x00\x00";                // DWORD  biSize;
1954
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4);    // LONG   biWidth;
1955
-			// The biHeight member specifies the combined
1956
-			// height of the XOR and AND masks.
1957
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG   biHeight;
1958
-			$BitmapInfoHeader[$key] .= "\x01\x00";                    // WORD   biPlanes;
1959
-			$BitmapInfoHeader[$key] .= chr($bpp[$key]) . "\x00";              // wBitCount;
1960
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biCompression;
1961
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4);      // DWORD  biSizeImage;
1962
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biXPelsPerMeter;
1963
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biYPelsPerMeter;
1964
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrUsed;
1965
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrImportant;
1966
-		}
1967
-
1968
-
1969
-		$icondata = "\x00\x00";                    // idReserved;   // Reserved (must be 0)
1970
-		$icondata .= "\x01\x00";                    // idType;	   // Resource Type (1 for icons)
1971
-		$icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2);  // idCount;	  // How many images?
1972
-
1973
-		$dwImageOffset = 6 + (count($gd_image_array) * 16);
1974
-		foreach ($gd_image_array as $key => $gd_image) {
1975
-			// ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
1976
-
1977
-			$icondata .= chr($ImageWidths[$key]);           // bWidth;		  // Width, in pixels, of the image
1978
-			$icondata .= chr($ImageHeights[$key]);          // bHeight;		 // Height, in pixels, of the image
1979
-			$icondata .= chr($totalcolors[$key]);           // bColorCount;	 // Number of colors in image (0 if >=8bpp)
1980
-			$icondata .= "\x00";                    // bReserved;	   // Reserved ( must be 0)
1981
-
1982
-			$icondata .= "\x01\x00";                  // wPlanes;		 // Color Planes
1983
-			$icondata .= chr($bpp[$key]) . "\x00";            // wBitCount;	   // Bits per pixel
1984
-
1985
-			$dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]);
1986
-			$icondata .= phpthumb_functions::LittleEndian2String(
1987
-				$dwBytesInRes,
1988
-				4
1989
-			);     // dwBytesInRes;	// How many bytes in this resource?
1990
-
1991
-			$icondata .= phpthumb_functions::LittleEndian2String(
1992
-				$dwImageOffset,
1993
-				4
1994
-			);    // dwImageOffset;   // Where in the file is this image?
1995
-			$dwImageOffset += strlen($BitmapInfoHeader[$key]);
1996
-			$dwImageOffset += strlen($icXOR[$key]);
1997
-			$dwImageOffset += strlen($icAND[$key]);
1998
-		}
1999
-
2000
-		foreach ($gd_image_array as $key => $gd_image) {
2001
-			$icondata .= $BitmapInfoHeader[$key];
2002
-			$icondata .= $icXOR[$key];
2003
-			$icondata .= $icAND[$key];
2004
-		}
2005
-
2006
-		return $icondata;
2007
-	}
1867
+    /**
1868
+     * Retourne la couleur d'un pixel dans une image
1869
+     *
1870
+     * @param resource|GdImage $img
1871
+     * @param int $x
1872
+     * @param int $y
1873
+     * @return array|bool
1874
+     */
1875
+    public static function GetPixelColor(&$img, $x, $y) {
1876
+        if (is_resource($img) || (is_object($img) && $img instanceof \GdImage)) {
1877
+            return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y));
1878
+        }
1879
+        return false;
1880
+    }
1881
+
1882
+    /**
1883
+     * Retourne un nombre dans une représentation en Little Endian
1884
+     *
1885
+     * @param int $number
1886
+     * @param int $minbytes
1887
+     * @return string
1888
+     */
1889
+    public static function LittleEndian2String($number, $minbytes = 1) {
1890
+        $intstring = '';
1891
+        while ($number > 0) {
1892
+            $intstring = $intstring . chr($number & 255);
1893
+            $number >>= 8;
1894
+        }
1895
+
1896
+        return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT);
1897
+    }
1898
+
1899
+    /**
1900
+     * Transforme une ressource GD en image au format ICO
1901
+     *
1902
+     * @param array $gd_image_array
1903
+     *     Tableau de ressources d'images GD
1904
+     * @return string
1905
+     *     Image au format ICO
1906
+     */
1907
+    public static function GD2ICOstring(&$gd_image_array) {
1908
+        foreach ($gd_image_array as $key => $gd_image) {
1909
+            $ImageWidths[$key] = ImageSX($gd_image);
1910
+            $ImageHeights[$key] = ImageSY($gd_image);
1911
+            $bpp[$key] = ImageIsTrueColor($gd_image) ? 32 : 24;
1912
+            $totalcolors[$key] = ImageColorsTotal($gd_image);
1913
+
1914
+            $icXOR[$key] = '';
1915
+            for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) {
1916
+                for ($x = 0; $x < $ImageWidths[$key]; $x++) {
1917
+                    $argb = phpthumb_functions::GetPixelColor($gd_image, $x, $y);
1918
+                    $a = round(255 * ((127 - $argb['alpha']) / 127));
1919
+                    $r = $argb['red'];
1920
+                    $g = $argb['green'];
1921
+                    $b = $argb['blue'];
1922
+
1923
+                    if ($bpp[$key] == 32) {
1924
+                        $icXOR[$key] .= chr($b) . chr($g) . chr($r) . chr($a);
1925
+                    } elseif ($bpp[$key] == 24) {
1926
+                        $icXOR[$key] .= chr($b) . chr($g) . chr($r);
1927
+                    }
1928
+
1929
+                    if ($a < 128) {
1930
+                        @$icANDmask[$key][$y] .= '1';
1931
+                    } else {
1932
+                        @$icANDmask[$key][$y] .= '0';
1933
+                    }
1934
+                }
1935
+                // mask bits are 32-bit aligned per scanline
1936
+                while (strlen($icANDmask[$key][$y]) % 32) {
1937
+                    $icANDmask[$key][$y] .= '0';
1938
+                }
1939
+            }
1940
+            $icAND[$key] = '';
1941
+            foreach ($icANDmask[$key] as $y => $scanlinemaskbits) {
1942
+                for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) {
1943
+                    $icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT)));
1944
+                }
1945
+            }
1946
+        }
1947
+
1948
+        foreach ($gd_image_array as $key => $gd_image) {
1949
+            $biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8);
1950
+
1951
+            // BITMAPINFOHEADER - 40 bytes
1952
+            $BitmapInfoHeader[$key] = '';
1953
+            $BitmapInfoHeader[$key] .= "\x28\x00\x00\x00";                // DWORD  biSize;
1954
+            $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4);    // LONG   biWidth;
1955
+            // The biHeight member specifies the combined
1956
+            // height of the XOR and AND masks.
1957
+            $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG   biHeight;
1958
+            $BitmapInfoHeader[$key] .= "\x01\x00";                    // WORD   biPlanes;
1959
+            $BitmapInfoHeader[$key] .= chr($bpp[$key]) . "\x00";              // wBitCount;
1960
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biCompression;
1961
+            $BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4);      // DWORD  biSizeImage;
1962
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biXPelsPerMeter;
1963
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biYPelsPerMeter;
1964
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrUsed;
1965
+            $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrImportant;
1966
+        }
1967
+
1968
+
1969
+        $icondata = "\x00\x00";                    // idReserved;   // Reserved (must be 0)
1970
+        $icondata .= "\x01\x00";                    // idType;	   // Resource Type (1 for icons)
1971
+        $icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2);  // idCount;	  // How many images?
1972
+
1973
+        $dwImageOffset = 6 + (count($gd_image_array) * 16);
1974
+        foreach ($gd_image_array as $key => $gd_image) {
1975
+            // ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
1976
+
1977
+            $icondata .= chr($ImageWidths[$key]);           // bWidth;		  // Width, in pixels, of the image
1978
+            $icondata .= chr($ImageHeights[$key]);          // bHeight;		 // Height, in pixels, of the image
1979
+            $icondata .= chr($totalcolors[$key]);           // bColorCount;	 // Number of colors in image (0 if >=8bpp)
1980
+            $icondata .= "\x00";                    // bReserved;	   // Reserved ( must be 0)
1981
+
1982
+            $icondata .= "\x01\x00";                  // wPlanes;		 // Color Planes
1983
+            $icondata .= chr($bpp[$key]) . "\x00";            // wBitCount;	   // Bits per pixel
1984
+
1985
+            $dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]);
1986
+            $icondata .= phpthumb_functions::LittleEndian2String(
1987
+                $dwBytesInRes,
1988
+                4
1989
+            );     // dwBytesInRes;	// How many bytes in this resource?
1990
+
1991
+            $icondata .= phpthumb_functions::LittleEndian2String(
1992
+                $dwImageOffset,
1993
+                4
1994
+            );    // dwImageOffset;   // Where in the file is this image?
1995
+            $dwImageOffset += strlen($BitmapInfoHeader[$key]);
1996
+            $dwImageOffset += strlen($icXOR[$key]);
1997
+            $dwImageOffset += strlen($icAND[$key]);
1998
+        }
1999
+
2000
+        foreach ($gd_image_array as $key => $gd_image) {
2001
+            $icondata .= $BitmapInfoHeader[$key];
2002
+            $icondata .= $icXOR[$key];
2003
+            $icondata .= $icAND[$key];
2004
+        }
2005
+
2006
+        return $icondata;
2007
+    }
2008 2008
 }
Please login to merge, or discard this patch.
Spacing   +68 added lines, -68 removed lines patch added patch discarded remove patch
@@ -42,13 +42,13 @@  discard block
 block discarded – undo
42 42
 	$blue = dechex($blue);
43 43
 
44 44
 	if (strlen($red) == 1) {
45
-		$red = '0' . $red;
45
+		$red = '0'.$red;
46 46
 	}
47 47
 	if (strlen($green) == 1) {
48
-		$green = '0' . $green;
48
+		$green = '0'.$green;
49 49
 	}
50 50
 	if (strlen($blue) == 1) {
51
-		$blue = '0' . $blue;
51
+		$blue = '0'.$blue;
52 52
 	}
53 53
 
54 54
 	return "$red$green$blue";
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
 	$couleur = couleur_html_to_hex($couleur);
68 68
 	$couleur = ltrim($couleur, '#');
69 69
 	if (strlen($couleur) === 3) {
70
-		$couleur = $couleur[0] . $couleur[0] . $couleur[1] . $couleur[1] . $couleur[2] . $couleur[2];
70
+		$couleur = $couleur[0].$couleur[0].$couleur[1].$couleur[1].$couleur[2].$couleur[2];
71 71
 	}
72 72
 	$retour = [];
73 73
 	$retour['red'] = hexdec(substr($couleur, 0, 2));
@@ -125,9 +125,9 @@  discard block
 block discarded – undo
125 125
 	$var_G = ($G / 255);
126 126
 	$var_B = ($B / 255);
127 127
 
128
-	$var_Min = min($var_R, $var_G, $var_B);   //Min. value of RGB
129
-	$var_Max = max($var_R, $var_G, $var_B);   //Max. value of RGB
130
-	$del_Max = $var_Max - $var_Min;           //Delta RGB value
128
+	$var_Min = min($var_R, $var_G, $var_B); //Min. value of RGB
129
+	$var_Max = max($var_R, $var_G, $var_B); //Max. value of RGB
130
+	$del_Max = $var_Max - $var_Min; //Delta RGB value
131 131
 
132 132
 	$L = ($var_Max + $var_Min) / 2;
133 133
 
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
  */
190 190
 function _couleur_hsl_to_rgb($H, $S, $L) {
191 191
 	// helper
192
-	$hue_2_rgb = function ($v1, $v2, $vH) {
192
+	$hue_2_rgb = function($v1, $v2, $vH) {
193 193
 		if ($vH < 0) {
194 194
 			$vH += 1;
195 195
 		}
@@ -327,11 +327,11 @@  discard block
 block discarded – undo
327 327
 		}
328 328
 	} elseif (
329 329
 		preg_match('@^data:image/([^;]*);base64,(.*)$@isS', $source, $regs)
330
-		and $extension = _image_trouver_extension_depuis_mime('image/' . $regs[1])
330
+		and $extension = _image_trouver_extension_depuis_mime('image/'.$regs[1])
331 331
 		and in_array($extension, _image_extensions_acceptees_en_entree())
332 332
 	) {
333 333
 		# gerer img src="data:....base64"
334
-		$local = sous_repertoire(_DIR_VAR, 'image-data') . md5($regs[2]) . '.' . _image_extension_normalisee($extension);
334
+		$local = sous_repertoire(_DIR_VAR, 'image-data').md5($regs[2]).'.'._image_extension_normalisee($extension);
335 335
 		if (!file_exists($local)) {
336 336
 			ecrire_fichier($local, base64_decode($regs[2]));
337 337
 		}
@@ -348,7 +348,7 @@  discard block
 block discarded – undo
348 348
 	// les protocoles web prennent au moins 3 lettres
349 349
 	if (tester_url_absolue($source)) {
350 350
 		include_spip('inc/distant');
351
-		$fichier = _DIR_RACINE . copie_locale($source);
351
+		$fichier = _DIR_RACINE.copie_locale($source);
352 352
 		if (!$fichier) {
353 353
 			return '';
354 354
 		}
@@ -450,9 +450,9 @@  discard block
 block discarded – undo
450 450
 			// on garde la terminaison initiale car image simplement copiee
451 451
 			// et on postfixe son nom avec un md5 du path
452 452
 			$terminaison_dest = $terminaison;
453
-			$fichier_dest .= '-' . substr(md5("$identifiant"), 0, 5);
453
+			$fichier_dest .= '-'.substr(md5("$identifiant"), 0, 5);
454 454
 		} else {
455
-			$fichier_dest .= '-' . substr(md5("$identifiant-$effet"), 0, 5);
455
+			$fichier_dest .= '-'.substr(md5("$identifiant-$effet"), 0, 5);
456 456
 		}
457 457
 		$cache = sous_repertoire(_DIR_VAR, $cache);
458 458
 		$cache = sous_repertoire($cache, $effet);
@@ -463,7 +463,7 @@  discard block
 block discarded – undo
463 463
 		$fichier_dest = substr($fichier_dest, 2);
464 464
 	}
465 465
 
466
-	$fichier_dest = $cache . $fichier_dest . '.' . $terminaison_dest;
466
+	$fichier_dest = $cache.$fichier_dest.'.'.$terminaison_dest;
467 467
 
468 468
 	$GLOBALS['images_calculees'][] = $fichier_dest;
469 469
 
@@ -490,7 +490,7 @@  discard block
 block discarded – undo
490 490
 	if ($creer) {
491 491
 		if (!@file_exists($fichier)) {
492 492
 			if (!@file_exists("$fichier.src")) {
493
-				spip_log("Image absente : $fichier", 'images' . _LOG_ERREUR);
493
+				spip_log("Image absente : $fichier", 'images'._LOG_ERREUR);
494 494
 
495 495
 				return false;
496 496
 			}
@@ -501,15 +501,15 @@  discard block
 block discarded – undo
501 501
 
502 502
 	if ($creer) {
503 503
 		spip_log(
504
-			'filtre image ' . ($fonction_creation ? reset($fonction_creation) : '') . "[$effet] sur $fichier",
505
-			'images' . _LOG_DEBUG
504
+			'filtre image '.($fonction_creation ? reset($fonction_creation) : '')."[$effet] sur $fichier",
505
+			'images'._LOG_DEBUG
506 506
 		);
507 507
 	}
508 508
 
509 509
 	$term_fonction = _image_trouver_extension_pertinente($fichier);
510
-	$ret['fonction_imagecreatefrom'] = '_imagecreatefrom' . $term_fonction;
510
+	$ret['fonction_imagecreatefrom'] = '_imagecreatefrom'.$term_fonction;
511 511
 	$ret['fichier'] = $fichier;
512
-	$ret['fonction_image'] = '_image_image' . $terminaison_dest;
512
+	$ret['fonction_image'] = '_image_image'.$terminaison_dest;
513 513
 	$ret['fichier_dest'] = $fichier_dest;
514 514
 	$ret['format_source'] = _image_extension_normalisee($terminaison);
515 515
 	$ret['format_dest'] = $terminaison_dest;
@@ -659,7 +659,7 @@  discard block
 block discarded – undo
659 659
 
660 660
 	$_terminaison = _image_trouver_extension_depuis_mime($mime);
661 661
 	if ($_terminaison and $_terminaison !== $terminaison) {
662
-		spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.' . _LOG_INFO_IMPORTANTE);
662
+		spip_log("Mauvaise extension du fichier : $path . Son type mime est : $mime", 'images.'._LOG_INFO_IMPORTANTE);
663 663
 		$terminaison = $_terminaison;
664 664
 	}
665 665
 	return $terminaison;
@@ -816,7 +816,7 @@  discard block
 block discarded – undo
816 816
 	if (!function_exists('imagepng')) {
817 817
 		return false;
818 818
 	}
819
-	$tmp = $fichier . '.tmp';
819
+	$tmp = $fichier.'.tmp';
820 820
 	$ret = imagepng($img, $tmp);
821 821
 	if (file_exists($tmp)) {
822 822
 		$taille_test = @getimagesize($tmp);
@@ -851,7 +851,7 @@  discard block
 block discarded – undo
851 851
 	if (!function_exists('imagegif')) {
852 852
 		return false;
853 853
 	}
854
-	$tmp = $fichier . '.tmp';
854
+	$tmp = $fichier.'.tmp';
855 855
 	$ret = imagegif($img, $tmp);
856 856
 	if (file_exists($tmp)) {
857 857
 		$taille_test = @getimagesize($tmp);
@@ -891,7 +891,7 @@  discard block
 block discarded – undo
891 891
 	if (!function_exists('imagejpeg')) {
892 892
 		return false;
893 893
 	}
894
-	$tmp = $fichier . '.tmp';
894
+	$tmp = $fichier.'.tmp';
895 895
 
896 896
 	// Enable interlancing
897 897
 	imageinterlace($img, true);
@@ -952,7 +952,7 @@  discard block
 block discarded – undo
952 952
 	if (!function_exists('imagewebp')) {
953 953
 		return false;
954 954
 	}
955
-	$tmp = $fichier . '.tmp';
955
+	$tmp = $fichier.'.tmp';
956 956
 	$ret = imagewebp($img, $tmp, $qualite);
957 957
 	if (file_exists($tmp)) {
958 958
 		$taille_test = @getimagesize($tmp);
@@ -986,7 +986,7 @@  discard block
 block discarded – undo
986 986
  */
987 987
 function _image_imagesvg($img, $fichier) {
988 988
 
989
-	$tmp = $fichier . '.tmp';
989
+	$tmp = $fichier.'.tmp';
990 990
 	if (strpos($img, '<') === false) {
991 991
 		$img = supprimer_timestamp($img);
992 992
 		if (!file_exists($img)) {
@@ -1043,13 +1043,13 @@  discard block
 block discarded – undo
1043 1043
  */
1044 1044
 function _image_gd_output($img, $valeurs, $qualite = _IMG_GD_QUALITE, $fonction = null) {
1045 1045
 	if (is_null($fonction)) {
1046
-		$fonction = '_image_image' . $valeurs['format_dest'];
1046
+		$fonction = '_image_image'.$valeurs['format_dest'];
1047 1047
 	}
1048 1048
 	$ret = false;
1049 1049
 	#un flag pour reperer les images gravees
1050 1050
 	$lock = (
1051 1051
 		!statut_effacer_images_temporaires('get') // si la fonction n'a pas ete activee, on grave tout
1052
-		or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'] . '.src'))
1052
+		or (@file_exists($valeurs['fichier_dest']) and !@file_exists($valeurs['fichier_dest'].'.src'))
1053 1053
 	);
1054 1054
 	if (
1055 1055
 		function_exists($fonction)
@@ -1061,7 +1061,7 @@  discard block
 block discarded – undo
1061 1061
 			// dans tous les cas mettre a jour la taille de l'image finale
1062 1062
 			[$valeurs['hauteur_dest'], $valeurs['largeur_dest']] = taille_image($valeurs['fichier_dest']);
1063 1063
 			$valeurs['date'] = @filemtime($valeurs['fichier_dest']); // pour la retrouver apres disparition
1064
-			ecrire_fichier($valeurs['fichier_dest'] . '.src', serialize($valeurs), true);
1064
+			ecrire_fichier($valeurs['fichier_dest'].'.src', serialize($valeurs), true);
1065 1065
 		}
1066 1066
 	}
1067 1067
 
@@ -1240,7 +1240,7 @@  discard block
 block discarded – undo
1240 1240
 
1241 1241
 	// attributs deprecies. Transformer en CSS
1242 1242
 	if ($espace = extraire_attribut($tag, 'hspace')) {
1243
-		$style = "margin:{$espace}px;" . $style;
1243
+		$style = "margin:{$espace}px;".$style;
1244 1244
 		$tag = inserer_attribut($tag, 'hspace', '');
1245 1245
 	}
1246 1246
 
@@ -1367,7 +1367,7 @@  discard block
 block discarded – undo
1367 1367
 	$image = $valeurs['fichier'];
1368 1368
 	$format = $valeurs['format_source'];
1369 1369
 	$destdir = dirname($valeurs['fichier_dest']);
1370
-	$destfile = basename($valeurs['fichier_dest'], '.' . $valeurs['format_dest']);
1370
+	$destfile = basename($valeurs['fichier_dest'], '.'.$valeurs['format_dest']);
1371 1371
 
1372 1372
 	$format_sortie = $valeurs['format_dest'];
1373 1373
 
@@ -1399,7 +1399,7 @@  discard block
 block discarded – undo
1399 1399
 
1400 1400
 	// Si l'image est de la taille demandee (ou plus petite), simplement la retourner
1401 1401
 	if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1402
-		$vignette = $destination . '.' . $format;
1402
+		$vignette = $destination.'.'.$format;
1403 1403
 		@copy($image, $vignette);
1404 1404
 	}
1405 1405
 
@@ -1407,7 +1407,7 @@  discard block
 block discarded – undo
1407 1407
 		include_spip('inc/svg');
1408 1408
 		if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) {
1409 1409
 			$format_sortie = 'svg';
1410
-			$vignette = $destination . '.' . $format_sortie;
1410
+			$vignette = $destination.'.'.$format_sortie;
1411 1411
 			$valeurs['fichier_dest'] = $vignette;
1412 1412
 			_image_gd_output($svg, $valeurs);
1413 1413
 		}
@@ -1419,9 +1419,9 @@  discard block
 block discarded – undo
1419 1419
 			define('_CONVERT_COMMAND', 'convert');
1420 1420
 		} // Securite : mes_options.php peut preciser le chemin absolu
1421 1421
 		if (!defined('_RESIZE_COMMAND')) {
1422
-			define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest');
1422
+			define('_RESIZE_COMMAND', _CONVERT_COMMAND.' -quality '._IMG_CONVERT_QUALITE.' -orient Undefined -resize %xx%y! %src %dest');
1423 1423
 		}
1424
-		$vignette = $destination . '.' . $format_sortie;
1424
+		$vignette = $destination.'.'.$format_sortie;
1425 1425
 		$commande = str_replace(
1426 1426
 			['%x', '%y', '%src', '%dest'],
1427 1427
 			[
@@ -1437,7 +1437,7 @@  discard block
 block discarded – undo
1437 1437
 		if (!@file_exists($vignette)) {
1438 1438
 			spip_log("echec convert sur $vignette");
1439 1439
 
1440
-			return;  // echec commande
1440
+			return; // echec commande
1441 1441
 		}
1442 1442
 	}
1443 1443
 
@@ -1454,7 +1454,7 @@  discard block
 block discarded – undo
1454 1454
 		if (!$output) {
1455 1455
 			return;
1456 1456
 		}
1457
-		$vignette = $output . DIRECTORY_SEPARATOR . basename($destination) . '.' . $format_sortie;
1457
+		$vignette = $output.DIRECTORY_SEPARATOR.basename($destination).'.'.$format_sortie;
1458 1458
 
1459 1459
 		$imagick = new Imagick();
1460 1460
 		$imagick->readImage(realpath($image));
@@ -1463,7 +1463,7 @@  discard block
 block discarded – undo
1463 1463
 			$destHeight,
1464 1464
 			Imagick::FILTER_LANCZOS,
1465 1465
 			1
1466
-		);//, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100);
1466
+		); //, IMAGICK_FILTER_LANCZOS, _IMG_IMAGICK_QUALITE / 100);
1467 1467
 		$imagick->writeImage($vignette);
1468 1468
 
1469 1469
 		if (!@file_exists($vignette)) {
@@ -1472,7 +1472,7 @@  discard block
 block discarded – undo
1472 1472
 			return;
1473 1473
 		}
1474 1474
 		// remettre le chemin relatif car c'est ce qu'attend SPIP pour la suite (en particlier action/tester)
1475
-		$vignette = $destination . '.' . $format_sortie;
1475
+		$vignette = $destination.'.'.$format_sortie;
1476 1476
 	}
1477 1477
 
1478 1478
 	// netpbm
@@ -1483,11 +1483,11 @@  discard block
 block discarded – undo
1483 1483
 		if (_PNMSCALE_COMMAND == '') {
1484 1484
 			return;
1485 1485
 		}
1486
-		$vignette = $destination . '.' . $format_sortie;
1486
+		$vignette = $destination.'.'.$format_sortie;
1487 1487
 		$pnmtojpeg_command = str_replace('pnmscale', 'pnmtojpeg', _PNMSCALE_COMMAND);
1488 1488
 		if ($format == 'jpg') {
1489 1489
 			$jpegtopnm_command = str_replace('pnmscale', 'jpegtopnm', _PNMSCALE_COMMAND);
1490
-			exec("$jpegtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1490
+			exec("$jpegtopnm_command $image | "._PNMSCALE_COMMAND." -width $destWidth | $pnmtojpeg_command > $vignette");
1491 1491
 			if (!($s = @filesize($vignette))) {
1492 1492
 				spip_unlink($vignette);
1493 1493
 			}
@@ -1499,7 +1499,7 @@  discard block
 block discarded – undo
1499 1499
 		} else {
1500 1500
 			if ($format == 'gif') {
1501 1501
 				$giftopnm_command = str_replace('pnmscale', 'giftopnm', _PNMSCALE_COMMAND);
1502
-				exec("$giftopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1502
+				exec("$giftopnm_command $image | "._PNMSCALE_COMMAND." -width $destWidth | $pnmtojpeg_command > $vignette");
1503 1503
 				if (!($s = @filesize($vignette))) {
1504 1504
 					spip_unlink($vignette);
1505 1505
 				}
@@ -1511,7 +1511,7 @@  discard block
 block discarded – undo
1511 1511
 			} else {
1512 1512
 				if ($format == 'png') {
1513 1513
 					$pngtopnm_command = str_replace('pnmscale', 'pngtopnm', _PNMSCALE_COMMAND);
1514
-					exec("$pngtopnm_command $image | " . _PNMSCALE_COMMAND . " -width $destWidth | $pnmtojpeg_command > $vignette");
1514
+					exec("$pngtopnm_command $image | "._PNMSCALE_COMMAND." -width $destWidth | $pnmtojpeg_command > $vignette");
1515 1515
 					if (!($s = @filesize($vignette))) {
1516 1516
 						spip_unlink($vignette);
1517 1517
 					}
@@ -1533,7 +1533,7 @@  discard block
 block discarded – undo
1533 1533
 			return;
1534 1534
 		}
1535 1535
 		if (_IMG_GD_MAX_PIXELS && $srcWidth * $srcHeight > _IMG_GD_MAX_PIXELS) {
1536
-			spip_log('vignette gd1/gd2 impossible : ' . $srcWidth * $srcHeight . 'pixels');
1536
+			spip_log('vignette gd1/gd2 impossible : '.$srcWidth * $srcHeight.'pixels');
1537 1537
 
1538 1538
 			return;
1539 1539
 		}
@@ -1843,7 +1843,7 @@  discard block
 block discarded – undo
1843 1843
 		// de l'image, de facon a tromper le cache du navigateur
1844 1844
 		// quand on fait supprimer/reuploader un logo
1845 1845
 		// (pas de filemtime si SAFE MODE)
1846
-		$date = test_espace_prive() ? ('?' . $date) : '';
1846
+		$date = test_espace_prive() ? ('?'.$date) : '';
1847 1847
 
1848 1848
 		return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]);
1849 1849
 	}
@@ -1889,7 +1889,7 @@  discard block
 block discarded – undo
1889 1889
 	public static function LittleEndian2String($number, $minbytes = 1) {
1890 1890
 		$intstring = '';
1891 1891
 		while ($number > 0) {
1892
-			$intstring = $intstring . chr($number & 255);
1892
+			$intstring = $intstring.chr($number & 255);
1893 1893
 			$number >>= 8;
1894 1894
 		}
1895 1895
 
@@ -1921,9 +1921,9 @@  discard block
 block discarded – undo
1921 1921
 					$b = $argb['blue'];
1922 1922
 
1923 1923
 					if ($bpp[$key] == 32) {
1924
-						$icXOR[$key] .= chr($b) . chr($g) . chr($r) . chr($a);
1924
+						$icXOR[$key] .= chr($b).chr($g).chr($r).chr($a);
1925 1925
 					} elseif ($bpp[$key] == 24) {
1926
-						$icXOR[$key] .= chr($b) . chr($g) . chr($r);
1926
+						$icXOR[$key] .= chr($b).chr($g).chr($r);
1927 1927
 					}
1928 1928
 
1929 1929
 					if ($a < 128) {
@@ -1950,48 +1950,48 @@  discard block
 block discarded – undo
1950 1950
 
1951 1951
 			// BITMAPINFOHEADER - 40 bytes
1952 1952
 			$BitmapInfoHeader[$key] = '';
1953
-			$BitmapInfoHeader[$key] .= "\x28\x00\x00\x00";                // DWORD  biSize;
1954
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4);    // LONG   biWidth;
1953
+			$BitmapInfoHeader[$key] .= "\x28\x00\x00\x00"; // DWORD  biSize;
1954
+			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageWidths[$key], 4); // LONG   biWidth;
1955 1955
 			// The biHeight member specifies the combined
1956 1956
 			// height of the XOR and AND masks.
1957 1957
 			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG   biHeight;
1958
-			$BitmapInfoHeader[$key] .= "\x01\x00";                    // WORD   biPlanes;
1959
-			$BitmapInfoHeader[$key] .= chr($bpp[$key]) . "\x00";              // wBitCount;
1960
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biCompression;
1961
-			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4);      // DWORD  biSizeImage;
1962
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biXPelsPerMeter;
1963
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // LONG   biYPelsPerMeter;
1964
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrUsed;
1965
-			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";                // DWORD  biClrImportant;
1958
+			$BitmapInfoHeader[$key] .= "\x01\x00"; // WORD   biPlanes;
1959
+			$BitmapInfoHeader[$key] .= chr($bpp[$key])."\x00"; // wBitCount;
1960
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD  biCompression;
1961
+			$BitmapInfoHeader[$key] .= phpthumb_functions::LittleEndian2String($biSizeImage, 4); // DWORD  biSizeImage;
1962
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG   biXPelsPerMeter;
1963
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // LONG   biYPelsPerMeter;
1964
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD  biClrUsed;
1965
+			$BitmapInfoHeader[$key] .= "\x00\x00\x00\x00"; // DWORD  biClrImportant;
1966 1966
 		}
1967 1967
 
1968 1968
 
1969
-		$icondata = "\x00\x00";                    // idReserved;   // Reserved (must be 0)
1970
-		$icondata .= "\x01\x00";                    // idType;	   // Resource Type (1 for icons)
1971
-		$icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2);  // idCount;	  // How many images?
1969
+		$icondata = "\x00\x00"; // idReserved;   // Reserved (must be 0)
1970
+		$icondata .= "\x01\x00"; // idType;	   // Resource Type (1 for icons)
1971
+		$icondata .= phpthumb_functions::LittleEndian2String(count($gd_image_array), 2); // idCount;	  // How many images?
1972 1972
 
1973 1973
 		$dwImageOffset = 6 + (count($gd_image_array) * 16);
1974 1974
 		foreach ($gd_image_array as $key => $gd_image) {
1975 1975
 			// ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)
1976 1976
 
1977
-			$icondata .= chr($ImageWidths[$key]);           // bWidth;		  // Width, in pixels, of the image
1978
-			$icondata .= chr($ImageHeights[$key]);          // bHeight;		 // Height, in pixels, of the image
1979
-			$icondata .= chr($totalcolors[$key]);           // bColorCount;	 // Number of colors in image (0 if >=8bpp)
1980
-			$icondata .= "\x00";                    // bReserved;	   // Reserved ( must be 0)
1977
+			$icondata .= chr($ImageWidths[$key]); // bWidth;		  // Width, in pixels, of the image
1978
+			$icondata .= chr($ImageHeights[$key]); // bHeight;		 // Height, in pixels, of the image
1979
+			$icondata .= chr($totalcolors[$key]); // bColorCount;	 // Number of colors in image (0 if >=8bpp)
1980
+			$icondata .= "\x00"; // bReserved;	   // Reserved ( must be 0)
1981 1981
 
1982
-			$icondata .= "\x01\x00";                  // wPlanes;		 // Color Planes
1983
-			$icondata .= chr($bpp[$key]) . "\x00";            // wBitCount;	   // Bits per pixel
1982
+			$icondata .= "\x01\x00"; // wPlanes;		 // Color Planes
1983
+			$icondata .= chr($bpp[$key])."\x00"; // wBitCount;	   // Bits per pixel
1984 1984
 
1985 1985
 			$dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]);
1986 1986
 			$icondata .= phpthumb_functions::LittleEndian2String(
1987 1987
 				$dwBytesInRes,
1988 1988
 				4
1989
-			);     // dwBytesInRes;	// How many bytes in this resource?
1989
+			); // dwBytesInRes;	// How many bytes in this resource?
1990 1990
 
1991 1991
 			$icondata .= phpthumb_functions::LittleEndian2String(
1992 1992
 				$dwImageOffset,
1993 1993
 				4
1994
-			);    // dwImageOffset;   // Where in the file is this image?
1994
+			); // dwImageOffset;   // Where in the file is this image?
1995 1995
 			$dwImageOffset += strlen($BitmapInfoHeader[$key]);
1996 1996
 			$dwImageOffset += strlen($icXOR[$key]);
1997 1997
 			$dwImageOffset += strlen($icAND[$key]);
Please login to merge, or discard this patch.
Braces   +5 added lines, -11 removed lines patch added patch discarded remove patch
@@ -320,8 +320,7 @@  discard block
 block discarded – undo
320 320
 		if (strpos($img, '<img ') !== 0) {
321 321
 			$source = $img;
322 322
 			$img = "<img src='$source' />";
323
-		}
324
-		else {
323
+		} else {
325 324
 			// pas d'attribut src sur cette balise <img../>
326 325
 			return false;
327 326
 		}
@@ -547,8 +546,7 @@  discard block
 block discarded – undo
547 546
 			process_image_svg_identite($ret);
548 547
 			$ret['creer'] = false;
549 548
 		}
550
-	}
551
-	else {
549
+	} else {
552 550
 		if (!function_exists($ret['fonction_imagecreatefrom'])) {
553 551
 			return false;
554 552
 		}
@@ -652,8 +650,7 @@  discard block
 block discarded – undo
652 650
 
653 651
 	if (isset($info['mime'])) {
654 652
 		$mime = $info['mime'];
655
-	}
656
-	else {
653
+	} else {
657 654
 		$mime = image_type_to_mime_type($info[2]);
658 655
 	}
659 656
 
@@ -1401,9 +1398,7 @@  discard block
 block discarded – undo
1401 1398
 	if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
1402 1399
 		$vignette = $destination . '.' . $format;
1403 1400
 		@copy($image, $vignette);
1404
-	}
1405
-
1406
-	elseif ($valeurs['format_source'] === 'svg') {
1401
+	} elseif ($valeurs['format_source'] === 'svg') {
1407 1402
 		include_spip('inc/svg');
1408 1403
 		if ($svg = svg_redimensionner($valeurs['fichier'], $destWidth, $destHeight)) {
1409 1404
 			$format_sortie = 'svg';
@@ -1846,8 +1841,7 @@  discard block
 block discarded – undo
1846 1841
 		$date = test_espace_prive() ? ('?' . $date) : '';
1847 1842
 
1848 1843
 		return _image_ecrire_tag($image, ['src' => "$logo$date", 'width' => $destWidth, 'height' => $destHeight]);
1849
-	}
1850
-	else {
1844
+	} else {
1851 1845
 		# BMP, tiff ... les redacteurs osent tout!
1852 1846
 		return $img;
1853 1847
 	}
Please login to merge, or discard this patch.
ecrire/inc/livrer_fichier.php 3 patches
Indentation   +132 added lines, -132 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Fichier
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 /**
@@ -35,28 +35,28 @@  discard block
 block discarded – undo
35 35
  */
36 36
 function spip_livrer_fichier($fichier, $content_type = 'application/octet-stream', $options = []) {
37 37
 
38
-	$defaut = [
39
-		'attachment' => false,
40
-		'expires' => 3600,
41
-		'range' => null,
42
-	];
43
-	$options = array_merge($defaut, $options);
44
-	if (is_numeric($options['expires']) and $options['expires'] > 0) {
45
-		$options['expires'] = gmdate('D, d M Y H:i:s', time() + $options['expires']) . ' GMT';
46
-	}
47
-
48
-	if (is_null($options) and isset($_SERVER['HTTP_RANGE'])) {
49
-		$options['range'] = $_SERVER['HTTP_RANGE'];
50
-	}
51
-
52
-	spip_livrer_fichier_entetes($fichier, $content_type, ($options['attachment'] && !$options['range']) ? $options['attachment'] : false, $options['expires']);
53
-
54
-	if (!is_null($options['range'])) {
55
-		spip_livrer_fichier_partie($fichier, $options['range']);
56
-	}
57
-	else {
58
-		spip_livrer_fichier_entier($fichier);
59
-	}
38
+    $defaut = [
39
+        'attachment' => false,
40
+        'expires' => 3600,
41
+        'range' => null,
42
+    ];
43
+    $options = array_merge($defaut, $options);
44
+    if (is_numeric($options['expires']) and $options['expires'] > 0) {
45
+        $options['expires'] = gmdate('D, d M Y H:i:s', time() + $options['expires']) . ' GMT';
46
+    }
47
+
48
+    if (is_null($options) and isset($_SERVER['HTTP_RANGE'])) {
49
+        $options['range'] = $_SERVER['HTTP_RANGE'];
50
+    }
51
+
52
+    spip_livrer_fichier_entetes($fichier, $content_type, ($options['attachment'] && !$options['range']) ? $options['attachment'] : false, $options['expires']);
53
+
54
+    if (!is_null($options['range'])) {
55
+        spip_livrer_fichier_partie($fichier, $options['range']);
56
+    }
57
+    else {
58
+        spip_livrer_fichier_entier($fichier);
59
+    }
60 60
 }
61 61
 
62 62
 /**
@@ -69,35 +69,35 @@  discard block
 block discarded – undo
69 69
  * @param int|string $expires
70 70
  */
71 71
 function spip_livrer_fichier_entetes($fichier, $content_type = 'application/octet-stream', $attachment = false, $expires = 0) {
72
-	// toujours envoyer un content type, meme vide !
73
-	header('Accept-Ranges: bytes');
74
-	header('Content-Type: ' . $content_type);
75
-
76
-	if ($fs = stat($fichier)
77
-	  and !empty($fs['size'])
78
-	  and !empty($fs['mtime'])) {
79
-		header("Last-Modified: " . gmdate("D, d M Y H:i:s", $fs['mtime']) . " GMT");
80
-		header(sprintf('Etag: "%x-%x"', $fs['size'], str_pad($fs['mtime'], 16, "0")));
81
-	}
82
-
83
-	if ($attachment) {
84
-		$f = (is_string($attachment) ? $attachment : basename($fichier));
85
-		// ce content-type est necessaire pour eviter des corruptions de zip dans ie6
86
-		header('Content-Type: application/octet-stream');
87
-
88
-		header("Content-Disposition: attachment; filename=\"$f\";");
89
-		header('Content-Transfer-Encoding: binary');
90
-
91
-		// fix for IE caching or PHP bug issue
92
-		header('Expires: 0'); // set expiration time
93
-		header('Pragma: public');
94
-		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
95
-	}
96
-	else {
97
-		$f = (is_string($attachment) ? $attachment : basename($fichier));
98
-		header("Content-Disposition: inline; filename=\"$f\";");
99
-		header('Expires: ' . $expires); // set expiration time
100
-	}
72
+    // toujours envoyer un content type, meme vide !
73
+    header('Accept-Ranges: bytes');
74
+    header('Content-Type: ' . $content_type);
75
+
76
+    if ($fs = stat($fichier)
77
+      and !empty($fs['size'])
78
+      and !empty($fs['mtime'])) {
79
+        header("Last-Modified: " . gmdate("D, d M Y H:i:s", $fs['mtime']) . " GMT");
80
+        header(sprintf('Etag: "%x-%x"', $fs['size'], str_pad($fs['mtime'], 16, "0")));
81
+    }
82
+
83
+    if ($attachment) {
84
+        $f = (is_string($attachment) ? $attachment : basename($fichier));
85
+        // ce content-type est necessaire pour eviter des corruptions de zip dans ie6
86
+        header('Content-Type: application/octet-stream');
87
+
88
+        header("Content-Disposition: attachment; filename=\"$f\";");
89
+        header('Content-Transfer-Encoding: binary');
90
+
91
+        // fix for IE caching or PHP bug issue
92
+        header('Expires: 0'); // set expiration time
93
+        header('Pragma: public');
94
+        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
95
+    }
96
+    else {
97
+        $f = (is_string($attachment) ? $attachment : basename($fichier));
98
+        header("Content-Disposition: inline; filename=\"$f\";");
99
+        header('Expires: ' . $expires); // set expiration time
100
+    }
101 101
 }
102 102
 
103 103
 /**
@@ -105,20 +105,20 @@  discard block
 block discarded – undo
105 105
  * @param string $fichier
106 106
  */
107 107
 function spip_livrer_fichier_entier($fichier) {
108
-	if (!file_exists($fichier)) {
109
-		throw new \Exception(sprintf('File not found: %s', $fichier));
110
-	}
108
+    if (!file_exists($fichier)) {
109
+        throw new \Exception(sprintf('File not found: %s', $fichier));
110
+    }
111 111
 
112
-	if (!is_readable($fichier)) {
113
-		throw new \Exception(sprintf('File not readable: %s', $fichier));
114
-	}
112
+    if (!is_readable($fichier)) {
113
+        throw new \Exception(sprintf('File not readable: %s', $fichier));
114
+    }
115 115
 
116
-	if ($size = filesize($fichier)) {
117
-		header(sprintf('Content-Length: %d', $size));
118
-	}
116
+    if ($size = filesize($fichier)) {
117
+        header(sprintf('Content-Length: %d', $size));
118
+    }
119 119
 
120
-	readfile($fichier);
121
-	exit();
120
+    readfile($fichier);
121
+    exit();
122 122
 }
123 123
 
124 124
 /**
@@ -131,98 +131,98 @@  discard block
 block discarded – undo
131 131
  * @throws Exception
132 132
  */
133 133
 function spip_livrer_fichier_partie($fichier, $range = null) {
134
-	if (!file_exists($fichier)) {
135
-		throw new \Exception(sprintf('File not found: %s', $fichier));
136
-	}
134
+    if (!file_exists($fichier)) {
135
+        throw new \Exception(sprintf('File not found: %s', $fichier));
136
+    }
137 137
 
138
-	if (!is_readable($fichier)) {
139
-		throw new \Exception(sprintf('File not readable: %s', $fichier));
140
-	}
138
+    if (!is_readable($fichier)) {
139
+        throw new \Exception(sprintf('File not readable: %s', $fichier));
140
+    }
141 141
 
142 142
 
143
-	// Par defaut on envoie tout
144
-	$byteOffset = 0;
145
-	$byteLength = $fileSize = filesize($fichier);
143
+    // Par defaut on envoie tout
144
+    $byteOffset = 0;
145
+    $byteLength = $fileSize = filesize($fichier);
146 146
 
147 147
 
148
-	// Parse Content-Range header for byte offsets, looks like "bytes=11525-" OR "bytes=11525-12451"
149
-	if ($range and preg_match('%bytes=(\d+)-(\d+)?%i', $range, $match)) {
150
-		### Offset signifies where we should begin to read the file
151
-		$byteOffset = (int)$match[1];
148
+    // Parse Content-Range header for byte offsets, looks like "bytes=11525-" OR "bytes=11525-12451"
149
+    if ($range and preg_match('%bytes=(\d+)-(\d+)?%i', $range, $match)) {
150
+        ### Offset signifies where we should begin to read the file
151
+        $byteOffset = (int)$match[1];
152 152
 
153 153
 
154
-		### Length is for how long we should read the file according to the browser, and can never go beyond the file size
155
-		if (isset($match[2])) {
156
-			$finishBytes = (int)$match[2];
157
-			$byteLength = $finishBytes + 1;
158
-		} else {
159
-			$finishBytes = $fileSize - 1;
160
-		}
154
+        ### Length is for how long we should read the file according to the browser, and can never go beyond the file size
155
+        if (isset($match[2])) {
156
+            $finishBytes = (int)$match[2];
157
+            $byteLength = $finishBytes + 1;
158
+        } else {
159
+            $finishBytes = $fileSize - 1;
160
+        }
161 161
 
162
-		$cr_header = sprintf('Content-Range: bytes %d-%d/%d', $byteOffset, $finishBytes, $fileSize);
163
-	}
164
-	else {
165
-		// si pas de range valide, on delegue a la methode d'envoi complet
166
-		spip_livrer_fichier_entier($fichier);
167
-		// redondant, mais facilite la comprehension du code
168
-		exit();
169
-	}
162
+        $cr_header = sprintf('Content-Range: bytes %d-%d/%d', $byteOffset, $finishBytes, $fileSize);
163
+    }
164
+    else {
165
+        // si pas de range valide, on delegue a la methode d'envoi complet
166
+        spip_livrer_fichier_entier($fichier);
167
+        // redondant, mais facilite la comprehension du code
168
+        exit();
169
+    }
170 170
 
171
-	// Remove headers that might unnecessarily clutter up the output
172
-	header_remove('Cache-Control');
173
-	header_remove('Pragma');
171
+    // Remove headers that might unnecessarily clutter up the output
172
+    header_remove('Cache-Control');
173
+    header_remove('Pragma');
174 174
 
175
-	// partial content
176
-	header('HTTP/1.1 206 Partial content');
177
-	header($cr_header);  ### Decrease by 1 on byte-length since this definition is zero-based index of bytes being sent
175
+    // partial content
176
+    header('HTTP/1.1 206 Partial content');
177
+    header($cr_header);  ### Decrease by 1 on byte-length since this definition is zero-based index of bytes being sent
178 178
 
179 179
 
180
-	$byteRange = $byteLength - $byteOffset;
180
+    $byteRange = $byteLength - $byteOffset;
181 181
 
182
-	header(sprintf('Content-Length: %d', $byteRange));
182
+    header(sprintf('Content-Length: %d', $byteRange));
183 183
 
184
-	// Variable containing the buffer
185
-	$buffer = '';
186
-	// Just a reasonable buffer size
187
-	$bufferSize = 512 * 16;
188
-	// Contains how much is left to read of the byteRange
189
-	$bytePool = $byteRange;
184
+    // Variable containing the buffer
185
+    $buffer = '';
186
+    // Just a reasonable buffer size
187
+    $bufferSize = 512 * 16;
188
+    // Contains how much is left to read of the byteRange
189
+    $bytePool = $byteRange;
190 190
 
191
-	if (!$handle = fopen($fichier, 'r')) {
192
-		throw new \Exception(sprintf('Could not get handle for file %s', $fichier));
193
-	}
191
+    if (!$handle = fopen($fichier, 'r')) {
192
+        throw new \Exception(sprintf('Could not get handle for file %s', $fichier));
193
+    }
194 194
 
195
-	if (fseek($handle, $byteOffset, SEEK_SET) == -1) {
196
-		throw new \Exception(sprintf('Could not seek to byte offset %d', $byteOffset));
197
-	}
195
+    if (fseek($handle, $byteOffset, SEEK_SET) == -1) {
196
+        throw new \Exception(sprintf('Could not seek to byte offset %d', $byteOffset));
197
+    }
198 198
 
199 199
 
200
-	while ($bytePool > 0) {
201
-		// How many bytes we request on this iteration
202
-		$chunkSizeRequested = min($bufferSize, $bytePool);
200
+    while ($bytePool > 0) {
201
+        // How many bytes we request on this iteration
202
+        $chunkSizeRequested = min($bufferSize, $bytePool);
203 203
 
204
-		// Try readin $chunkSizeRequested bytes from $handle and put data in $buffer
205
-		$buffer = fread($handle, $chunkSizeRequested);
204
+        // Try readin $chunkSizeRequested bytes from $handle and put data in $buffer
205
+        $buffer = fread($handle, $chunkSizeRequested);
206 206
 
207
-		// Store how many bytes were actually read
208
-		$chunkSizeActual = strlen($buffer);
207
+        // Store how many bytes were actually read
208
+        $chunkSizeActual = strlen($buffer);
209 209
 
210
-		// If we didn't get any bytes that means something unexpected has happened since $bytePool should be zero already
211
-		if ($chunkSizeActual == 0) {
212
-			// For production servers this should go in your php error log, since it will break the output
213
-			trigger_error('Chunksize became 0', E_USER_WARNING);
214
-			break;
215
-		}
210
+        // If we didn't get any bytes that means something unexpected has happened since $bytePool should be zero already
211
+        if ($chunkSizeActual == 0) {
212
+            // For production servers this should go in your php error log, since it will break the output
213
+            trigger_error('Chunksize became 0', E_USER_WARNING);
214
+            break;
215
+        }
216 216
 
217
-		// Decrease byte pool with amount of bytes that were read during this iteration
218
-		$bytePool -= $chunkSizeActual;
217
+        // Decrease byte pool with amount of bytes that were read during this iteration
218
+        $bytePool -= $chunkSizeActual;
219 219
 
220
-		// Write the buffer to output
221
-		print $buffer;
220
+        // Write the buffer to output
221
+        print $buffer;
222 222
 
223
-		// Try to output the data to the client immediately
224
-		flush();
225
-	}
223
+        // Try to output the data to the client immediately
224
+        flush();
225
+    }
226 226
 
227
-	exit();
227
+    exit();
228 228
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
 	];
43 43
 	$options = array_merge($defaut, $options);
44 44
 	if (is_numeric($options['expires']) and $options['expires'] > 0) {
45
-		$options['expires'] = gmdate('D, d M Y H:i:s', time() + $options['expires']) . ' GMT';
45
+		$options['expires'] = gmdate('D, d M Y H:i:s', time() + $options['expires']).' GMT';
46 46
 	}
47 47
 
48 48
 	if (is_null($options) and isset($_SERVER['HTTP_RANGE'])) {
@@ -71,12 +71,12 @@  discard block
 block discarded – undo
71 71
 function spip_livrer_fichier_entetes($fichier, $content_type = 'application/octet-stream', $attachment = false, $expires = 0) {
72 72
 	// toujours envoyer un content type, meme vide !
73 73
 	header('Accept-Ranges: bytes');
74
-	header('Content-Type: ' . $content_type);
74
+	header('Content-Type: '.$content_type);
75 75
 
76 76
 	if ($fs = stat($fichier)
77 77
 	  and !empty($fs['size'])
78 78
 	  and !empty($fs['mtime'])) {
79
-		header("Last-Modified: " . gmdate("D, d M Y H:i:s", $fs['mtime']) . " GMT");
79
+		header("Last-Modified: ".gmdate("D, d M Y H:i:s", $fs['mtime'])." GMT");
80 80
 		header(sprintf('Etag: "%x-%x"', $fs['size'], str_pad($fs['mtime'], 16, "0")));
81 81
 	}
82 82
 
@@ -96,7 +96,7 @@  discard block
 block discarded – undo
96 96
 	else {
97 97
 		$f = (is_string($attachment) ? $attachment : basename($fichier));
98 98
 		header("Content-Disposition: inline; filename=\"$f\";");
99
-		header('Expires: ' . $expires); // set expiration time
99
+		header('Expires: '.$expires); // set expiration time
100 100
 	}
101 101
 }
102 102
 
@@ -148,12 +148,12 @@  discard block
 block discarded – undo
148 148
 	// Parse Content-Range header for byte offsets, looks like "bytes=11525-" OR "bytes=11525-12451"
149 149
 	if ($range and preg_match('%bytes=(\d+)-(\d+)?%i', $range, $match)) {
150 150
 		### Offset signifies where we should begin to read the file
151
-		$byteOffset = (int)$match[1];
151
+		$byteOffset = (int) $match[1];
152 152
 
153 153
 
154 154
 		### Length is for how long we should read the file according to the browser, and can never go beyond the file size
155 155
 		if (isset($match[2])) {
156
-			$finishBytes = (int)$match[2];
156
+			$finishBytes = (int) $match[2];
157 157
 			$byteLength = $finishBytes + 1;
158 158
 		} else {
159 159
 			$finishBytes = $fileSize - 1;
@@ -174,7 +174,7 @@  discard block
 block discarded – undo
174 174
 
175 175
 	// partial content
176 176
 	header('HTTP/1.1 206 Partial content');
177
-	header($cr_header);  ### Decrease by 1 on byte-length since this definition is zero-based index of bytes being sent
177
+	header($cr_header); ### Decrease by 1 on byte-length since this definition is zero-based index of bytes being sent
178 178
 
179 179
 
180 180
 	$byteRange = $byteLength - $byteOffset;
Please login to merge, or discard this patch.
Braces   +3 added lines, -6 removed lines patch added patch discarded remove patch
@@ -53,8 +53,7 @@  discard block
 block discarded – undo
53 53
 
54 54
 	if (!is_null($options['range'])) {
55 55
 		spip_livrer_fichier_partie($fichier, $options['range']);
56
-	}
57
-	else {
56
+	} else {
58 57
 		spip_livrer_fichier_entier($fichier);
59 58
 	}
60 59
 }
@@ -92,8 +91,7 @@  discard block
 block discarded – undo
92 91
 		header('Expires: 0'); // set expiration time
93 92
 		header('Pragma: public');
94 93
 		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
95
-	}
96
-	else {
94
+	} else {
97 95
 		$f = (is_string($attachment) ? $attachment : basename($fichier));
98 96
 		header("Content-Disposition: inline; filename=\"$f\";");
99 97
 		header('Expires: ' . $expires); // set expiration time
@@ -160,8 +158,7 @@  discard block
 block discarded – undo
160 158
 		}
161 159
 
162 160
 		$cr_header = sprintf('Content-Range: bytes %d-%d/%d', $byteOffset, $finishBytes, $fileSize);
163
-	}
164
-	else {
161
+	} else {
165 162
 		// si pas de range valide, on delegue a la methode d'envoi complet
166 163
 		spip_livrer_fichier_entier($fichier);
167 164
 		// redondant, mais facilite la comprehension du code
Please login to merge, or discard this patch.