我正在使用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');