问题描述
在网站上,我有很多公开页面。网站有几种语言。 页面网址是这样的: / 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