在 php 中翻译模型异常 - Zf2 - Zend i18n - Poedit

Translating model exceptions in php - Zf2 - Zend i18n - Poedit

如何在我的 module/model 中翻译我的自定义异常?什么是最好的方法?

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 成为您的 class 的依赖项并使用它。您可以在 model/service 工厂中设置它(或者您提供该对象的任何方式),例如:

$translator = new Translator();
$translator->addTranslationFile('array', 'path/to/your/translation/array.php, '', 'de);

并在您的 class 中使用它:

 if (!$row) {
     throw new \Exception($translator->translate("Could not find row $id"));
 }

您还可以重写异常模板并在其中使用 translator 帮助程序。不过,这可能不会一直有效。

除此之外,您还需要一些东西来提供翻译服务。我推荐翻译数组,因为它比 gettext 更容易使用。

相关文档或博文: