我已经为我的Symfony2项目添加了翻译服务。我在 Controller 和 Twig 模板中都使用了它。配置良好,所有{% trans %}标记均按预期工作。但是在某些情况下,我需要使用{% transchoice %}标记,而且它没有翻译。这是我的代码中的一个示例。

{% transchoice post['comments']['count'] %}
    {0} Comments| {1} Comment| ]1,Inf] Comments
{% endtranschoice %}

也曾尝试将其写成一行。

我得到了正确的评论数选择,但单词本身未经过翻译。就像翻译者无法找到相应的翻译一样。在 messages.de.yml 中,我有
Comment: "Kommentar"
Comments: "Kommentare"

我的transchoice语法有问题吗?也许我需要在某个地方放置空格或类似的东西?

最佳答案

在翻译文件中,您应该这样写:

{0} Comments| {1} Comment| ]1,Inf] Comments: "{0} Kommentare| {1} Kommentar| ]1,Inf] Kommentare"

更新:
一个适合我的xliff示例:
        <trans-unit id="search.results.summary">
            <source>search.results.summary</source>
            <target>{0}Pas d'annotations trouvée pour "%search_text%"|{1}Une annotation trouvée pour "%search_text%"|]1,Inf]%search_count% annotations trouvées pour "%search_text%"</target>
        </trans-unit>

我如何使用它:
<h2>{{ 'search.results.summary' | transchoice(search_count, {
'%search_text%': search_text,
'%search_count%': search_count}) }}</h2>

如您所见,我没有将复杂的符号用作翻译的来源,因为它几乎没有用,并且会使模板的可读性降低。相反,我放置了一个点分隔的字符串,表示我的字符串的语义值。

在您的情况下,我猜想正确的用法是这样的:
comment.summary: "{0} Kommentare|{1} Kommentar|]1,Inf] Kommentare"


{% transchoice post['comments']['count'] %}
    'comment.summary'
{% endtranschoice %}

祝你好运。

关于symfony - Symfony2 transchoice标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9482447/

10-13 08:06