3

単純なバリデーター変換を使用しようとしています。私のファイル:

validate.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";
    }

}

しかし、そのひどい方法だと思います。

小枝で2回翻訳されたようです...しかし、なぜですか?

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によれば、2 ではなく 3 つのトランザクション オプションを指定する必要がありますInvalidArgumentException。例外メッセージが少し誤解を招くと思います:)

于 2013-07-19T08:21:42.300 に答える