CakePHP在Model里面使用Library

时间:2015-07-21 13:14:38

标签: cakephp model cakephp-2.0

我们的网站是多语言(针对客户)。但是,我们需要从数据库中的翻译表中提取它们,而不是在PO文件中翻译像“login”这样的单词。这是客户要求。

我研究了哪种方式可以创建一个可以从任何地方访问的功能(视图,控制器等)。我得出结论,最好的方法是制作一个自定义库,因为它说它可以在任何地方使用。

但是我不能在我的模型中使用它,它给了我错误,我不能在那个地方使用ClientnameLibrary::translate('login')。我在模型中添加了行App::uses('ClientnameLibrary', 'Lib');,并在验证部分尝试了这个:

'lastname' => array(
    'notEmpty' => array(
        'rule' => array('notEmpty'),
        'message' => ClientnameLibrary::translate('lastname_validation_error'),
    ),
),

有没有办法在模型中使用我的自定义库?如果没有,在模型中(从数据库中)翻译验证消息的最佳方法是什么?

这是我在控制器/视图中使用的代码:

App::uses('ClientnameLibrary', 'Lib'); //include at top of file
echo ClientnameLibrary::translate('login'); //to get translated word from database

1 个答案:

答案 0 :(得分:0)

翻译更改时保存数据库翻译in a po file。没有缓存,使用新查询读取每个翻译都很愚蠢,因此您必须以任何方式缓存它。那么只需将DB内容转换为po文件并使用CakePHP的标准翻译功能?

检查i18n shell如何将翻译字符串提取到pot(NOT po)文件中。您可以覆盖shell以使用所需的标识符更新数据库。