我目前正在将 Symfony Validator 组件集成到自定义 PHP 应用程序中。到目前为止,一切都很好,我可以验证我的用户输入。
现在我想将验证消息翻译到另一个语言环境并集成了翻译组件(无论如何都需要它,因为与 DefaultTranslator 中的 TranslatorInterface 相关)。
默认的 Translator 仅支持硬编码到 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());
有什么建议我可能会在这里遗漏吗?
最佳答案
自己发现了。当然需要加载翻译文件......此外,由于对 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();
关于symfony - 验证器组件中的翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16063531/