Как подставить ссылку на английскую версию сайта?

Аватар пользователя Artalek Artalek 30 апреля в 18:01

Здравствуйте, подскажите как можно на сайте в твиге вывести ссылку на английскую версию сайта?
К примеру я сейчас нахожусь по ссылке https://site.ru/ru/about.html или https://site.ru/about.html и мне нужно на сайте вывести кнопку на английскую версию сайта, которая бы вела на текущую ссылку сайта, но уже вместо ru, чтобы было en, т.е. на страницу https://site.ru/en/about.html.
Как можно правильно это сделать, подскажите пожалуйста?

Лучший ответ

Аватар пользователя marassa marassa 30 апреля в 18:26
1

Artalek wrote: мне нужно на сайте вывести кнопку на английскую версию сайта, которая бы вела на текущую ссылку сайта, но уже вместо ru, чтобы было en

Именно для этого в ядре Друпала существует штатный блок Language switcher. Он чем-то не устраивает?

Комментарии

Аватар пользователя ivnish ivnish 30 апреля в 18:14

Всё зависит от того, какая версия главная. У главного языка префикса не будет

Аватар пользователя marassa marassa 30 апреля в 18:26
1

Artalek wrote: мне нужно на сайте вывести кнопку на английскую версию сайта, которая бы вела на текущую ссылку сайта, но уже вместо ru, чтобы было en

Именно для этого в ядре Друпала существует штатный блок Language switcher. Он чем-то не устраивает?

Аватар пользователя Artalek Artalek 30 апреля в 18:47

Щас как раз пытаюсь его использовать, но все равно интересно, как формировать самому данные ссылки?

Аватар пользователя Artalek Artalek 30 апреля в 18:49

Потом так же интересно, я щас переопределил шаблон `links--language-block.html.twig`, но тут языки выводятся "Russian" и "English", как можно заменить на "Rus" и "Eng"?

Аватар пользователя marassa marassa 30 апреля в 18:35

ivnish wrote: У главного языка префикса не будет

Вообще говоря, ничто не мешает добавить префикс и для главного языка (и даже убрать его для одного из второстепенных). Language switcher для того и существует, чтобы с этим не заморачиваться. В одном месте (/admin/config/regional/language/detection) настроил как определяются языки и забыл. Потом передумал и поменял, а Language switcher по-прежнему работает.

Аватар пользователя marassa marassa 30 апреля в 19:08

Artalek wrote: интересно, как формировать самому данные ссылки?

Посмотреть какие переменные передаются в данный twig-шаблон, взять текущий path, заменить в нем компонент пути, отвечающий за язык.

Artalek wrote: я щас переопределил шаблон `links--language-block.html.twig`

С какой целью?

Artalek wrote: тут языки выводятся "Russian" и "English", как можно заменить на "Rus" и "Eng"?

/admin/structure/menu/manage/language-switcher

Аватар пользователя Artalek Artalek 30 апреля в 19:30

marassa wrote: Именно для этого в ядре Друпала существует штатный блок Language switcher.

Это сработало, но остался один нюанс, Ссылка для ru выглядит так "https://site.ru/ru/microservices.html", а для en вот так "https://site.ru/en/node/1".
Как можно сделать, чтобы и для en он показывать с ЧПУ вот "https://site.ru/en/microservices.html"?

Аватар пользователя marassa marassa 30 апреля в 19:34

Artalek wrote: Как можно сделать, чтобы и для en он показывать с ЧПУ вот "https://site.ru/en/microservices.html"?

Найти косяк с настройкой формирования алиасов для разных языков и исправить его.
OFF: А зачем на конце алиаса .html, и какое отношение это имеет к человекопонятности?

Аватар пользователя Artalek Artalek 30 апреля в 19:40

marassa wrote: Найти косяк с настройкой формирования алиасов для разных языков и исправить его.

А как тут понять? мне нужно создать копию данной страницы для EN? с тем же синонимом?

Аватар пользователя marassa marassa 30 апреля в 19:56
1

Artalek wrote: мне нужно создать копию данной страницы для EN? с тем же синонимом?

Да вообще-то нет в этом необходимости. У меня все алиасы/синонимы определяются только на английском, при этом переключение на русский идёт на /ru/<alias>. Возможно дело в том, что в настройках URL Redirects у меня стоит настройка "Enforce clean and canonical URLs."? Не помню, очень давно настраивал.