gpt4 book ai didi

php - 替换 Symfony 3 中的翻译服务

转载 作者:可可西里 更新时间:2023-11-01 13:38:24 25 4
gpt4 key购买 nike

在我的 Symfony 2.8 项目中,我有一个扩展,它向 trans 方法添加了一些额外的逻辑:

parameters:
translator.class: MyBundle\Twig\TranslationExtension

这个类看起来像这样:

namespace MyBundle\Twig\TranslationExtension;

use Symfony\Bundle\FrameworkBundle\Translation\Translator as BaseTranslator;

class TranslationExtension extends BaseTranslator
{
private $currentLocale;

public function trans($id, array $parameters = array(), $domain = null, $locale = null)
{
$translation = parent::trans($id, $parameters, $domain, $locale);

// Some extra logic here

return $translation;
}

public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
{
return parent::transChoice($id, $number, $parameters, $domain, $locale);
}
}

现在,我正在迁移到 Symfony 3,其中那些类参数已被弃用,但我如何通过覆盖 translator 服务来实现它?

最佳答案

与其扩展,不如装饰translator服务。现在你覆盖了类名,这也将覆盖其他想要装饰服务的包。我看到你因为 Twig 而将其作为扩展,原始的 Twig {{ trans() }} 过滤器也将使用装饰服务。

services:
app.decorating_translator:
class: AppBundle\DecoratingTranslator
decorates: translator
arguments: ['@app.decorating_translator.inner'] # original translator
public: false

请在此处查看有关装饰的文档:http://symfony.com/doc/current/service_container/service_decoration.html

关于php - 替换 Symfony 3 中的翻译服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39470596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com