Перевод сообщений об ошибках формы

Я использую ZF2 с альфы, так что я не совсем новичок. Однако, чтобы не мешать моему текущему проекту, я установил новый SkeletonApp, и он работает. Я добавил необходимые мне переводы для английского и немецкого языков, и они работают должным образом. Однако сообщения об ошибках формы не переводятся на немецкий или любой другой язык.

Я прочитал руководство, но в нем рассказывается только о том, как настроить переводы на основе фабрик, и в нем нет подробностей о том, как настроить внутри module.config.php. Как и в ZF1, в ZF2 также есть папка ресурсов/языков, которая содержит все уже переведенные сообщения об ошибках проверки формы. Я хотел бы использовать их! И в этом моя проблема. Я понятия не имею, как добавить конфигурацию, чтобы это работало со всеми моими формами.

В моем файле module.config.php, основанном на SkeletonApp, уже была поддержка переводов, поэтому я взял эту конфигурацию и добавил еще один массив, предполагая, что это сработает.

'translator' => array( 
    'locale' => 'en_US', 
    'translation_file_patterns' => array( 
        array( 
            'type'        => 'gettext', 
            'base_dir'    => __DIR__ . '/../language', 
            'pattern'     => '%s.mo' 
        ), 
        array( 
            'type'        => 'phparray', 
            'base_dir'    => __DIR__ . '/../resources/languages', 
            'pattern'     => '%s.php' 
        ) 
    ) 
), 

Однако безрезультатно это не сработало. В моем контроллере у меня есть eventManager, в котором я устанавливаю свою локаль следующим образом:

$self->getServiceLocator()->get('translator')->setLocale('en_US'); // изменить на de_DE для немецкого языка

Выполнение этого, как я упоминал выше, переводит мой текст с английского на немецкий и так далее.

Чего мне не хватает, чтобы перевести ошибки формы? Спасибо за любые рекомендации, которыми вы можете поделиться в этой ситуации.


person Diemuzi    schedule 27.11.2012    source источник


Ответы (1)


Оба источника используют один и тот же текстовый домен, причем источник gettext имеет более высокий приоритет. Это означает, что он загрузит вашу локаль из источника gettext, а затем остановится, поскольку комбинация локали + текстовый домен уже загружена.

Решение. Используйте разные текстовые домены для каждого источника.

person DASPRiD    schedule 27.11.2012
comment
Спасибо. Я даже не думал об этом раньше. Это решает мою проблему =) - person Diemuzi; 28.11.2012