@dodiş#31362 URL segmenti, oturum değişkeni ya da kullanıcı üzerinde tutulan dil ile sağlanıyor. Mesela şöyle bir middleware ile uygulamanın dili değiştirilebilir:
public function handle($request, Closure $next)
{
$availableLocales = ['tr', 'en', 'de'];
// domain.com/en/ps5-game-console şeklinde URL segmenti olarak dil varsa öncelikle
// o uygulama dili kabul edilecek. Eğer yoksa oturumda locale şeklinde bir
// değişken var mı ona bakacak. O da yoksa varsayılan dili kullanacak:
$locale = in_array($request->segment(1), $availableLocales)
? $request->segment(1)
: $request->session()->get('locale', fn() => config('app.locale'));
// Burada ise kullanıcının kendi üstünde bir dil taşıyorsanız ve onun öncelikli
// kabul ediyorsanız uygulama dili olarak belirleyebilirsiniz:
if($request->user() && $request->user()->locale) {
$locale = $request->user()->locale;
}
App::setLocale($locale);
return $next($request);
}
Artık uygulamanın herhangi bir yerinde App::currentLocale();
şeklinde uygulama diline ulaşabilirsiniz. Kuyruğa atılan Job'larda ise uygulama dilini içeriye constructor parametresi ile alırsınız. Görev zamanlayıcı ile çalışan bir Task ise, içeride bir kullanıcıya ulaşıyorsa onun dilini; hiçbir şekilde dil alamıyorsa App::currentLocale();
ile uygulamanın varsayılan dilini kullanırsınız.