Префикс языка в URL в мультиязычном проекте на Laravel

Поділитися
Вставка
  • Опубліковано 20 сер 2024
  • Разработка веб-приложения на PHP. Посмотрите уроки: webformyself.c...
    Исходники к уроку тут: webformyself.c...
    Мультиязычные проекты пользуются огромной популярностью в данное время, потому как значительно расширяют аудиторию посетителей приложения. При этом, если рассматривать техническую сторону реализации мультиязычности, то возникает вполне предсказуемый вопрос, что делать с URL и нужно ли размещать код выбранного языка в ссылках на страницы сайта?
    В этом видео будем разбираться с данным вопросом и посмотрим, как в мультиязычном проекте, написанном на Laravel, разместить код языка в качестве основного префикса в URL.
    Хотел бы отметить, что вопрос размещения кода языка в URL, как правило возникает на том этапе, когда сайт начинает активно продвигаться по поисковым системам, то есть на этапе SEO-оптимизации. При этом, довольно часто бывает, что сайт уже написан, адреса запросов сформированы и код выбранного языка в URL не указывается (сохраняется в сессии на сервере). Соответственно приходится переписывать маршруты и возможно некоторые функциональные блоки. Поэтому о вопросе мультиязычности, желательно помнить всегда и закладывать механизмы ее реализации.
    Что же касается самого префикса в URL, то возможны три ситуации:
    • префикс отсутствует;
    • префикс кода языка всегда присутствует в независимости от выбранного языка;
    • префикс кода присутствует на всех языках кроме одного, который был на проекте изначально.
    Собственно, третий вариант мы с Вами будем рассматривать в этом уроке. Суть его заключается в том, что в проекте выбирается язык, который считается языком по умолчанию. Для всех локализаций кроме вышеуказанной в URL обязательно должен добавляться код языка. Это справедливо, когда некоторые страницы сайта уже проиндексированы в локализации по умолчанию.

КОМЕНТАРІ • 31

  • @user-du5ki5fi9p
    @user-du5ki5fi9p 2 роки тому +5

    Спасибо за урок! Лучшее толковое видео по локализации с префиксами в Url. Очень просто и понятно, но есть одно изменение для Laravel 8:
    1) в классе Localization, метод должен быть статическим "public static function locales()"
    2) ну и конечно же в web.php "prefix" должен вести на "Localization", а не на "LocalizationService", те 'prefix' => Localization::language(),

  • @tandev713
    @tandev713 4 роки тому +3

    Благодарю, как раз стоит задача по многоязычности и с подобными урлами.
    Однозначно лайк!

  • @vasilnadiradze8638
    @vasilnadiradze8638 4 роки тому +1

    Viktor gavrilenko ! Tutorials Guru and Legend !!! ;))

  • @TimurMelnikov
    @TimurMelnikov 3 роки тому

    Спасибо!

  • @user-vu3uj4le3m
    @user-vu3uj4le3m 2 роки тому +1

    добрый день, Виктор. Каким образом правильно сделать редирект на ту страницу, на которой мы были, переключая язык?

  • @vasil-vasil
    @vasil-vasil 4 роки тому

    Решение ОК!

  • @TheBubaololo
    @TheBubaololo 2 роки тому

    и что юзер будет для каждой страницы префикс дописывать?

  • @lik_ua
    @lik_ua 2 роки тому

    а если нужно hreflang указать или добавить принудительно язык в роут? как быть?

  • @tifliskid222
    @tifliskid222 3 роки тому

    Спасибо большое за урок! Вопрос, что касается самого url, который надо прописать для переключения языка, не подскажите как правильно прописать

  • @back_to_life0
    @back_to_life0 10 місяців тому

    здесь не указано, что если сделать route:cache - то больше не будет работать локализация))) потому что динамические свойства умрут

  • @nick-test
    @nick-test Рік тому

    А если роуты в куче файлов? Не камильфо добавлять каждому эту обертку

  • @nicetv3247
    @nicetv3247 3 роки тому

    здравствуйте. я не как немогу переводит только одну слову month ago на laraclassified остальных все чётко переводил.

  • @raisa-reznichenko
    @raisa-reznichenko 3 роки тому

    Не работает. 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

  • @king_triton
    @king_triton Рік тому

    Не работает на 9 версии laravel!!!

  • @web6271
    @web6271 4 роки тому +2

    Спасибо за урок!
    только есть один вопрос
    получаеться что сейчас страницы tlaravel.loc/page/1 и tlaravel.loc/ru/page/1 будет выводить одно и тоже, что со стороны seo не очень хорошо
    как решить данную проблему?

    • @user-of4dc3rh5c
      @user-of4dc3rh5c 4 роки тому

      Здравствуйте!
      Для этого необходимо реализовать функционал, сохранения переводов для страниц. То есть, для одной и той же страницы, будут по сути различные тексты, каждый будет соответствовать одному языку.

    • @MaximumDamange
      @MaximumDamange 4 роки тому +3

      @@user-of4dc3rh5c наверно вопрос был в другом. нужно определять локаль по-умолчанию и делать 301 редирект.

    • @user-of4dc3rh5c
      @user-of4dc3rh5c 4 роки тому

      @@MaximumDamange А зачем радирект, если локаль определили из урла и на странице показывается контент в нужном переводе.

    • @web6271
      @web6271 4 роки тому +2

      @@user-of4dc3rh5c
      Чтоб не было дублей страниц
      если ты попадаешь на страницу tlaravel.loc/page/1 то происходил бы редирект на tlaravel.loc/ru/page/1

    • @user-kt8uj8wb5n
      @user-kt8uj8wb5n 4 роки тому +1

      @@web6271 да. Обычно для языка по умолчанию вообще не делают локали в урл

  • @---fq2kd
    @---fq2kd 4 роки тому

    в мультиязыном проекте?

  • @vasilnadiradze8638
    @vasilnadiradze8638 4 роки тому

    Xarasho bila bit tutorial o keshirovanie sql komandi

  • @raisa-reznichenko
    @raisa-reznichenko 3 роки тому

    Исправьте ошибку в слове "мультиязыном".

  • @NikitaKirilov
    @NikitaKirilov 3 роки тому

    Это решение работает для Laravel 8???

    • @NikitaKirilov
      @NikitaKirilov 3 роки тому +3

      Устал искать инфо. Поставил mcamara/laravel-localization

    • @-C0ns1an1ine-
      @-C0ns1an1ine- 2 роки тому

      Да.