[ Index ]
 

Code source de SPIP Agora 1.4

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/Agora1-4/ecrire/ -> inc_lang.php (source)

   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' => "&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;", 'as' => "Assamese", 'ay' => "Aymara", 'az' => "&#1040;&#1079;&#1241;&#1088;&#1073;&#1072;&#1112;&#1209;&#1072;&#1085;", 'ba' => "Bashkir", 'be' => "&#1041;&#1077;&#1083;&#1072;&#1088;&#1091;&#1089;&#1082;&#1110;", 'bg' => "&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080;", 'bh' => "Bihari", 'bi' => "Bislama", 'bn' => "Bengali; Bangla", 'bo' => "Tibetan", 'br' => "breton", 'ca' => "catal&#224;", 'co' => "corsu", 'cpf' => "Kr&eacute;ol r&eacute;yon&eacute;", 'cpf_dom' => "Krey&ograve;l", 'cs' => "&#269;e&#353;tina", 'cy' => "Welsh", 'da' => "dansk", 'de' => "Deutsch", 'dz' => "Bhutani", 'el' => "&#949;&#955;&#955;&#951;&#957;&#953;&#954;&#940;", 'en' => "English", 'eo' => "Esperanto", 'es' => "Espa&#241;ol", 'es_co' => "Colombiano", 'et' => "eesti", 'eu' => "euskara", 'fa' => "&#1601;&#1575;&#1585;&#1587;&#1609;", 'fi' => "suomi", 'fj' => "Fiji", 'fo' => "f&#248;royskt", 'fr' => "fran&#231;ais", 'fy' => "Frisian", 'ga' => "Irish", 'gd' => "Scots Gaelic", 'gl' => "galego", 'gn' => "Guarani", 'gu' => "Gujarati", 'ha' => "Hausa", 'he' => "&#1506;&#1489;&#1512;&#1497;&#1514;", 'hi' => "&#2361;&#2367;&#2306;&#2342;&#2368;", 'hr' => "hrvatski", 'hu' => "magyar", 'hy' => "Armenian", 'ia' => "Interlingua", 'id' => "Bahasa Indonesia", 'ie' => "Interlingue", 'ik' => "Inupiak", 'is' => "&#237;slenska", 'it' => "italiano", 'iu' => "Inuktitut", 'ja' => "&#26085;&#26412;&#35486;", 'jw' => "Javanese", 'ka' => "&#4325;&#4304;&#4320;&#4311;&#4323;&#4314;&#4312;", 'kk' => "&#1178;&#1072;&#1079;&#1072;&#1097;b", 'kl' => "Greenlandic", 'km' => "Cambodian", 'kn' => "Kannada", 'ko' => "&#54620;&#44397;&#50612;", 'ks' => "Kashmiri", 'ku' => "Kurdish", 'ky' => "Kirghiz", 'la' => "Latin", 'ln' => "Lingala", 'lo' => "Laothian", 'lt' => "lietuvi&#371;", 'lv' => "latvie&#353;u", 'mg' => "Malagasy", 'mi' => "Maori", 'mk' => "&#1084;&#1072;&#1082;&#1077;&#1076;&#1086;&#1085;&#1089;&#1082;&#1080; &#1112;&#1072;&#1079;&#1080;&#1082;", 'ml' => "Malayalam", 'mn' => "Mongolian", 'mo' => "Moldavian", 'mr' => "&#2350;&#2352;&#2366;&#2336;&#2368;", 'ms' => "Bahasa Malaysia", 'mt' => "Maltese", 'my' => "Burmese", 'na' => "Nauru", 'ne' => "Nepali", 'nl' => "Nederlands", 'no' => "norsk", 'oc_lnc' => "&ograve;c lengadocian", 'oc_ni' => "&ograve;c ni&ccedil;ard", 'oc_prv' => "&ograve;c proven&ccedil;au", 'oc_gsc' => "&ograve;c gascon", 'oc_lms' => "&ograve;c lemosin", 'oc_auv' => "&ograve;c auvernhat", 'oc_va' => "&ograve;c vivaroaupenc", 'om' => "(Afan) Oromo", 'or' => "Oriya", 'pa' => "Punjabi", 'pl' => "polski", 'ps' => "Pashto, Pushto", 'pt' => "Portugu&#234;s", 'qu' => "Quechua", 'rm' => "Rhaeto-Romance", 'rn' => "Kirundi", 'ro' => "rom&#226;n&#259;", 'ru' => "&#1088;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;", 'rw' => "Kinyarwanda", 'sa' => "&#2360;&#2306;&#2360;&#2381;&#2325;&#2371;&#2340;", 'sd' => "Sindhi", 'sg' => "Sangho", 'sh' => "Serbo-Croatian", 'si' => "Sinhalese", 'sk' => "sloven&#269;ina", 'sl' => "slovenski", 'sm' => "Samoan", 'sn' => "Shona", 'so' => "Somali", 'sq' => "shqipe", 'sr' => "&#1089;&#1088;&#1087;&#1089;&#1082;&#1080;", 'ss' => "Siswati", 'st' => "Sesotho", 'su' => "Sundanese", 'sv' => "svenska", 'sw' => "Kiswahili", 'ta' => "&#2980;&#2990;&#3007;&#2996;&#3021; - tamil", 'te' => "Telugu", 'tg' => "Tajik", 'th' => "&#3652;&#3607;&#3618;", 'ti' => "Tigrinya", 'tk' => "Turkmen", 'tl' => "Tagalog", 'tn' => "Setswana", 'to' => "Tonga", 'tr' => "T&#252;rk&#231;e", 'ts' => "Tsonga", 'tt' => "&#1058;&#1072;&#1090;&#1072;&#1088;", 'tw' => "Twi", 'ug' => "Uighur", 'uk' => "&#1091;&#1082;&#1088;&#1072;&#1111;&#1085;&#1100;&#1089;&#1082;&#1072;", 'ur' => "&#1649;&#1585;&#1583;&#1608;", 'uz' => "U'zbek", 'vi' => "Ti&#7871;ng Vi&#7879;t", 'vo' => "Volapuk", 'wo' => "Wolof", 'xh' => "Xhosa", 'yi' => "Yiddish", 'yor' => "Yoruba", 'za' => "Zhuang", 'zh' => "&#20013;&#25991;", '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  ?>


Généré le : Sat Feb 24 14:40:03 2007 par Balluche grâce à PHPXref 0.7