Subversion Repositories Sites.tela-botanica.org

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 david 1
<?php
2
 
3
/***************************************************************************\
4
 *  SPIP, Systeme de publication pour l'internet                           *
5
 *                                                                         *
6
 *  Copyright (c) 2001-2005                                                *
7
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8
 *                                                                         *
9
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11
\***************************************************************************/
12
 
13
 
14
// Ce fichier ne sera execute qu'une fois
15
if (defined("_ECRIRE_INC_LANG")) return;
16
define("_ECRIRE_INC_LANG", "1");
17
 
18
 
19
//
20
// Charger un fichier langue
21
//
22
 
23
function charger_langue($lang, $module = 'spip') {
24
 
25
	$fichier_lang = $module.'_'.$lang.'.php3';
26
	$fichier_lang_exists = @is_readable(_DIR_LANG . $fichier_lang);
27
 
28
	if ($fichier_lang_exists) {
29
		$GLOBALS['idx_lang']='i18n_'.$module.'_'.$lang;
30
		include_lang($fichier_lang);
31
	} else {
32
		// si le fichier de langue du module n'existe pas, on se rabat sur
33
		// la langue par defaut du site -- et au pire sur le francais, qui
34
		// *par definition* doit exister, et on copie le tableau dans la
35
		// var liee a la langue
36
		$l = lire_meta('langue_site');
37
		if (!is_readable(_DIR_LANG . $module.'_'.$l.'.php3'))
38
			$l = 'fr';
39
		$fichier_lang = $module.'_' .$l. '.php3';
40
		if (is_readable(_DIR_LANG . $fichier_lang)) {
41
			$GLOBALS['idx_lang']='i18n_'.$module.'_' .$l;
42
			include_lang($fichier_lang);
43
			$GLOBALS['i18n_'.$module.'_'.$lang]
44
				= &$GLOBALS['i18n_'.$module.'_'.$l];
45
			#spip_log("module de langue : ${module}_$l.php3");
46
		}
47
	}
48
 
49
	// surcharge perso -- on cherche le fichier local(_xx).php3 dans le chemin
50
	if ($f = (find_in_path('local.php3')))
51
		surcharger_langue($f);
52
	if ($f = (find_in_path('local_'.$lang.'.php3')))
53
		surcharger_langue($f);
54
	// compatibilite ascendante : chercher aussi local_xx.php3 dans ecrire/lang/
55
	else if (@is_readable($f = _DIR_LANG . 'local_'.$lang.'.php3'))
56
		surcharger_langue($f);
57
}
58
 
59
//
60
// Surcharger le fichier de langue courant avec un autre (tordu, hein...)
61
//
62
function surcharger_langue($f) {
63
	$idx_lang_normal = $GLOBALS['idx_lang'];
64
	$GLOBALS['idx_lang'] .= '_temporaire';
65
	include($f);
66
 
67
	if (is_array($GLOBALS[$GLOBALS['idx_lang']]))
68
		foreach ($GLOBALS[$GLOBALS['idx_lang']] as $var => $val)
69
			$GLOBALS[$idx_lang_normal][$var] = $val;
70
 
71
	unset ($GLOBALS[$GLOBALS['idx_lang']]);
72
	$GLOBALS['idx_lang'] = $idx_lang_normal;
73
}
74
 
75
 
76
 
77
//
78
// Changer la langue courante
79
//
80
function changer_langue($lang) {
81
	global $all_langs, $spip_lang_rtl, $spip_lang_right, $spip_lang_left, $spip_lang_dir, $spip_dir_lang;
82
 
83
	$liste_langues = $all_langs.','.lire_meta('langues_multilingue');
84
 
85
	if ($lang && ereg(",$lang,", ",$liste_langues,")) {
86
		$GLOBALS['spip_lang'] = $lang;
87
 
88
		$spip_lang_rtl =   lang_dir($lang, '', '_rtl');
89
		$spip_lang_left =  lang_dir($lang, 'left', 'right');
90
		$spip_lang_right = lang_dir($lang, 'right', 'left');
91
		$spip_lang_dir =   lang_dir($lang);
92
		$spip_dir_lang = " dir='$spip_lang_dir'";
93
 
94
		return true;
95
	}
96
	else
97
		return false;
98
}
99
 
100
//
101
// Regler la langue courante selon les infos envoyees par le brouteur
102
//
103
function regler_langue_navigateur() {
104
	global $_SERVER, $_COOKIE;
105
 
106
	$accept_langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
107
	if (is_array($accept_langs)) {
108
		while(list(, $s) = each($accept_langs)) {
109
			if (eregi('^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$', trim($s), $r)) {
110
				$lang = strtolower($r[1]);
111
				if (changer_langue($lang)) return $lang;
112
			}
113
		}
114
	}
115
	return false;
116
}
117
 
118
 
119
//
120
// Traduire une chaine internationalisee
121
//
122
function traduire_chaine($code, $args) {
123
	global $spip_lang;
124
 
125
	// modules par defaut
126
	if (_DIR_RESTREINT)
127
		$modules = array('spip');
128
	else
129
		$modules = array('spip', 'ecrire');
130
 
131
	// modules demandes explicitement
132
	$code_ori = $code; # le garder pour le fallback plus tard
133
	if (strpos($code, ':')) {
134
		if (ereg("^([a-z/]+):(.*)$", $code, $regs)) {
135
			$modules = explode("/",$regs[1]);
136
			$code = $regs[2];
137
		}
138
	}
139
 
140
	// parcourir tous les modules jusqu'a ce qu'on trouve
141
	$text = '';
142
	while (!$text AND (list(,$module) = each ($modules))) {
143
		$var = "i18n_".$module."_".$spip_lang;
144
		if (empty($GLOBALS[$var]))
145
			charger_langue($spip_lang, $module);
146
		$text = $GLOBALS[$var][$code];
147
	}
148
 
149
	// fallback langues pas finies ou en retard (eh oui, c'est moche...)
150
	if ($spip_lang<>'fr') {
151
		$text = ereg_replace("^<(NEW|MODIF)>","",$text);
152
		if (!$text) {
153
			$spip_lang_temp = $spip_lang;
154
			$spip_lang = 'fr';
155
			$text = traduire_chaine($code_ori, $args);
156
			$spip_lang = $spip_lang_temp;
157
		}
158
	}
159
 
160
	// inserer les variables
161
	if (!$args) return $text;
162
	while (list($name, $value) = each($args))
163
		$text = str_replace ("@$name@", $value, $text);
164
	return $text;
165
}
166
 
167
 
168
function traduire_nom_langue($lang) {
169
	init_codes_langues();
170
	$r = $GLOBALS['codes_langues'][$lang];
171
	if (!$r) $r = $lang;
172
 
173
		include_ecrire("inc_charsets.php3");
174
		$r = html2unicode($r);
175
 
176
	return $r;
177
}
178
 
179
function init_codes_langues() {
180
	$GLOBALS['codes_langues'] = array(
181
	'aa' => "Afar",
182
	'ab' => "Abkhazian",
183
	'af' => "Afrikaans",
184
	'am' => "Amharic",
185
	'ar' => "&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;",
186
	'as' => "Assamese",
187
	'ast' => "asturiano",
188
	'ay' => "Aymara",
189
	'az' => "&#1040;&#1079;&#1241;&#1088;&#1073;&#1072;&#1112;&#1209;&#1072;&#1085;",
190
	'ba' => "Bashkir",
191
	'be' => "&#1041;&#1077;&#1083;&#1072;&#1088;&#1091;&#1089;&#1082;&#1110;",
192
	'bg' => "&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080;",
193
	'bh' => "Bihari",
194
	'bi' => "Bislama",
195
	'bm' => "Bambara",
196
	'bn' => "Bengali; Bangla",
197
	'bo' => "Tibetan",
198
	'br' => "breton",
199
	'ca' => "catal&#224;",
200
	'co' => "corsu",
201
	'cpf' => "Kr&eacute;ol r&eacute;yon&eacute;",
202
	'cpf_dom' => "Krey&ograve;l",
203
	'cpf_hat' => "Kr&eacute;y&ograve;l (P&eacute;yi Dayiti)",
204
	'cs' => "&#269;e&#353;tina",
205
	'cy' => "Cymraeg",	# welsh, gallois
206
	'da' => "dansk",
207
	'de' => "Deutsch",
208
	'dz' => "Bhutani",
209
	'el' => "&#949;&#955;&#955;&#951;&#957;&#953;&#954;&#940;",
210
	'en' => "English",
211
	'en_hx' => "H4ck3R",
212
	'eo' => "Esperanto",
213
	'es' => "Espa&#241;ol",
214
	'es_co' => "Colombiano",
215
	'et' => "eesti",
216
	'eu' => "euskara",
217
	'fa' => "&#1601;&#1575;&#1585;&#1587;&#1609;",
218
	'ff' => "Fulah", // peul
219
	'fi' => "suomi",
220
	'fj' => "Fiji",
221
	'fo' => "f&#248;royskt",
222
	'fon' => "fongb&egrave;",
223
	'fr' => "fran&#231;ais",
224
	'fr_tu' => "fran&#231;ais copain",
225
	'fy' => "Frisian",
226
	'ga' => "Irish",
227
	'gd' => "Scots Gaelic",
228
	'gl' => "galego",
229
	'gn' => "Guarani",
230
	'gu' => "Gujarati",
231
	'ha' => "Hausa",
232
	'he' => "&#1506;&#1489;&#1512;&#1497;&#1514;",
233
	'hi' => "&#2361;&#2367;&#2306;&#2342;&#2368;",
234
	'hr' => "hrvatski",
235
	'hu' => "magyar",
236
	'hy' => "Armenian",
237
	'ia' => "Interlingua",
238
	'id' => "Indonesia",
239
	'ie' => "Interlingue",
240
	'ik' => "Inupiak",
241
	'is' => "&#237;slenska",
242
	'it' => "italiano",
243
	'iu' => "Inuktitut",
244
	'ja' => "&#26085;&#26412;&#35486;",
245
	'jw' => "Javanese",
246
	'ka' => "&#4325;&#4304;&#4320;&#4311;&#4323;&#4314;&#4312;",
247
	'kk' => "&#1178;&#1072;&#1079;&#1072;&#1097;b",
248
	'kl' => "Greenlandic",
249
	'km' => "Cambodian",
250
	'kn' => "Kannada",
251
	'ko' => "&#54620;&#44397;&#50612;",
252
	'ks' => "Kashmiri",
253
	'ku' => "Kurdish",
254
	'ky' => "Kirghiz",
255
	'la' => "Latin",
256
	'lb' => "L&euml;tzebuergesch",
257
	'ln' => "Lingala",
258
	'lo' => "Laothian",
259
	'lt' => "lietuvi&#371;",
260
	'lu' => "luba-katanga",
261
	'lv' => "latvie&#353;u",
262
	'mg' => "Malagasy",
263
	'mi' => "Maori",
264
	'mk' => "&#1084;&#1072;&#1082;&#1077;&#1076;&#1086;&#1085;&#1089;&#1082;&#1080; &#1112;&#1072;&#1079;&#1080;&#1082;",
265
	'ml' => "Malayalam",
266
	'mn' => "Mongolian",
267
	'mo' => "Moldavian",
268
	'mos' => "Mor&eacute;",
269
	'mr' => "&#2350;&#2352;&#2366;&#2336;&#2368;",
270
	'ms' => "Bahasa Malaysia",
271
	'mt' => "Maltese",
272
	'my' => "Burmese",
273
	'na' => "Nauru",
274
	'ne' => "Nepali",
275
	'nl' => "Nederlands",
276
	'no' => "norsk",
277
	'nb' => "norsk bokm&aring;l",
278
	'nn' => "norsk nynorsk",
279
	'oc' => "&ograve;c",
280
	'oc_lnc' => "&ograve;c lengadocian",
281
	'oc_ni' => "&ograve;c ni&ccedil;ard",
282
	'oc_ni_la' => "&ograve;c ni&ccedil;ard (larg)",
283
	'oc_prv' => "&ograve;c proven&ccedil;au",
284
	'oc_gsc' => "&ograve;c gascon",
285
	'oc_lms' => "&ograve;c lemosin",
286
	'oc_auv' => "&ograve;c auvernhat",
287
	'oc_va' => "&ograve;c vivaroaupenc",
288
	'om' => "(Afan) Oromo",
289
	'or' => "Oriya",
290
	'pa' => "Punjabi",
291
	'pl' => "polski",
292
	'ps' => "Pashto, Pushto",
293
	'pt' => "Portugu&#234;s",
294
	'pt_br' => "Portugu&#234;s do Brasil",
295
	'qu' => "Quechua",
296
	'rm' => "Rhaeto-Romance",
297
	'rn' => "Kirundi",
298
	'ro' => "rom&#226;n&#259;",
299
	'ru' => "&#1088;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;",
300
	'rw' => "Kinyarwanda",
301
	'sa' => "&#2360;&#2306;&#2360;&#2381;&#2325;&#2371;&#2340;",
302
	'sc' => "sarde",
303
	'sd' => "Sindhi",
304
	'sg' => "Sangho",
305
	'sh' => "srpskohrvastski",
306
	'sh_lat' => 'srpskohrvastski',
307
	'sh_cyr' => '&#1057;&#1088;&#1087;&#1089;&#1082;&#1086;&#1093;&#1088;&#1074;&#1072;&#1090;&#1089;&#1082;&#1080;',
308
	'si' => "Sinhalese",
309
	'sk' => "sloven&#269;ina",	// (Slovakia)
310
	'sl' => "sloven&#353;&#269;ina",	// (Slovenia)
311
	'sm' => "Samoan",
312
	'sn' => "Shona",
313
	'so' => "Somali",
314
	'sq' => "shqipe",
315
	'sr' => "&#1089;&#1088;&#1087;&#1089;&#1082;&#1080;",
316
	'ss' => "Siswati",
317
	'st' => "Sesotho",
318
	'su' => "Sundanese",
319
	'sv' => "svenska",
320
	'sw' => "Kiswahili",
321
	'ta' => "&#2980;&#2990;&#3007;&#2996;&#3021; - tamil",
322
	'te' => "Telugu",
323
	'tg' => "Tajik",
324
	'th' => "&#3652;&#3607;&#3618;",
325
	'ti' => "Tigrinya",
326
	'tk' => "Turkmen",
327
	'tl' => "Tagalog",
328
	'tn' => "Setswana",
329
	'to' => "Tonga",
330
	'tr' => "T&#252;rk&#231;e",
331
	'ts' => "Tsonga",
332
	'tt' => "&#1058;&#1072;&#1090;&#1072;&#1088;",
333
	'tw' => "Twi",
334
	'ug' => "Uighur",
335
	'uk' => "&#1091;&#1082;&#1088;&#1072;&#1111;&#1085;&#1100;&#1089;&#1082;&#1072;",
336
	'ur' => "&#1649;&#1585;&#1583;&#1608;",
337
	'uz' => "U'zbek",
338
	'vi' => "Ti&#7871;ng Vi&#7879;t",
339
	'vo' => "Volapuk",
340
	'wo' => "Wolof",
341
	'xh' => "Xhosa",
342
	'yi' => "Yiddish",
343
	'yo' => "Yoruba",
344
	'za' => "Zhuang",
345
	'zh' => "&#20013;&#25991;",
346
	'zu' => "Zulu");
347
}
348
 
349
//
350
// Filtres de langue
351
//
352
 
353
// afficher 'gaucher' si la langue est arabe, hebreu, persan, 'droitier' sinon
354
// utilise par #LANG_DIR, #LANG_LEFT, #LANG_RIGHT
355
function lang_dir($lang, $droitier='ltr', $gaucher='rtl') {
356
	if ($lang=='fa' OR $lang=='ar' OR $lang == 'he')
357
		return $gaucher;
358
	else
359
		return $droitier;
360
}
361
 
362
function lang_typo($lang) {
363
	if ($lang == 'eo' OR $lang == 'fr' OR substr($lang, 0, 3) == 'fr_' OR $lang == 'cpf')
364
		return 'fr';
365
	else if ($lang)
366
		return 'en';
367
	else
368
		return false;
369
}
370
 
371
// service pour que l'espace prive reflete la typo et la direction des objets affiches
372
function changer_typo($lang = '', $source = '') {
373
	global $lang_typo, $lang_dir, $dir_lang;
374
 
375
	if (ereg("^(article|rubrique|breve|auteur)([0-9]+)", $source, $regs)) {
376
		$r = spip_fetch_array(spip_query("SELECT lang FROM spip_".$regs[1]."s WHERE id_".$regs[1]."=".$regs[2]));
377
		$lang = $r['lang'];
378
	}
379
 
380
	if (!$lang)
381
		$lang = lire_meta('langue_site');
382
 
383
	$lang_typo = lang_typo($lang);
384
	$lang_dir = lang_dir($lang);
385
	$dir_lang = " dir='$lang_dir'";
386
}
387
 
388
// selectionner une langue
389
function lang_select ($lang='') {
390
	global $pile_langues, $spip_lang;
391
	array_push($pile_langues, $spip_lang);
392
	changer_langue($lang);
393
}
394
 
395
// revenir a la langue precedente
396
function lang_dselect ($rien='') {
397
	global $pile_langues;
398
	changer_langue(array_pop($pile_langues));
399
}
400
 
401
 
402
//
403
// Afficher un menu de selection de langue
404
// - 'var_lang_ecrire' = langue interface privee,
405
// - 'var_lang' = langue de l'article, espace public
406
// - 'changer_lang' = langue de l'article, espace prive
407
//
408
function menu_langues($nom_select = 'var_lang', $default = '', $texte = '', $herit = '') {
409
	global $couleur_foncee, $couleur_claire, $connect_id_auteur;
410
 
411
	$ret = liste_options_langues($nom_select, $default, $herit);
412
 
413
	if (!$ret) return '';
414
 
415
	if (!$couleur_foncee) $couleur_foncee = '#044476';
416
 
417
	$lien = $GLOBALS['clean_link'];
418
 
419
	if ($nom_select == 'changer_lang') {
420
		$lien->delvar('changer_lang');
421
		$lien->delvar('url');
422
		$post = $lien->getUrl();
423
		$cible = '';
424
	} else {
425
		// eviter un bug a l'installation ; mais, dans le cas general,
426
		// pourquoi aurait-on besoin ici d'une URL absolue ?
427
		if (!defined('_ECRIRE_INSTALL')
428
		AND !defined('_TEST_DIRS'))
429
			$site = lire_meta("adresse_site");
430
		if (!$site)
431
			if (_DIR_RESTREINT)
432
				$site = '.';
433
			else
434
				$site = '..';
435
 
436
		if (!_DIR_RESTREINT) {
437
			include_ecrire('inc_admin.php3');
438
			$cible = _DIR_RESTREINT_ABS . $lien->getUrl();
439
			$post = "$site/spip_cookie.php3?id_auteur=$connect_id_auteur&amp;valeur=".calculer_action_auteur('var_lang_ecrire', $connect_id_auteur);
440
		} else {
441
			$cible = $lien->getUrl();
442
			$post = "$site/spip_cookie.php3";
443
		}
444
	}
445
 
446
	$postcomplet = new Link($post);
447
	if ($cible) $postcomplet->addvar('url', $cible);
448
 
449
	return "<form action='"
450
	  . $post
451
	  . "' method='post' style='margin:0px; padding:0px;'>"
452
	  . (!$cible ? '' : "<input type='hidden' name='url' value='".quote_amp($cible)."' />")
453
	  . $texte
454
	  . "<select name='$nom_select' "
455
	  . (_DIR_RESTREINT ?
456
	     ("class='forml' style='vertical-align: top; max-height: 24px; margin-bottom: 5px; width: 120px;'") :
457
	     (($nom_select == 'var_lang_ecrire')  ?
458
	      ("class='verdana1' style='background-color: " . $couleur_foncee
459
	       . "; max-height: 24px; border: 1px solid white; color: white; width: 100px;'") :
460
	      "class='fondl'"))
461
	  . " onchange=\"document.location.href='"
462
	  . $postcomplet->geturl()
463
	  ."&amp;$nom_select='+this.options[this.selectedIndex].value\">\n"
464
	  . $ret
465
	  . "</select>\n"
466
	  . "<noscript><input type='submit' name='Valider' value='&gt;&gt;' class='spip_bouton' /></noscript>"
467
	  . "</form>";
468
}
469
 
470
function liste_options_langues($nom_select, $default='', $herit='') {
471
 
472
	if ($default == '') $default = $GLOBALS['spip_lang'];
473
	if ($nom_select == 'var_lang_ecrire')
474
		$langues = explode(',', $GLOBALS['all_langs']);
475
	else
476
		$langues = explode(',', lire_meta('langues_multilingue'));
477
 
478
	if (count($langues) <= 1) return '';
479
	$ret = '';
480
	sort($langues);
481
	while (list(, $l) = each ($langues)) {
482
		$selected = ($l == $default) ? ' selected=\'selected\'' : '';
483
		if ($l == $herit) {
484
			$ret .= "<option class='maj-debut' style='font-weight: bold;' value='herit'$selected>"
485
				.traduire_nom_langue($herit)." ("._T('info_multi_herit').")</option>\n";
486
		}
487
		else $ret .= "<option class='maj-debut' value='$l'$selected>".traduire_nom_langue($l)."</option>\n";
488
	}
489
	return $ret;
490
}
491
 
492
//
493
// Cette fonction est appelee depuis inc-public-global si on a installe
494
// la variable de personnalisation $forcer_lang ; elle renvoie le brouteur
495
// si necessaire vers l'URL xxxx?lang=ll
496
//
497
function verifier_lang_url() {
498
	global $_GET, $_COOKIE, $spip_lang, $clean_link;
499
 
500
	// quelle langue est demandee ?
501
	$lang_demandee = lire_meta('langue_site');
502
	if ($_COOKIE['spip_lang_ecrire'])
503
		$lang_demandee = $_COOKIE['spip_lang_ecrire'];
504
	if ($_COOKIE['spip_lang'])
505
		$lang_demandee = $_COOKIE['spip_lang'];
506
	if ($_GET['lang'])
507
		$lang_demandee = $_GET['lang'];
508
 
509
	// Verifier que la langue demandee existe
510
	include_ecrire('inc_lang.php3');
511
	lang_select($lang_demandee);
512
	$lang_demandee = $spip_lang;
513
 
514
	// Renvoyer si besoin
515
	if (!($_GET['lang']<>'' AND $lang_demandee == $_GET['lang'])
516
	AND !($_GET['lang']=='' AND $lang_demandee == lire_meta('langue_site')))
517
	{
518
		$destination = new Link;
519
		$destination->addvar('lang', $lang_demandee);
520
		if ($d = $GLOBALS['var_mode'])
521
			$destination->addvar('var_mode', $d);
522
		redirige_par_entete($destination->getUrl());
523
	}
524
 
525
	// Subtilite : si la langue demandee par cookie est la bonne
526
	// alors on fait comme si $lang etait passee dans l'URL
527
	// (pour criteres {lang}).
528
	$GLOBALS['lang'] = $_GET['lang'] = $spip_lang;
529
}
530
 
531
 
532
//
533
// Selection de langue haut niveau
534
//
535
function utiliser_langue_site() {
536
	changer_langue($GLOBALS['langue_site']);
537
}
538
 
539
function utiliser_langue_visiteur() {
540
	global $_COOKIE;
541
 
542
	if (!regler_langue_navigateur())
543
		utiliser_langue_site();
544
 
545
	if (!empty($GLOBALS['auteur_session']['lang']))
546
		changer_langue($GLOBALS['auteur_session']['lang']);
547
 
548
	$cookie_lang = (_DIR_RESTREINT  ? 'spip_lang' : 'spip_lang_ecrire');
549
	if (!empty($_COOKIE[$cookie_lang]))
550
 
551
		changer_langue($_COOKIE[$cookie_lang]);
552
}
553
 
554
//
555
// Initialisation
556
//
557
function init_langues() {
558
	global $all_langs, $langue_site;
559
	global $pile_langues, $lang_typo, $lang_dir;
560
 
561
	$all_langs = lire_meta('langues_proposees')
562
		.lire_meta('langues_proposees2');
563
	$langue_site = lire_meta('langue_site');
564
	$pile_langues = array();
565
	$lang_typo = '';
566
	$lang_dir = '';
567
 
568
	$toutes_langs = Array();
569
	if (!$all_langs || !$langue_site || !_DIR_RESTREINT) {
570
		if (!$d = @opendir(_DIR_LANG)) return;
571
		while ($f = readdir($d)) {
572
			if (ereg('^spip_([a-z_]+)\.php3?$', $f, $regs))
573
				$toutes_langs[] = $regs[1];
574
		}
575
		closedir($d);
576
		sort($toutes_langs);
577
		$all_langs2 = join(',', $toutes_langs);
578
 
579
		// Si les langues n'ont pas change, ne rien faire
580
		if ($all_langs2 != $all_langs) {
581
			$all_langs = $all_langs2;
582
			if (!$langue_site) {
583
				// Initialisation : le francais par defaut, sinon la premiere langue trouvee
584
				if (ereg(',fr,', ",$all_langs,")) $langue_site = 'fr';
585
				else list(, $langue_site) = each($toutes_langs);
586
				if (defined("_ECRIRE_INC_META"))
587
					ecrire_meta('langue_site', $langue_site);
588
			}
589
			if (defined("_ECRIRE_INC_META")) {
590
				# sur spip.net le nombre de langues proposees fait exploser
591
				# ce champ limite a 255 caracteres ; a revoir...
592
				if (strlen($all_langs) <= 255) {
593
					ecrire_meta('langues_proposees', $all_langs);
594
					effacer_meta('langues_proposees2');
595
				} else {
596
					ecrire_meta('langues_proposees', substr($all_langs,0,255));
597
					ecrire_meta('langues_proposees2', substr($all_langs,255));
598
				}
599
				ecrire_metas();
600
			}
601
		}
602
	}
603
}
604
 
605
init_langues();
606
utiliser_langue_site();
607
 
608
 
609
?>