50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace BookStack\App\Providers;
 | |
| 
 | |
| use BookStack\Translation\FileLoader;
 | |
| use BookStack\Translation\MessageSelector;
 | |
| use Illuminate\Translation\TranslationServiceProvider as BaseProvider;
 | |
| use Illuminate\Translation\Translator;
 | |
| 
 | |
| class TranslationServiceProvider extends BaseProvider
 | |
| {
 | |
|     /**
 | |
|      * Register the service provider.
 | |
|      */
 | |
|     public function register(): void
 | |
|     {
 | |
|         $this->registerLoader();
 | |
| 
 | |
|         // This is a tweak upon Laravel's based translation service registration to allow
 | |
|         // usage of a custom MessageSelector class
 | |
|         $this->app->singleton('translator', function ($app) {
 | |
|             $loader = $app['translation.loader'];
 | |
| 
 | |
|             // When registering the translator component, we'll need to set the default
 | |
|             // locale as well as the fallback locale. So, we'll grab the application
 | |
|             // configuration so we can easily get both of these values from there.
 | |
|             $locale = $app['config']['app.locale'];
 | |
| 
 | |
|             $trans = new Translator($loader, $locale);
 | |
|             $trans->setFallback($app['config']['app.fallback_locale']);
 | |
|             $trans->setSelector(new MessageSelector());
 | |
| 
 | |
|             return $trans;
 | |
|         });
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * Register the translation line loader.
 | |
|      * Overrides the default register action from Laravel so a custom loader can be used.
 | |
|      */
 | |
|     protected function registerLoader(): void
 | |
|     {
 | |
|         $this->app->singleton('translation.loader', function ($app) {
 | |
|             return new FileLoader($app['files'], $app['path.lang']);
 | |
|         });
 | |
|     }
 | |
| }
 |