В общем благодаря пакету mcamara/laravel-localization у меня получилось реализовать эту идею. Единственное что я все таки не смог до конца разобраться в сути этого пакета, поэтому думаю что моя реализация написана на коленке и не совсем соответствует его логике - но работает )).
Короче - качаем пакет, все по инструкции как написано, настраиваем нужные языки в файле config/laravellocalization.php
В роутах я написал так:
<?php
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/locale/{locale}', 'App\Http\Controllers\LanguagesController@changeLocale')->name('locale');
Route::group(
['prefix' => LaravelLocalization::setLocale()],
function(){
}
);
Route::get('/', function () { return view('home');})->name('index');
Route::get('/es', function () {App::setlocale('es'); return view('home');})->name('indexES');
Route::get('/ru', function () {App::setlocale('ru'); return view('home');})->name('indexRU');
Route::get('/home', function () {return view('home');})->name('home');
Route::get('/es/home', function () {App::setlocale('es'); return view('home');})->name('homeES');
Route::get('/ru/home', function () {App::setlocale('ru'); return view('home');})->name('homeRU');
По непонятным для меня причинам фасад App::setlocale() не передавал инфо, и был недоступен в группе этих роутов, поэтому мне пришлось их вынести (я думаю что это не правильно, но другого решения я не нашел). В инструкции написано что роуты которые переводятся надо указывать в группе, но как передать им там язык, я так и не понял (. Если кто то знает, напишите пожалуйста.
Ссылка для переключения языков:
href="{{ LaravelLocalization::getLocalizedURL(__('main.change_lang_link')) }}"
А вот все ссылки на другие страницы выглядят так:
href="{{LaravelLocalization::getLocalizedURL(__('main.set_lang'), 'home')}}"
Полет нормальный, страницы загружаются в нужных языках и возвращают 404 в случае установки неправильного языка (например если в ручную написать /br/home',)