Язык сайта по URL или субдомену

Локализация по URL

Сначала надо указать, в каком месте будет указываться текущий язык сайта.

# routes/web.php

Route::get('/{lang}/news', 'NewsController@index');

Через код выше можно обращаться к следующим страницам:

  • /ru/news
  • /en/news

Вместо {lang} можно подставить любой код языка. Также можно указать только поддерживаемые языки.

# routes/web.php

Route::get('/{lang}/news', 'NewsController@index')->where('lang', 'ru|en');

Строка «ru|en» означает, что вместо {lang} может быть значение «ru» или «en».

В контроллере текущий язык сайта устанавливается через метод App::setLocale().

# app/Http/Controllers/NewsController.php

use App;
// …

public function index($lang)
{
    // установить текущий язык
    App::setLocale($lang);
}

Локализация по субдомену

Определять язык по субдомену можно через метод Route::domain().

# routes/web.php

Route::domain('{lang}.example.com')->group(function(){
    Route::get('/', 'NewsController@index');
});

В контроллере текущий язык сайта устанавливается через метод App::setLocale().

# app/Http/Controllers/NewsController.php

use App;
// …

public function index($lang)
{
    // установить текущий язык
    App::setLocale($lang);
}