/**
  * Save new messages
  *
  * @author Krzysztof Bednarczyk
  */
 public function onKernelTerminate(PostResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     if (!method_exists($this->translator, 'getCollectedMessages')) {
         return;
     }
     $messages = $this->translator->getCollectedMessages();
     if (empty($messages)) {
         return;
     }
     $languagesToClear = [];
     foreach ($messages as $message) {
         if (!in_array((int) $message['state'], [DataCollectorTranslator::MESSAGE_MISSING, DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK])) {
             continue;
         }
         if (!$this->manager->hasLocale($message['locale'])) {
             continue;
         }
         $language = $this->manager->getLanguage($message['locale']);
         $languagesToClear[$language->getId()] = $language;
         $this->manager->createTranslation($language, $message['id'], $message['domain']);
     }
     foreach ($languagesToClear as $language) {
         $this->manager->clearTranslationCache($language);
     }
 }
 /**
  * @author Krzysztof Bednarczyk
  * @param Language|null $language
  * @return $this|LanguageManager
  */
 public function clearTranslationCache(Language $language = null)
 {
     $cacheDir = $this->translator->getOptions()['cache_dir'];
     if (!file_exists($cacheDir)) {
         return $this;
     }
     $finder = (new \Symfony\Component\Finder\Finder())->in($cacheDir);
     if ($language) {
         $finder = $finder->contains(".{$language->getLocale()}.");
     }
     /** @var \SplFileInfo $file */
     foreach ($finder->files() as $file) {
         @unlink($file->getRealPath());
     }
     if ($language && $language->getAlias()) {
         return $this->clearTranslationCache($language->getAlias());
     }
     return $this;
 }