[ Index ] |
|
Code source de SPIP Agora 1.4 |
1 <?php 2 /***************************************************** 3 * This file is part of Agora, web based content management system. 4 * 5 * Agora is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; version 2 of the License. 8 * 9 * Agora is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details (file "COPYING"). 13 * 14 * Copyright © Arnaud Martin, Antoine Pitrou et Philippe Rivière. 15 * List of authors detailed in "copyright_fr.html" file. 16 * E-mail : agora@sig.premier-ministre.gouv.fr 17 * Web site : http://www.agora.gouv.fr 18 *****************************************************/ 19 // Ce fichier ne sera execute qu'une fois 20 if (defined("_ECRIRE_INC_LANG")) 21 return; 22 23 define("_ECRIRE_INC_LANG", "1"); 24 25 /****** Ajout elebescond@clever-age.com **************/ 26 //require_once (dirname(__FILE__)."/include/bd/inc_type_document_factory.php"); 27 //require_once (dirname(__FILE__)."/include/bd/inc_rubrique_factory.php"); 28 /****** Fin ajout elebescond@clever-age.com **********/ 29 30 // 31 // Ecrire un fichier cache langue 32 // 33 function ecrire_cache_lang ($lang, $module) { 34 include_ecrire ('inc_filtres.php'); 35 36 $fichier_lang = $module . '_' . $lang . '.php'; 37 38 if ($t = @fopen('CACHE/lang_' . $fichier_lang . '_' .@getmypid(), "wb")) { 39 @fwrite($t, "<" . "?php\n\n// Ceci est le CACHE d'un fichier langue agora\n\n"); 40 41 if (is_array($cache = $GLOBALS['cache_lang'][$lang])) { 42 @fwrite($t, "\$GLOBALS[\$GLOBALS['idx_lang']] = array(\n"); 43 $texte = ''; 44 ksort($cache); 45 reset($cache); 46 47 while (list($code, ) = each($cache)) 48 $texte .= ",\n\t'" . $code . "' => '" . texte_script( 49 $GLOBALS['i18n_' . $module . '_' . $lang][$code]). "'"; 50 51 @fwrite($t, substr($texte, 2). "\n);\n\n"); 52 @fwrite($t, "\$GLOBALS['cache_lang']['$lang'] = array(\n"); 53 $texte = ''; 54 reset($cache); 55 56 while (list($code, ) = each($cache)) 57 $texte .= ",\n\t'" . $code . "' => 1"; 58 @fwrite($t, substr($texte, 2). "\n);\n\n"); 59 } 60 61 @fwrite($t, "\n\n?" . ">\n"); 62 @fclose($t); 63 @rename('CACHE/lang_' . $fichier_lang . '_' .@getmypid(), 'CACHE/lang_' . $fichier_lang); 64 } 65 } 66 67 function ecrire_caches_langues () { 68 global $cache_lang_modifs; 69 reset($cache_lang_modifs); 70 71 while (list($module, $cache_module) = each($cache_lang_modifs)) 72 while (list($lang, ) = each($cache_module)) 73 ecrire_cache_lang($lang, $module); 74 } 75 76 // 77 // Charger un fichier langue 78 // 79 function charger_langue ($lang, $module = 'spip', $forcer = false) { 80 global $dir_ecrire, $flag_ecrire; 81 82 //Modification support des Modules 83 if (ereg('^module_([a-zA-Z0-9]*)_(.*)', $module, $regs)) { 84 $fichier_lang = 'modules/' . $regs[1]. '/lang/' . $regs[2]. '_' . $lang . '.php'; 85 $fichier_cache = 'CACHE/lang_' . $regs[1]. '_' . $regs[2]. '_' . $lang . '.php'; 86 $fichier_lang_fr = 'modules/' . $regs[1]. '/lang/' . $regs[2]. '_fr.php'; 87 } 88 else { 89 $fichier_lang = 'lang/' . $module . '_' . $lang . '.php'; 90 $fichier_cache = 'CACHE/lang_' . $module . '_' . $lang . '.php'; 91 $fichier_lang_fr = 'lang/' . $module . '_fr.php'; 92 } 93 94 $fichier_lang_exists = file_exists($dir_ecrire . $fichier_lang); 95 96 // chercher dans le fichier cache ? 97 if (!$flag_ecrire AND $fichier_lang_exists) { 98 if (!$forcer AND@file_exists( 99 $fichier_cache)AND (@filemtime( 100 $fichier_cache) > @filemtime( 101 'ecrire/' . $fichier_lang))AND (@filemtime( 102 $fichier_cache) 103 > @filemtime( 104 'ecrire/lang/perso.php'))) 105 { 106 $GLOBALS['idx_lang'] = 'i18n_' . $module . '_' . $lang; 107 return include_local($fichier_cache); 108 } 109 else 110 $GLOBALS['cache_lang_modifs'][$module][$lang] = true; 111 } 112 113 if ($fichier_lang_exists) { 114 $GLOBALS['idx_lang'] = 'i18n_' . $module . '_' . $lang; 115 include_ecrire($fichier_lang); 116 } 117 else { 118 // si le fichier de langue du module n'existe pas, on se rabat sur 119 // le francais, qui *par definition* doit exister, et on copie le 120 // tableau 'fr' dans la var liee a la langue 121 if (file_exists($dir_ecrire . $fichier_lang_fr)) { 122 $GLOBALS['idx_lang'] = 'i18n_' . $module . '_fr'; 123 include_ecrire($fichier_lang_fr); 124 } 125 /********** Modification TRADUCTION johnny.muller@ypok.com **********/ 126 //$GLOBALS['i18n_'.$module.'_'.$lang] = $GLOBALS['i18n_'.$module.'_fr']; 127 /********** Fin modification TRADUCTION johnny.muller@ypok.com **********/ 128 } 129 130 // surcharge perso 131 //if (@file_exists($dir_ecrire.'lang/perso.php')) { 132 // include($dir_ecrire.'lang/perso.php'); 133 //} 134 135 } 136 137 // 138 // Changer la langue courante 139 // 140 function changer_langue ($lang) { 141 global $all_langs, $spip_lang_rtl, $spip_lang_right, $spip_lang_left, $spip_lang_dir, $spip_dir_lang; 142 143 if ($lang && ereg(",$lang,", ",$all_langs,")) { 144 $GLOBALS['spip_lang'] = $lang; 145 146 $spip_lang_rtl = lang_dir($lang, '', '_rtl'); 147 $spip_lang_left = lang_dir($lang, 'left', 'right'); 148 $spip_lang_right = lang_dir($lang, 'right', 'left'); 149 $spip_lang_dir = lang_dir($lang); 150 $spip_dir_lang = " dir='$spip_lang_dir'"; 151 152 return true; 153 } 154 else 155 return false; 156 } 157 158 // 159 // Regler la langue courante selon les infos envoyees par le brouteur 160 // 161 function regler_langue_navigateur () { 162 global $HTTP_SERVER_VARS, $HTTP_COOKIE_VARS; 163 164 if ($cookie_lang = $HTTP_COOKIE_VARS['spip_lang']) { 165 if (changer_langue($cookie_lang)) 166 return $cookie_lang; 167 } 168 169 $accept_langs = explode(',', $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']); 170 171 if (is_array($accept_langs)) { 172 while (list(, $s) = each($accept_langs)) { 173 if (eregi('^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$', trim($s), $r)) { 174 $lang = strtolower($r[1]); 175 if (changer_langue($lang)) 176 return $lang; 177 } 178 } 179 } 180 181 return false; 182 } 183 184 // 185 // Traduire une chaine internationalisee 186 // 187 /*********** Modification elebescond@clever-age.com ******************/ 188 function traduire_chaine ($code, $args, $rubriqueId = 0) { 189 /* 190 function traduire_chaine($code, $args) { 191 */ 192 /*********** Fin modification elebescond@clever-age.com **************/ 193 global $spip_lang, $flag_ecrire; 194 global $cache_lang; 195 //$modules_a_charger = $GLOBALS['modules'] ; 196 197 /********** Modificatioin elebescond@clever-age ******************/ 198 $hierarchie = array(); 199 200 if ($GLOBALS['db_ok']) { 201 // TODO : c lance a chaque traduction de chaine .... pas ideal 202 require_once(dirname(__FILE__). "/include/bd/inc_rubrique_factory.php"); 203 $rubriqueMetier = &recuperer_instance_rubrique(); 204 $hierarchie = $rubriqueMetier->getHierarchie($rubriqueId); 205 if (PEAR::isError($hierarchie)) { 206 die($hierarchie->getMessage()); 207 } 208 } 209 /* Ajout CPSQY / Stephane PETIT */ 210 $modules[] = 'perso=' . $rubriqueId; 211 212 while (list(, $noeud) = each($hierarchie)) { 213 $modules[] = 'perso-' . $noeud; 214 } 215 216 reset($hierarchie); 217 $modules[] = 'perso'; 218 /* fin zone de modification CSPQY */ 219 220 //Zone de modifcation ajout Modules 221 if (is_array($GLOBALS['modules'])) { 222 foreach ($GLOBALS['modules'] as $module) { 223 $modules[] = 'module_' . $module . '_module=' . $rubriqueId; 224 225 while (list(, $noeud) = each($hierarchie)) { 226 $modules[] = 'module_' . $module . '_module-' . $noeud; 227 } 228 229 reset($hierarchie); 230 $modules[] = 'module_' . $module . '_module'; 231 } 232 } 233 //fin zone ajout Modules 234 235 $modules[] = 'agora=' . $rubriqueId; 236 237 while (list(, $noeud) = each($hierarchie)) { 238 $modules[] = 'agora-' . $noeud; 239 } 240 241 $modules[] = 'agora'; 242 $modules[] = 'spip'; 243 244 //$modules = array('agora', 'spip'); 245 246 /* 247 $modules = array('spip'); 248 */ 249 /********** Fin modificatioin elebescond@clever-age ******************/ 250 if (strpos($code, ':')) { 251 if (ereg("^([a-z/]+):(.*)$", $code, $regs)) { 252 $modules = explode("/", $regs[1]); 253 $code = $regs[2]; 254 } 255 } 256 257 // parcourir tous les modules jusqu'a ce qu'on trouve 258 while (!$text AND (list(, $module) = each($modules))) { 259 $var = "i18n_" . $module . "_" . $spip_lang; 260 261 if (!$GLOBALS[$var]) 262 charger_langue($spip_lang, $module); 263 264 if (!$flag_ecrire) { 265 global $cache_lang; 266 267 if (!isset($GLOBALS[$var][$code])) 268 charger_langue($spip_lang, $module, $code); 269 if (isset($GLOBALS[$var][$code])) 270 $cache_lang[$spip_lang][$code] = 1; 271 } 272 $text = $GLOBALS[$var][$code]; 273 } 274 275 // langues pas finies ou en retard (eh oui, c'est moche...) 276 if ($spip_lang <> 'fr') { 277 $text = ereg_replace("^<(NEW|MODIF)>", "", $text); 278 if (!$text) { 279 $spip_lang_temp = $spip_lang; 280 $spip_lang = 'fr'; 281 $text = traduire_chaine($code, $args); 282 $spip_lang = $spip_lang_temp; 283 } 284 } 285 286 // inserer les variables 287 if (!$args) 288 return $text ? $text : $code; 289 290 while (list($name, $value) = each($args)) 291 $text = str_replace("@$name@", $value, $text); 292 293 return $text ? $text : $code; 294 } 295 296 function traduire_nom_langue ($lang) { 297 $r = $GLOBALS['codes_langues'][$lang]; 298 299 if (!$r) 300 $r = $lang; 301 302 return $r; 303 } 304 305 function init_codes_langues () { 306 $GLOBALS['codes_langues'] = array('aa' => "Afar", 'ab' => "Abkhazian", 'af' => "Afrikaans", 'am' => "Amharic", 'ar' => "العربية", 'as' => "Assamese", 'ay' => "Aymara", 'az' => "Азәрбајҹан", 'ba' => "Bashkir", 'be' => "Беларускі", 'bg' => "български", 'bh' => "Bihari", 'bi' => "Bislama", 'bn' => "Bengali; Bangla", 'bo' => "Tibetan", 'br' => "breton", 'ca' => "català", 'co' => "corsu", 'cpf' => "Kréol réyoné", 'cpf_dom' => "Kreyòl", 'cs' => "čeština", 'cy' => "Welsh", 'da' => "dansk", 'de' => "Deutsch", 'dz' => "Bhutani", 'el' => "ελληνικά", 'en' => "English", 'eo' => "Esperanto", 'es' => "Español", 'es_co' => "Colombiano", 'et' => "eesti", 'eu' => "euskara", 'fa' => "فارسى", 'fi' => "suomi", 'fj' => "Fiji", 'fo' => "føroyskt", 'fr' => "français", 'fy' => "Frisian", 'ga' => "Irish", 'gd' => "Scots Gaelic", 'gl' => "galego", 'gn' => "Guarani", 'gu' => "Gujarati", 'ha' => "Hausa", 'he' => "עברית", 'hi' => "हिंदी", 'hr' => "hrvatski", 'hu' => "magyar", 'hy' => "Armenian", 'ia' => "Interlingua", 'id' => "Bahasa Indonesia", 'ie' => "Interlingue", 'ik' => "Inupiak", 'is' => "íslenska", 'it' => "italiano", 'iu' => "Inuktitut", 'ja' => "日本語", 'jw' => "Javanese", 'ka' => "ქართული", 'kk' => "Қазащb", 'kl' => "Greenlandic", 'km' => "Cambodian", 'kn' => "Kannada", 'ko' => "한국어", 'ks' => "Kashmiri", 'ku' => "Kurdish", 'ky' => "Kirghiz", 'la' => "Latin", 'ln' => "Lingala", 'lo' => "Laothian", 'lt' => "lietuvių", 'lv' => "latviešu", 'mg' => "Malagasy", 'mi' => "Maori", 'mk' => "македонски јазик", 'ml' => "Malayalam", 'mn' => "Mongolian", 'mo' => "Moldavian", 'mr' => "मराठी", 'ms' => "Bahasa Malaysia", 'mt' => "Maltese", 'my' => "Burmese", 'na' => "Nauru", 'ne' => "Nepali", 'nl' => "Nederlands", 'no' => "norsk", 'oc_lnc' => "òc lengadocian", 'oc_ni' => "òc niçard", 'oc_prv' => "òc provençau", 'oc_gsc' => "òc gascon", 'oc_lms' => "òc lemosin", 'oc_auv' => "òc auvernhat", 'oc_va' => "òc vivaroaupenc", 'om' => "(Afan) Oromo", 'or' => "Oriya", 'pa' => "Punjabi", 'pl' => "polski", 'ps' => "Pashto, Pushto", 'pt' => "Português", 'qu' => "Quechua", 'rm' => "Rhaeto-Romance", 'rn' => "Kirundi", 'ro' => "română", 'ru' => "русский", 'rw' => "Kinyarwanda", 'sa' => "संस्कृत", 'sd' => "Sindhi", 'sg' => "Sangho", 'sh' => "Serbo-Croatian", 'si' => "Sinhalese", 'sk' => "slovenčina", 'sl' => "slovenski", 'sm' => "Samoan", 'sn' => "Shona", 'so' => "Somali", 'sq' => "shqipe", 'sr' => "српски", 'ss' => "Siswati", 'st' => "Sesotho", 'su' => "Sundanese", 'sv' => "svenska", 'sw' => "Kiswahili", 'ta' => "தமிழ் - tamil", 'te' => "Telugu", 'tg' => "Tajik", 'th' => "ไทย", 'ti' => "Tigrinya", 'tk' => "Turkmen", 'tl' => "Tagalog", 'tn' => "Setswana", 'to' => "Tonga", 'tr' => "Türkçe", 'ts' => "Tsonga", 'tt' => "Татар", 'tw' => "Twi", 'ug' => "Uighur", 'uk' => "україньска", 'ur' => "ٱردو", 'uz' => "U'zbek", 'vi' => "Tiếng Việt", 'vo' => "Volapuk", 'wo' => "Wolof", 'xh' => "Xhosa", 'yi' => "Yiddish", 'yor' => "Yoruba", 'za' => "Zhuang", 'zh' => "中文", 'zu' => "Zulu"); 307 } 308 309 // 310 // Filtres de langue 311 // 312 313 // afficher 'gaucher' si la langue est arabe, hebreu, persan, 'droitier' sinon 314 // utilise par #LANG_DIR, #LANG_LEFT, #LANG_RIGHT 315 function lang_dir ($lang, $droitier = 'ltr', $gaucher = 'rtl') { 316 if ($lang == 'fa' OR $lang == 'ar' OR $lang == 'he') 317 return $gaucher; 318 else 319 return $droitier; 320 } 321 322 function lang_typo ($lang) { 323 if (($lang == 'eo')OR ($lang == 'fr')OR ($lang == 'cpf')) 324 return 'fr'; 325 else if ($lang) 326 return 'en'; 327 else 328 return false; 329 } 330 331 // service pour que l'espace prive reflete la typo et la direction des objets affiches 332 function changer_typo ($lang = '', $source = '') { 333 global $lang_typo, $lang_dir, $dir_lang; 334 require_once(dirname(__FILE__). "/include/bd/inc_rubrique_factory.php"); 335 require_once(dirname(__FILE__). "/include/bd/inc_article_factory.php"); 336 require_once(dirname(__FILE__). "/include/bd/inc_breve_factory.php"); 337 require_once(dirname(__FILE__). "/include/bd/inc_auteur_factory.php"); 338 339 if (ereg("^(article|rubrique|breve|auteur)([0-9]+)", $source, $regs)) { 340 switch ($regs[1]) { 341 case 'article': 342 $articleMetier = &recuperer_instance_article(); 343 $loadOK = $articleMetier->load($regs[2]); 344 if (PEAR::isError($loadOK)) { 345 $lang = lire_meta('langue_site'); 346 } 347 else { 348 $lang = $articleMetier->getLang(); 349 } 350 break; 351 352 case 'rubrique': 353 $rubriqueMetier = &recuperer_instance_rubrique(); 354 $loadOK = $rubriqueMetier->load($regs[2]); 355 if (PEAR::isError($loadOK)) { 356 $lang = lire_meta('langue_site'); 357 } 358 else { 359 $lang = $rubriqueMetier->getLang(); 360 } 361 break; 362 363 case 'breve': 364 $breveMetier = &recuperer_instance_breve(); 365 $loadOK = $breveMetier->load($regs[2]); 366 if (PEAR::isError($loadOK)) { 367 $lang = lire_meta('langue_site'); 368 } 369 else { 370 $lang = $breveMetier->getLang(); 371 } 372 break; 373 374 case 'auteur': 375 $auteurMetier = &recuperer_instance_auteur(); 376 $loadOK = $auteurMetier->load($regs[2]); 377 if (PEAR::isError($loadOK)) { 378 $lang = lire_meta('langue_site'); 379 } 380 else { 381 $lang = $auteurMetier->getLang(); 382 } 383 break; 384 385 default: 386 if (!$lang) 387 $lang = lire_meta('langue_site'); 388 break; 389 } 390 } 391 392 $lang_typo = lang_typo($lang); 393 $lang_dir = lang_dir($lang); 394 $dir_lang = " dir='$lang_dir'"; 395 } 396 397 // selectionner une langue 398 function lang_select ($lang = '') { 399 // Inclure inc_filtres.php pour l'acces a la fonction php3_array_push 400 include_once('ecrire/inc_filtres.php'); 401 402 global $pile_langues, $spip_lang; 403 php3_array_push($pile_langues, $spip_lang); 404 changer_langue($lang); 405 } 406 407 // revenir a la langue precedente 408 function lang_dselect ($rien = '') { 409 global $pile_langues; 410 changer_langue(php3_array_pop($pile_langues)); 411 } 412 413 // 414 // Afficher un menu de selection de langue 415 // 416 function menu_langues ($nom_select = 'var_lang', $default = '', $texte = '', $herit = '') { 417 global $couleur_foncee, $couleur_claire; 418 419 if ($default == '') 420 $default = $GLOBALS['spip_lang']; 421 422 if ($nom_select == 'var_lang') 423 $langues = explode(',', $GLOBALS['all_langs']); 424 else 425 $langues = explode(',', lire_meta('langues_multilingue')); 426 427 if (count($langues) <= 1) 428 return; 429 430 if (!$couleur_foncee) 431 $couleur_foncee = '#044476'; 432 433 $lien = $GLOBALS['clean_link']; 434 $lien->delVar($nom_select); 435 $lien = $lien->getUrl(); 436 437 $amp = (strpos(' ' . $lien, '?') ? '&' : '?'); 438 439 $ret = "<form action='$lien' method='post' style='margin:0px; padding:0px;'>"; 440 $ret .= $texte; 441 442 if ($nom_select == 'var_lang') 443 $ret .= "\n<select name='$nom_select' class='verdana1' style='background-color: $couleur_foncee; color: white;' onChange=\"document.location.href='" . $lien . $amp . "$nom_select='+this.options[this.selectedIndex].value\">\n"; 444 else 445 $ret .= "\n<select name='$nom_select' class='fondl'>\n"; 446 447 sort($langues); 448 449 while (list(, $l) = each($langues)) { 450 if ($l == $default) { 451 $selected = ' selected'; 452 } 453 else { 454 $selected = ''; 455 } 456 if ($l == $herit) { 457 $ret .= "<option class='maj-debut' style='font-weight: bold;' value='herit'$selected>" . traduire_nom_langue($herit). " (" . _T('info_multi_herit'). ")</option>\n"; 458 } 459 else 460 $ret .= "<option class='maj-debut' value='$l'$selected>".traduire_nom_langue($l)."</option>\n"; 461 } 462 463 $ret .= "</select>\n"; 464 465 if ($nom_select == 'var_lang') 466 $ret .= "<noscript><INPUT TYPE='submit' NAME='Valider' VALUE='>>' class='verdana1' style='background-color: $couleur_foncee; color: white; height: 19px;'></noscript>"; 467 else 468 $ret .= "<INPUT TYPE='submit' NAME='Modifier' VALUE='"._T('bouton_modifier')."' CLASS='fondo'>"; 469 470 $ret .= "</form>"; 471 return $ret; 472 } 473 474 // menu dans l'espace public 475 function gerer_menu_langues () { 476 global $var_lang; 477 478 if ($var_lang) { 479 if (changer_langue($var_lang)) { 480 spip_setcookie('spip_lang', $var_lang, time() + 24 * 3600); 481 } 482 } 483 } 484 485 // 486 // Selection de langue haut niveau 487 // 488 function utiliser_langue_site () { 489 changer_langue($GLOBALS['langue_site']); 490 } 491 492 function utiliser_langue_visiteur () { 493 if (!regler_langue_navigateur()) 494 utiliser_langue_site(); 495 496 if ($GLOBALS['auteur_session']['lang']) 497 changer_langue($GLOBALS['auteur_session']['lang']); 498 } 499 500 // 501 // Initialisation 502 // 503 function init_langues () { 504 global $all_langs, $flag_ecrire, $langue_site, $cache_lang, $cache_lang_modifs; 505 global $pile_langues, $lang_typo, $lang_dir; 506 507 $all_langs = lire_meta('langues_proposees'); 508 $langue_site = lire_meta('langue_site'); 509 $cache_lang = array(); 510 $cache_lang_modifs = array(); 511 $pile_langues = array(); 512 $lang_typo = ''; 513 $lang_dir = ''; 514 515 $toutes_langs = array(); 516 517 if (!$all_langs || !$langue_site || $flag_ecrire) { 518 if (!$d = @opendir($dir_ecrire . 'lang')) 519 return; 520 521 while ($f = readdir($d)) { 522 if (ereg('^spip_([a-z_]+)\.php?$', $f, $regs)) 523 $toutes_langs[] = $regs[1]; 524 } 525 526 closedir($d); 527 sort($toutes_langs); 528 $all_langs2 = join(',', $toutes_langs); 529 530 // Si les langues n'ont pas change, ne rien faire 531 if ($all_langs2 != $all_langs) { 532 $all_langs = $all_langs2; 533 534 if (!$langue_site) { 535 // Initialisation : le francais par defaut, sinon la premiere langue trouvee 536 if (ereg(',fr,', ",$all_langs,")) 537 $langue_site = 'fr'; 538 else 539 list(, $langue_site) = each($toutes_langs); 540 if (defined("_ECRIRE_INC_META")) 541 ecrire_meta('langue_site', $langue_site); 542 } 543 if (defined("_ECRIRE_INC_META")) { 544 ecrire_meta('langues_proposees', $all_langs); 545 ecrire_metas(); 546 } 547 } 548 } 549 550 init_codes_langues(); 551 } 552 553 init_langues(); 554 utiliser_langue_site(); 555 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Feb 24 14:40:03 2007 | par Balluche grâce à PHPXref 0.7 |