Symfony将多个翻译文件用于一种语言

时间:2019-06-19 08:19:47

标签: 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

我想知道翻译是否可以实现相同的目的?

1 个答案:

答案 0 :(得分:1)

Symfony的Translator要求文件以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') }}