symfony4 Переводчик (Translator) -- Перевод. Перевод значения с параметром
Primary tabs
Простейший перевод можно организовать в Симфони с помощью компонента Переводчик.
- Устанавливаем:
composer require symfony/translation
- Конфигурируем:
# config/packages/translation.yaml framework: default_locale: 'en' translator: fallbacks: ['en']
- И делаем словарик (мне кажется, проще всего в формате yaml):
// translations/messages.ru.yaml // ключ: значение Request to : Запрос к Search completed: Поиск завершён
Пишем отдельние файлы для каждого языка
- Всё) Можно переводить так:
// объявляем использование <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'); // ... }
Это простой перевод.
- Перевод с параметром:
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: Поиск завершён
Источник
- Log in to post comments
- 1971 reads