Kohana i18n使用数据库

时间:2013-09-01 11:57:53

标签: php database orm translation kohana

我是kohana的新手并试图将i18n从基于数据库的数据修改为基于数据库。基于this tutorial我做了以下操作:在i18n目录中创建新类application/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

我做错了什么?有什么建议吗?也许班级不自动加载?

1 个答案:

答案 0 :(得分: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};
    } 
}