<?php declare(strict_types=1);

namespace App\Engine\Localization;


class TranslatorStaticProxy implements \Symfony\Contracts\Translation\TranslatorInterface
{

    private static ?self $instance = null;

    public function __construct(
        private readonly \Symfony\Contracts\Translation\TranslatorInterface $translator,
    ) {
        self::$instance = $this;
    }

    public static function getInstance(): ?TranslatorStaticProxy
    {
        if (!self::$instance) {
            throw new AccessingTranslatorBeforeInitializationException("K instanci translatoru nelze přístoupit před inicializací v containeru!");
        }

        return self::$instance;
    }

    public function trans(string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string
    {
        return $this->translator->trans($id, $parameters, $domain, $locale);
    }

    /**
     * @inheritDoc
     */
    public function getLocale(): string
    {
        return $this->translator->getLocale();
    }

}
