123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Translation\Model;
- use Magento\Framework\App\Filesystem\DirectoryList;
- use Magento\Framework\App\ObjectManager;
- use Magento\Translation\Model\Inline\File as TranslationFile;
- /**
- * A service for handling Translation config files
- */
- class FileManager
- {
- /**
- * File name of RequireJs inline translation config
- */
- const TRANSLATION_CONFIG_FILE_NAME = 'Magento_Translation/js/i18n-config.js';
- /**
- * @var \Magento\Framework\View\Asset\Repository
- */
- private $assetRepo;
- /**
- * @var \Magento\Framework\App\Filesystem\DirectoryList
- */
- private $directoryList;
- /**
- * @var \Magento\Framework\Filesystem\Driver\File
- */
- private $driverFile;
- /**
- * @var TranslationFile
- */
- private $translationFile;
- /**
- * @param \Magento\Framework\View\Asset\Repository $assetRepo
- * @param \Magento\Framework\App\Filesystem\DirectoryList $directoryList
- * @param \Magento\Framework\Filesystem\Driver\File $driverFile
- * @param TranslationFile $translationFile
- */
- public function __construct(
- \Magento\Framework\View\Asset\Repository $assetRepo,
- \Magento\Framework\App\Filesystem\DirectoryList $directoryList,
- \Magento\Framework\Filesystem\Driver\File $driverFile,
- \Magento\Translation\Model\Inline\File $translationFile = null
- ) {
- $this->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());
- }
- }
|