gperriard gperriard - 1 month ago 15
Twig Question

How to translate with pluralization in Twig?

How can I translate the current hardcoded text with the key from the language file (

messages.en.xliff
)?

I tried to use the

{% trans %} translation_key{% endtrans %}


with no success. Symfony returns this error


A message must be a simple text in 'ProjectEventsBundle:Default:show_event.html.twig'

500 Internal Server Error - 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 %}


Thanks in advance.

Answer

I found a solution. It's a little bit dirty but it's working. If you find a better ways, don't forget to post it.

    {% 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 %}
Comments