Как переводить сообщения ограничений валидации

Дата обновления перевода 2023-01-09

Как переводить сообщения ограничений валидации

Если вы используете ограничения валидации с компонентном формы (form), тогда перевод сообщений об ошибках очень прост: создайте ресурс переводя для
домена переводов validators.

Во-первых, установите компонент Symfony Translation (если он еще не установлен в вашем приложении), запустив следующую команду:

1
$ composer require symfony/translation

Представьте, что вы создали старый добрый PHP-объект, который вам нужно использовать где-либо в вашем приложении:

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

class Author
{
    public $name;
}

Добавьте ограничения через любой из поддержваемых методов. Установите опцию сообщений в тексте источника перевода.Например, чтобы гарантировать, что свойство $name не пусто, добавьте следующее:

  • Attributes
  • YAML
  • XML
  • 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;
}

Теперь, создайте файл каталога valdiators в каталоге app/Resources/translations:

  • XML
  • YAML
  • 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>Пожалуйста, введите имя автора.</target>
            </trans-unit>
        </body>
    </file>
</xliff>

Вам может понадобиться очистить ваш кеш (даже в окружени разработки) после создания этого файла в первый раз.