3 namespace BookStack\App\Providers;
5 use BookStack\Translation\FileLoader;
6 use BookStack\Translation\MessageSelector;
7 use Illuminate\Translation\TranslationServiceProvider as BaseProvider;
8 use Illuminate\Translation\Translator;
10 class TranslationServiceProvider extends BaseProvider
13 * Register the service provider.
15 public function register(): void
17 $this->registerLoader();
19 // This is a tweak upon Laravel's based translation service registration to allow
20 // usage of a custom MessageSelector class
21 $this->app->singleton('translator', function ($app) {
22 $loader = $app['translation.loader'];
24 // When registering the translator component, we'll need to set the default
25 // locale as well as the fallback locale. So, we'll grab the application
26 // configuration so we can easily get both of these values from there.
27 $locale = $app['config']['app.locale'];
29 $trans = new Translator($loader, $locale);
30 $trans->setFallback($app['config']['app.fallback_locale']);
31 $trans->setSelector(new MessageSelector());
40 * Register the translation line loader.
41 * Overrides the default register action from Laravel so a custom loader can be used.
43 protected function registerLoader(): void
45 $this->app->singleton('translation.loader', function ($app) {
46 return new FileLoader($app['files'], $app['path.lang']);