【问题标题】:Symfony 4.4 Translation interface problemSymfony 4.4 翻译界面问题
【发布时间】:2020-03-19 07:06:12
【问题描述】:

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

配置:

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

【问题讨论】:

  • 你可能应该为 symfony/translation 和 symfony/contracts 使用相同的版本;o)
  • 问题是 Symfony 4.4 添加了类型提示,而 Translator 组件(目前)不兼容。我尝试更改一些依赖版本,但没有任何成功。可能我们将不得不等待 Translator 依赖项也采用类型提示。

标签: symfony interface translation


【解决方案1】:

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

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

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

附:还有更多依赖项,但为了便于阅读,我省略了它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 2021-07-01
    • 2013-05-03
    相关资源
    最近更新 更多