如果在运行时更改语言环境,则不会翻译Laravel验证错误

时间:2019-03-24 10:37:57

标签: php laravel localization laravel-blade laravel-middleware

我的Laravel应用已将locale默认设置为英语(在config/app.php中)。有一个中间件可以检查每个请求并根据用户偏好设置区域设置。

下面是中间件代码

public function handle($request, Closure $next)
{
    $langs=['en', 'ar'];
    $appLang=app()->getLocale();
    if (request()->has('lang')) {
        $requestLang=request()->get('lang');
        if ($requestLang != $appLang && in_array($requestLang, $langs)) {
            app()->setLocale($requestLang);
        }
    } else {
        request()->merge(['lang' => $appLang]);
    }
    return $next($request);
}

语言环境是根据url参数lang设置的,例如。 http://localhost:8000/admin/departments?lang=ar

一切正常,除了验证错误。当区域设置设置为“ ar”(用config/app.php硬编码)时,无论中间件是否设置了区域设置,它都会显示已翻译的错误。但是,如果语言环境是由中间件设置的,则视图会被翻译,但是验证错误仍然是英语。

有人可以指出我要去哪里了。谢谢。

1 个答案:

答案 0 :(得分:0)

您是否使用json文件进行翻译?验证/身份验证文本位放在单独的文件中。检查 resources> lang 子文件夹。在lang子文件夹中,您可以创建其他其他子文件夹,例如“ en”或“ es”,或针对您想要的任何其他语言。