Класс Locales
Класс Locales в Symfony предназначен для работы со справочником локалей.
Он позволяет получать названия локалей, проверять их существование и получать
список всех доступных локалей. Класс не требует создания экземпляра, так как
все его методы статические.
Основные методы: getName - возвращает название локали по её коду,
getNames - возвращает массив всех локалей, exists - проверяет,
существует ли локаль с указанным кодом.
Синтаксис
use Symfony\Component\Intl\Locales;
Locales::getName(string $locale, string $displayLocale = null): string
Locales::getNames(string $displayLocale = null): array
Locales::exists(string $locale): bool
Пример
Давайте получим название локали по её коду:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Intl\Locales;
class LocaleController extends AbstractController
{
#[Route('/locale', name: 'locale_info')]
public function index(): Response
{
$name = Locales::getName('fr');
return new Response($name);
}
}
?>
Результат выполнения кода:
"French"
Пример
Давайте проверим существование локали:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Intl\Locales;
class LocaleController extends AbstractController
{
#[Route('/locale/exists', name: 'locale_exists')]
public function exists(): Response
{
$res = Locales::exists('fr');
return new Response($res ? 'true' : 'false');
}
}
?>
Результат выполнения кода:
"true"
Пример
Давайте получим список всех локалей:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Intl\Locales;
class LocaleController extends AbstractController
{
#[Route('/locale/all', name: 'locale_all')]
public function all(): Response
{
$names = Locales::getNames();
return new Response(implode(', ', array_slice($names, 0, 5)));
}
}
?>
Результат выполнения кода (первые 5 элементов):
"Afrikaans, Amharic, Arabic, Assamese, Azerbaijani"
Смотрите также
-
класс
Translator,
который выполняет перевод сообщений -
метод
trans,
который переводит сообщение по ключу -
метод
getLocale,
который возвращает текущую локаль -
метод
setLocale,
который устанавливает текущую локаль