Bonjour

J'ai une application que je souhaiterais internationaliser mais pour l'instant j'ai du mal à jongler avec les fichiers de propriétés et les locales; et mon expérience en PHP est assez minime.

J'ai de l'expérience en Java donc c'est peut-être pour çà que j'y arrive pas: peut-être je reproduis des patterns de Java, à vous de me dire si çà change en PHP!
J'ai donc un fichier header.php dans lequel j'ai des menus que je veux internationaliser/localiser : c'est là où je fais un $resourcesReader->getResource('home').
Dans le getResource(), je récupère la locale et j'essaie d'afficher le contenu de $fr[$key], $fr ou $es ou $en dépendant de la locale, et définis dans Resources.php.
Mais rien ne s'affiche....


Voilà j'ai donc mon fichier index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<?php include 'include/header.php';?>
J'ai également mon fichier include/header.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php 
	session_start();
 
	include_once 'resources/Constants.php';
	include_once 'include/locale.php';
	include_once 'include/ResourcesReader.php';
 
	$resourcesReader = new ResourcesReader();
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 
</head>
<body>
	<div class="header">
		<div class="lang">
			<!-- defininition des trois liens pour changer de langue -->
			<?php foreach ($AVAILABLE_LANGUAGES as $languageKey => $languageValue) { ?>
				<a href="?language=<?=$languageKey?>"><?=$languageValue?></a>&nbsp;
			<?php }?>
		</div>
 
		<!-- links -->
		<div class="menu">
			<a href="index.html"><?=$resourcesReader->getResource('home')?></a>
			&nbsp;&nbsp;
			<a href="about.html"><?=$resourcesReader->getResource('aboutme')?></a>
			&nbsp;&nbsp;
Voilà mon fichier resources/Constants.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<?php
 
	$AVAILABLE_LANGUAGES = array(
					'fr' => 'FR',
					'en' => 'EN',
					'es' => 'ES' );
 
	$DEFAULT_LOCALE = 'en';
?>
Voici mon fichier include/locale.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
	include_once 'resources/Constants.php';
 
	// if the language change, set/update the cookie and put the language in session
	if (isset($_GET['language'])){
		$locale = $_GET['language'];
		setcookie('locale',$locale);
		$_SESSION['locale'] = $locale;
		//setlocale(LC_ALL,$locale);
	} 
 
	// if the locale is not set in session, then try to get it from a cookie or use the default locale
	if (!isset($_SESSION['locale'])){
		if (isset($_COOKIE['locale'])){
			$_SESSION['locale'] = $_COOKIE['locale'];
		} else {
			$_SESSION['locale'] = Constants.DEFAULT_LOCALE; 
		}
	}
?>
Mon fichier include/ResourcesReader.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
 
include_once 'resources/Resources.php';
 
class ResourcesReader {
 
	private $_map;
 
	public function __construct(){
		$this->_map = "";
	}
 
	public function getResource($key){
 
		if (isset($_SESSION['locale'])){
			switch ($_SESSION['locale']){
				case 'fr': return $fr[$key];break;
				case 'es': return $es[$key];break;
				case 'en': return $en[$key];break;
				default: return this::$en[$key];break;
			}
		} else {
			return this::$en[$key];break;
		}
 
	}
}
 
?>
Mon fichier resources/Resources.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<?php
 
	$fr = array(
		'home' => 'accueil',
		'aboutme' => 'ˆ propos de moi');
 
	$en = array(
		'home' => 'home',
		'aboutme' => 'about me');
?>