How to Translate Validation Constraint Messages

The validation constraints used in forms can translate their error messages by creating a translation resource for the validators translation domain.

フォームで使用される検証制約は、validatorstranslation ドメインの翻訳リソースを作成することにより、エラー メッセージを翻訳できます。

First of all, install the Symfony translation component (if it's not already installed in your application) running the following command:

最初に、次のコマンドを実行して Symfony 翻訳コンポーネントをインストールします (アプリケーションにまだインストールされていない場合)。
1
$ composer require symfony/translation

Suppose you've created a plain-old-PHP object that you need to use somewhere in your application:

アプリケーションのどこかで使用する必要がある、昔ながらの PHP オブジェクトを作成したとします。
1
2
3
4
5
6
7
// src/Entity/Author.php
namespace App\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:

サポートされている方法のいずれかを使用して制約を追加します。メッセージ オプションを翻訳元テキストに設定します。たとえば、$nameproperty が空でないことを保証するには、次を追加します。
  • Attributes
    属性
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
// src/Entity/Author.php
namespace App\Entity;

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 translations/ directory:

次に、translations/ ディレクトリにバリデータ カタログ ファイルを作成します。
  • XML
    XML
  • YAML
    YAML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
11
12
<!-- translations/validators/validators.en.xlf -->
<?xml version="1.0" encoding="UTF-8" ?>
<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.

このファイルを初めて作成した後、(開発環境であっても) キャッシュをクリアする必要がある場合があります。