перевод с использованием глобальной функции в ОО-среде (Zend Framework) - PullRequest
1 голос
/ 08 октября 2011

Я работаю над созданием проекта на Zend Framework.Я использую Zend_Translate для своих переводов, но я хочу, чтобы количество дополнительного кода в передней части моего приложения (представления) было минимально возможным.Перевод текста должен выглядеть следующим образом:

echo __("Text to translate");

Использование помощника вида не делает этого, потому что тогда я получаю:

echo $this->__("Text to translate");

Это будет означать, что я должен объявитьгде-то глобальная функция, которая вызывает Zend_Translate для выполнения остальной магии.Поскольку я хочу, чтобы проект оставался максимально чистым, я хотел бы предложить несколько советов о том, где разместить эту функцию.

Я рассмотрел вопрос о включении файла с моей глобальной функцией в _initLocale () в начальной загрузке.

По сути, мой вопрос таков: я сейчас нарушаю все священные принципы MVC или это правильный путь?

1 Ответ

1 голос
/ 08 октября 2011

На самом деле это не простой вопрос. Конечно, вы нарушаете некоторые принципы ООП, потому что вы в основном делаете акцент на своих объектах сотнями маленьких целых, где должен быть только один. Вы должны ввести объект перевода в свои контроллеры и представления один раз, а затем вызвать $this->__(). Это также легко сделать, создав промежуточный слой между Zend_Controller_Action и вашими собственными контроллерами. НО ... перевод - это очень специфический случай, и я не вижу большого потенциального вреда от вашего решения. Метод перевода вряд ли изменит свою логику, и если вам нужно переименовать его, поиск и замена двух подчеркиваний, за которыми следует скобка, скорее всего, не приведут ничего, кроме переведенных строк ... опять же, использование «наиболее вероятно» запах уже.

Резюме : Кажется, это более или менее нормально, но я все равно не буду этого делать, особенно если это программное обеспечение определенного значения с ожидаемым сроком службы в несколько лет.

...