Zend Framework 2 – Перевести стандартную проверку формы и сообщения об ошибках

Я пишу полное немецкое заявление и поэтому нужно в принципе поставить все на немецкий язык.

Мой вопрос: Каков наилучший и простой способ, например, установить валидацию формы на немецкий?

Я нашел эту страницу, но не мог понять, как заставить этот код работать:

Zend_Validate_Abstract::setDefaultTranslator($translate); 

Может ли кто-нибудь дать мне совет, как это использовать?

Редактировать:

Благодаря @Gordon я включил следующее в мое приложение / Module.php:

 use Zend\I18n\Translator\Translator; use Zend\Validator\AbstractValidator; class Module { public function onBootstrap(MvcEvent $e) { ... $translator = new Translator(); $translator->addTranslationFile( 'phpArray', 'resources/languages/de.php', 'default', 'de_DE' ); AbstractValidator::setDefaultTranslator($translator); ... } 

Изменить 2: Хорошо, это странно. Когда я устанавливаю de_DE я получаю сообщение о том, что файл de.php не может быть открыт – это верно, потому что «de» – это папка, содержащая два других файла PHP.

Не удалось открыть файловые ресурсы / языки / de.php для чтения

Изменение пути к папке или любому существующему файлу внутри него не помогает …

Когда я меняю «de_DE» на «de» или «de_de», ничего не происходит. Ошибок и ошибок проверки на английском языке нет. Любые подсказки?

    для меня это работает с

     public function onBootstrap(MvcEvent $e) { $translator=$e->getApplication()->getServiceManager()->get('translator'); $translator->addTranslationFile( 'phpArray', './vendor/zendframework/zendframework/resources/languages/it/Zend_Validate.php' ); AbstractValidator::setDefaultTranslator($translator); // \Zend\Debug\Debug::dump($application); } 

    './vendor/zendframework/zendframework/resources/languages/langfolderyouwant/Zend_Validate.php'

    Наконец я нашел с помощью @ Gordon ответ!

    В приложение Application / Module.php вложено следующее:

     use Zend\I18n\Translator\Translator; use Zend\Validator\AbstractValidator; class Module { public function onBootstrap(MvcEvent $e) { ... $translator = new Translator(); $translator->addTranslationFile( 'phpArray', 'vendor/zendframework/zendframework/resources/languages/Zend_Validate.php', 'default', 'de_DE' ); AbstractValidator::setDefaultTranslator($translator); ... } 

    Затем вам нужно включить php5-intl. Перейдите в php.ini и включите extension=php_intl.dll .

    Наконец, мне нужно было добавить полный путь (начиная с поставщика) в funciton, предоставленный Gordon и документами.

    В более поздних версиях Zend FW должны быть переводчики с определенными интерфейсами.

     use Zend\I18n\Translator\Translator; use Zend\Validator\AbstractValidator; class Module { public function onBootstrap(MvcEvent $e) { //... $translator = new Translator(); $translator->addTranslationFile( 'phpArray', 'vendor/zendframework/zendframework/resources/languages/Zend_Validate.php', 'default', 'de_DE' ); AbstractValidator::setDefaultTranslator($translator); //... } } 

    станет:

     use Zend\I18n\Translator\Translator; use Zend\Validator\AbstractValidator; class Module { public function onBootstrap(MvcEvent $e) { //... $translator = new Translator(); $translator->addTranslationFile( 'phpArray', 'vendor/zendframework/zendframework/resources/languages/Zend_Validate.php', 'default', 'de_DE' ); AbstractValidator::setDefaultTranslator( new \Zend\Mvc\I18n\Translator($translator) ); //... } } 

    Обратите внимание на new \Zend\Mvc\I18n\Translator($translator)

    Если вы не хотите копировать код в onBootstrap, и вам нужен всего один язык, вы можете использовать файл конфигурации:

     'translator' => array ( 'locale' => 'ru', 'translation_files' => [ [ 'type' => 'phparray', 'filename' => 'path/to/ru/directory/Zend_Validate.php' ] ], ), 

    Вставьте его в module.config.php

    Для новой версии zf2 (2.5.0) вам необходимо изменить путь к Zend_Validate.php на ./vendor/zendframework/zend-i18n-resources/languages/de/Zend_Validate.php .

     $translator->addTranslationFile( 'phpArray', './vendor/zendframework/zend-i18n-resources/languages/de/Zend_Validate.php', 'default', 'de_DE' );