2012-12-09 39 views
6

我在一个项目的早期,我已经创造了一些基本功能,包括自定义的回调验证(验证结束日期开始日期之后)。我从此开始重构以启用翻译。我到目前为止没有问题,直到我开始翻译我的自定义回调验证。如何启用Symfony2的回调验证错误消息的翻译?

我看了一个帖子在网上声称,我可以把我的翻译键值为我的错误消息,Symfony的自动翻译...但是这似乎并没有对我的情况。有人能告诉我怎么做,或者提供文档链接,以便在我的自定义验证中启用翻译?

这里是我与翻译关键词当前验证码包括:

<?php 
namespace CG5\BFG\CoreBundle\Validators; 

use Symfony\Component\Validator\ExecutionContext; 

class EndDateValidator 
{ 
    static public function isEndDateValid($entity, ExecutionContext $context) 
    { 
     if ($entity->getEndDate() <= $entity->getStartDate()) 
      $context->addViolationAtSubPath('endDate', 'validation.invalid.enddate', array(), null); 
    } 
} 

回答

7

我得到了同样的问题。因为Symfony2中看起来在这些消息的“验证”目录,你必须把你的自定义错误消息也是在该目录。例如在app/Resources/translations/validators.en.yml下。

你需要清除缓存为它工作。

+0

是啊,有:d,并已清除缓存多次 '验证: 无效: 结束日期:结束日期必须在之后开始Date' – Chris

+0

的翻译文件是“应用程序/资源/翻译/ validators.en .yml“,我的回答是错误的。你在那个文件中有翻译吗?我在我的实体上使用了一种方法。你尝试过吗? http://symfony.com/doc/2.0/reference/constraints/Callback.html - > – vincecore

+0

我使用我的回调(静态函数)所列的第二个方法,因为我想这个验证第一种方法适用于所有我的具有开始/结束日期的实体。将我的messages.en.yml复制到validators.en.yml后,它开始工作。非常感谢您提供validators.en.yml。我没有看到在文档页面上提到的,所以感谢您知道这一点:D – Chris