РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
862 of 1361 menu

Метод addLoader

Метод addLoader класса Translator регистрирует новый загрузчик переводов. Первым параметром передаётся объект загрузчика, который реализует интерфейс LoaderInterface. Вторым необязательным параметром можно передать формат перевода. После регистрации Symfony использует этот загрузчик при загрузке каталогов переводов.

Синтаксис

public function addLoader(LoaderInterface $loader, string $format = null): void

Пример

Давайте создадим простой загрузчик переводов и зарегистрируем его в трансляторе:

<?php namespace AppService; use SymfonyComponentTranslationLoaderLoaderInterface; use SymfonyComponentTranslationMessageCatalogue; class ArrayLoader implements LoaderInterface { public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue { $messages = [ 'hello' => 'привет', 'user' => 'пользователь', ]; $catalogue = new MessageCatalogue($locale); $catalogue->add($messages, $domain); return $catalogue; } } ?>

Теперь зарегистрируем этот загрузчик через метод addLoader:

<?php namespace AppController; use AppServiceArrayLoader; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyContractsTranslationTranslatorInterface; class TranslationController extends AbstractController { #[Route('/translate', name: 'translate_index')] public function index(TranslatorInterface $translator): Response { $loader = new ArrayLoader(); $translator->addLoader($loader, 'array'); return new Response('loader added'); } } ?>

Результат выполнения кода:

"loader added"

Пример

Давайте загрузим перевод с помощью зарегистрированного загрузчика и проверим работу метода trans:

<?php namespace AppController; use AppServiceArrayLoader; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyContractsTranslationTranslatorInterface; class TranslationController extends AbstractController { #[Route('/translate/user', name: 'translate_user')] public function user(TranslatorInterface $translator): Response { $loader = new ArrayLoader(); $translator->addLoader($loader, 'array'); $translator->addResource('array', 'dummy', 'ru', 'messages'); $translator->setLocale('ru'); $res = $translator->trans('hello'); return new Response($res); } } ?>

Результат выполнения кода для локали 'ru':

"привет"

Смотрите также

  • класс Translator,
    который управляет переводами в приложении
  • метод trans,
    который возвращает перевод по ключу
  • метод setLocale,
    который задаёт текущую локаль
  • метод getCatalogue,
    который возвращает каталог переводов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить