symfony4 Переводчик (Translator) -- Перевод. Перевод значения с параметром

Простейший перевод можно организовать в Симфони с помощью компонента Переводчик.

  1. Устанавливаем:

    composer require symfony/translation

  2. Конфигурируем:
    # config/packages/translation.yaml
    framework:
        default_locale: 'en'
        translator:
            fallbacks: ['en']
  3. И делаем словарик (мне кажется, проще всего в формате yaml):
    // translations/messages.ru.yaml
    // ключ: значение
    Request to : Запрос к 
    Search completed: Поиск завершён

    Пишем отдельние файлы для каждого языка

  4. Всё) Можно переводить так:
    // объявляем использование <em>TranslatorInterface</em> для автозагрузки сервиса переводчика
    use Symfony\Component\Translation\TranslatorInterface;
    
    public function index(TranslatorInterface $translator)
    {
        // так можно получить язык, который установлен по умолчанию в нашем конфигурационном файле (см. п.2)
        $translator->getLocale();
        // так можно установить любой другой язык, для которого у вас существует словарик. если не сетить язык, будет использоваться язык по умолчанию.
        $translator->setLocale('ru');
        // после сеттинга языка переводить можно так
        echo $translated = $translator->trans('Search completed');
        // или если нужно точечно перевести на какой-то язык, то можно так
        echo $translated = $translator->trans('Search completed', [], null, 'fr');
        // ...
    }

    Это простой перевод.

  5. Перевод с параметром:
    use Symfony\Component\Translation\TranslatorInterface;
    
    public function index(TranslatorInterface $translator)
    {
        $translator->setLocale('ru');
        // параметр оборачиваем в %% и значение передаём в массиве вторым аргументом
        echo $translated = $translator->trans('Request to %serviceName%', ['%serviceName%' => $serviceName]);
        // ...
    }

    Также возможное наличие параметра нужно указать в словарике:

    // translations/messages.ru.yaml
    // ключ: значение
    Request to %serviceName%: Запрос к %serviceName%
    Search completed: Поиск завершён

Источник