Ing*_*rid 4 translation symfony flash-message symfony4
我在 Symfony 4 和翻译中遇到闪现消息问题。简单的闪存消息的翻译工作正常:
$this->addFlash('success', 'flashmessage.project_deleted');
Run Code Online (Sandbox Code Playgroud)
但现在我想在闪现消息中添加一些参数,但我不知道如何处理。我尝试了很多,但没有任何效果。我想在删除 fe 后在闪现消息中显示项目的标题。例如:
$this->addFlash('success', sprintf('flashmessage.project_deleted: %s', $project->getTitle()));
Run Code Online (Sandbox Code Playgroud)
但翻译无法识别,因为参数在翻译发生之前被替换(我认为是这样)。并且还应该可以在字符串的中间包含参数,而不仅仅是在末尾或开头,并且最好有多个参数。
我在扩展 AbstractController 的控制器中使用它。
有人有解决方案吗?
从 Symfony 5.2 开始你可以使用TranslatableMessage对象来实现这一点。
https://symfony.com/doc/current/translation.html#translatable-objects
use Symfony\Component\Translation\TranslatableMessage;
$this->addFlash(
'success',
new TranslatableMessage(
'flashmessage.project_deleted',
['%project%' => $project->getTitle()]
)
);
Run Code Online (Sandbox Code Playgroud)
然后在你的 Twig 模板中你只需要使用{{ flashMessage|trans }}.
这无需注入 Translator 服务或搞乱 Twig 中的任何内容即可工作。
| 归档时间: |
|
| 查看次数: |
3528 次 |
| 最近记录: |