我有以下问题。
我有en-EN.php文件 - 我保留所有功能翻译的方式如下:
<?php
$lang = array(
'Index' => 'Index'
);
?>
我将此文件包含在页面标题中,以便我可以访问它,如下所示:$lang['Index']
。
问题如下。
当我创建另一个文件,例如User.class.php
并尝试在其中包含此翻译数组时,我不允许使用它。
我的User.class.php文件例如:
<?php
class User {
function showIndex() {
echo $lang['Index'];
}
}
然而,这样它不允许我显示实际的单词。可能是什么问题?
我在标题中包含:
include '/lang/en-EN.php';
include '/theme/classes/User.class.php';
$user = new User();
$user->showIndex();
我需要以某种方式传递$ lang数组,但我不知道如何......
答案 0 :(得分:1)
在函数或方法的范围内无法访问您的$lang
变量。您必须使用global
导入它。
function showIndex() {
global $lang;
echo $lang['Index'];
}
答案 1 :(得分:0)
该类的类和方法具有不同的变量范围,因此它们无法看到&#34; $ lang&#34;变量。你可以这样做:
include "en-EN.php";
include "~/User.classs.php";
$user = new User($lang);
$user->showIndex();
课程应如下所示:
class User {
protected $lang;
public function __construct($lang) {
$this->lang = $lang;
}
public function test() {
echo $this->lang['Index'];
}
}
一般来说,最好先看看gettext