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/en
和 sulu.rocks/de
并且有人在调用 sulu.rocks/
默认语言环境提供程序被调用并重定向然后用户提供的语言。
如果您是 运行 网站空间 rootLevel
上的区域设置,则不会调用默认的区域设置提供程序,因为它已经存在
问题已解决,我的错误是我希望在我的 ISP 中执行 getDefaultLocale() 方法,但是释放了到 sulu.rocks/{language} 的重定向并且没有执行 getDefaultLocale()那里。
我需要根据浏览器语言和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/en
和 sulu.rocks/de
并且有人在调用 sulu.rocks/
默认语言环境提供程序被调用并重定向然后用户提供的语言。
如果您是 运行 网站空间 rootLevel
上的区域设置,则不会调用默认的区域设置提供程序,因为它已经存在
问题已解决,我的错误是我希望在我的 ISP 中执行 getDefaultLocale() 方法,但是释放了到 sulu.rocks/{language} 的重定向并且没有执行 getDefaultLocale()那里。