如何使用语言文件(messages.en.xliff
)中的密钥翻译当前的硬编码文本?
我尝试使用
{% trans %} translation_key{% endtrans %}
没有成功。 Symfony返回此错误
消息必须是'ProjectEventsBundle:Default:show_event.html.twig'中的简单文本
500内部服务器错误 - Twig_Error_Syntax
{% transchoice count %}
{0} The current hardcoded text|{1} is attending|{2} are attending|]2,Inf] and %count% - 2 others are attending
{% endtranschoice %}
提前致谢。
答案 0 :(得分:15)
我会使用这样的解决方案:
messages.en.xliff:
<trans-unit id="1">
<source>some.translation.key</source>
<target>{0} no.attendee|{1} one attendee|{2} two attendees|{3} three attendees|]3,Inf] many attendees</target>
</trans-unit>
Twig模板:
{{ 'some.translation.key'|transchoice(count) }}
如果你需要输入一些参数,你应该将它们作为第二个参数传递。
这是过滤器的原型:
public function transchoice($message, $count, array $arguments = array(), $domain = "messages", $locale = null)
答案 1 :(得分:9)
Symfony2提供专门的Twig标签(trans和transchoice)来帮助静态文本块的消息转换:
{% trans %}Hello %name%{% endtrans %}
{% transchoice count %}
{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples
{% endtranschoice %}
transchoice标签自动从当前上下文获取%count%变量并将其传递给翻译器。只有在%var%模式后使用占位符时,此机制才有效。
答案 2 :(得分:8)
这个主题很老了,但我建议你这样做:
you.translaction.key: "{1}1 Comment|]1,Inf]%count% Comments"
{% set count = 2 %}
{% transchoice count with {'%count%': count} %}you.translaction.key{% endtranschoice %}
干杯,
西蒙
答案 3 :(得分:0)
带有另一个参数的示例:
{{ 'label.policy_expires_in'|transchoice(expiresInDays, {}, 'VopInsPolicyBundle') }}
答案 4 :(得分:-11)
我找到了解决方案。它有点脏,但它正在工作。如果您找到更好的方法,请不要忘记发布。
{% set noattendee %}{% trans %} no.attendee {% endtrans %}{% endset %}
{% set oneattendee %}{% trans %} one.attendee {% endtrans %}{% endset %}
{% set twoattendees %}{% trans %} two.attendees {% endtrans %}{% endset %}
{% set treeattendees %}{% trans with {'%people%': people} %} tree.attendees {% endtrans %}{% endset %}
{% set manyattendees %}{% trans with {'%people%': people} %} many.attendees {% endtrans %}{% endset %}
{% transchoice count with {
'%noattendee%': noattendee,
'%oneattendee%': oneattendee,
'%twoattendees%': twoattendees,
'%treeattendees%': treeattendees,
'%manyattendees%': manyattendees}
%}
{0} %noattendee%|{1} %oneattendee%|{2} %twoattendees%|{3} %treeattendees%|]3,Inf] %manyattendees%
{% endtranschoice %}