symfony - 验证器组件中的翻译

标签 symfony symfony-components

我目前正在将 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/

相关文章:

php - 如何将请求堆栈注入(inject) Twig 扩展

php - 登录页面中出现错误 symfony - 警告 : gettext()

symfony - 从 Symfony2 中的 DQL 访问继承类属性

php - Goutte - TLSv1 协议(protocol)版本错误

php - 包含带有重音符号或字符的文本的 XPath 元素选择

symfony4 - 在 Symfony 4 配置文件中引用嵌套参数

php - Wincache 扩展无法在 IIS 上正常工作(它仍然很慢|

php - Symfony 3 - 编辑表单 - 用数据库数据(数组)填充字段

php - Silex登录成功后不定向

php - 扩展 Symfony2 Controller 解析器