我花了一整夜的时间试图弄清楚为什么这段代码不起作用
$inputFilter = new InputFilter();
$factory = new InputFactory();
$translator = new \Zend\I18n\Translator\Translator();
//Copy of file found in resources/languages/es/Zend_Validate.php
$translator->addTranslationFile('phparray', './module/Product/language/zend_validate.php');
$inputFilter->add(
$factory->createInput(
array(
'name' => 'idpro',
'required' => true,
'filters' => array(
array('name' => 'Int'),
),
)
)
);
$inputFilter->add(
$factory->createInput(
array(
'name' => 'nompro',
'validators' => array(
array(
'name' => 'EmailAddress',
'options' => array(
'translator' => $translator
)
),
),
)
)
);
我已经安装了php5-intl并在php.ini
中启用了它但它不起作用我得到相同的消息值是必需的,不能为空但它应该是翻译的...
非常感谢!
答案 0 :(得分:3)
以下是我为使表单错误正确翻译所做的工作:
module.config.php
<?php
return array(
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory'
)
),
'translator' => array(
'locale' => 'en',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
'text_domain' => 'admin'
),
array(
'type' => 'phparray',
'base_dir' => __DIR__ . '/../resources/languages',
'pattern' => '/%s/Zend_Validate.php',
'text_domain' => 'default'
)
)
)
);
答案 1 :(得分:0)
您无法通过这种方式设置翻译器。
请改用此静态方法:
\Zend\Validator\AbstractValidator::setDefaultTranslator($translator, 'default');
希望这有帮助。