Я хочу разработать свой сайт на двух языках и изменить язык, нажав навигационную ссылку.
Контроллер
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Input;
use App;
use Lang;
class LanguageController extends Controller
{
public function setLocale($locale='en')
{
if (!in_array($locale, ['en', 'ja'])) {
$locale = 'en';
}
Session::put('locale', $locale);
redirect()->back();
}
}
Маршруты
Route::get('locale/{locale?}', array('as'=>'set-locale',
'uses'=>'LanguageController@setLocale'));
Middleware
<?php
namespace App\Http\Middleware;
use Closure;
use Session;
use Config;
use App;
class Locale
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$locale=Session::get('locale', Config::get('app.locale'));
App()->setLocale($locale);
return $next($request);
}
}
Просмотры
<li class="nav-item">
<a class="nav-link" href="{{ url('/locale/en') }}">English</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ url('/locale/ja') }}">Japanese</a>
</li>
вот как я использую языковой ключ
{{trans('home.Services')}}
, где я создал два home.php
в обоих ja
и en
в lang и установил там язык
когда я нажимаю навигационную ссылку, страница просто переходит на localhost/../locale/ja
. Я не знаю, где я делаю ошибку. Я также установил промежуточное ПО ядра как \App\Http\Middleware\Locale::class
,. заранее спасибо за помощь.