Skip to content

How to Translate Validation Constraint Messages

Warning: You are browsing the documentation for Symfony 3.x, which is no longer maintained.

Read the updated version of this page for Symfony 7.1 (the current stable version).

If you're using validation constraints with the Form component, you can translate the error messages by creating a translation resource for the validators domain.

To start, suppose you've created a plain-old-PHP object that you need to use somewhere in your application:

1
2
3
4
5
6
7
// src/AppBundle/Entity/Author.php
namespace AppBundle\Entity;

class Author
{
    public $name;
}

Add constraints through any of the supported methods. Set the message option to the translation source text. For example, to guarantee that the $name property is not empty, add the following:

1
2
3
4
5
6
7
8
9
10
// src/AppBundle/Entity/Author.php
use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    /**
     * @Assert\NotBlank(message="author.name.not_blank")
     */
    public $name;
}

Now, create a validators catalog file in the app/Resources/translations directory:

1
2
3
4
5
6
7
8
9
10
11
12
<!-- app/Resources/translations/validators.en.xlf -->
<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
    <file source-language="en" datatype="plaintext" original="file.ext">
        <body>
            <trans-unit id="author.name.not_blank">
                <source>author.name.not_blank</source>
                <target>Please enter an author name.</target>
            </trans-unit>
        </body>
    </file>
</xliff>

You may need to clear your cache (even in the dev environment) after creating this file for the first time.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.
TOC
    Version