Zend Framework: переводимый контент внутри модели - PullRequest
3 голосов
/ 02 февраля 2011

В моем приложении есть модель, которая заботится о создании исходной структуры базы данных (своего рода установщик). Я недавно добавил переводимый контент (использует gettext). Я хотел бы сделать исходный язык контента зависимым.

Как лучше всего использовать переводимый контент внутри модели? Есть ли способ использовать функцию view->translate() внутри модели или мне нужно передать уже переведенные строки извне, например, в качестве параметра?

1 Ответ

15 голосов
/ 02 февраля 2011

Предполагая, что вы загрузили Zend_Locale и Zend_Translate, и они сохранены в Zend_Registry (по умолчанию они находятся в реестре под ключами "Zend_Locale" и "Zend_Translate" соответственно), вы можете получить доступ к методу translate() в своих моделях следующим образом:

    /*@var $translator Zend_Translate */
    $translator = Zend_Registry::get('Zend_Translate');

    /*@var $adapter Zend_Translate_Adapter */
    $adapter = $translator->getAdapter();

    var_dump($adapter->translate('Text to be translated'));

Перевод в приведенном выше примере будет выполняться в соответствии с вашим Zend_Locale.

А как лучше всего переводить данные в ваших моделях? Я не уверен. Если вы хотите сделать перевод «невидимым» или «прозрачным» для ваших контроллеров или даже моделей, вы можете перегружать магические методы __get и __set Zend_DB_Table_Row и вставлять туда метод translate ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...