私はlaravel 5.3フレームワークを使用し、ミドルウェアを使って言語をチェックし、リダイレクトは正確でローカライズされています。私の質問は、クッキーに選択した言語を保存することをお勧めしますか?だから、毎回ユーザーを選択した言語にリダイレクトできますか?パフォーマンスにもいいですか...多言語ウェブサイト、言語操作で動作しますか?
私がApp::getLocale()
と呼んでいる瞬間、正しい言語が得られます。
私は一般的にこのように正しいことを知りたいですか?
私はlaravel 5.3フレームワークを使用し、ミドルウェアを使って言語をチェックし、リダイレクトは正確でローカライズされています。私の質問は、クッキーに選択した言語を保存することをお勧めしますか?だから、毎回ユーザーを選択した言語にリダイレクトできますか?パフォーマンスにもいいですか...多言語ウェブサイト、言語操作で動作しますか?
私がApp::getLocale()
と呼んでいる瞬間、正しい言語が得られます。
私は一般的にこのように正しいことを知りたいですか?
私は、リクエストごとにセッションに言語を設定/確認するために、このミドルウェアを使用します。
<?php
namespace App\Http\Middleware;
use App;
use Auth;
use Config;
use Session;
use Closure;
class SetLocale
{
public function handle($request, Closure $next)
{
// If the session doesn't have already a locale
if (!Session::has('locale')) {
// Set the logged in user language
if (Auth::check() && Auth::user()->lang->code) {
Session::put('locale', Auth::user()->lang->code);
} else {
// Else get the http header language and set it
$requestLanguage = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (App\Lang::where('code', $requestLanguage)->exists()) {
Session::put('locale', $requestLanguage);
} else {
// If none of the above worked use the app deafult language
Session::put('locale', Config::get('app.locale'));
}
}
}
// Set the output locale as app locale
App::setLocale(Session::get('locale'));
return $next($request);
}
}
希望これはあなたを助けます。単純なものについては
、あなたもこのコードを試すことができます。..
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;
class SetLocale
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$default = config('app.locale');
// 2. retrieve selected locale if exist (otherwise return the default)
$locale = Session::get('locale', $default);
// 3. set the locale
App::setLocale($locale);
return $next($request);
}
}
これを行うことのない「正しい」方法はありません。しかし、ユーザーの設定をクッキーに保存することは容認でき、多くのサイトで行うことができます。あなたはセッションでそれを保存することができますが、それが設定された方法によっては、サイトを再訪するときに持続しないことがあります。はい、これは問題ありません。 – Andy