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

Метод runWithLocale

Метод runWithLocale класса LocaleSwitcher позволяет выполнить переданную функцию в контексте заданной локали. Первым параметром передаётся локаль (например, 'en' или 'ru'), вторым - замыкание, которое нужно выполнить. После завершения выполнения замыкания исходная локаль автоматически восстанавливается, что делает метод удобным для временного переключения языка без побочных эффектов.

Синтаксис

$res = $localeSwitcher->runWithLocale(string $locale, callable $callback);

Пример

Давайте выполним перевод в локали 'en', а затем вернёмся к исходной локали:

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

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

en / ru

Пример

Давайте переведём сообщение внутри замыкания и получим результат:

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

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

"hello"

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

  • класс LocaleSwitcher,
    который управляет текущей локалью приложения
  • метод setLocale,
    который устанавливает текущую локаль
  • метод getLocale,
    который возвращает текущую локаль
  • метод reset,
    который сбрасывает локаль к значению по умолчанию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить