3

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

验证.yml:

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

和验证器.pl.yml:

some_user:
    max_length: Wartość jest zbyt długa

在 ajax 加载的树枝文件中,我有这个:

{{ 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";
    }

}

但我认为它的方式很糟糕。

好像在树枝上翻译了两次……但是为什么呢?

4

3 回答 3

3

这是“多元化”的问题

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>
于 2012-06-28T09:05:33.093 回答
2

我知道自从你问这个问题以来已经很久了,但我刚刚遇到了同样的问题,所以希望这对其他人有用:

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

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

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

...

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

...

现在将正确渲染树枝中的结果。

于 2012-09-26T14:53:20.957 回答
1

你应该检查一下PluralizationRules.php你的语言是如何定义复数的。根据unicode,您应该提供 3 个转换选项,而不是 2。因为您提供了 2 并且数据需要第三个,所以抛出了异常(InvalidArgumentException)。我发现异常消息有点误导:)

于 2013-07-19T08:21:42.300 回答