Symfony2验证消息的翻译问题

Jay*_*Jay 5 php validation internationalization symfony

我在Symfony中翻译验证器消息时遇到了一个常见问题,所有建议的解决方案对我没有帮助.这是我的约束:

//  src/AppBundle/Entity/Friend.php   
/**
         * @var string
         *
         * @Assert\NotBlank(message = "test")
         *
         * @ORM\Column(name="name", type="string", length=255)
         */
        private $name;
Run Code Online (Sandbox Code Playgroud)

并提供翻译文件:

// src/AppBundle/Resources/translations/validators.en.yml
test: my message
Run Code Online (Sandbox Code Playgroud)

我也在app目录中添加了带翻译的同一文件.实际上,它不起作用.我错过了什么?

aco*_*ell 14

如果您按照此步骤操作,它应该工作:

首先,打开翻译系统:

# app/config/config.yml
framework:
    translator: { fallback: en }
Run Code Online (Sandbox Code Playgroud)

像你一样创建约束:

// src/AppBundle/Entity/Friend.php
use Symfony\Component\Validator\Constraints as Assert;// Don't forget this part.

class Friend
{
    /**
     * @var string
     * @Assert\NotBlank(message = "test")
     * @ORM\Column(name="name", type="string", length=255)
     */
    public $name;
}
Run Code Online (Sandbox Code Playgroud)

在约束消息的验证器目录下创建转换文件,通常在包的Res​​ources/translations /目录中创建.

# validators.en.yml
test: my message
Run Code Online (Sandbox Code Playgroud)

重要事项最后,在添加新翻译时清除缓存(即使您处于开发环境中也要这样做).

$ php app/console cache:clear
Run Code Online (Sandbox Code Playgroud)

对我来说这个解决方案有效

  • 非常感谢,@acontell.我通常不会使用**清除缓存**,因为在**dev**模式下工作时不需要.你节省了我的时间 (2认同)