我是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
我做错了什么?有什么建议吗?也许班级不自动加载?
答案 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};
}
}