Skip to content

Commit 93ca363

Browse files
committed
#10378: Improved calculating version hash for the js-translation.json file
1 parent cc44db7 commit 93ca363

File tree

2 files changed

+81
-10
lines changed

2 files changed

+81
-10
lines changed

app/code/Magento/Translation/Model/FileManager.php

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
namespace Magento\Translation\Model;
77

88
use Magento\Framework\App\Filesystem\DirectoryList;
9+
use Magento\Framework\App\ObjectManager;
10+
use Magento\Translation\Model\Inline\File as TranslationFile;
911

1012
/**
1113
* A service for handling Translation config files
@@ -17,28 +19,42 @@ class FileManager
1719
*/
1820
const TRANSLATION_CONFIG_FILE_NAME = 'Magento_Translation/js/i18n-config.js';
1921

20-
/** @var \Magento\Framework\View\Asset\Repository */
22+
/**
23+
* @var \Magento\Framework\View\Asset\Repository
24+
*/
2125
private $assetRepo;
2226

23-
/** @var \Magento\Framework\App\Filesystem\DirectoryList */
27+
/**
28+
* @var \Magento\Framework\App\Filesystem\DirectoryList
29+
*/
2430
private $directoryList;
2531

26-
/** @var \Magento\Framework\Filesystem\Driver\File */
32+
/**
33+
* @var \Magento\Framework\Filesystem\Driver\File
34+
*/
2735
private $driverFile;
2836

37+
/**
38+
* @var TranslationFile
39+
*/
40+
private $translationFile;
41+
2942
/**
3043
* @param \Magento\Framework\View\Asset\Repository $assetRepo
31-
* @param \Magento\Framework\App\Filesystem\DirectoryList $directoryList,
32-
* @param \Magento\Framework\Filesystem\Driver\File $driverFile,
44+
* @param \Magento\Framework\App\Filesystem\DirectoryList $directoryList
45+
* @param \Magento\Framework\Filesystem\Driver\File $driverFile
46+
* @param TranslationFile $translationFile
3347
*/
3448
public function __construct(
3549
\Magento\Framework\View\Asset\Repository $assetRepo,
3650
\Magento\Framework\App\Filesystem\DirectoryList $directoryList,
37-
\Magento\Framework\Filesystem\Driver\File $driverFile
51+
\Magento\Framework\Filesystem\Driver\File $driverFile,
52+
\Magento\Translation\Model\Inline\File $translationFile = null
3853
) {
3954
$this->assetRepo = $assetRepo;
4055
$this->directoryList = $directoryList;
4156
$this->driverFile = $driverFile;
57+
$this->translationFile = $translationFile ?: ObjectManager::getInstance()->get(TranslationFile::class);
4258
}
4359

4460
/**
@@ -111,12 +127,11 @@ public function updateTranslationFileContent($content)
111127
public function getTranslationFileVersion()
112128
{
113129
$translationFile = $this->getTranslationFileFullPath();
114-
$translationFileHash = '';
115-
116-
if ($this->driverFile->isExists($translationFile)) {
117-
$translationFileHash = sha1_file($translationFile);
130+
if (!$this->driverFile->isExists($translationFile)) {
131+
$this->updateTranslationFileContent($this->translationFile->getTranslationFileContent());
118132
}
119133

134+
$translationFileHash = sha1_file($translationFile);
120135
return sha1($translationFileHash . $this->getTranslationFilePath());
121136
}
122137
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Translation\Model\Inline;
7+
8+
/**
9+
* Prepares content of inline translations file.
10+
*/
11+
class File
12+
{
13+
/**
14+
* @var \Magento\Framework\Translate\ResourceInterface
15+
*/
16+
private $translateResource;
17+
18+
/**
19+
* @var \Magento\Framework\Locale\ResolverInterface
20+
*/
21+
private $localeResolver;
22+
23+
/**
24+
* @var \Magento\Framework\Serialize\Serializer\Json
25+
*/
26+
private $jsonSerializer;
27+
28+
/**
29+
* Initialize dependencies
30+
*
31+
* @param \Magento\Framework\Translate\ResourceInterface $translateResource
32+
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
33+
* @param \Magento\Framework\Serialize\Serializer\Json $jsonSerializer
34+
*/
35+
public function __construct(
36+
\Magento\Framework\Translate\ResourceInterface $translateResource,
37+
\Magento\Framework\Locale\ResolverInterface $localeResolver,
38+
\Magento\Framework\Serialize\Serializer\Json $jsonSerializer
39+
) {
40+
$this->translateResource = $translateResource;
41+
$this->localeResolver = $localeResolver;
42+
$this->jsonSerializer = $jsonSerializer;
43+
}
44+
45+
/**
46+
* Generate translation file content for the current locale.
47+
*
48+
* @return string
49+
*/
50+
public function getTranslationFileContent()
51+
{
52+
$translations = $this->translateResource->getTranslationArray(null, $this->localeResolver->getLocale());
53+
$translations = $this->jsonSerializer->serialize($translations);
54+
return $translations;
55+
}
56+
}

0 commit comments

Comments
 (0)