Интернационализация — Перевод исключений модели в 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;
}

И я скажу поедить, чтобы рассмотреть все внутри __ ()

2) Создать папку MyModel / languages ​​/language_than_i_want и в эту папку я могу положить файл .php с массивом исключений

Что лучше и быстрее? Есть какие-то другие методы?

большое спасибо

0

Решение

Я бы пошел с созданием 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.

Соответствующие документы или посты в блогах:

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]