【发布时间】:2020-12-19 20:33:39
【问题描述】:
我希望你是最好的。 我正在尝试在我的 Laravel 应用程序中创建多语言功能。 但我不知道如何在我的网络路由文件中插入 Auth::routes 以支持我的多语言。 此代码适用于我,但 Auth::routes 链接设置不正确。 该应用程序可以识别目标语言,但在 Auth::routes() 链接中不正确。 例如,所有页面都基于目标语言,但链接使用本地语言。 (目标是 en_us 但链接在 fa_IR)
Route::get('/', function ()
{
// echo "befpreRpikte".$request->cookie('language').'<br/>';
// return ('CookieInRoute\'/\''.request()->cookie('language'));
return redirect(App::getLocale().'/welcome');
})->middleware(CheckLanguage::class);
Route::get('/{locale}',function($locale)
{
return redirect($locale.'/welcome');
});
Route::get('{locale}/welcome',function($locale)
{
//echo('CookieInRoute\'/\''.request()->cookie('language'));
//die(App::getLocale());
return view('welcome');
})->middleware(CheckLanguage::class);
Route::group(['prefix' =>App::getLocale()], function () {
Auth::routes();
// Route::get(App::getLocale().'/login','HomeController@login');
//Route::get('{locale}/home','HomeController@index');
});
and my middle ware is:
public function handle($request, Closure $next)
{
//echo(var_dump(request()->cookie('language')));
//if(empty(request()->cookie('language')))
cookie()->queue('language',$this->checkUserIsoCode($request->path()),60);
App::setLocale($this->checkUserIsoCode($request->path()));
// dd(request()->cookie('language'));
return $next($request);
}
private function checkUserIsoCode($path)
{
// echo '<br/> <c> c</c></br>';
$available_locales=config('app.all_locales');
if($path==null || $path=="/")// => "/" in addressbar
{
try
{
$userLocale=\Location::get(request()->ip())->countryCode;
}
catch(Exception $e)
{
$userLocale="fa_IR";
}
}
else
$userLocale=$path[0];//locale =>/locale/address
foreach($available_locales as $locale)
{
if(strpos($locale,$userLocale)!==false)//if $locale contain userlocale
{
$userLocale=$locale;
break;
}
}
if(!in_array($userLocale,$available_locales,TRUE))
$userLocale=config('app.fallback_locale');
return $userLocale;
}
【问题讨论】:
标签: php laravel authentication routes