146,12 → 146,62 |
private static function chargerFichierIni($fichier_ini, $langue) { |
self::$traductions[$langue] = false; |
if (file_exists($fichier_ini)) { |
self::$traductions[$langue] = parse_ini_file($fichier_ini, true); |
$ini = parse_ini_file($fichier_ini, true); |
Debug::printr($ini, 'Avant :'); |
$ini = self::analyserTableauIni($ini); |
Debug::printr($ini, 'Aprés :'); |
self::$traductions[$langue] = $ini; |
} |
return (self::$traductions[$langue] === false) ? false : true; |
} |
|
/** |
* Analyse un tableau de traductions pour évaluer les clés. |
* @param array $i18n le tableau de traductions |
* @return array le tableau analysé et modifié si nécessaire. |
*/ |
private static function analyserTableauIni($i18n = array()) { |
//ATTENTION : il est important de passer la valeur par référence car nous la modifions dynamiquement dans la boucle |
foreach ($i18n as $cle => &$valeur) { |
if (is_array($valeur)) { |
$i18n[$cle] = self::analyserTableauIni($valeur); |
} else { |
$i18n = self::evaluerCle($i18n, $cle, $valeur); |
} |
} |
return $i18n; |
} |
|
/** |
* Dans le cas des chaines de traduction à sous clé (ex.: cle.souscle), cette méthode |
* évalue les valeurs correspondantes et créée les sous tableaux associés. |
* @param array $i18n tableau de traductions (par référence) |
* @param string $cle la cle dans le tableau |
* @param string $valeur la valeur à affecter |
*/ |
private static function evaluerCle($i18n, $cle, $valeur) { |
if (strpos($cle, '.') !== false) { |
unset($i18n[$cle]); |
$pieces = explode('.', $cle, 2); |
if (strlen($pieces[0]) && strlen($pieces[1])) { |
if (isset($i18n[$pieces[0]]) && !is_array($i18n[$pieces[0]])) { |
$m = "Ne peut pas créer de sous-clé pour '{$pieces[0]}' car la clé existe déjà"; |
trigger_error($m, E_USER_WARNING); |
} else { |
$i18n[$pieces[0]][$pieces[1]] = $valeur; |
$i18n[$pieces[0]] = self::evaluerCle($i18n[$pieces[0]], $pieces[1], $valeur); |
} |
} else { |
$m = "Clé invalide '$cle'"; |
trigger_error($m, E_USER_WARNING); |
} |
} else { |
$i18n[$cle] = $valeur; |
} |
return $i18n; |
} |
|
/** |
* Cherche l'information sur la langue demandée par l'application |
*/ |
private static function trouverLangue() { |