我的树枝模板中有这个:
{% trans %}lala{% endtrans %}
{{ 'Presentation'|trans|raw }}
and lots of not translatable twig html in between.
它应用翻译的唯一方法是在控制器操作中我调用翻译器:
$t = $this->get('translator')->trans('lala');
如果我评论上面的行,则不会发生翻译。我怎么能强迫它?(好吧,我做错了什么?)
有关更多信息,这是我的 config.yml 文件:
framework:
translator: { fallback: %locale% }
default_locale: "%locale%"
我通过我的路由获取语言环境变量:
my_bundle_name:
resource: "@MyBundle/Resources/config/routing.yml"
prefix: /{_locale}/add
requirements:
_locale: en|ja
编辑:这些文件的位置就像一个普通的 symfony 项目。我的树枝模板位于:
src/COMP/myBundle/Resources/views/entity1/new.twig.html
唯一的区别可能是它扩展了位于
src/COMP/myBundle/Resources/views/base.html.twig
翻译也位于 Resources 文件夹中:
src/COMP/myBundle/Resources/translations/messages.en.xlf
src/COMP/myBundle/Resources/translations/messages.ja.xlf
src/COMP/myBundle/Resources/translations/validators.ja.xlf
控制器也位于默认位置:
src/COMP/myBundle/Controller/myentitycontroller.php
我一直在使用这个技巧进行开发,明确调用翻译器,现在即使没有这种解决方法,它也突然可以工作。而且我无法像以前一样重复同样的行为。
我仍然很好奇为什么会发生在我身上,但也许我应该删除这个问题......
我的第一个猜测是我试图翻译一个“部分”的模板。我的意思是,从 base.html.twig 我调用了一个控制器的动作:
{{ render(controller('COMPMyBundle:Default:Welcome', {'aprequest': app.request})) }}
但我无法重复同样的行为。(以前,当我发生这种情况时,现在,当我试图获得相同的行为时,我多次清除缓存,所以不应该那样)。