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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...