5

我目前正在将 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());

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

4

1 回答 1

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();
于 2013-04-20T12:03:02.127 回答