我正在尝试使用Laravel进行一些语言选择。
我有一个可行的解决方案,用户可以在其中更改语言:
Http / Middleware / Localization.php:
<?php
namespace App\Http\Middleware;
use Closure;
use Carbon\Carbon;
class Localization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ( \Session::has('locale')) {
\App::setLocale(\Session::get('locale'));
// You also can set the Carbon locale
Carbon::setLocale(\Session::get('locale'));
}
return $next($request);
}
}
链接:
<li><a href='locale/da'>Danish</a></li>
<li><a href='locale/en'>English</a></li>
此解决方案运行良好。但是,如果用户未登录,我想检查用户浏览器的语言,如果用户已登录,请在用户表字段“ lang”中检查语言。
我认为解决方案应如下所示: (我已经直接在视图中实现了这一点。)
不确定是否应在设置了语言环境的config / app.php中实现它。
'locale'=>'en',
@php
// If user is logged in
if (Auth::check())
{
// Get the user specific language
$locale = Auth::user()->lang;
// Set the language
App::setLocale($locale);
}
else {
$locale = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (!empty($locale)) {
$locale == "en";
}
if ( \Session::has('locale')) {
} else{
App::setLocale($locale);
}
}
@endphp