Метод setLocale
Метод setLocale класса Request устанавливает локаль (язык и регион) для текущего HTTP-запроса. Первым параметром передаётся строка с кодом локали, например 'ru', 'en' или 'fr_FR'. Локаль влияет на форматирование дат, чисел, валют и переводы в приложении.
Метод возвращает объект Request, что позволяет использовать цепочку вызовов. Значение локали сохраняется внутри объекта запроса и доступно через метод getLocale.
Синтаксис
$request->setLocale(string $locale): static
Пример
Давайте установим локаль 'ru' и выведем её значение:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$request->setLocale('ru');
return new Response($request->getLocale());
}
}
?>
Результат выполнения кода:
"ru"
Пример
Давайте установим локаль 'fr_FR' и используем её для перевода:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
use SymfonyContractsTranslationTranslatorInterface;
class ArticleController extends AbstractController
{
#[Route('/article/translate', name: 'article_translate')]
public function translate(Request $request, TranslatorInterface $translator): Response
{
$request->setLocale('fr_FR');
$message = $translator->trans('hello');
return new Response($message);
}
}
?>
Результат выполнения кода:
"bonjour"
Пример
Давайте установим локаль на основе параметра из URL:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article/{locale}', name: 'article_locale')]
public function locale(string $locale, Request $request): Response
{
$request->setLocale($locale);
return new Response($request->getLocale());
}
}
?>
Результат выполнения кода для адреса /article/en:
"en"
Смотрите также
-
метод
getLocale,
который возвращает текущую локаль запроса -
класс
Request,
который представляет HTTP-запрос в Symfony -
метод
getMethod,
который возвращает HTTP-метод запроса -
метод
getPathInfo,
который возвращает путь запроса без query-строки