Zend框架2翻译图像验证码消息

时间:2014-05-17 07:09:11

标签: zend-framework2 translation captcha zend-form-element

我有这张图片验证码正常工作,但我无法获得" 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服务。

3 个答案:

答案 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'