小枝テンプレートにこれがあります:
{% 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})) }}
しかし、私は同じ行動を繰り返すことはできません。(以前、それが私に起こっていたとき、そして今、同じ動作を取得しようとしているときに、キャッシュを数回クリアしたので、そうではないはずです)。