gpt4 book ai didi

php - Symfony2 翻译添加 Html

转载 作者:行者123 更新时间:2023-11-28 01:27:38 25 4
gpt4 key购买 nike

我想向 Symfony 2 Translation 添加一些 HTML。这样我就可以知道我的应用程序中哪些短语被翻译了,哪些没有。我在“Symfony\Component\Translation\Translator.php”中找到函数“trans”。现在我想在函数返回中添加一些东西,例如“
”:

/**
* {@inheritdoc}
*
* @api
*/
public function trans($id, array $parameters = array(), $domain = null, $locale = null)
{
if (null === $locale) {
$locale = $this->getLocale();
} else {
$this->assertValidLocale($locale);
}

if (null === $domain) {
$domain = 'messages';
}

if (!isset($this->catalogues[$locale])) {
$this->loadCatalogue($locale);
}

return strtr($this->catalogues[$locale]->get((string) $id, $domain)."</br>", $parameters);
}

问题是,当我运行我的应用程序时,我得到例如“标签”(我添加了空格,因为在正常情况下它不会显示在这里。HTML 不会将其解释为 HTML 代码但作为一个字符串。有什么办法可以实现我想要的吗?也许是,但以另一种方式?

最佳答案

发生这种情况是因为您激活了 Twig Escaper 扩展。该扩展为 Twig 添加了自动输出转义,它定义了 autoescape 标签和 raw 过滤器。

所以我认为你在这里得到的最佳选择是定义一个新的 Twig 扩展,让你翻译你的 html 字符串,而不必每次都重复 myvar|raw

要了解如何创建新的 Twig 扩展,请查看文档 here .

在为 JS 转义时使用相同的扩展名,应该不需要使用任何其他东西,尤其是在你的 PHP Controller 中。那是因为转义是在 Twig 级别完成的。请记住将新的 Twig 过滤器声明为安全的,以避免再次自动转义:

$filter = new Twig_SimpleFilter('nl2br', 'nl2br', array('is_safe' => array('html')));

如果您需要对请求的数据做一些额外的处理,以便您可以跟踪请求的字符串和不请求的字符串,那么只需声明一个新服务作为 Symfony 翻译服务的代理。您的 Twig 扩展可以使用相同的服务。这样您就可以将所有请求集中到一个服务中。

这里有一些对您有用的链接:

关于php - Symfony2 翻译添加 Html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31477748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com