Zend framework2 翻译表单错误消息

Zend framework2 翻译表单错误消息,zend-framework2,Zend Framework2,我从alpha开始使用ZF2,所以我并不完全是新手。然而,为了不干扰我当前的项目,我设置了一个新的SkeletonApp,它正在工作。我已经添加了我需要的英语和德语的翻译,它们正在按预期工作。但是,表单错误消息未翻译为德语或任何其他语言 我已经阅读了手册,但它只介绍了如何基于工厂设置翻译,没有关于如何在module.config.php内部设置的详细信息。与ZF1一样,ZF2也有一个resources/languages文件夹,其中包含所有已翻译的表单验证错误消息。我想用那些!这就是我的问题所在

我从alpha开始使用ZF2,所以我并不完全是新手。然而,为了不干扰我当前的项目,我设置了一个新的SkeletonApp,它正在工作。我已经添加了我需要的英语和德语的翻译,它们正在按预期工作。但是,表单错误消息未翻译为德语或任何其他语言

我已经阅读了手册,但它只介绍了如何基于工厂设置翻译,没有关于如何在module.config.php内部设置的详细信息。与ZF1一样,ZF2也有一个resources/languages文件夹,其中包含所有已翻译的表单验证错误消息。我想用那些!这就是我的问题所在。我不知道如何添加配置以使所有表单都能使用

在我基于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,我在其中设置语言环境,如下所示:

$self->getServiceLocator()->get('translator')->setLocale('en_US');//改为德文为德文

正如我上面提到的,这样做可以将我的文本从英语翻译成德语等等


我缺少什么来翻译我的表单错误?感谢您在这种情况下提供的任何指导。

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


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

谢谢。我以前都没想过。这解决了我的问题=)