我们的网站是多语言(针对客户)。但是,我们需要从数据库中的翻译表中提取它们,而不是在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
答案 0 :(得分:0)
翻译更改时保存数据库翻译in a po file。没有缓存,使用新查询读取每个翻译都很愚蠢,因此您必须以任何方式缓存它。那么只需将DB内容转换为po文件并使用CakePHP的标准翻译功能?
检查i18n shell如何将翻译字符串提取到pot(NOT po)文件中。您可以覆盖shell以使用所需的标识符更新数据库。