所以我用三种语言制作主页。 我使用的是switch方法,这里是代码 -
public function languages()
{
if (isset($_GET['lang']) && $_GET['lang'] != '')
{
$_SESSION['lang'] = $_GET['lang'];
}
else
{
$_SESSION['lang'] = 'en_EN';
}
switch($_SESSION['lang'])
{
case 'en_EN': require_once('language/lang.eng.php');break;
case 'lv_LV': require_once('language/lang.lv.php');break;
case 'ru_RU': require_once('language/lang.ru.php');break;
default: require_once('language/lang.eng.php');
}
}
public function translate($txt)
{
global $text;
return $text[$txt];
}
它应该显示在index.php文件中,如下所示 -
<?php $index->translate('search'); ?>
但问题是它没有显示错误,没有通知,没有警告,也没有翻译或默认文本。 我包含了函数语言(),也许你可以帮我解决这个问题吗?
编辑:
我在index.php文件的开头调用$ language - <?php require_once('class.index.php'); $index = new index; $index->languages(); ?>
和$ text在lang.eng.php中定义; lang.lv.php和lang.ru.php文件。
答案 0 :(得分:3)
由于你正在使用一个类,我认为使用属性而不是全局变量更好,在将来的维护中会更容易。创建一个包含$ text的类变量并使用
class Index {
var $text;
public function languages()
{
require(".....");
$this->text = $text;
}
public function translate($txt)
{
if(isset($this->text[$txt]))
{
return $this->text[$txt];
}
else
{
return "no translation";
}
}
}
$index = new Index;
$index->languages();
echo $index->translate('search');
答案 1 :(得分:1)
输入
<?php echo $index->translate('search'); ?>
答案 2 :(得分:0)
首先检查会话是否已初始化,并在translate之前放置languages()函数调用,以便在翻译之前加载语言,并将error_reporting(E_ALL)置于顶部,以便任何错误抑制将是删除并同时回显translate语句的返回结果