лично я не стал бы использовать определения, как указано Гордоном , но я бы сделал что-то вроде этого:
class Language
{
var $language;
var $storage = array();
public function __construct($language)
{
$this->language = $language;
$this->load();
}
private function load()
{
$location = '/path/to/' . $this->language . '.php';
if(file_exists($location))
{
require_once $location;
if(isset($lang))
{
$this->storage = (object)$lang;
unset($lang);
}
}
}
public function __get($root)
{
return isset($this->storage[$root]) ? $this->storage[$root] : null;
}
}
Так что вышеизложенное будет очень простым языковым объектом, иязыковой файл будет выглядеть так:
/ path / to / english.php
$lang = array(
'user' => array(
'welcome' => 'Welcome %s',
'logout' => 'Logout',
)
/*...*/
);
У вас должно быть несколько файлов для разных локалей, но вы должны изменить свой класстак что если ключ не существует в German
, то по умолчанию он должен быть английским локальным, так как это основной
Так что использование будет таким:
$lang = 'english'; //logic behind this to detect the browser or user data.
$Language = new Language($lang);
echo sprintf($Language->user->welcome,"RobertPitt"); // Welcome RobertPitt