Php 如何根据用户类型设置验证语言Laravel

Php 如何根据用户类型设置验证语言Laravel,php,laravel-5,Php,Laravel 5,我的应用程序中有三种用户类型,如果用户类型是user,则验证消息应为英语,否则如果是admin或公司,则应为日语 在我的app.php文件中,我执行以下操作: 'locale' => 'en', 'fallback_locale' => 'ja', 在我的web.php文件中: Route::group(['middleware' => 'auth:user'], function () { App::setLocale('en'); //user contr

我的应用程序中有三种用户类型,如果用户类型是user,则验证消息应为英语,否则如果是admin或公司,则应为日语

在我的
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的locale语言设置为
ja
时,用户验证是英语的,管理员和公司也是如此。现在我将admin和company的locale设置为
ja
,用户的验证消息现在也是日语。这是验证文件语言目录


我真的没有办法把这一条删掉,任何帮助都是非常感谢的。我在网上尝试了建议的解决方案,但没有任何效果。

您可能应该添加某种语言切换支持

也许是这样:

或者,如果您想要更简单的解决方案,只需创建小型中间件,根据用户设置/访问角色等动态更改区域设置

<?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);
    }
}


任何对此有想法的人都可以吗?谢谢你的建议,但我已经试着复制了,但仍然不起作用(@EemJee为什么它不工作?)更新了答案,添加了简单的中间件示例,应该适合您。只需添加管理员检查。结果相同。@EemJee您是否从web.php中的routes中删除了setLocale?是的,我想我必须对此进行更深入的研究。
protected $middlewareGroups = [
   'web' => [
        ...
        \App\Http\Middleware\SetLocaleForAdmin::class,
        ...
    ],
];