zf2使用变量转换验证器消息

时间:2015-02-24 17:49:31

标签: zend-framework2

我有这样的自定义消息:

'options' => array(
    'min' => $min,
    'max' => $date->format('Y-m-d'),
    'inclusive' => true,
    'messages' => array(
        Between::NOT_BETWEEN => "The input is not between '%min%' and '%max%', inclusively",
    ),
),

我将此字符串放在.po文件中并生成.mo,但邮件无法翻译。对于没有变量的所有其他消息,它可以正常工作。

2 个答案:

答案 0 :(得分:0)

如果你给出了更多解释,那就太好了。 通常如果string包含变量,则必须用字符串格式化程序替换它们。

在你的情况下,msgid"输入不在%s和%s&#34之间;

我希望它能解决你的问题。

答案 1 :(得分:0)

您可以阅读in the ZF2 official documentation了解如何执行此操作。

验证程序的翻译文件位于/resources/languages。您只需使用这些资源文件将翻译器附加到Zend\Validator\AbstractValidator,或者在您的情况下使用您自己的文件附加自定义消息。

$validator->setDefaultTranslator($translator);

修改

我误解了你的问题,这里是一个编辑

在绑定变量之前,你不能翻译消息:

$translator = ...translator...

'options' => array(
    'min' => $min,
    'max' => $date->format('Y-m-d'),
    'inclusive' => true,
    'messages' => array(
        Between::NOT_BETWEEN => $translator->translate(
            "The input is not between '%min%' and '%max%', inclusively"
        ),
    ),
),