Префикс языка в URL в мультиязычном проекте на Laravel
Вставка
- Опубліковано 20 сер 2024
- Разработка веб-приложения на PHP. Посмотрите уроки: webformyself.c...
Исходники к уроку тут: webformyself.c...
Мультиязычные проекты пользуются огромной популярностью в данное время, потому как значительно расширяют аудиторию посетителей приложения. При этом, если рассматривать техническую сторону реализации мультиязычности, то возникает вполне предсказуемый вопрос, что делать с URL и нужно ли размещать код выбранного языка в ссылках на страницы сайта?
В этом видео будем разбираться с данным вопросом и посмотрим, как в мультиязычном проекте, написанном на Laravel, разместить код языка в качестве основного префикса в URL.
Хотел бы отметить, что вопрос размещения кода языка в URL, как правило возникает на том этапе, когда сайт начинает активно продвигаться по поисковым системам, то есть на этапе SEO-оптимизации. При этом, довольно часто бывает, что сайт уже написан, адреса запросов сформированы и код выбранного языка в URL не указывается (сохраняется в сессии на сервере). Соответственно приходится переписывать маршруты и возможно некоторые функциональные блоки. Поэтому о вопросе мультиязычности, желательно помнить всегда и закладывать механизмы ее реализации.
Что же касается самого префикса в URL, то возможны три ситуации:
• префикс отсутствует;
• префикс кода языка всегда присутствует в независимости от выбранного языка;
• префикс кода присутствует на всех языках кроме одного, который был на проекте изначально.
Собственно, третий вариант мы с Вами будем рассматривать в этом уроке. Суть его заключается в том, что в проекте выбирается язык, который считается языком по умолчанию. Для всех локализаций кроме вышеуказанной в URL обязательно должен добавляться код языка. Это справедливо, когда некоторые страницы сайта уже проиндексированы в локализации по умолчанию.
Спасибо за урок! Лучшее толковое видео по локализации с префиксами в Url. Очень просто и понятно, но есть одно изменение для Laravel 8:
1) в классе Localization, метод должен быть статическим "public static function locales()"
2) ну и конечно же в web.php "prefix" должен вести на "Localization", а не на "LocalizationService", те 'prefix' => Localization::language(),
Благодарю, как раз стоит задача по многоязычности и с подобными урлами.
Однозначно лайк!
Пожалуйста
Viktor gavrilenko ! Tutorials Guru and Legend !!! ;))
sala emu
Спасибо!
добрый день, Виктор. Каким образом правильно сделать редирект на ту страницу, на которой мы были, переключая язык?
Решение ОК!
и что юзер будет для каждой страницы префикс дописывать?
а если нужно hreflang указать или добавить принудительно язык в роут? как быть?
Спасибо большое за урок! Вопрос, что касается самого url, который надо прописать для переключения языка, не подскажите как правильно прописать
здесь не указано, что если сделать route:cache - то больше не будет работать локализация))) потому что динамические свойства умрут
А если роуты в куче файлов? Не камильфо добавлять каждому эту обертку
здравствуйте. я не как немогу переводит только одну слову month ago на laraclassified остальных все чётко переводил.
Не работает. Too few arguments to function Illuminate\Routing\Router::get(), 0 passed in C:\server\data\htdocs\lara-vel\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php on line 261 and at least 1 expected
Не работает на 9 версии laravel!!!
Спасибо за урок!
только есть один вопрос
получаеться что сейчас страницы tlaravel.loc/page/1 и tlaravel.loc/ru/page/1 будет выводить одно и тоже, что со стороны seo не очень хорошо
как решить данную проблему?
Здравствуйте!
Для этого необходимо реализовать функционал, сохранения переводов для страниц. То есть, для одной и той же страницы, будут по сути различные тексты, каждый будет соответствовать одному языку.
@@user-of4dc3rh5c наверно вопрос был в другом. нужно определять локаль по-умолчанию и делать 301 редирект.
@@MaximumDamange А зачем радирект, если локаль определили из урла и на странице показывается контент в нужном переводе.
@@user-of4dc3rh5c
Чтоб не было дублей страниц
если ты попадаешь на страницу tlaravel.loc/page/1 то происходил бы редирект на tlaravel.loc/ru/page/1
@@web6271 да. Обычно для языка по умолчанию вообще не делают локали в урл
в мультиязыном проекте?
Xarasho bila bit tutorial o keshirovanie sql komandi
Исправьте ошибку в слове "мультиязыном".
Это решение работает для Laravel 8???
Устал искать инфо. Поставил mcamara/laravel-localization
Да.