РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
858 of 1361 menu

Метод setLocale класса Translator

Метод setLocale класса Translator устанавливает локаль, которая будет использоваться при переводе сообщений. Первым параметром передаётся строка с кодом локали, например 'ru', 'en' или 'de'. После вызова этого метода все последующие переводы будут выполняться для указанной локали.

Метод не возвращает результат, а изменяет внутреннее состояние объекта Translator. Если переданная локаль не поддерживается или отсутствует, переводчик будет использовать резервные локали, заданные через setFallbackLocales.

Синтаксис

$translator->setLocale(string $locale);

Пример

Давайте установим локаль 'ru' и переведём сообщение:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Contracts\Translation\TranslatorInterface; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(TranslatorInterface $translator): Response { $translator->setLocale('ru'); $message = $translator->trans('hello'); return new Response($message); } } ?>

Результат выполнения кода при наличии перевода в файле translations/messages.ru.yaml:

"привет"

Пример

Давайте переключим локаль с 'en' на 'de' и сравним результат перевода:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Contracts\Translation\TranslatorInterface; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(TranslatorInterface $translator): Response { $translator->setLocale('en'); $first = $translator->trans('hello'); $translator->setLocale('de'); $second = $translator->trans('hello'); return new Response($first . ' / ' . $second); } } ?>

Результат выполнения кода при наличии переводов в файлах messages.en.yaml и messages.de.yaml:

"hello / hallo"

Пример

Давайте получим текущую локаль после её установки с помощью метода getLocale:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Contracts\Translation\TranslatorInterface; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(TranslatorInterface $translator): Response { $translator->setLocale('abcde'); $locale = $translator->getLocale(); return new Response($locale); } } ?>

Результат выполнения кода:

"abcde"

Смотрите также

  • класс Translator,
    который выполняет перевод сообщений
  • метод getLocale,
    который возвращает текущую локаль
  • метод setFallbackLocales,
    который задаёт резервные локали
  • метод trans,
    который переводит сообщение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить