5

現在、Symfony Validator Component をカスタム PHP アプリケーションに統合しています。これまでのところ、すべてがうまく機能しており、ユーザー入力を検証できます。

ここで、検証メッセージを別のロケールに翻訳し、翻訳コンポーネントを統合したいと考えています (DefaultTranslator の TranslatorInterface との依存関係のために必要です)。

デフォルトの Translator は、ValidationConstraints にハード コードされているロケールのみをサポートします。調べた限りでは、Validator コンポーネントの xliff ファイルから文字列をロードするカスタム Translator インスタンスを指定する必要があります。

これは私が得た距離ですが、残念ながらドイツ語の翻訳はロードされませんでした:

    $translator = new Translator('de_DE');
    $translator->setFallbackLocale('en_GB');
    $translator->addLoader('xliff', new XliffFileLoader());

    $builder = new ValidatorBuilder();
    $validator = $builder
            ->setTranslator($translator)
            ->getValidator();
    $violations = $validator->validateValue($input, self::getValidationConstraints());

ここで見逃している可能性のある提案はありますか?

4

1 に答える 1

5

自分自身を発見しました。もちろん、翻訳ファイルをロードする必要があります...また、FileLoader クラスへの依存関係のために、Symfony 構成コンポーネントを追加する必要があります。

    $translator = new Translator('de');
    $translator->addLoader('xliff', new XliffFileLoader());
    $translator->addResource('xliff', '<path-to-compontnt>/Resources/translations/validators.de.xlf', 'de','validation');

    $builder = new ValidatorBuilder();
    $validator = $builder
            ->setTranslator($translator)
            ->setTranslationDomain('validation')
            ->getValidator();
于 2013-04-20T12:03:02.127 に答える