Метод setLocale класса LocaleSwitcher
Метод setLocale класса LocaleSwitcher
временно переключает локаль приложения на указанное
значение. Первым параметром передаётся строка с кодом
локали, например 'fr' или 'de'. Метод
возвращает объект LocaleSwitcher, что позволяет
выстраивать цепочку вызовов. Переключение действует до
вызова метода reset или до завершения работы
сервиса.
Синтаксис
public function setLocale(string $locale): self
Пример
Давайте переключим локаль на французскую и получим перевод строки:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentTranslationLocaleSwitcher;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(LocaleSwitcher $switcher): Response
{
$switcher->setLocale('fr');
return new Response('locale switched');
}
}
?>
Результат выполнения кода:
"locale switched"
Пример
Давайте переключим локаль и получим перевод через транслятор:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentTranslationLocaleSwitcher;
use SymfonyContractsTranslationTranslatorInterface;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article/trans', name: 'article_trans')]
public function trans(
LocaleSwitcher $switcher,
TranslatorInterface $translator
): Response {
$switcher->setLocale('de');
return new Response($translator->trans('hello'));
}
}
?>
Результат выполнения кода:
"hallo"
Пример
Давайте переключим локаль и вернём её к исходному
значению через метод reset:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentTranslationLocaleSwitcher;
use SymfonyContractsTranslationTranslatorInterface;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article/reset', name: 'article_reset')]
public function reset(
LocaleSwitcher $switcher,
TranslatorInterface $translator
): Response {
$switcher->setLocale('fr');
$translated = $translator->trans('hello');
$switcher->reset();
$original = $translator->trans('hello');
return new Response($translated . ' / ' . $original);
}
}
?>
Результат выполнения кода:
"bonjour / hello"
Смотрите также
-
класс
LocaleSwitcher,
который временно переключает локаль приложения -
метод
getLocale,
который возвращает текущую локаль -
метод
reset,
который сбрасывает локаль к исходному значению -
метод
setLocale,
который задаёт локаль транслятора