Symfony 2在子文件夹中找不到翻译文件


Symfony 2 does not find translation file in subfolder

我有我的翻译文件在app/Resources/translations。现在我想更好地管理它们,并创建一些子文件夹,但似乎文件没有加载:

{% trans_default_domain 'sub/messages' %} 
{{ 'message'|trans }} #does not work

我在重新排序

后也调用了php bin/console cache:clear

我已经测试过了,下面是我的结论:

如果你有:

翻译:
| - sub:
|       | - messages. enen .xlf (with message = 'message in sub')
| - messages.en.xlf (with message = 'message in translation')

{{ 'message'|trans }} // echo 'message in sub'
{% trans_default_domain 'messages' %}
{{ 'message'|trans }} // echo 'message in sub'
{% trans_default_domain 'sub/messages' %}
{{ 'message'|trans }} // echo 'message' -> don't translate (it's your problem)

要解决这个问题,可以重命名子目录

中的文件

翻译:
| - sub:
|,,,,,, | - - - - - - submessages .en。XLF (with message = 'message in sub')
| - messages.en.xlf (with message = 'message in translation')

{% trans_default_domain 'submessages' %}
{{ 'message'|trans }} // echo 'message in sub'

我不确定用于存储翻译文件的子文件夹。翻译资源Symfony文档部分没有提到子文件夹

但是,您可以将翻译消息组织到组(域)中。在这种情况下,每个消息文件必须根据以下路径命名:domain.locale.loader,因此您可以将admin.en.yml文件用于admin组或user.en.yml文件用于用户组。

我认为除了编写自定义加载器之外,没有其他方法可以做到这一点:https://symfony.com/doc/current/components/translation/custom_formats.html creating-a-custom-loader