i18nPath = __DIR__ . '/ignore'; } public function dump(array $i18n) { foreach ($i18n as $language => $content) { $filename = $this->i18nPath . DIRECTORY_SEPARATOR . $language . '.php'; file_put_contents($filename, $this->format($content)); } } public function load() { $i18n = array(); $files = new DirectoryIterator($this->i18nPath); foreach ($files as $file) { if (!$file->isFile()) { continue; } $i18n[$file->getBasename('.php')] = (include $file->getPathname()); } return $i18n; } /** * Format an array of translation * * It takes an array of translation and format it to be dumped in a * translation file. The array is first converted to a string then some * formatting regexes are applied to match the original content. * * @param array $translation * @return string */ private function format($translation) { $translation = var_export(($translation), true); $patterns = array( '/array \(/', '/=>\s*array/', '/ {2}/', '/\d+ => /', ); $replacements = array( 'array(', '=> array', "\t", // Double quoting is mandatory to have a tab instead of the \t string '', ); $translation = preg_replace($patterns, $replacements, $translation); // Double quoting is mandatory to have new lines instead of \n strings return sprintf("