创建多语言主页

时间:2011-10-05 18:10:44

标签: php

所以我用三种语言制作主页。 我使用的是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文件。

3 个答案:

答案 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语句的返回结果