Subversion Repositories Applications.framework

Rev

Rev 183 | Rev 205 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 183 Rev 186
Line 144... Line 144...
144
	 * @return boolean true si le chargement c'est bien passé, sinon false.
144
	 * @return boolean true si le chargement c'est bien passé, sinon false.
145
	 */
145
	 */
146
	private static function chargerFichierIni($fichier_ini, $langue) {
146
	private static function chargerFichierIni($fichier_ini, $langue) {
147
		self::$traductions[$langue] = false;
147
		self::$traductions[$langue] = false;
148
		if (file_exists($fichier_ini)) {
148
		if (file_exists($fichier_ini)) {
149
			self::$traductions[$langue] = parse_ini_file($fichier_ini, true);
149
			$ini = parse_ini_file($fichier_ini, true);
-
 
150
			Debug::printr($ini, 'Avant :');
-
 
151
			$ini = self::analyserTableauIni($ini);
-
 
152
			Debug::printr($ini, 'Aprés :');
-
 
153
			self::$traductions[$langue] = $ini;
150
		}
154
		}
151
		return (self::$traductions[$langue] === false) ?  false : true;
155
		return (self::$traductions[$langue] === false) ?  false : true;
152
	}
156
	}
Line 153... Line 157...
153
	
157
	
-
 
158
	/**
-
 
159
	 * Analyse un tableau de traductions pour évaluer les clés.
-
 
160
	 * @param array $i18n le tableau de traductions
-
 
161
	 * @return array le tableau analysé et modifié si nécessaire.
-
 
162
	 */
-
 
163
	private static function analyserTableauIni($i18n = array()) {
-
 
164
		//ATTENTION : il est important de passer la valeur par référence car nous la modifions dynamiquement dans la boucle
-
 
165
		foreach ($i18n as $cle => &$valeur) {
-
 
166
			if (is_array($valeur)) {
-
 
167
				$i18n[$cle] = self::analyserTableauIni($valeur);
-
 
168
			} else {
-
 
169
				$i18n = self::evaluerCle($i18n, $cle, $valeur);
-
 
170
			}
-
 
171
		}
-
 
172
		return $i18n;
-
 
173
	}
-
 
174
	
-
 
175
	/**
-
 
176
	 * Dans le cas des chaines de traduction à sous clé (ex.: cle.souscle), cette méthode
-
 
177
	 * évalue les valeurs correspondantes et créée les sous tableaux associés.
-
 
178
	 * @param array $i18n tableau de traductions (par référence)
-
 
179
	 * @param string $cle la cle dans le tableau
-
 
180
	 * @param string $valeur la valeur à affecter
-
 
181
	 */
-
 
182
	private static function evaluerCle($i18n, $cle, $valeur) {
-
 
183
		if (strpos($cle, '.') !== false) {
-
 
184
			unset($i18n[$cle]);
-
 
185
			$pieces = explode('.', $cle, 2);
-
 
186
			if (strlen($pieces[0]) && strlen($pieces[1])) {
-
 
187
				if (isset($i18n[$pieces[0]]) && !is_array($i18n[$pieces[0]])) {
-
 
188
					$m = "Ne peut pas créer de sous-clé pour '{$pieces[0]}' car la clé existe déjà";
-
 
189
					trigger_error($m, E_USER_WARNING);
-
 
190
				} else {
-
 
191
					$i18n[$pieces[0]][$pieces[1]] = $valeur;
-
 
192
					$i18n[$pieces[0]] = self::evaluerCle($i18n[$pieces[0]], $pieces[1], $valeur);
-
 
193
				}
-
 
194
			} else {
-
 
195
				$m = "Clé invalide '$cle'";
-
 
196
				trigger_error($m, E_USER_WARNING);
-
 
197
			}
-
 
198
		} else {
-
 
199
			$i18n[$cle] = $valeur;
-
 
200
		}
-
 
201
		return $i18n;
-
 
202
	}
-
 
203
	
154
	/**
204
	/**
155
	 * Cherche l'information sur la langue demandée par l'application
205
	 * Cherche l'information sur la langue demandée par l'application
156
	 */
206
	 */
157
	private static function trouverLangue() {
207
	private static function trouverLangue() {
158
		if (isset($_GET[Config::get('i18n_url_parametre')])) {
208
		if (isset($_GET[Config::get('i18n_url_parametre')])) {