Как я могу перевести мои собственные исключения внутри моего модуля / модели? как лучше?
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;
}
И я скажу поедить, чтобы рассмотреть все внутри __ ()
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
помощник в этом. Это может не работать все время, хотя.
Кроме этого вам нужно что-то, чтобы прокормить переводчика. Я бы порекомендовал массив переводов, так как с ним было бы легче работать, чем с gettext.
Соответствующие документы или посты в блогах:
Других решений пока нет …