* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\FrameworkBundle\CacheWarmer; use Psr\Container\ContainerInterface; use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerInterface; use Symfony\Component\HttpKernel\CacheWarmer\WarmableInterface; use Symfony\Contracts\Service\ServiceSubscriberInterface; use Symfony\Contracts\Translation\TranslatorInterface; /** * Generates the catalogues for translations. * * @author Xavier Leune * * @final since Symfony 7.1 */ class TranslationsCacheWarmer implements CacheWarmerInterface, ServiceSubscriberInterface { private TranslatorInterface $translator; /** * As this cache warmer is optional, dependencies should be lazy-loaded, that's why a container should be injected. */ public function __construct( private ContainerInterface $container, ) { } public function warmUp(string $cacheDir, ?string $buildDir = null): array { $this->translator ??= $this->container->get('translator'); if ($this->translator instanceof WarmableInterface) { return $this->translator->warmUp($cacheDir, $buildDir); } return []; } public function isOptional(): bool { return true; } public static function getSubscribedServices(): array { return [ 'translator' => TranslatorInterface::class, ]; } }