Skip to content

Instantly share code, notes, and snippets.

@Gummibeer
Created October 8, 2019 15:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Gummibeer/6dbe8bef75f521c6ca3be1f3b3e46d28 to your computer and use it in GitHub Desktop.
Save Gummibeer/6dbe8bef75f521c6ca3be1f3b3e46d28 to your computer and use it in GitHub Desktop.
set all locales if app locale changes
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class Localized
{
/**
* @param Request $request
* @param Closure $next
*
* @return RedirectResponse|mixed
*/
public function handle(Request $request, Closure $next)
{
$locale = $request->route('language');
if (! in_array($locale, config('app.locales'))) {
// do something if the locale is unknown `app.locales` is a custom config value
}
app()->setLocale($locale);
return $next($request);
}
}
<?php
namespace App\Listeners;
use Carbon\Carbon;
use Illuminate\Foundation\Events\LocaleUpdated;
use Illuminate\Support\Facades\URL;
class SetAppLocale
{
public function handle(LocaleUpdated $event): void
{
setlocale(LC_ALL, $event->locale);
URL::defaults([
'language' => $event->locale,
]);
Carbon::setLocale($event->locale);
}
}
<?php
namespace App\Providers;
use App\Listeners\SetAppLocale;
use Illuminate\Foundation\Events\LocaleUpdated;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
LocaleUpdated::class => [
SetAppLocale::class,
],
];
}
<?php
Route::group([
'middleware' => ['localized'],
'prefix' => '{language}',
], function (): void {
// your localized routes
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment