Метод getLocale класса Request
Метод getLocale класса Request возвращает текущую локаль, которая установлена для данного запроса. Локаль представляет собой строку, например, 'en', 'ru' или 'fr_FR', и используется для определения языка отображения контента и форматирования данных. Метод не принимает параметров и возвращает строку. Если локаль не была установлена явно, Symfony возвращает локаль по умолчанию, заданную в конфигурации фреймворка.
Синтаксис
public function getLocale(): string
Пример
Давайте получим локаль текущего запроса в контроллере и вернём её в ответе:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/locale', name: 'article_locale')]
public function locale(Request $request): Response
{
$locale = $request->getLocale();
return new Response($locale);
}
}
?>
Результат выполнения кода для локали по умолчанию 'en':
"en"
Пример
Давайте установим локаль вручную с помощью метода setLocale, а затем получим её через getLocale:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/set-locale', name: 'article_set_locale')]
public function setLocale(Request $request): Response
{
$request->setLocale('ru');
$locale = $request->getLocale();
return new Response($locale);
}
}
?>
Результат выполнения кода:
"ru"
Пример
Давайте проверим локаль и вернём разный контент в зависимости от языка:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/greeting', name: 'article_greeting')]
public function greeting(Request $request): Response
{
$locale = $request->getLocale();
if ($locale === 'ru') {
$message = 'Привет';
} else {
$message = 'Hello';
}
return new Response($message);
}
}
?>
Результат выполнения кода для локали 'ru':
"Привет"
Смотрите также
-
метод
setLocale,
который устанавливает локаль для запроса -
класс
Request,
который представляет HTTP-запрос -
метод
get,
который возвращает параметр из запроса -
метод
getClientIp,
который возвращает IP-адрес клиента