Symfony использует несколько файлов перевода для одного языка

Мне было интересно, возможно ли с Symfony 3.5 использовать несколько файлов перевода для одного языка при использовании файлов yml.

В настоящее время у меня есть что-то вроде этого:

AppBundle/Resources/translations/messages.en.yml
AppBundle/Resources/translations/messages.de.yml

который содержит все мои переводы на любом языке. Однако мне было интересно, можно ли изменить это на следующую структуру:

AppBundle/Resources/translations/en/products.yml
AppBundle/Resources/translations/en/invoices.yml

AppBundle/Resources/translations/de/products.yml
AppBundle/Resources/translations/de/invoices.yml

Я искал, но я не смог найти какое-то решение для этого. У меня это работает для разделения моих маршрутов.

AppBundle/Resources/config/routing.yml

appbundle_routes:
  resource: '@AppBundle/Resources/config/routing'
  type: directory

Внутри этой папки я разделил все свои маршруты, например:

AppBundle/Resources/config/routing/products.yml
AppBundle/Resources/config/routing/users.yml
AppBundle/Resources/config/routing/invoices.yml

Мне было интересно, можно ли добиться того же с переводами?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
1 000
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Translator Symfony требует, чтобы файлы были названы в формате domain.locale.loader. Если у вас есть messages.en.yml:

  • messages — это имя домена по умолчанию, вы также можете указать, например. invoices
  • en — это регион
  • yml указывает YAML будет использоваться загрузчик

Таким образом, предлагаемое вами использование невозможно достичь со стандартным набором конфигураций и функций. Однако вы можете разделить свои переводы на разные файлы домена. Таким образом, пути будут:

AppBundle/Resources/translations/products.en.yml
AppBundle/Resources/translations/invoices.en.yml

А при использовании переводчика вы указываете домен, в котором нужно искать перевод:

$translator->trans('translated.key', [], 'invoices');

Или в Twig:

{{ 'translated.key'|trans({},'invoices') }}

Ах, спасибо за информацию, я думаю, я посмотрю на это или закончу тем, что напишу свой собственный сервис переводчика.

killstreet 19.06.2019 11:10

Другие вопросы по теме