1

我的树枝模板中有这个:

{% 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})) }}

但我无法重复同样的行为。(以前,当我发生这种情况时,现在,当我试图获得相同的行为时,我多次清除缓存,所以不应该那样)。

4

0 回答 0