Мультиязычный сайт на Laravel 7, как реализовать?
Саму смену языка реализовал.
В Middleware идёт проверка, есть ли в URL директория языка. Если есть, то выставляется App::setLocale($locale) и загружается страница.
При смене языка редактирую URL, в начало ссылки подставляю директорию, соответствующую выбранному языку. При смене языка записывается кука с значением языка.
Все Route объединил в группу.
Остановился на моменте, когда значение языка в куках не равно значению языка директории (такое может быть, когда пользователь сменил язык, но в последствии вернулся на сайт по старой ссылке, соответствующей другому языку).
Хотел при отличии куки и языка в урл делать редирект. Но редирект не будет сохранять setLocale и получается бесконечный цикл. Может в $next($request) как то можно передать другие значения URL? Но скорее всего это моя больная фантазия)
Как реализовать смену языка при несоотвествии языка в куках и языка в урл?
Ответы (1 шт):
Используйте или куки или урлы, иначе у вас всегда будут конфликты. Те:
- Middleware проверяет урлы и отдает страницы согласно установленной Locale
- Middleware проверяет куки и отдает страницы согласно установленной Locale Добавлю, что использование первой логики лучше для SEO оптимизации сайта: вы не будете многоязычием вводить в заблуждение краулеры поисковых систем