texte; } // modules demandes explicitement cf MODULES_IDIOMES if (strpos($ori, ':')) { list($modules, $code) = explode(':', $ori, 2); $modules = explode('|', $modules); $ori_complet = $ori; } else { $modules = array('spip', 'ecrire'); $code = $ori; $ori_complet = implode('|', $modules) . ':' . $ori; } $desc = new SPIP_Traductions_Description(); // parcourir tous les modules jusqu'a ce qu'on trouve foreach ($modules as $module) { $var = "i18n_" . $module . "_" . $lang; if (empty($GLOBALS[$var])) { charger_langue($lang, $module); // surcharges persos -- on cherche // (lang/)local_xx.php et/ou (lang/)local.php ... if (!isset($local['local_' . $lang])) { // redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer) $GLOBALS['idx_lang'] = $var; // ... (lang/)local_xx.php $local['local_' . $lang] = chercher_module_lang('local', $lang); } if ($local['local_' . $lang]) { surcharger_langue($local['local_' . $lang]); } // ... puis (lang/)local.php if (!isset($local['local'])) { $local['local'] = chercher_module_lang('local'); } if ($local['local']) { surcharger_langue($local['local']); } } if (isset($GLOBALS[$var][$code])) { $desc->code = $code; $desc->module = $module; $desc->langue = $GLOBALS['lang_' . $var]; $desc->texte = $GLOBALS[$var][$code]; break; } } if (!$desc->corrections) { $desc->corrections = true; // Retour aux sources si la chaine est absente dans la langue cible ; // on essaie d'abord la langue du site, puis a defaut la langue fr if (!strlen($desc->texte) and $lang !== _LANGUE_PAR_DEFAUT) { if ($lang !== $GLOBALS['meta']['langue_site']) { $desc = inc_traduire_dist($ori, $GLOBALS['meta']['langue_site'], true); } else { $desc = inc_traduire_dist($ori, _LANGUE_PAR_DEFAUT, true); } } // Supprimer la mention ou if (substr($desc->texte, 0, 1) === '<') { $desc->texte = str_replace(array('', ''), array(), $desc->texte); } // Si on n'est pas en utf-8, la chaine peut l'etre... // le cas echeant on la convertit en entites html &#xxx; if ((!isset($GLOBALS['meta']['charset']) or $GLOBALS['meta']['charset'] !== 'utf-8') and preg_match(',[\x7f-\xff],S', $desc->texte) ) { include_spip('inc/charsets'); $desc->texte = charset2unicode($desc->texte, 'utf-8'); } } if (_request('var_mode') == 'traduction') { $desc = definir_details_traduction($desc, $ori_complet); } else { $deja_vu[$lang][$ori] = $desc; } return $raw ? $desc : $desc->texte; } /** * Modifie le texte de traduction pour indiquer des éléments * servant au debug de celles-ci. (pour var_mode=traduction) * * @param SPIP_Traductions_Description $desc * @param string $modules Les modules qui étaient demandés * @return SPIP_Traductions_Description */ function definir_details_traduction($desc, $modules) { if (!$desc->mode and $desc->texte) { // ne pas modifier 2 fois l'affichage $desc->mode = 'traduction'; $classe = 'debug-traduction' . ($desc->module == 'ecrire' ? '-prive' : ''); $desc->texte = 'langue . ')>' . $desc->texte . ''; $desc->texte = str_replace( array("$desc->module:", "$desc->module|"), array("*$desc->module*:", "*$desc->module*|"), $desc->texte ); } return $desc; }