Symfony 4.4翻译界面问题

时间:2019-11-23 11:49:36

标签: symfony interface translation

最近将应用程序从Symfony 4.3升级到4.4,在生产中我遇到了Symfony Translator界面的问题

config:

framework:
default_locale: pl
translator:
    default_path: '%kernel.project_dir%/translations'

错误:

Fatal error: Declaration of Symfony\Component\Translation\TranslatorInterface::setLocale($locale) must be compatible with Symfony\Contracts\Translation\LocaleAwareInterface::setLocale(string $locale) in ./vendor/symfony/translation/TranslatorInterface.php on line 24
Fatal error: Declaration of Symfony\Component\Translation\Translator::trans($id, array $parameters = Array, $domain = NULL, $locale = NULL) must be compatible with Symfony\Contracts\Translation\TranslatorInterface::trans(string $id, array $parameters = Array, ?string $domain = NULL, ?string $locale = NULL) in ./vendor/symfony/translation/Translator.php on line 32

1 个答案:

答案 0 :(得分:1)

我发现降级为symfony:translation-contracts:1.1.6对我有用。
Composer自动安装了此软件包的2.0.0版本,该版本利用了typehinting。
1.1.6版本不兼容,并且使Translator类再次兼容。
它不使用类型提示。

在我的composer.json文件中,我将版本固定为1.1.6

"require": {
        "php": ">=7.3",
        "symfony/translation": "^4.4",
        "symfony/translation-contracts": "1.1.6"
}

P.S。还有更多的依赖项,但出于可读性考虑,我省略了它们