翻译表单错误消息

时间:2012-11-27 17:32:41

标签: zend-framework2

我一直在使用ZF2,因此我不是全新的。但是,为了不打扰我当前的项目,我设置了一个新的SkeletonApp,它正在工作。我添加了我需要的英语和德语翻译,他们按预期工作。但是,表单错误消息未被翻译为德语或任何其他语言。

我已经阅读了手册,但它仅涵盖了如何基于工厂设置翻译,并且没有关于如何在module.config.php内部进行设置的详细信息。就像在ZF1中一样,ZF2也有一个资源/语言文件夹,其中包含已经翻译的所有表单验证错误消息。我想用那些!这就是我的问题所在。我不知道如何添加配置以使其适用于我的所有表单。

在我的基于SkeletonApp的module.config.php文件中,它已经支持翻译,所以我采用了这个配置并添加了另一个数组,假设这样可行。

'translator' => array( 
    'locale' => 'en_US', 
    'translation_file_patterns' => array( 
        array( 
            'type'        => 'gettext', 
            'base_dir'    => __DIR__ . '/../language', 
            'pattern'     => '%s.mo' 
        ), 
        array( 
            'type'        => 'phparray', 
            'base_dir'    => __DIR__ . '/../resources/languages', 
            'pattern'     => '%s.php' 
        ) 
    ) 
), 

然而这无济于事。在我的控制器中,我有一个eventManager,我在这里设置我的语言环境:

$自> getServiceLocator() - >获得( '翻译') - >的setLocale( 'EN_US'); //更改为德语的de_DE

如上所述,这样做可以将我的文本从英语翻译成德语,依此类推。

我错过了什么让我的表单错误翻译?感谢您就此情况分享的任何指导。

1 个答案:

答案 0 :(得分:1)

两个来源都使用相同的文本域,gettext源具有更高的优先级。这意味着它将从gettext源加载您的语言环境然后停止,因为已加载语言环境+文本域组合。

解决方案:为每个来源使用不同的文本域。