验证器组件中的转换

时间:2013-04-17 15:01:04

标签: symfony symfony-components

我目前正在将Symfony Validator组件集成到自定义PHP应用程序中。到目前为止,一切都工作得很好,我可以验证我的用户输入。

现在我想将验证消息转换为另一个语言环境,并集成了翻译组件(无论如何都需要它,因为DefaultTranslator中有TranslatorInterface的依赖性)。

默认转换程序仅支持硬编码到ValidationConstraints中的语言环境。据我所知,我需要指定一个自定义Translator实例,它从Validator组件中的xliff文件加载字符串。

这是我得到了多远,但德国翻译可能不会加载:

    $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());

我可能会错过任何建议吗?

1 个答案:

答案 0 :(得分: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();