Метод getLocale
Метод getLocale класса Translator возвращает
текущую локаль, установленную в переводчике. Локаль - это
языковой код (например, 'ru', 'en', 'de'),
который определяет, из какого файла переводов будут браться
сообщения. Метод не принимает параметров и возвращает строку
с кодом текущей локали.
Синтаксис
public function getLocale(): string
Пример
Давайте получим текущую локаль переводчика по умолчанию:
<?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
{
$res = $translator->getLocale();
return new Response($res);
}
}
?>
Результат выполнения кода:
"en"
Пример
Давайте сначала изменим локаль методом setLocale,
а затем прочитаем её через 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/locale', name: 'article_locale')]
public function locale(TranslatorInterface $translator): Response
{
$translator->setLocale('ru');
$res = $translator->getLocale();
return new Response($res);
}
}
?>
Результат выполнения кода:
"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/hello', name: 'article_hello')]
public function hello(TranslatorInterface $translator): Response
{
$translator->setLocale('de');
$locale = $translator->getLocale();
$message = $translator->trans('hello');
$res = $locale . ': ' . $message;
return new Response($res);
}
}
?>
Результат выполнения кода:
"de: hallo"
Смотрите также
-
класс
Translator,
который управляет переводами в приложении -
метод
setLocale,
который устанавливает текущую локаль -
метод
trans,
который переводит сообщение по ключу -
метод
getFallbackLocales,
который возвращает список запасных локалей