Мне было интересно, возможно ли с 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
Мне было интересно, можно ли добиться того же с переводами?




Translator Symfony требует, чтобы файлы были названы в формате domain.locale.loader. Если у вас есть messages.en.yml:
messages — это имя домена по умолчанию, вы также можете указать, например. invoicesen — это регионyml указывает YAML будет использоваться загрузчикТаким образом, предлагаемое вами использование невозможно достичь со стандартным набором конфигураций и функций. Однако вы можете разделить свои переводы на разные файлы домена. Таким образом, пути будут:
AppBundle/Resources/translations/products.en.yml
AppBundle/Resources/translations/invoices.en.yml
А при использовании переводчика вы указываете домен, в котором нужно искать перевод:
$translator->trans('translated.key', [], 'invoices');
Или в Twig:
{{ 'translated.key'|trans({},'invoices') }}
Ах, спасибо за информацию, я думаю, я посмотрю на это или закончу тем, что напишу свой собственный сервис переводчика.