我目前正在将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());
我可能会错过任何建议吗?
答案 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();