【发布时间】:2019-06-17 15:55:02
【问题描述】:
我想用两种语言开发我的网站,并想更改导航链接点击的语言。
控制器
<?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'));
中间件
<?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')}}
我在 ja 和 en 中创建了两个 home.php 并在此处设置语言
当我单击导航链接时,页面将转到 localhost/../locale/ja。我不知道我在哪里犯错。我还将内核中间件设置为 \App\Http\Middleware\Locale::class, 。提前感谢您的帮助。
【问题讨论】:
-
你可能是 kernel.php 的错误。可以肯定的是,在
$routeMiddleware上检查您是否添加了'locale' => \App\Http\Middleware\Locale::class, -
是的,我已经添加了
-
你说你在内核
$middleware上添加了它。它应该在$routeMiddlewere -
我在中间件上有 App\Http\Middleware\Locale::class 和你所说的 routemiddleware
-
从
$middleware数组中删除App\Http\Middleware\Locale::class,。只需在$routeMiddleware数组上添加'locale' => \App\Http\Middleware\Locale::class,
标签: laravel localization