Your IP : 216.73.216.79


Current Path : /var/www/html/dynaweb-starter/plugin/dynaweb-translation/src/
Upload File :
Current File : /var/www/html/dynaweb-starter/plugin/dynaweb-translation/src/TranslationManagerProvider.php

<?php

namespace Dynaweb\DynawebTranslation;

use Exception;
use Illuminate\Support\Facades\Validator;
use Dynaweb\DynawebTranslation\Commands\SynchronizeTranslationsCommand;
use Dynaweb\DynawebTranslation\Resources\LanguageLineResource;
use Spatie\LaravelPackageTools\Package;
use Spatie\LaravelPackageTools\PackageServiceProvider;

class TranslationManagerProvider extends PackageServiceProvider
{
    /**
     * The resources that the plugin registers.
     *
     * @var array|string[]
     */
    protected array $resources = [
        LanguageLineResource::class,
    ];

    /**
     * Configure the Translation Manager package.
     */
    public function configurePackage(Package $package): void
    {
        $package->name('translation-manager')
            ->hasCommand(SynchronizeTranslationsCommand::class)
            ->hasViews()
            ->hasConfigFile()
            ->hasRoute('web')
            ->hasTranslations();
    }

    /**
     * Boot the service provider.
     *
     * @return void
     */
    public function packageBooted()
    {
        parent::packageBooted();

        $this->verifyConfig();
        $this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'translation-manager');
    }

    /**
     * Verify that the package and application configuration files have the required values.
     *
     * @return void
     *
     * @throws Exception
     */
    private function verifyConfig()
    {
        $packageConfig = config('translation-manager');
        $appConfig = config('app');

        $packageValidator = Validator::make($packageConfig, [
            'available_locales' => ['required', 'array', 'min:1'],
            'disable_key_and_group_editing' => ['required', 'boolean'],
            'language_switcher' => ['required', 'boolean'],
            'navigation_group' => ['nullable', 'string'],
        ]);

        $appValidator = Validator::make($appConfig, [
            'locale' => ['required', 'string'],
            'fallback_locale' => ['required', 'string'],
        ]);

        if ($packageValidator->fails() || $appValidator->fails()) {
            $messages = $packageValidator->errors()->merge($appValidator->errors());

            throw new Exception('Config file is not valid. ' . $messages->first());
        }
    }
}