在Zf2-Zend i18n-Poedit中转换模型异常


Translating model exceptions in Zf2 - Zend i18n - Poedit

如何在模块/模型中转换自定义异常?最好的方法是什么?

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/