Передача языка локали через URL в Laravel
В предыдущем уроке мы жестко устанавливали язык локали прямо в контроллере. Вот как это было:
<?php
use Illuminate\Support\Facades\App;
class TestController extends Controller
{
public function index()
{
App::setLocale('ru'); // 'en' или 'ru'
return view('test.index');
}
}
?>
Теперь мы сделаем так, чтобы язык
можно было менять через URL.
Мы хотим, чтобы адрес /en/page
открывал страницу на английском,
а адрес /ru/page — на русском.
Для этого добавим в маршрут
переменный параметр lang.
Он будет принимать значение en
или ru:
<?php
Route::get('/{lang}/page', [TestController::class, 'index']);
?>
Теперь в контроллере метод index
должен принять этот параметр.
Передадим его в функцию
App::setLocale, которая и установит
нужный язык:
<?php
use Illuminate\Support\Facades\App;
class TestController extends Controller
{
public function index($lang)
{
App::setLocale($lang);
return view('test.index');
}
}
?>
Создайте три языка: английский,
русский и немецкий. Для каждого
языка сделайте в файлах локализации
сообщение с приветствием. Добавьте
в маршрут параметр для языка.
Проверьте, что при переходе
по адресам /en/about,
/ru/about и /de/about
сообщения выводятся на правильных
языках.