【问题标题】:Translate Form Error Messages翻译表单错误信息
【发布时间】:2012-11-15 09:41:40
【问题描述】:

我从 alpha 开始就一直在使用 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,我在其中设置我的语言环境,如下所示:

$self->getServiceLocator()->get('translator')->setLocale('en_US'); // 德语改成 de_DE

如上所述,这样做确实会将我的文本从英语翻译成德语等等。

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

【问题讨论】:

    标签: zend-framework2


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。以前我什至没有想到这一点。这解决了我的问题 =)
    猜你喜欢
    • 2020-02-10
    • 2012-01-19
    • 1970-01-01
    • 2016-11-13
    • 2010-11-29
    • 1970-01-01
    • 2021-02-10
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多