【问题标题】:How to pass Symfony translated sentences to twig?如何将 Symfony 翻译的句子传递给树枝?
【发布时间】:2020-02-05 17:04:44
【问题描述】:

我正在使用 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 框架?

【问题讨论】:

  • 在翻译目录中创建文件时不要忘记重新加载缓存。
  • 如何重新加载缓存?
  • 我完全删除了缓存文件夹。还是同样的问题。还能做什么?

标签: php symfony twig locale translation


【解决方案1】:

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

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

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

【讨论】:

  • 是的,它现在起作用了。谢谢。我注意到我也必须将“fr_FR”添加到 Translator 的构造函数中。
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 2016-07-17
  • 2016-05-11
  • 2021-09-14
  • 2016-02-20
  • 2019-02-05
相关资源
最近更新 更多