我的应用程序中有三种用户类型,如果用户类型为user,则验证消息应为英语,否则为admin或company,则应为日语。
在我的app.php
文件中,我这样做:
'locale' => 'en',
'fallback_locale' => 'ja',
在我的web.php
文件中:
Route::group(['middleware' => 'auth:user'], function () {
App::setLocale('en');
//user controllers
});
Route::group(['middleware' => 'auth:company'], function () {
App::setLocale('ja');
//company controllers
});
Route::group(['middleware' => 'auth:admin'], function () {
App::setLocale('ja');
//admin controllers
});
当我未将admin的语言环境设置为ja
时,用户的验证为英语,并且与admin和company相同。现在,我将admin和company的语言环境设置为ja
,用户的验证消息现在也是日语。这是验证文件的语言目录。
我真的没有办法将这一点删除,任何帮助都值得赞赏。我已经在网络上尝试了建议的解决方案,但没有任何效果。
答案 0 :(得分:2)
您可能应该添加某种语言切换器支持。
也许是这样的:https://github.com/akaunting/language
或者,如果您想要更简单的解决方案,只需创建小型中间件即可根据用户设置/访问角色/等等即时更改语言环境。
<?php
namespace App\Http\Middleware;
use Closure;
use App;
use Illuminate\Support\Facades\Auth;
class SetLocaleForAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
if(in_array(Auth::user()->email, ['admin@site.com','admin2@site.com','admin3@site.com'])) {
App::setLocale('ja');
}
}
return $next($request);
}
}
不要忘记将中间件添加到Kernel.php
中的Web组中
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\SetLocaleForAdmin::class,
...
],
];