Skip to content

Instantly share code, notes, and snippets.

@leMaur
Last active November 14, 2024 16:41
Show Gist options
  • Save leMaur/df0a6381d1276326c02af70e07074650 to your computer and use it in GitHub Desktop.
Save leMaur/df0a6381d1276326c02af70e07074650 to your computer and use it in GitHub Desktop.
Middleware that extends Mcamara\Laravel-localization package functionalities. Set the locale LC_TIME for Carbon\Carbon to set the correctly datetime for each selected language. See comment for further details.
<?php
namespace App\Http\Middleware;
use Closure;
use Carbon\Carbon;
use Mcamara\LaravelLocalization\Middleware\LaravelLocalizationMiddlewareBase;
class LocalizeDatetime extends LaravelLocalizationMiddlewareBase
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// If the URL of the request is in exceptions.
if ($this->shouldIgnore($request)) {
return $next($request);
}
Carbon::setLocale(app('laravellocalization')->getCurrentLocale());
return $next($request);
}
}
@leMaur
Copy link
Author

leMaur commented Jul 9, 2017

How to use it:

This example use mcamara\laravel-localization package.

in your App\Http\Kernel.php add this line to the $routeMiddleware array

protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'localize' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,
    'localizationRedirect' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,
    'localeSessionRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class,
    'localeViewPath' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationViewPath::class,
    'localizeDatetime' => \App\Http\Middleware\LocalizeDatetime::class,
];

and finally in your routes\web.php

Route::group([
    'prefix' => Localization::setLocale(),
    'middleware' => [
        'localize',
        'localeSessionRedirect',
        'localizationRedirect',
        'localeViewPath',
        'localizeDatetime',
    ]
], function()
{
    /** ADD ALL LOCALIZED ROUTES INSIDE THIS GROUP **/
    Route::get('/', function () {
        return view('welcome');
    });

    /** your code here */
});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment