1

我是 kohana 的新手,并试图将 i18n 从基于文件修改为基于数据库。基于本教程,我做了以下工作:i18napplication/classes目录中创建了新类以覆盖默认__()函数。

<?php

class I18n extends Kohana_I18n
{


    function __($token, $lang = 'en')
    {
        $query = ORM::factory('Dictionary')->where('token', '=', $token)->find();
        return $query->{"txt_" . $lang};
    } 
}

我有看起来像这样的字典模型

<?php defined('SYSPATH') or die('No direct script access.');

class Model_Dictionary extends ORM {
    protected $_table_name = 'Dictionary';

}

收到错误消息:

http://screencast.com/t/r84oL1A1

我究竟做错了什么?有什么建议吗?也许类不自动加载?

4

1 回答 1

0

在这种实现中,您需要在您的视图中使用:

I18n::__($message_to_translate);

不是

__($message_to_translate);

并且您必须__()将函数声明为static

<?php defined('SYSPATH') or die('No direct script access.');

class I18n extends Kohana_I18n
{

    public static function __($token, $lang = 'en')
    {
        $query = ORM::factory('Dictionary')->where('token', '=', $token)->find();
        return $query->{"txt_" . $lang};
    } 
}
于 2013-09-01T20:07:00.837 回答