创建多语言主页


Creating multilanguage homepage

所以我用三种语言制作主页。我使用切换方法,这里是代码-

  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翻译语句的返回结果