Zend framework2 Zend framework 2翻译图像验证码消息

Zend framework2 Zend framework 2翻译图像验证码消息,zend-framework2,translation,captcha,zend-form-element,Zend Framework2,Translation,Captcha,Zend Form Element,我有这个图像验证码,它工作正常,但我无法翻译“badCaptcha”验证错误 我用PoEdit在我的.po文件中翻译了密钥验证码值错误 这是我的验证码表单元素: $this->form->add(array( 'name' => 'captcha', 'type' => 'Zend\Form\Element\Captcha', 'options' => array( 'captcha'

我有这个图像验证码,它工作正常,但我无法翻译“badCaptcha”验证错误

我用PoEdit在我的.po文件中翻译了密钥验证码值错误

这是我的验证码表单元素:

    $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()检索MVCtrTranslator服务。

ZF2已经翻译了所有表单消息zend_validate.php和captacha_validate.php已经翻译了它们 你可以在这里找到它们:

供应商\zendframework\zendframework\resources\languages\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',
        ),
    ),
),
'translator'=>数组(
'locale'=>'fr\u fr',
“翻译文件模式”=>数组(
排列(
'类型'=>'获取文本',
“基本目录”=>“基本目录”/../language”,
'模式'=>'%s.mo',//'phpArray',
'base_dir'=>'。/module/Application/language/Zend_Validate/',
'pattern'=>“%s-Zend_Validate.php”,
),
),
),
如果要处理多个lang,则必须根据lang选项加载不同的文件。%让我们看一下“语言环境”


检查是否是您的问题:)

这完全是错误的……本主题中的ZF2文档至少不准确

您可以通过以下方式激活此非常基本的功能:

在您的应用程序中(是的,我使用的是Skeleton App)模块配置文件(module.config.php)

之后,您可以在module.php文件中创建Application module onBootstrap事件侦听器,如下所示:

public function onBootstrap(MvcEvent $event)
{
    ...
    ...
    \Zend\Validator\AbstractValidator::setDefaultTranslator($event->getApplication()->getServiceManager()->get('MvcTranslator'));
    ...
    ...
}
这样我得到的验证码值是错误的

不重命名nescecary:

'pattern' => '%2.2s/Zend_Validate.php'

嗨,我知道这个文件,但我想知道是否有可能有一个.po文件的方式做翻译。谢谢你的建议。好吧,这很奇怪…在我的框架应用程序模块中,复制了西班牙语验证翻译文件,将其重命名为es.php,从英文文件中添加了缺少的captcha翻译密钥,然后将其翻译为西班牙语,但captcha验证错误消息保留了英文!。正在加载es.php文件,因为ZF2 translator没有抱怨找不到该文件。是的,已经尝试过,在我的翻译文件模式键中,我有一个数组,带有:“type'=>“phparray”,“base'=>dir.”//language/validation/,'pattern'=>'%s-Zend_Validate.php',但我仍然无法翻译“Captcha值错误”消息!谢谢我为此花了4个小时。
'pattern' => '%2.2s/Zend_Validate.php'