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

Класс Translator

Класс Translator отвечает за перевод текста в приложении Symfony. Первым параметром конструктор принимает локаль по умолчанию, вторым - загрузчик переводов, третьим - кэш. Метод trans переводит сообщение, метод getLocale возвращает текущую локаль, а метод setLocale устанавливает её.

Синтаксис

use Symfony\Component\Translation\Translator; $translator = new Translator(locale); $translator->trans(id, parameters, domain, locale); $translator->getLocale(); $translator->setLocale(locale);

Пример

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

<?php use Symfony\Component\Translation\Translator; use Symfony\Component\Translation\Loader\ArrayLoader; $translator = new Translator('en'); $translator->addLoader('array', new ArrayLoader()); $translator->addResource('array', [ 'hello' => 'привет', ], 'ru'); $translator->setLocale('ru'); echo $translator->trans('hello'); ?>

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

"привет"

Пример

Давайте переведём сообщение с подстановкой параметра name:

<?php use Symfony\Component\Translation\Translator; use Symfony\Component\Translation\Loader\ArrayLoader; $translator = new Translator('en'); $translator->addLoader('array', new ArrayLoader()); $translator->addResource('array', [ 'hello' => 'привет, %name%', ], 'ru'); $translator->setLocale('ru'); echo $translator->trans('hello', ['%name%' => 'user']); ?>

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

"привет, user"

Пример

Давайте получим и изменим текущую локаль:

<?php use Symfony\Component\Translation\Translator; use Symfony\Component\Translation\Loader\ArrayLoader; $translator = new Translator('en'); $translator->addLoader('array', new ArrayLoader()); $translator->addResource('array', [ 'hello' => 'привет', ], 'ru'); echo $translator->getLocale(); $translator->setLocale('ru'); echo "\n"; echo $translator->getLocale(); ?>

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

"en" "ru"

Пример

Давайте используем класс Translator внутри контроллера Symfony:

<?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 { $translator->setLocale('ru'); return new Response($translator->trans('hello')); } } ?>

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

привет

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

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