所以我用三种语言制作主页。我使用切换方法,这里是代码-
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文件。
既然您使用的是类,我认为最好使用属性而不是全局变量,这样在将来的维护中会更容易。创建一个包含$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');
type
<?php echo $index->translate('search'); ?>
首先检查会话是否初始化,并将languages()函数调用放在翻译之前,以便在翻译之前加载语言,并将error_reporting(E_ALL)放在顶部,以便删除任何错误抑制,并将echo翻译语句的返回结果