如果在 symfony 中为复数,则将结果复数化(良好实践)
pluralize results if plural in symfony (good practice)
我有一个过滤栏,可以让我在我的数据库中搜索一些结果。
当我在里面输入一个词时,我有一个 flash 消息显示找到了多少结果。
这是我的控制器
if ($filter != '') {
$this->get('session')->getFlashBag()->add('info', 'worked!');
}
这是我的模板
{% for message in app.session.flashbag.get('info') %}
{{ message }}
{% endfor %}
所以当我实际研究事物时,无论我有 1 个或更多结果都不会改变我的句子。
résultats
仍然用 s
编写,因为它是硬编码的。我怎样才能创建允许我在模板中对单词进行复数和单数化的内容?我应该直接进入控制器吗?
编辑
我直接在模板中使用了这个方法,但我不认为它是 "good practice" 一个。有什么帮助可以让它变得更好吗?
{{ results.getTotalItemCount }}
{% if results.getTotalItemCount <= 1 %}
{{ 'this.is.your.result'|trans({ '%count%': results.getTotalItemCount}) }}
{% else %}
{{ 'this.is.your.results'|trans({ '%count%': results.getTotalItemCount}) }}
{% endif %}
翻译中
this:
is:
your.result: "résultat"
your.results: "résultats"
你也许应该检查翻译中的复数形式here, you can use transChoice() method, it is explained here如何使用它。
在这里你可以看到如何在 twig 中使用它:
编辑:
您可以这样回答问题:
this:
is:
your.result: "1 résultat|%count% résultats"
然后在你的树枝中:
{{ 'this.is.your.result'|transchoice(results.getTotalItemCount) }}
我有一个过滤栏,可以让我在我的数据库中搜索一些结果。
当我在里面输入一个词时,我有一个 flash 消息显示找到了多少结果。
这是我的控制器
if ($filter != '') {
$this->get('session')->getFlashBag()->add('info', 'worked!');
}
这是我的模板
{% for message in app.session.flashbag.get('info') %}
{{ message }}
{% endfor %}
所以当我实际研究事物时,无论我有 1 个或更多结果都不会改变我的句子。
résultats
仍然用 s
编写,因为它是硬编码的。我怎样才能创建允许我在模板中对单词进行复数和单数化的内容?我应该直接进入控制器吗?
编辑
我直接在模板中使用了这个方法,但我不认为它是 "good practice" 一个。有什么帮助可以让它变得更好吗?
{{ results.getTotalItemCount }}
{% if results.getTotalItemCount <= 1 %}
{{ 'this.is.your.result'|trans({ '%count%': results.getTotalItemCount}) }}
{% else %}
{{ 'this.is.your.results'|trans({ '%count%': results.getTotalItemCount}) }}
{% endif %}
翻译中
this:
is:
your.result: "résultat"
your.results: "résultats"
你也许应该检查翻译中的复数形式here, you can use transChoice() method, it is explained here如何使用它。
在这里你可以看到如何在 twig 中使用它:
编辑: 您可以这样回答问题:
this:
is:
your.result: "1 résultat|%count% résultats"
然后在你的树枝中:
{{ 'this.is.your.result'|transchoice(results.getTotalItemCount) }}