assetRepo = $assetRepo; $this->directoryList = $directoryList; $this->driverFile = $driverFile; $this->translationFile = $translationFile ?: ObjectManager::getInstance()->get(TranslationFile::class); } /** * Create a view asset representing the requirejs config.config property for inline translation * * @return \Magento\Framework\View\Asset\File */ public function createTranslateConfigAsset() { return $this->assetRepo->createArbitrary( $this->assetRepo->getStaticViewFileContext()->getPath() . '/' . self::TRANSLATION_CONFIG_FILE_NAME, '' ); } /** * gets current js-translation.json timestamp * * @return string|void */ public function getTranslationFileTimestamp() { $translationFilePath = $this->getTranslationFileFullPath(); if ($this->driverFile->isExists($translationFilePath)) { $statArray = $this->driverFile->stat($translationFilePath); if (array_key_exists('mtime', $statArray)) { return $statArray['mtime']; } } } /** * @return string */ protected function getTranslationFileFullPath() { return $this->directoryList->getPath(DirectoryList::STATIC_VIEW) . \DIRECTORY_SEPARATOR . $this->assetRepo->getStaticViewFileContext()->getPath() . \DIRECTORY_SEPARATOR . Js\Config::DICTIONARY_FILE_NAME; } /** * @return string */ public function getTranslationFilePath() { return $this->assetRepo->getStaticViewFileContext()->getPath(); } /** * @param string $content * @return void */ public function updateTranslationFileContent($content) { $translationDir = $this->directoryList->getPath(DirectoryList::STATIC_VIEW) . \DIRECTORY_SEPARATOR . $this->assetRepo->getStaticViewFileContext()->getPath(); if (!$this->driverFile->isExists($this->getTranslationFileFullPath())) { $this->driverFile->createDirectory($translationDir); } $this->driverFile->filePutContents($this->getTranslationFileFullPath(), $content); } /** * Calculate translation file version hash. * * @return string */ public function getTranslationFileVersion() { $translationFile = $this->getTranslationFileFullPath(); $translationFileHash = ''; if ($this->driverFile->isExists($translationFile)) { $translationFileHash = sha1_file($translationFile); } return sha1($translationFileHash . $this->getTranslationFilePath()); } }