【问题标题】:Translation in Validator ComponentValidator 组件中的翻译
【发布时间】:2013-04-17 15:01:04
【问题描述】:

我目前正在将 Symfony 验证器组件集成到自定义 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());

有什么我可能在这里遗漏的建议吗?

【问题讨论】:

    标签: symfony symfony-components


    【解决方案1】:

    发现自己。当然需要加载翻译文件......由于对 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();
    

    【讨论】:

    • 我在 Symfony2 框架之外使用 Symfony 组件,并且在翻译工作时也遇到了问题。官方文档没有告诉您使用 ValidatorBuilder 类,因此此答案适用于具有相同用例的人。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 2019-04-18
    • 2013-07-03
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多