如何将 Symfony 翻译的句子传递给 twig?

How to pass Symfony translated sentences to twig?

我正在使用 Twig、twig-bridge、symfony/form 和 symfony/translator v4。不是 Symfony 框架。我对翻译器感到困惑。在 {root}/translations/messages.fr.php 我写道:

// translations/messages.fr.php
return [
    'Symfony is great' => "J'aime Symfony",
];

我在 {root} 的主脚本中写道:

setlocale(LC_ALL, 'fr_FR');
$translator = new Translator('fr');
$translated = $translator->trans('Symfony is great');
var_dump($translated); // Not translated!

我在 Twig 模板中写道:

<h1>{% trans %}Symfony is great{% endtrans %}</h1>

但这还没有翻译。我仍然得到英文版。我犯了什么错误?我是否应该将 {root}/translations/messages.fr.php 移动到其他地方,因为这是独立的而不是 symfony 框架?

如果您在没有框架的情况下使用 Symfony Translator,您需要手动配置翻译文件的路径,否则 Translator 将无法找到它们并且任何翻译尝试都会回退到原始字符串。

我自己从未这样做过,但根据 documentation,这应该适合你:

$translator->addLoader('php', new PhpFileLoader());
$translator->addResource('php', 'path/to/messages.fr.php', 'fr_FR');