Как переключаться между языками в laravell

#php #laravel #laravel-5 #laravel-blade #lang

Вопрос:

Я новичок в laravell и хотел бы понять, как лучше всего переключаться между двумя языками.

Мой сайт использует только два языка. Я хочу создать простой переключатель языков. Вот мой HTML ->, который должен отображать язык, на который я хочу переключиться. Не показывать текущий язык.

Например. Если я нахожусь на www.test.com/en мой html говорит

             <a class="lang-switch">German</a>
 

Поэтому, когда я нажимаю на него, я приземляюсь на

www.test.com/de

И теперь мой html должен сказать

                 <a class="lang-switch">English</a>
 

Вот как я выполняю свою языковую маршрутизацию.

 Route::get('/{locale?}', function ($locale = null) {
    if (isset($locale) amp;amp; in_array($locale, config('app.available_locales'))) {
        app()->setLocale($locale);
    }

    return view('home');
});

Route::get('/{locale?}/contact/', function ($locale = null) {

    if (isset($locale) amp;amp; in_array($locale, config('app.available_locales'))) {
        app()->setLocale($locale);
    }

    return view('contact');
});
 

Мне нужен этот переключатель для работы на обоих веб-сайтах, так как это статическая панель навигации.

Я регистрирую свои локали в своем app.php файле

         'available_locales' => [
        'English' => 'en',
        'German' => 'de',
    ],
 

Я создал языковой контроллер, но я не уверен, как его правильно реализовать или использовать.

     class LanguageController extends Controller
    {
      public function switchLang($lang)
        {
          if (array_key_exists($lang, Config::get('languages'))) {
             Session::put('applocale', $lang);
          }
          return Redirect::back();
        }
    }
 

Ответ №1:

app()->setLocale("de") чтобы задать язык приложения

app()->getLocale() чтобы получить язык приложения

возможно, вам потребуется проверить документацию laravel для получения подробного описания

https://laravel.com/docs/8.x/localization