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支持内化吗?它有内部系统吗?我想知道,我不想再发明整轮,只是它的一部分。非常感谢你......
我真的很想知道它的作用,非常感谢你的回应。
答案 0 :(得分:0)
我猜你没有全部使用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
。 $this->$localization = $localization;
更改为$this->localization = $localization;
。 请注意$this->$localization = $localization;
和$this->localization = $localization;
之间存在差异。 $ this-> $ localization是variable variable。一旦你传递的意思让我们说english
作为你的构造函数的参数,它会创建一个名为$ english的变量并在其中赋值。这就是你看到english = english
事物的原因