use \RecursiveDirectoryIterator;
use \SplFileInfo;
-class Translate {
+class Translate
+{
protected $_paths = [];
protected $_extensions = ['php', 'phtml'];
protected $_toTranslate = [];
protected static $_parsed = [];
- public function __construct() {
+ public function __construct()
+ {
}
- public function addPath($path, $sectionLabel = null) {
+ public function addPath($path, $sectionLabel = null)
+ {
if (null === $sectionLabel) {
$this->_paths[] = $path;
} else {
}
}
- public function clearPaths() {
+ public function clearPaths()
+ {
$this->_paths = [];
$this->_toTranslate = [];
}
- public function setExtensions(array $extensions) {
+ public function setExtensions(array $extensions)
+ {
$this->_extensions = $extensions;
}
- public function addExtension($extension) {
+ public function addExtension($extension)
+ {
$this->_extensions[] = $extension;
}
- public function parseFiles() {
+ public function parseFiles()
+ {
$this->_extensions = array_unique($this->_extensions);
$this->_paths = array_unique($this->_paths);
+
foreach ($this->_paths as $sectionLabel => $path) {
if (!isset($this->_toTranslate[$sectionLabel])) {
$this->_toTranslate[$sectionLabel] = [];
}
- if (isset(static::$_parsed[$path])) {
- $found = static::$_parsed[$path];
- } else {
-
- start_measure('Get translate hash ' . $path);
- $cacheKey = 'translate_path_' . sha1($path . '//' . Files::dirmtime($path, true, $this->_extensions));
- stop_measure('Get translate hash ' . $path);
- $found = cache()->remember($cacheKey, 3600, function () use ($path) {
- start_measure('Parse path for translations ' . $path);
- $res = [];
- $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
- foreach ($iterator as $p) {
- if ($p->isFile() && in_array($p->getExtension(), $this->_extensions)) {
- $res = array_merge($res, static::extractTextsToTranslate($p));
- }
+
+ start_measure('Get translate hash ' . $path);
+ $cacheKey = 'translate_path_' . sha1($path . '--' . print_r($this->_extensions, true) . '//' . Files::dirmtime($path, true, $this->_extensions) . '*');
+ stop_measure('Get translate hash ' . $path);
+ $found = cache()->remember($cacheKey, 3600, function () use ($path) {
+
+ start_measure('Parse path for translations ' . $path);
+ $res = [];
+ $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
+ foreach ($iterator as $p) {
+ if ($p->isFile() && in_array($p->getExtension(), $this->_extensions)) {
+ $res = array_merge($res, static::extractTextsToTranslate($p));
}
- stop_measure('Parse path for translations ' . $path);
- return $res;
- });
- static::$_parsed[$path] = $found;
- }
+ }
+ stop_measure('Parse path for translations ' . $path);
+ return $res;
+ });
+
$this->_toTranslate[$sectionLabel] = array_merge($this->_toTranslate[$sectionLabel], $found);
}
}
- public static function extractTextsToTranslate(SplFileInfo $file) {
+ public static function extractTextsToTranslate(SplFileInfo $file)
+ {
if (!$file->isFile() || !$file->isReadable()) {
return [];
}
});
}
- public function hasSomethingToTranslate() {
+ public function hasSomethingToTranslate()
+ {
return count($this->_toTranslate) > 0;
}
*
* @return array
*/
- public function getStringToTranslate() {
+ public function getStringToTranslate()
+ {
return $this->_toTranslate;
}
- public static function saveTranslations($data, $path) {
+ public static function saveTranslations($data, $path)
+ {
file_put_contents($path, '<?php return ' . var_export($data, true) . ';');
}