Переключатель языка локализации Laravel с использованием аргумента передачи currentRouteName

#laravel-5 #localization

#laravel-5 #локализация

Вопрос:

У меня возникла проблема с переключателем языка при попытке выполнить маршрут с более чем одним параметром

Я получаю следующее сообщение об ошибке

     Missing required parameters for [Route: client.edit] [URI: {language}/client/{id}/edit].
  

в заголовке, имеющем кодовый маршрут переключателя::currentRouteName()

           <ul class="dropdown-menu" role="menu">
            <li><a href="{{ route(Route::currentRouteName(),'en') }}">EN</a></li>
            <li class="divider"></li>
            <li><a href="{{ route(Route::currentRouteName(),'ar') }}">AR</a></li>
          </ul>
  

Я попробовал приведенный ниже код, он не работает

             <?php if(isset(request()->id)) { ?>
                <li><a href="{{ route(Route::currentRouteName(),'en',request()->id) }}">EN</a></li>
                <li class="divider"></li>
                <li><a href="{{ route(Route::currentRouteName(),'ar',request()->id) }}">AR</a></li>             
            <?php } else {  ?>
            <li><a href="{{ route(Route::currentRouteName(),'en') }}">EN</a></li>
            <li class="divider"></li>
            <li><a href="{{ route(Route::currentRouteName(),'ar') }}">AR</a></li>
            <?php } ?>
  

Ответ №1:


У меня возникает такой вопрос из-за того, что каждый раз, когда мы используем некоторые маршруты, где нужно отправлять 1 и более параметров (я не говорю о `language`), таких как `{id}`, `{category}` или что-то еще, например, в вашем маршруте: `/ client /{id} /edit` — такая ситуация может быть в значительной степени передана, но без собственной многоязычной реализации.

По правде говоря, я пытался использовать несколько вариантов с промежуточным программным обеспечением, ServiceProviders и другими, но лучший способ, который я понимаю, — это использовать готовое решение с поддержкой и продвигаться вперед для достижения целей разработчиков.

Вот почему я рекомендую вам использовать этот пакет (mcamara / laravel-localization). Они уже создали классные функции, такие как локализация маршрутов, стандартная поддержка многих стран и некоторые функции, которые могут быть полезны в будущем.

Кроме того, вам нужно будет отредактировать текущие скрипты, чтобы удалить старую локализацию, созданную вами или кем-то другим, и следовать инструкциям. Надеюсь, вам понравится!