我想知道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
我想知道翻译是否可以实现相同的目的?
答案 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') }}