Sulu CMS - 更改默认语言环境提供商

Sulu CMS - Change the default locale provider

我需要根据浏览器语言和IP地址打开网站的语言版本。 我正在尝试按照 documentation.I 中的建议使用我的 Locale Provider,将 RequestDefaultLocaleProvider.php 复制到 src 文件夹,重命名并将其注册为 services.yaml 中的服务并将其 ID 插入 sulu_website.yaml. 当我在我的提供商中打开网站方法“getDefaultLocale”时,没有调用,我无法打开所需版本的网站。我做错了什么?

services.yaml

app.locale.my_locale_provider:
class: App\Locale\MyLocaleProvider
arguments:
    - '@Sulu\Component\Webspace\Analyzer\RequestAnalyzerInterface'
    - '@Symfony\Component\HttpFoundation\RequestStack'

sulu_website.yaml

sulu_website:
twig:
    attributes:
        urls: false
        path: false
default_locale:
    provider_service_id: app.locale.my_locale_provider

MyLocaleProvider.php

namespace App\Locale;
use Sulu\Bundle\WebsiteBundle\Locale\DefaultLocaleProviderInterface;

class MyLocaleProvider implements DefaultLocaleProviderInterface
{       
    public function __construct()
    {       
        dump("from constructor") ;       
    }

    public function getDefaultLocale()
    {   
        dump("from getDefaultLocale") ;
        return 'de';
        
    }
}

我也尝试使用 Symfony 推荐的方法(订阅 onKernelRequest 事件并在 $request->setLocale() 方法中设置我需要的语言,但这也没有用)

仅当您在您的网站空间中使用以下 url 架构时才会考虑默认区域设置提供程序:

<url>{host}/{localization}</url>

所以如果你有,例如sulu.rocks/ensulu.rocks/de 并且有人在调用 sulu.rocks/ 默认语言环境提供程序被调用并重定向然后用户提供的语言。

如果您是 运行 网站空间 rootLevel 上的区域设置,则不会调用默认的区域设置提供程序,因为它已经存在

问题已解决,我的错误是我希望在我的 ISP 中执行 getDefaultLocale() 方法,但是释放了到 sulu.rocks/{language} 的重定向并且没有执行 getDefaultLocale()那里。