我想用两种语言开发我的网站,并想在单击导航链接时更改语言。
控制器
SET @sql =
'SELECT UserId, (CONVERT([varchar](50), DECRYPTBYKEY(FirstName)) + '' '' + CONVERT([varchar](50), DECRYPTBYKEY(LastName))) AS [Userfullname] from [user] WHERE FkSupervisor in ('
+ @selectedSupervisorIds
+ ') AND IsActive = 1'
EXECUTE Sp_executesql
@sql
路线
<?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>
我在lang中的{{trans('home.Services')}}
和home.php
中创建了两个ja
,并在其中设置了语言
当我单击导航链接时,页面将转到en
。我不知道我在哪里犯错。我还将内核中间件设置为localhost/../locale/ja
,。谢谢您的帮助。
答案 0 :(得分:1)
在kernel.php > routeMiddleware
上添加它。
protected $routeMiddleware = [
//... other lines of code.
'locale' => \App\Http\Middleware\Locale::class,
];
并将视图更改为
<li class="nav-item">
<a class="nav-link" href="{{ route('set-locale', 'en') }}">English</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ route('set-locale', 'ja') }}">Japanese</a>
</li>
我不确定,这是否有问题,请将路由更改为,[只需添加'/'
。]
Route::get('/locale/{locale?}', array('as'=>'set-locale',
'uses'=>'LanguageController@setLocale'));