2

我正在翻译以下键activity.fr.yml

user.list.link: '{1}et %count% autre|]1,Inf[voir les %count% autres'

使用 tranchoice

<a href="{{ moreLink }}" >{% transchoice count from "activity" %}user.list.link{% endtranschoice %}</a>

我收到以下错误

An exception has been thrown during the rendering of a template ("Unable to choose a translation.")

我认为已找到翻译,否则我不会收到有关无法选择翻译但密钥本身的错误。

此外,来自同一个 yaml 的所有其他密钥甚至其他 tranchoice 都得到了很好的翻译。

我按照文档并尝试添加with {'%count%': count}但没有成功。

有人知道这里出了什么问题吗?提前致谢

4

2 回答 2

6

语法很好,但作为 %count% 传递的值不能为负数,也不等于 0,因为复数字符串中没有 {0} 定义。因此,我进行了测试以确保该值 >= 0 并像这样修改了字符串并对其进行了修复。

user.list.link: '{0}|{1}et %count% autre|]1,Inf[voir les %count% autres'
于 2012-06-13T16:03:30.967 回答
2

您需要传递用于确定将选择的翻译的参数。

查看文档中的以下示例:

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

适应你的例子:

{% transchoice count with {'%count%': count} from "activity" %}
    user.list.link
{% endtranschoice %}

如果它不起作用,则可能找不到您的翻译。所以,symfony 使用你的密钥作为后备并且不能确定一个有效的选择,因为你的密钥不支持这个。

要检查这一点,请尝试使用这样的密钥:

user.list.link | user.list.link.many

不要忘记在您的活动目录中使用相同的密钥。

于 2012-06-05T06:58:16.747 回答