app->singleton('translation.loader', function ($app) { return new DatabaseTranslationLoader; }); // TranslationServiceProvider is deferred and re-binds translation.loader // when it resolves. We extend 'translator' to swap in our DB loader after // the translator instance is created. $this->app->extend('translator', function ($translator, $app) { $loader = new DatabaseTranslationLoader; $reflection = new \ReflectionProperty($translator, 'loader'); $reflection->setAccessible(true); $reflection->setValue($translator, $loader); return $translator; }); } /** * Bootstrap any application services. */ public function boot(): void { Gate::policy(Workspace::class, WorkspacePolicy::class); } }