I prefer to use headers for that task.
Create new middleware and check it for all requests.
namespace App\Http\Middleware;
use Closure;
class Localization
{
protected const ALLOWED_LOCALIZATIONS = ['en', 'es', 'ru'];
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$localization = $request->header('Accept-Language');
$localization = in_array($localization, self::ALLOWED_LOCALIZATIONS, true) ? $localization : 'en';
app()->setLocale($localization);
return $next($request);
}
}
You can choose your own type of localization like en
or en_US
or whatever.
Then just add header to all your requests like: Accept-Language: es