Symfony 如何在transchoice()中使用标签

Symfony 如何在transchoice()中使用标签,symfony,machine-translation,Symfony,Machine Translation,我需要根据性别和数量翻译一个法语短语。 在message.fr.yml中,我有: key.toto: "male_singular: tu es venu 1 fois donc 1 vie|female_singular: tu es venue 1 fois donc 1 vie|male_plural: tu es venu %count% fois donc %count% vies|male_singular: tu es venue %count% fois donc %c

我需要根据性别和数量翻译一个法语短语。 在message.fr.yml中,我有:

key.toto: "male_singular: tu es venu 1 fois donc 1 vie|female_singular: tu es venue 1 fois donc 1 vie|male_plural: tu es venu %count% fois donc %count% vies|male_singular: tu es venue %count% fois donc %count% vies"
我在transchoice()使用的Symfony\Component\Translation\MessageSelector的文档中看到

索引解决方案还可以包含标签(例如,一个:有一个苹果)

这纯粹是为了使翻译更清晰-它不影响功能

这两种方法也可以混合使用:

{0}没有苹果|一个:有一个苹果|更多:有%count%苹果

但是当我打电话给transchoice的时候

transchoice("key.toto", "female_singular", array(), "messages")
我有:

“这是我的人生”

而不是:

“TUES场馆1 fois donc 1 vie”

我更喜欢使用标签而不是{},因为消息文件是由另一个企业翻译的


有什么想法吗?

来自
翻译
组件:

这些标签实际上只是给翻译人员的提示,并不影响翻译 用于确定使用哪种复数形式的逻辑

由于标记是可选的,所以翻译器不使用它们(翻译器 将仅根据其在字符串中的位置获取字符串)

您可以确保是否打开了
transChoice()
方法:

public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
{
    ...

    return strtr($this->selector->choose($catalogue->get($id, $domain), (int) $number, $locale), $parameters);
}
如您所见,
transChoice()
$number
参数强制转换为int

表示
PHP
的“女性单数”转换为
0

<?php

echo (int) "female_singular"; //0

我认为你可以混合标签和转选:
单数男性:你的静脉是一把钥匙。toto:“单数男性:单数男性%。”