i18n Object
(
[localization] =>
[timezone] =>
[lang] =>
[english] => english
[strings] => Array
(
[main/welcome] => welcome
)
)
我从
得到这个class i18n {
public $localization;
public $timezone;
public $lang;
private static $instance; //The single instance
public static function getInstance(){
if (self::$instance == null){
self::$instance = new self($localization);
}
return self::$instance ;
}
public function __construct($localization) {
$this->$localization = $localization;
// if($this->localization == 'english') { // ill be writing these sick things like idiot for each translation, FML
$this->strings = english::load();
//}
// TODO $this->strings = $localization::load();
}
public function getString($string_id) {
return $this->strings[$string_id];
}
}
?>
我不明白这是怎么发生的,有人能解释一下发生了什么吗?我认为它应该以不同的方式运作,比如在本地化中使用英语……我想知道它是如何发生的,提前有一些方法来修复它,因为我正在努力解决我自己的CMS或其他东西,我只是无聊,所以我编码,但我不管理如何完成这个问题…
一定是php里面的东西…PHP支持内部化吗?它有内部系统吗?我想知道,我不想再发明整个轮子,只是它的一部分。非常感谢……
我真的很想知道它是做什么的,非常感谢您的回复。
我猜你没有所有的error_reporting。请确保这样做,然后您应该从代码中看到类似Notice: Undefined variable: $localization
的东西。如果你用下面的代码更新你的代码,你应该在本地化中看到英语。
public static function getInstance($localization = 'english'){
if (self::$instance == null){
self::$instance = new self($localization);
}
return self::$instance ;
}
public function __construct($localization) {
$this->localization = $localization;
// if($this->localization == 'english') { // ill be writing these sick things like idiot for each translation, FML
$this->strings = english::load();
//}
// TODO $this->strings = $localization::load();
}
public function getString($string_id) {
return $this->strings[$string_id];
}
然后实例化你的类,
$object = i18n::getInstance('french'); // for languages other than english
基本上我改变了两件事
- 我添加了一个参数
$localization
与您的getInstance方法。 - 我在你的构造函数中将
$this->$localization = $localization;
改为$this->localization = $localization;
。
请观察$this->$localization = $localization;
和$this->localization = $localization;
之间的差异。$this->$localization是一个变量变量。意思是一旦你传递让说english
作为一个参数给你的构造函数,它使一个变量称为$english并在其中赋值。这就是为什么你会看到english = english
的东西