TranslationServiceProvider.php
TLDR
This file is the implementation of the TranslationServiceProvider
class in the Illuminate\Translation namespace. It extends the ServiceProvider
class and implements the DeferrableProvider
interface. It is responsible for registering the translation service provider and the translation line loader.
Methods
register
This method is responsible for registering the translation service provider. It registers the loader and sets up the translator with the default and fallback locales.
registerLoader
This method is responsible for registering the translation line loader. It creates a new instance of the FileLoader
class and binds it into the container.
provides
This method returns an array of services provided by the provider: translator
and translation.loader
.
<?php
namespace Illuminate\Translation;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider;
class TranslationServiceProvider extends ServiceProvider implements DeferrableProvider
{
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->registerLoader();
$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->getLocale();
$trans = new Translator($loader, $locale);
$trans->setFallback($app->getFallbackLocale());
return $trans;
});
}
/**
* Register the translation line loader.
*
* @return void
*/
protected function registerLoader()
{
$this->app->singleton('translation.loader', function ($app) {
return new FileLoader($app['files'], [__DIR__.'/lang', $app['path.lang']]);
});
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return ['translator', 'translation.loader'];
}
}