Skip to content
Extraits de code Groupes Projets
Valider 33c71f08 rédigé par Fil's avatar Fil
Parcourir les fichiers

il y avait beaucoup de fautes dans le code de la fonction de traduction.

Notamment, on faisait deux preg_match pour chaque appel de traduction (svn commit -m 
parent a665967b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -82,16 +82,17 @@ function inc_traduire_dist($ori, $lang) {
static $deja_vu = array();
if (isset($deja_vu[$lang][$ori])) {
return $deja_vu[$lang][$ori];
}
// modules demandes explicitement
if (isset($deja_vu[$lang][$ori]))
return $deja_vu[$lang][$ori];
if (preg_match(",^([a-z0-9_/]+):(.*)$,", $ori, $regs)) {
$modules = explode("/",$regs[1]);
$code = $regs[2];
} else {$modules = array('spip', 'ecrire'); $code = $ori;}
// modules demandes explicitement <xxx/yyy/zzz:code>
if (strpos($ori,':')) {
list($modules,$code) = explode(':',$ori);
$modules = explode('/', $modules);
} else {
$modules = array('spip', 'ecrire');
$code = $ori;
}
$text = '';
// parcourir tous les modules jusqu'a ce qu'on trouve
......@@ -113,10 +114,17 @@ function inc_traduire_dist($ori, $lang) {
}
}
// filet pour traduction pas finies
if (($lang<>'fr') AND preg_match(",^<(NEW|MODIF)>,", $text))
$text = inc_traduire_dist($ori, 'fr');
$deja_vu[$lang][$code] = $text;
// 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($text)
AND $lang !== 'fr') {
if ($lang !== $GLOBALS['meta']['langue_site'])
$text = inc_traduire_dist($ori, $GLOBALS['meta']['langue_site']);
else
$text = inc_traduire_dist($ori, 'fr');
}
$deja_vu[$lang][$ori] = $text;
return $text;
}
......
......@@ -376,14 +376,16 @@ function _T($texte, $args=array()) {
$traduire = charger_fonction('traduire', 'inc');
$text = $traduire($texte,$GLOBALS['spip_lang']);
if (!$text)
if (!strlen($text))
// pour les chaines non traduites
$text = str_replace('_', ' ',
$text = str_replace('_', ' ',
(($n = strpos($texte,':')) === false ? $texte :
substr($texte, $n+1)));
while (list($name, $value) = @each($args))
if (is_array($args))
foreach ($args as $name => $value)
$text = str_replace ("@$name@", $value, $text);
return $text;
}
......@@ -391,8 +393,10 @@ function _T($texte, $args=array()) {
// chaines en cours de traduction
// http://doc.spip.org/@_L
function _L($text, $args=array()) {
while (list($name, $value) = @each($args))
if (is_array($args))
foreach ($args as $name => $value)
$text = str_replace ("@$name@", $value, $text);
if ($GLOBALS['test_i18n'])
return "<span style='color:red;'>$text</span>";
else
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter