Метод getLocale класса LocaleSwitcher
Метод getLocale класса LocaleSwitcher возвращает текущую локаль,
установленную в переключателе локали. Класс LocaleSwitcher предназначен
для временного изменения локали приложения, например, для отправки письма
на языке пользователя или для выполнения фоновой задачи с определённой локалью.
Метод не принимает параметров и возвращает строку с кодом локали (например,
'en', 'ru', 'de'). Если локаль не была установлена явно,
метод возвращает локаль по умолчанию, заданную в конфигурации фреймворка.
Синтаксис
public function getLocale(): string
Пример
Давайте создадим экземпляр LocaleSwitcher и получим текущую локаль:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentTranslationLocaleSwitcher;
use SymfonyComponentRoutingAttributeRoute;
class LocaleController extends AbstractController
{
#[Route('/locale', name: 'locale_show')]
public function show(LocaleSwitcher $switcher): Response
{
$res = $switcher->getLocale();
return new Response($res);
}
}
?>
Результат выполнения кода для локали по умолчанию 'ru':
ru
Пример
Давайте сначала установим новую локаль через setLocale,
а затем получим её через getLocale:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentTranslationLocaleSwitcher;
use SymfonyComponentRoutingAttributeRoute;
class LocaleController extends AbstractController
{
#[Route('/locale/change', name: 'locale_change')]
public function change(LocaleSwitcher $switcher): Response
{
$switcher->setLocale('en');
$res = $switcher->getLocale();
return new Response($res);
}
}
?>
Результат выполнения кода:
en
Пример
Давайте используем getLocale внутри метода runWithLocale,
чтобы проверить, какая локаль активна в момент выполнения замыкания:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentTranslationLocaleSwitcher;
use SymfonyComponentRoutingAttributeRoute;
class LocaleController extends AbstractController
{
#[Route('/locale/run', name: 'locale_run')]
public function run(LocaleSwitcher $switcher): Response
{
$res = $switcher->runWithLocale('de', function () use ($switcher) {
return $switcher->getLocale();
});
return new Response($res);
}
}
?>
Результат выполнения кода:
de
Смотрите также
-
класс
LocaleSwitcher,
который управляет локалью приложения -
метод
setLocale,
который устанавливает локаль -
метод
runWithLocale,
который выполняет код с указанной локалью -
метод
reset,
который сбрасывает локаль к значению по умолчанию