]> BookStack Code Mirror - bookstack/blob - app/App/Providers/TranslationServiceProvider.php
Opensearch: Fixed XML declaration when php short tags enabled
[bookstack] / app / App / Providers / TranslationServiceProvider.php
1 <?php
2
3 namespace BookStack\App\Providers;
4
5 use BookStack\Translation\FileLoader;
6 use BookStack\Translation\MessageSelector;
7 use Illuminate\Translation\TranslationServiceProvider as BaseProvider;
8 use Illuminate\Translation\Translator;
9
10 class TranslationServiceProvider extends BaseProvider
11 {
12     /**
13      * Register the service provider.
14      */
15     public function register(): void
16     {
17         $this->registerLoader();
18
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'];
23
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'];
28
29             $trans = new Translator($loader, $locale);
30             $trans->setFallback($app['config']['app.fallback_locale']);
31             $trans->setSelector(new MessageSelector());
32
33             return $trans;
34         });
35     }
36
37
38
39     /**
40      * Register the translation line loader.
41      * Overrides the default register action from Laravel so a custom loader can be used.
42      */
43     protected function registerLoader(): void
44     {
45         $this->app->singleton('translation.loader', function ($app) {
46             return new FileLoader($app['files'], $app['path.lang']);
47         });
48     }
49 }