我有这张图片验证码正常工作,但我无法获得" badCaptcha"验证错误已翻译。
我使用PoEdit在我的.po文件中翻译了 Captcha值错误。
这是我的CAPTCHA表单元素:
$this->form->add(array(
'name' => 'captcha',
'type' => 'Zend\Form\Element\Captcha',
'options' => array(
'captcha' => new \Zend\Captcha\Image(array(
'imgDir' => './public/assets/images/captcha',
'ImgUrl' => '/assets/images/captcha',
'width' => 330,
'height' => 90,
'wordlen' => 3,
'dotNoiseLevel' => 30,
'lineNoiseLevel' => 3,
'font' => './data/captcha/font/monofont.ttf',
'fontSize' => 52,
'expiration' => 600,
)),
'messages' => array(
'badCaptcha' => $this->getTranslatorHelper()->translate('Captcha value is wrong', 'csnuser'),
),
),
));
PS:$ this-> getTranslatorHelper()检索MvcTranslator服务。
答案 0 :(得分:1)
这一切都错了......本主题中的ZF2文档至少是无效的。
您可以通过以下方式激活此基本功能:
在你的应用程序中(是的,我正在使用Skeleton App)模块配置文件(module.config.php)
...
...
'translator' => array(
'locale' => 'xx_XX', //Or whatever you want
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
// Add this new file pattern
array(
'type' => 'phparray',
//You get this translated files from vendor/zendframework/zendframework/resources/languages
'base_dir' => __DIR__ . '/../language/validation',
//You may rename it to xx_XX.php for the pattern to match!
'pattern' => '%s.php',
),
...
...
...
之后,您可以在Module.php文件中创建应用程序模块onBootstrap事件侦听器,如下所示:
public function onBootstrap(MvcEvent $event)
{
...
...
\Zend\Validator\AbstractValidator::setDefaultTranslator($event->getApplication()->getServiceManager()->get('MvcTranslator'));
...
...
}
这样我 Captcha值错误翻译了!
答案 1 :(得分:0)
ZF2已经翻译了所有表单消息zend_validate.php和captacha_validate.php已经翻译过来了 你可以在这里找到它们:
供应商\ zendframework \ zendframework \资源\语言\ FR
将此文件复制到您的应用程序langage文件夹中,并将其调用到您的配置
中'translator' => array(
'locale' => 'fr_FR',
'translation_files' => array(
array(
'type' => 'phpArray',
'filename' => 'resources/languages/fr.php'
),
),
),
例如,你可以同时拥有php翻译文件和po文件。
编辑:
'translator' => array(
'locale' => 'fr_FR',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo', //<-%s is important
),
array(
'type' => 'phpArray',
'base_dir' => './module/Application/language/Zend_Validate/',
'pattern' => '%s-Zend_Validate.php',
),
),
),
当您有多个lang处理时,您必须根据lang选择加载不同的文件。 %s采取&#39; locale&#39;。
检查它是否是您的问题:)
答案 2 :(得分:0)
没有重命名nescecary:
'pattern' => '%2.2s/Zend_Validate.php'