首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sulu CMS -更改默认的区域设置提供程序

Sulu CMS -更改默认的区域设置提供程序
EN

Stack Overflow用户
提问于 2022-06-02 16:19:53
回答 2查看 137关注 0票数 0

我需要打开网站的语言版本,根据浏览器语言和IP地址。我试图按照文档中的建议使用区域设置提供程序,我将RequestDefaultLocaleProvider.php复制到src文件夹,重命名并在services.yaml中注册为服务,并将他的ID插入sulu_website.yaml。当我打开站点时,我的提供者中的"getDefaultLocale“方法不会被调用,并且我无法打开所需的站点版本。我做错什么了?

services.yaml

代码语言:javascript
复制
app.locale.my_locale_provider:
class: App\Locale\MyLocaleProvider
arguments:
    - '@Sulu\Component\Webspace\Analyzer\RequestAnalyzerInterface'
    - '@Symfony\Component\HttpFoundation\RequestStack'

sulu_website.yaml

代码语言:javascript
复制
sulu_website:
twig:
    attributes:
        urls: false
        path: false
default_locale:
    provider_service_id: app.locale.my_locale_provider

MyLocaleProvider.php

代码语言:javascript
复制
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()方法中设置我需要的语言,但这也不起作用)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-02 16:56:49

只有在when空间中使用以下url架构时,才会考虑默认的区域设置提供程序:

代码语言:javascript
复制
<url>{host}/{localization}</url>

因此,如果您有sulu.rocks/ensulu.rocks/de,并且有人正在调用sulu.rocks/,默认的地区提供程序将被调用并重定向,那么用户提供的语言就会被调用。

如果在not空间的rootLevel上运行区域设置,默认的区域设置提供程序将不会被调用,因为它是alrea。

票数 0
EN

Stack Overflow用户

发布于 2022-06-03 14:47:02

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72479328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档