在 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 更容易使用。
相关文档或博文:
如何在我的 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 更容易使用。
相关文档或博文: