laravel 5.8 语言本地化在我的项目中不起作用
laravel 5.8 language localization not working in my project
我之前在另一个项目中进行过此本地化,但是我在管理中间件中更改了这个项目以在仪表板中为用户授予权限。
该项目适用于阿拉伯语和英语两种语言,它在管理员网站上运行良好
但是在管理员中我不知道我的代码有什么问题。
现在本地化不起作用
这是我的路线:
Route::namespace('admin')->group(function (){
Route::group(['middleware'=> ['web','admin']], function (){
Route::prefix('admin-123')->group(function (){
Route::get('locale/{locale}', function ($locale){
\Illuminate\Support\Facades\Session::put('locale', $locale);
return redirect()->back();
});
这是我的中间件:
<?php
namespace App\Http\Middleware;
use App\user_permission_group;
use Closure;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\DB;
use \Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Auth;
class admin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(!auth()->check()){
return redirect('login');
}
if(Auth::user()->admin > 2)
{
return redirect('/');
}
$url = Request::fullUrl();
$lang = explode('admin-123/locale/', $url);
// dd($lang[1]);
if (isset($lang[1]) && $lang[1] !='')
{
App::setLocale($lang[1]);
// Session::put('locale', $lang[1]);
}
$admin = explode('admin-123', $url);
$permission = explode('/', $admin[1]);
if (isset($permission[1]) && $permission[1] !='' && $permission[1] != 'locale')
{
if (Request::is('admin-123/' . $permission[1] .'/*')) {
$permissions = DB::table('permission_group_details')->select('group_id')->where('permission', $permission[1])->get();
if ($permissions->count() > 0)
{
foreach ($permissions as $per)
{
$gr_id[] = $per->group_id;
}
$grid = collect($gr_id);
$users = user_permission_group::where('user_id', Auth::user()->id)->whereIn('group_id', $grid)->first();
if (!isset($users)){ return redirect()->back(); }
$permission_route = DB::table('permission_group_details')->select('permission')->where('group_id' , $users->group_id)->first();
if (!isset($permission_route) && $permission_route =='')
{
return redirect()->back();
}
}
else{
return redirect()->back();
}
}
}
return $next($request);
}
}
这是我的 blade :
@if(\Illuminate\Support\Facades\App::isLocale('en'))
@php
$lang = 'English';
$pull_right = '';
$pull_left = 'pull-right';
$rtl ='';
$title = 'title';
$currency = 'EGP';
$pull = 'pull-left';
@endphp
@else
@php
$lang = 'العربية';
$pull_right = 'pull-right';
$pull_left = 'pull-left';
$rtl ='rtl';
$title = 'title_ar';
$currency = 'جنيه';
$pull = 'pull-right';
@endphp
@endif
<li class="dropdown dropdown-small">
<a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><span class="value">{{ $lang }} </span><b class="caret"></b></a>
<ul class="dropdown-menu" style="padding: 0.5rem 1.5rem !important; margin: 0.125rem 5px 0 !important;">
<li><a href="{{ url('admin-123/locale/en') }}">English</a></li>
<li><a href="{{ url('admin-123/locale/ar') }}">العربية</a></li>
</ul>
</li>
请帮忙..
感谢大家
您需要添加中间件语言并编写此代码:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Config;
class language
{
public function handle($request, Closure $next)
{
$raw_locale = $request->session()->get('locale');
if (in_array($raw_locale, Config::get('app.locales'))) {
$locale = $raw_locale;
}
else $locale = Config::get('app.locale');
App::setLocale($locale);
return $next($request);
}
}
并在内核中添加这一行
'language' => \App\Http\Middleware\language::class,
并加入config.app
'locale' => 'ar',
'locales' => ['ar', 'en'],
在路线中:
<li><a href="{{ route('language.change','en') }}">English</a></li>
<li><a href="{{ route('language.change','ar') }}">العربية</a></li>
在途中
Route::group(['middleware' => ['admin', 'language']], function () {
Route::get('setlocale/{locale}', function ($locale) {
if (in_array($locale, \Config::get('app.locales'))) { session(['locale' => $locale]); }
return redirect()->back();
})->name('language.change');
});
我之前在另一个项目中进行过此本地化,但是我在管理中间件中更改了这个项目以在仪表板中为用户授予权限。 该项目适用于阿拉伯语和英语两种语言,它在管理员网站上运行良好 但是在管理员中我不知道我的代码有什么问题。
现在本地化不起作用
这是我的路线:
Route::namespace('admin')->group(function (){
Route::group(['middleware'=> ['web','admin']], function (){
Route::prefix('admin-123')->group(function (){
Route::get('locale/{locale}', function ($locale){
\Illuminate\Support\Facades\Session::put('locale', $locale);
return redirect()->back();
});
这是我的中间件:
<?php
namespace App\Http\Middleware;
use App\user_permission_group;
use Closure;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\DB;
use \Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Auth;
class admin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(!auth()->check()){
return redirect('login');
}
if(Auth::user()->admin > 2)
{
return redirect('/');
}
$url = Request::fullUrl();
$lang = explode('admin-123/locale/', $url);
// dd($lang[1]);
if (isset($lang[1]) && $lang[1] !='')
{
App::setLocale($lang[1]);
// Session::put('locale', $lang[1]);
}
$admin = explode('admin-123', $url);
$permission = explode('/', $admin[1]);
if (isset($permission[1]) && $permission[1] !='' && $permission[1] != 'locale')
{
if (Request::is('admin-123/' . $permission[1] .'/*')) {
$permissions = DB::table('permission_group_details')->select('group_id')->where('permission', $permission[1])->get();
if ($permissions->count() > 0)
{
foreach ($permissions as $per)
{
$gr_id[] = $per->group_id;
}
$grid = collect($gr_id);
$users = user_permission_group::where('user_id', Auth::user()->id)->whereIn('group_id', $grid)->first();
if (!isset($users)){ return redirect()->back(); }
$permission_route = DB::table('permission_group_details')->select('permission')->where('group_id' , $users->group_id)->first();
if (!isset($permission_route) && $permission_route =='')
{
return redirect()->back();
}
}
else{
return redirect()->back();
}
}
}
return $next($request);
}
}
这是我的 blade :
@if(\Illuminate\Support\Facades\App::isLocale('en'))
@php
$lang = 'English';
$pull_right = '';
$pull_left = 'pull-right';
$rtl ='';
$title = 'title';
$currency = 'EGP';
$pull = 'pull-left';
@endphp
@else
@php
$lang = 'العربية';
$pull_right = 'pull-right';
$pull_left = 'pull-left';
$rtl ='rtl';
$title = 'title_ar';
$currency = 'جنيه';
$pull = 'pull-right';
@endphp
@endif
<li class="dropdown dropdown-small">
<a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><span class="value">{{ $lang }} </span><b class="caret"></b></a>
<ul class="dropdown-menu" style="padding: 0.5rem 1.5rem !important; margin: 0.125rem 5px 0 !important;">
<li><a href="{{ url('admin-123/locale/en') }}">English</a></li>
<li><a href="{{ url('admin-123/locale/ar') }}">العربية</a></li>
</ul>
</li>
请帮忙.. 感谢大家
您需要添加中间件语言并编写此代码:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Config;
class language
{
public function handle($request, Closure $next)
{
$raw_locale = $request->session()->get('locale');
if (in_array($raw_locale, Config::get('app.locales'))) {
$locale = $raw_locale;
}
else $locale = Config::get('app.locale');
App::setLocale($locale);
return $next($request);
}
}
并在内核中添加这一行
'language' => \App\Http\Middleware\language::class,
并加入config.app
'locale' => 'ar',
'locales' => ['ar', 'en'],
在路线中:
<li><a href="{{ route('language.change','en') }}">English</a></li>
<li><a href="{{ route('language.change','ar') }}">العربية</a></li>
在途中
Route::group(['middleware' => ['admin', 'language']], function () {
Route::get('setlocale/{locale}', function ($locale) {
if (in_array($locale, \Config::get('app.locales'))) { session(['locale' => $locale]); }
return redirect()->back();
})->name('language.change');
});