如何在模块/模型中转换自定义异常?最好的方法是什么?
1) 直接进入MyModelTableGetaway.php。示例:
public function getAlbum($id)
{
$id = (int) $id;
$rowset = $this->tableGateway->select(array('id' => $id));
$row = $rowset->current();
if (!$row) {
throw new 'Exception(__("Could not find row $id"));
}
return $row;
}
我会告诉poedit考虑内部的所有内容
2) 创建一个文件夹MyModel/languages/language_than_i_want,我可以在这个文件夹中放入一个文件.php,其中包含一组异常
什么更好更快?还有其他方法吗?
非常感谢
我会将Zend'I18n'Translator'Translator
作为类的依赖项并使用它。您可以在您的模型/服务工厂中设置(或以任何方式提供该对象),例如:
$translator = new Translator();
$translator->addTranslationFile('array', 'path/to/your/translation/array.php, '', 'de);
在你的课堂上使用它:
if (!$row) {
throw new 'Exception($translator->translate("Could not find row $id"));
}
您也可以覆盖异常模板并在其中使用translator
助手。不过,这可能并不总是有效的。
除此之外,你还需要一些东西来提供翻译服务。我建议使用translation数组,因为它比gettext更容易使用。
相关文档或博客文章:
- http://framework.zend.com/manual/current/en/modules/zend.i18n.translating.html
- http://framework.zend.com/manual/current/en/modules/zend.i18n.view.helper.translate.html
- https://samsonasik.wordpress.com/2012/07/18/zend-framework-2-zendi18ntranslatortranslator-translate-your-web/