| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-18 00:56:55 +08:00
										 |  |  | namespace BookStack\App\Providers; | 
					
						
							| 
									
										
										
										
											2019-10-26 19:12:35 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | use BookStack\Translation\FileLoader; | 
					
						
							| 
									
										
										
										
											2023-01-17 00:54:53 +08:00
										 |  |  | use BookStack\Translation\MessageSelector; | 
					
						
							| 
									
										
										
										
											2019-10-26 19:12:35 +08:00
										 |  |  | use Illuminate\Translation\TranslationServiceProvider as BaseProvider; | 
					
						
							| 
									
										
										
										
											2023-01-17 00:54:53 +08:00
										 |  |  | use Illuminate\Translation\Translator; | 
					
						
							| 
									
										
										
										
											2019-10-26 19:12:35 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class TranslationServiceProvider extends BaseProvider | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2023-01-17 00:54:53 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Register the service provider. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function register() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $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; | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-26 19:12:35 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Register the translation line loader. | 
					
						
							|  |  |  |      * Overrides the default register action from Laravel so a custom loader can be used. | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2019-10-26 19:12:35 +08:00
										 |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected function registerLoader() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->app->singleton('translation.loader', function ($app) { | 
					
						
							|  |  |  |             return new FileLoader($app['files'], $app['path.lang']); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-03-08 06:24:05 +08:00
										 |  |  | } |