mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
186 lines
4.4 KiB
PHP
186 lines
4.4 KiB
PHP
<?php
|
|
|
|
namespace JoeDixon\Translation;
|
|
|
|
use Illuminate\Filesystem\Filesystem;
|
|
use Illuminate\Support\ServiceProvider;
|
|
use JoeDixon\Translation\Console\Commands\AddLanguageCommand;
|
|
use JoeDixon\Translation\Console\Commands\AddTranslationKeyCommand;
|
|
use JoeDixon\Translation\Console\Commands\ListLanguagesCommand;
|
|
use JoeDixon\Translation\Console\Commands\ListMissingTranslationKeys;
|
|
use JoeDixon\Translation\Console\Commands\SynchroniseMissingTranslationKeys;
|
|
use JoeDixon\Translation\Console\Commands\SynchroniseTranslationsCommand;
|
|
use JoeDixon\Translation\Drivers\Translation;
|
|
|
|
class TranslationServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Bootstrap the package services.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function boot()
|
|
{
|
|
$this->loadViews();
|
|
|
|
$this->registerRoutes();
|
|
|
|
$this->publishConfiguration();
|
|
|
|
$this->publishAssets();
|
|
|
|
$this->loadMigrations();
|
|
|
|
$this->loadTranslations();
|
|
|
|
$this->registerHelpers();
|
|
}
|
|
|
|
/**
|
|
* Register package bindings in the container.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function register()
|
|
{
|
|
$this->mergeConfiguration();
|
|
|
|
$this->registerCommands();
|
|
|
|
$this->registerContainerBindings();
|
|
}
|
|
|
|
/**
|
|
* Load and publish package views.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function loadViews()
|
|
{
|
|
$this->loadViewsFrom(__DIR__.'/../resources/views', 'translation');
|
|
|
|
$this->publishes([
|
|
__DIR__.'/../resources/views' => resource_path('views/vendor/translation'),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Register package routes.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function registerRoutes()
|
|
{
|
|
$this->loadRoutesFrom(__DIR__.'/../routes/web.php');
|
|
}
|
|
|
|
/**
|
|
* Publish package configuration.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function publishConfiguration()
|
|
{
|
|
$this->publishes([
|
|
__DIR__.'/../config/translation.php' => config_path('translation.php'),
|
|
], 'config');
|
|
}
|
|
|
|
/**
|
|
* Merge package configuration.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function mergeConfiguration()
|
|
{
|
|
$this->mergeConfigFrom(__DIR__.'/../config/translation.php', 'translation');
|
|
}
|
|
|
|
/**
|
|
* Publish package assets.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function publishAssets()
|
|
{
|
|
$this->publishes([
|
|
__DIR__.'/../public/assets' => public_path('vendor/translation'),
|
|
], 'assets');
|
|
}
|
|
|
|
/**
|
|
* Load package migrations.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function loadMigrations()
|
|
{
|
|
if (config('translation.driver') !== 'database') {
|
|
return;
|
|
}
|
|
|
|
$this->loadMigrationsFrom(__DIR__.'/../database/migrations');
|
|
}
|
|
|
|
/**
|
|
* Load package translations.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function loadTranslations()
|
|
{
|
|
$this->loadTranslationsFrom(__DIR__.'/../resources/lang', 'translation');
|
|
|
|
$this->publishes([
|
|
__DIR__.'/../resources/lang' => resource_path('lang/vendor/translation'),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Register package commands.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function registerCommands()
|
|
{
|
|
if ($this->app->runningInConsole()) {
|
|
$this->commands([
|
|
AddLanguageCommand::class,
|
|
AddTranslationKeyCommand::class,
|
|
ListLanguagesCommand::class,
|
|
ListMissingTranslationKeys::class,
|
|
SynchroniseMissingTranslationKeys::class,
|
|
SynchroniseTranslationsCommand::class,
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Register package helper functions.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function registerHelpers()
|
|
{
|
|
require __DIR__.'/../resources/helpers.php';
|
|
}
|
|
|
|
/**
|
|
* Register package bindings in the container.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function registerContainerBindings()
|
|
{
|
|
$this->app->singleton(Scanner::class, function () {
|
|
$config = $this->app['config']['translation'];
|
|
|
|
return new Scanner(new Filesystem(), $config['scan_paths'], $config['translation_methods']);
|
|
});
|
|
|
|
$this->app->singleton(Translation::class, function ($app) {
|
|
return (new TranslationManager($app, $app['config']['translation'], $app->make(Scanner::class)))->resolve();
|
|
});
|
|
}
|
|
}
|