首页 > 解决方案 > 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 网址(网址可以不同)

标签: symfonytranslation

解决方案


如果您的配置正确,您可以像这样在控制器上配置所有 @Route 注释:

 * @Route(
 *  path={
 *      "fr_FR": "/locations",
 *      "en_US": "/rentals",
 *  },
 *  ......
 * )

根据请求中设置的区域设置,相应的 uri 会被提供给响应。

更多信息在这里:https ://symfony.com/doc/current/routing.html#localized-routes-i18n


推荐阅读