如何使用纯文本和html代码替换翻译中的%变量%?

时间:2015-01-18 19:53:03

标签: symfony twig

我想得到这个结果:

  

您好!请注册登录

(粗体文字代表链接<a href="..."></a>)。 我想翻译这篇文章,但我不知道如何使用HTML。

我试过这个方法:

messages.en.yml:

translation:
    message: Hello! Please, %Register% or %Login%!
    register: Register
    login: Login

index.html.twig:

{{ 'translation.message'|trans({
      '%register%': '<a href="#">'~'translation.register'|trans~'</a>',
      '%login%': '<a href="#">'~'translation.login'|trans~'</a>'
}) }}

但是这个方法返回纯文本,HTML代码不起作用!我尝试使用 | raw 选项,但无济于事。

1 个答案:

答案 0 :(得分:1)

您正在遇到逃避问题。

在您的情况下,您可以使用|raw过滤器:

'%register%': ('<a href="#">'~'translation.register'|trans~'</a>')|raw,

请参阅fiddle

但更好的做法是使用多个翻译并仅翻译标签,例如:

foo.hello = 'Hello, please'
foo.register = 'register'
foo.or = 'or'
foo.login = 'login'

{{ 'foo.hello'|trans }} <a href="#">{{ 'foo.register'|trans }}</a> {{ 'foo.or'|trans }} <a href="#">{{ 'foo.login'|trans }}</a>!

那不太干净,但那更安全。