如何使用Twig和i18n扩展创建复数翻译?

时间:2018-02-06 15:50:37

标签: internationalization twig slim gettext twig-extension

我使用Slim PHP框架和Twig以及Twig扩展i18n。我需要创建一个复数转换,显示数组中的消息数。我使用文本编辑器创建.po文件,并使用Poedit将其编译为.mo文件。

这是我的模板:

        {% set count=messages|length %}
        {% trans %}
            Showing the last message.
        {% plural count %}
            Showing the last {{count}} messages.
        {% endtrans %}<br>

这是我的.po文件(瑞典语翻译):

msgid "Showing the last message."
msgid_plural "Showing the last %count messages."
msgstr[0] "Visar det senaste meddelandet."
msgstr[1] "Visar de %count senaste meddelandena."

这不起作用,它给了我

Visar de %count senaste meddelandena.

即使count为16。

我哪里错了?

2 个答案:

答案 0 :(得分:0)

https://www.consolelog.io/angularjs-change-path-without-reloading/提出以下用法

{% transchoice count %}
    {1} Showing the last message.|]1,Inf[ Showing the %count% messages.
{% endtranschoice %}

一个更复杂的例子:

{% transchoice count with {'%name%': 'Fabien'} from 'app' %}
    {0} %name%, there are no apples|{1} %name%, there is one apple|]1,Inf[ %name%, there are %count% apples
{% endtranschoice %}

答案 1 :(得分:0)

%count应该是%count%documentation of the i18n extension有这个例子:

{% trans %}
    Hello {{ name }}!
{% endtrans %}
     

在gettext查找期间,这些占位符将被转换。 {{ name }}变为%name%,因此此字符串的gettext msgidHello %name%!