symfony2中的双重翻译

symfony2中的双重翻译,symfony,translation,twig,Symfony,Translation,Twig,我尝试使用一个简单的验证器翻译。 我的文件: validation.yml: Some\UserBundle\Entity\Address: properties: name: - MaxLength: {limit: 2, message: "some_user.max_length" } 和validators.pl.yml: some_user: max_length: Wartość jest zbyt długa 在ajax

我尝试使用一个简单的验证器翻译。 我的文件:

validation.yml:

Some\UserBundle\Entity\Address:
    properties:
        name:
            - MaxLength:  {limit: 2, message: "some_user.max_length" }
和validators.pl.yml:

some_user:
    max_length: Wartość jest zbyt długa
在ajax加载的twig文件中,我有以下内容:

{{ form_error(form) }}
当我尝试验证程序时,应用程序会抛出以下内容:

An exception has been thrown during the rendering of a template ("Unable to choose a translation for "Wartość jest zbyt długa" with locale "pl".")
好像是双重翻译?有什么想法吗

我在行动中找到了解决办法:

$errorList = $this->get('validator')->validate($address);
$errors = "";
if (count($errorList) > 0) {
    foreach ($errorList as $err) {
        $errors.= $this->get('translator')
                    ->trans($err->getMessage(), array(), 'validators') . "\n";
    }

}
但我认为这是一种可怕的方式

它似乎在细枝上被翻译了两次。。。但为什么呢?

这是“多元化”的问题

validators.pl.yml应该如下所示:

Some\UserBundle\Entity\Address:
properties:
    name:
        - MaxLength:  {limit: 2, message: "some_user.max_length|some_user.max_length_s" }
但现在,仅细枝渲染:

<ul><li>some_user.max_length_s</li></ul>
  • 某些用户。最大长度
我知道你问这个问题已经很久了,但我刚刚遇到了同样的问题,希望这对其他人有用:

您的validators.pl.yml应该如下所示:

Some\UserBundle\Entity\Address:
properties:
    name:
        - MaxLength:  {limit: 2, message: "some_user.max_length" }
...

<trans-unit id="1">
    <source>some_user.max_length</source>
    <target>Your text|Your plural text</target>
</trans-unit>

...
然后,管理翻译的文件,比如说validators.pl.xliff应该如下所示:

Some\UserBundle\Entity\Address:
properties:
    name:
        - MaxLength:  {limit: 2, message: "some_user.max_length" }
...

<trans-unit id="1">
    <source>some_user.max_length</source>
    <target>Your text|Your plural text</target>
</trans-unit>

...
。。。
某些用户的最大长度
你的文本|你的复数文本
...

twig中的结果现在将正确呈现。

您应该检查
PluralizationRules.php
以了解如何为您的语言定义pluralization。根据要求,您应该提供3个transaltion选项,而不是2个。因为您提供了2,而第三个需要数据,所以引发了异常(InvalidArgumentException)。我发现异常消息有点误导:)

Core\HardwareBundle\Entity\WarningConfig:properties:name:-NotBlank:~-MinLength:{limit:5,消息:“single | mulal”}
对我仍然不起作用-获取“无法为…选择翻译”异常。Symfony 2.1.4