【发布时间】:2019-03-24 10:37:57
【问题描述】:
我的 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 中时,无论中间件设置的语言环境如何,它都会显示翻译错误。但是如果区域设置是由中间件设置的,视图会被翻译,但验证错误仍然是英文。
谁能指出我哪里出错了。谢谢。
【问题讨论】:
标签: php laravel localization laravel-blade laravel-middleware