namespace IlluminateTranslation;
use IlluminateSupportServiceProvider;
// namesapce
class TranslationServiceProvider extends ServiceProvider
{// son and father
protected $defer = true;// wether provider indicates
public function register()
{// register the service provider
$this->registerLoader();//set the register Loader
$this->app->singleton('translator', function ($app) {
$loader = $app['translation.loader'];// a singleton function
// 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'];
// 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.
$trans = new Translator($loader, $locale);//get a instance
$trans->setFallback($app['config']['app.fallback_locale']);// set Fall back
return $trans;// return this trans
});
}
protected function registerLoader()
{
$this->app->singleton('translation.loader', function ($app) {
return new FileLoader($app['files'], $app['path.lang']);
});// use a big wrap function
}// register loader
public function provides()
{
return ['translator', 'translation.loader'];
}// a static return
}



