我正在使用 Zend Framework 2,但这个问题并不是 ZF2 特定的。
我有一种情况,我可以方便地在我的控制器中而不是在我的视图脚本中翻译字符串。一般我是在视图脚本中翻译,但在少数场景下,不是那么方便。我觉得这绝对不是管制员的工作,但我想听听对此的意见和建议。
为了说明我的意思,这是一个方便的场景:
public function registerAction() {
try {
$service_layer->registerUser(...);
}
catch (\My\Specific\Exception $e) {
$error = $this->translate('Something specific went wrong');
}
catch (\Exception $e) {
$error = $this->translate('Unfortunately, an error occurred!');
}
return array('error' => $error); // Pass error to view
}
我知道如何在控制器中进行翻译,所以不用担心。这里我使用了一个服务层,它可能会抛出异常。我想抓住这些,以便向用户提供有用的错误消息。因为可能会发生几个不同的错误,所以我不能简单地向视图发送一个布尔值来指示是否发生了错误,因为那样我就无法区分发生了哪个错误。
所以,我可以翻译控制器中的字符串并在我的视图脚本中打印出变量。当我使用 poedit 查找翻译字符串时,这将使事情变得容易。或者,我可以只返回未翻译的字符串并$this->translate($error);
在视图脚本中执行。使用这种方法,我在检测控制器中的翻译字符串时遇到了问题。仅仅为了这个目的使用 PHP 的gettext()
方法似乎是一种资源的浪费,只是为了让我可以自动找到字符串。
我想听听你们认为我在这种情况下应该怎么做。谢谢!