#symfony #translation
#symfony #перевод
Вопрос:
На сайте у меня много общедоступных страниц. Сайт поддерживает несколько языков. URL страницы, подобный этому: /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
}
но поскольку язык address /about-us (не / de / about-us) является английским. Как я могу перенаправить на URL / de / about-us (URL-адреса могут быть разными)
Комментарии:
1. У вас может быть логика для поиска нужной пользовательской локали в ядре (перед вашими контроллерами). Смотрите здесь
Ответ №1:
Если ваша конфигурация верна, вы можете настроить все аннотации @Route на своих контроллерах следующим образом:
* @Route(
* path={
* "fr_FR": "/locations",
* "en_US": "/rentals",
* },
* ......
* )
В зависимости от того, какая локаль установлена для запроса, ответу присваивается соответствующий uri.
Дополнительная информация здесь: https://symfony.com/doc/current/routing.html#localized-routes-i18n