symfony - Symfony - 通过IP将用户重定向到国家路由
问题描述
在站点中,我有很多公共页面。网站有多种语言。像这样的页面网址:/about-us(英语)/de/about-us(德国)....
但是当用户来到该站点(例如来自德国),如果他第一次访问我的站点,则在浏览器地址主页或 /about-us 中输入,我需要显示 /de/about-us。
我该怎么做。
我有订阅者
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => [
['setTranslationsLocale', self::TRANSLATIONS_PRIORITY],
],
KernelEvents::CONTROLLER => 'setCountrySpecificLocale',
];
}
public function setTranslationsLocale(RequestEvent $event): void
{
...
$request->setLocale($routeLocale);
$session->set('_locale', $routeLocale);
// and locale set correctly
}
但是因为地址/about-us(不是/de/about-us)语言是英语。我如何重定向到 /de/about-us 网址(网址可以不同)
解决方案
如果您的配置正确,您可以像这样在控制器上配置所有 @Route 注释:
* @Route(
* path={
* "fr_FR": "/locations",
* "en_US": "/rentals",
* },
* ......
* )
根据请求中设置的区域设置,相应的 uri 会被提供给响应。
更多信息在这里:https ://symfony.com/doc/current/routing.html#localized-routes-i18n