验证器组件中的转换

roo*_*m13 5 symfony symfony-components

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

现在我想将验证消息转换为另一个语言环境并集成了翻译组件(无论如何由于DefaultTranslator中的TranslatorInterface的延迟而需要它).

默认转换程序仅支持硬编码到ValidationConstraints中的语言环境.据我所知,我需要指定一个自定义转换器实例,它从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());
Run Code Online (Sandbox Code Playgroud)

有什么建议我可能会错过这里吗?

roo*_*m13 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();
Run Code Online (Sandbox Code Playgroud)