De translatie werkt prima maar zodra je navigeert naar een andere pagina moet je opnieuw de taal aanklikken.
Mijn vraag was om deze translatie keuze vast te houden zodat elke pagina in de juiste taal verschijnt.
Demo :
http://joeytest321.webuda.com/
Files
de.txt
index.php
page1.php
page2.php
class.translation.php
de.txt
Translation=Übersetzer
Home=Zuhause
Page 1=Seite 1
Page 2=Seite 2
Bye=Freilos
Mouse=Maus
class.translation.php
<?php
class Translator {
private $language = 'en';
private $lang = array();
public function __construct($language){
$this->language = $language;
}
private function findString($str) {
if (array_key_exists($str, $this->lang[$this->language])) {
echo $this->lang[$this->language][$str];
return;
}
echo $str;
}
private function splitStrings($str) {
return explode('=',trim($str));
}
public function __($str) {
if (!array_key_exists($this->language, $this->lang)) {
if (file_exists($this->language.'.txt')) {
$strings = array_map(array($this,'splitStrings'),file($this->language.'.txt'));
foreach ($strings as $k => $v) {
$this->lang[$this->language][$v[0]] = $v[1];
}
return $this->findString($str);
}
else {
echo $str;
}
}
else {
return $this->findString($str);
}
}
}
?>
index.php
<?php
require_once('class.translation.php');
if(isset($_GET['lang']))
$translate = new Translator($_GET['lang']);
else
$translate = new Translator('en');
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><?php $translate->__('Translation'); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15"/>
</head>
<body>
<a title="Deutsch" href="?lang=de"><img src="img/de.png" alt="Deutsch" ></a>
<a title="English" href="?lang=en"><img src="img/us.png" alt="English" ></a>
<a title="Home" href="index.php"><?php $translate->__('Home'); ?></a>
<a title="Home" href="page1.php"><?php $translate->__('Page 1'); ?></a>
<a title="Home" href="page2.php"><?php $translate->__('Page 2'); ?></a>
<h1><?php $translate->__('Home'); ?></h1>
<h3><?php $translate->__('Bye'); ?></h3>
<h3><?php $translate->__('Mouse'); ?></h3>
</body>
</html>
page1.php
<?php
require_once('class.translation.php');
if(isset($_GET['lang']))
$translate = new Translator($_GET['lang']);
else
$translate = new Translator('en');
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><?php $translate->__('Translation'); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15"/>
</head>
<body>
<a title="Deutsch" href="?lang=de"><img src="img/de.png" alt="Deutsch" ></a>
<a title="English" href="?lang=en"><img src="img/us.png" alt="English" ></a>
<a title="Home" href="index.php"><?php $translate->__('Home'); ?></a>
<a title="Home" href="page1.php"><?php $translate->__('Page 1'); ?></a>
<a title="Home" href="page2.php"><?php $translate->__('Page 2'); ?></a>
<h1><?php $translate->__('Page 1'); ?></h1>
<h3><?php $translate->__('Bye'); ?></h3>
<h3><?php $translate->__('Mouse'); ?></h3>
</body>
</html>
page2.php
<?php
require_once('class.translation.php');
if(isset($_GET['lang']))
$translate = new Translator($_GET['lang']);
else
$translate = new Translator('en');
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><?php $translate->__('Translation'); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15"/>
</head>
<body>
<a title="Deutsch" href="?lang=de"><img src="img/de.png" alt="Deutsch" ></a>
<a title="English" href="?lang=en"><img src="img/us.png" alt="English" ></a>
<a title="Home" href="index.php"><?php $translate->__('Home'); ?></a>
<a title="Home" href="page1.php"><?php $translate->__('Page 1'); ?></a>
<a title="Home" href="page2.php"><?php $translate->__('Page 2'); ?></a>
<h1><?php $translate->__('Page 2'); ?></h1>
<h3><?php $translate->__('Bye'); ?></h3>
<h3><?php $translate->__('Mouse'); ?></h3>
</body>
</html>
Zit al een tijdje met dit probleem, advies of hulp is meer dan welkom.
Gr Joey