mirror of
https://github.com/Karaka-Management/oms-Exchange.git
synced 2026-01-21 05:18:40 +00:00
Add additional lang exp/imp support e.g. Navigation lang files
This commit is contained in:
parent
adf2ed31fa
commit
8fa0eef5b7
|
|
@ -133,18 +133,31 @@ final class Exporter extends ExporterAbstract
|
|||
}
|
||||
|
||||
$components = \explode('.', $language);
|
||||
if (\strlen($components[0]) === 2) {
|
||||
$len = \count($components);
|
||||
|
||||
if ($len === 3 || $len === 4) {
|
||||
// normal language file
|
||||
$supportedLanguages[] = $components[0];
|
||||
$array = include $themePath . $theme . '/Lang/' . $language;
|
||||
$array = \reset($array);
|
||||
if ($len === 3) {
|
||||
$supportedLanguages[] = $components[0];
|
||||
} elseif ($len === 4) {
|
||||
$supportedLanguages[] = $components[1];
|
||||
}
|
||||
|
||||
$array = include $themePath . $theme . '/Lang/' . $language;
|
||||
$array = \reset($array);
|
||||
|
||||
if ($array === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($array as $key => $value) {
|
||||
$languageArray[\trim($module, '/')][\trim($theme, '/')][$key][$components[0]] = $value;
|
||||
if ($len === 3) {
|
||||
foreach ($array as $key => $value) {
|
||||
$languageArray[\trim($module, '/')][\trim($theme, '/')][''][$key][$components[0]] = $value;
|
||||
}
|
||||
} elseif ($len === 4) {
|
||||
foreach ($array as $key => $value) {
|
||||
$languageArray[\trim($module, '/')][\trim($theme, '/')][$components[0]][$key][$components[1]] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -171,8 +184,8 @@ final class Exporter extends ExporterAbstract
|
|||
\preg_match_all('/(\$this\->getHtml\(\')([a-zA-Z:]+)(\'\))/', $template, $keys, \PREG_PATTERN_ORDER);
|
||||
|
||||
foreach ($keys[2] ?? [] as $key) {
|
||||
if (!isset($languageArray[\trim($module, '/')][\trim($theme, '/')][$key])) {
|
||||
$languageArray[\trim($module, '/')][\trim($theme, '/')][$key]['en'] = '';
|
||||
if (!isset($languageArray[''][\trim($module, '/')][\trim($theme, '/')][$key])) {
|
||||
$languageArray[\trim($module, '/')][\trim($theme, '/')][''][$key]['en'] = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -181,14 +194,16 @@ final class Exporter extends ExporterAbstract
|
|||
|
||||
$supportedLanguages = \array_unique($supportedLanguages);
|
||||
|
||||
$content = '"Module";"Theme";"ID";"' . \implode('";"', $supportedLanguages) . '"';
|
||||
$content = '"Module";"Theme";"File";"ID";"' . \implode('";"', $supportedLanguages) . '"';
|
||||
foreach ($languageArray as $module => $themes) {
|
||||
foreach ($themes as $theme => $keys) {
|
||||
foreach ($keys as $key => $value) {
|
||||
$content .= "\n\"" . $module . '";"' . $theme . '";"' . $key . '"';
|
||||
foreach ($themes as $theme => $files) {
|
||||
foreach ($files as $file => $keys) {
|
||||
foreach ($keys as $key => $value) {
|
||||
$content .= "\n\"" . $module . '";"' . $theme . '";"' . $file . '";"' . $key . '"';
|
||||
|
||||
foreach ($supportedLanguages as $language) {
|
||||
$content .= ';"' . ($value[$language] ?? '') . '"';
|
||||
foreach ($supportedLanguages as $language) {
|
||||
$content .= ';"' . ($value[$language] ?? '') . '"';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -131,14 +131,19 @@ final class Importer extends ImporterAbstract
|
|||
$header = \fgetcsv($fp, 0, ';', '"');
|
||||
|
||||
$languageArray = [];
|
||||
$supportedLanguages = \array_slice($header, 3);
|
||||
$supportedLanguages = \array_slice($header, 4);
|
||||
$keyLengths = [];
|
||||
|
||||
while(($line = \fgetcsv($fp, 0, ';', '"')) !== false) {
|
||||
$translations = \array_slice($line, 3);
|
||||
$translations = \array_slice($line, 4);
|
||||
|
||||
if (($keyLengths[\trim($line[0])][\trim($line[1])] ?? 0) < \strlen(\trim($line[2]))) {
|
||||
$keyLengths[\trim($line[0])][\trim($line[1])] = \strlen(\trim($line[2]));
|
||||
$line[0] = \trim($line[0]);
|
||||
$line[1] = \trim($line[1]);
|
||||
$line[2] = \trim($line[2]);
|
||||
$line[3] = \trim($line[3]);
|
||||
|
||||
if (($keyLengths[$line[0]][$line[1]][$line[2]] ?? 0) < \strlen($line[3])) {
|
||||
$keyLengths[$line[0]][$line[1]][$line[2]] = \strlen($line[3]);
|
||||
}
|
||||
|
||||
foreach ($supportedLanguages as $index => $language) {
|
||||
|
|
@ -146,7 +151,7 @@ final class Importer extends ImporterAbstract
|
|||
continue;
|
||||
}
|
||||
|
||||
$languageArray[\trim($line[0])][\trim($line[1])][\trim($line[2])][\trim($language)] = $translations[$index];
|
||||
$languageArray[$line[0]][$line[1]][$line[2]][$line[3]][\trim($language)] = $translations[$index];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -154,45 +159,53 @@ final class Importer extends ImporterAbstract
|
|||
\unlink($upload['file0']['path'] . '/' . $upload['file0']['filename']);
|
||||
|
||||
foreach ($languageArray as $module => $themes) {
|
||||
foreach ($themes as $theme => $keys) {
|
||||
foreach ($supportedLanguages as $language) {
|
||||
$langFile = __DIR__ . '/../../../' . $module . '/Theme/' . $theme . '/Lang/' . \trim($language) . '.lang.php';
|
||||
if (\is_file($langFile)) {
|
||||
\unlink($langFile);
|
||||
}
|
||||
foreach ($themes as $theme => $files) {
|
||||
foreach ($files as $file => $keys) {
|
||||
foreach ($supportedLanguages as $language) {
|
||||
$langFile = __DIR__ . '/../../../'
|
||||
. $module . '/Theme/'
|
||||
. $theme . '/Lang/'
|
||||
. ($file === '' ? '' : $file . '.')
|
||||
. \trim($language)
|
||||
. '.lang.php';
|
||||
|
||||
$fp = \fopen($langFile, 'w+');
|
||||
if ($fp === false) {
|
||||
continue;
|
||||
}
|
||||
if (\is_file($langFile)) {
|
||||
\unlink($langFile);
|
||||
}
|
||||
|
||||
\fwrite($fp,
|
||||
"<?php\n"
|
||||
. "/**\n"
|
||||
. " * Orange Management\n"
|
||||
. " *\n"
|
||||
. " * PHP Version 8.0\n"
|
||||
. " *\n"
|
||||
. " * @package Modules\Localization\n"
|
||||
. " * @copyright Dennis Eichhorn\n"
|
||||
. " * @license OMS License 1.0\n"
|
||||
. " * @version 1.0.0\n"
|
||||
. " * @link https://orange-management.org\n"
|
||||
. " */\n"
|
||||
. "declare(strict_types=1);\n\n"
|
||||
. "return ['" . $module . "' => [\n"
|
||||
);
|
||||
$fp = \fopen($langFile, 'w+');
|
||||
if ($fp === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
\ksort($keys);
|
||||
|
||||
foreach ($keys as $key => $values) {
|
||||
\fwrite($fp,
|
||||
" '" . $key . "'" . \str_repeat(' ', $keyLengths[$module][$theme] - \strlen($key)) . " => '" . \str_replace(['\'', '\\'], ['\\\'', '\\\\'], $values[$language] ?? '') . "',\n"
|
||||
"<?php\n"
|
||||
. "/**\n"
|
||||
. " * Orange Management\n"
|
||||
. " *\n"
|
||||
. " * PHP Version 8.0\n"
|
||||
. " *\n"
|
||||
. " * @package Modules\Localization\n"
|
||||
. " * @copyright Dennis Eichhorn\n"
|
||||
. " * @license OMS License 1.0\n"
|
||||
. " * @version 1.0.0\n"
|
||||
. " * @link https://orange-management.org\n"
|
||||
. " */\n"
|
||||
. "declare(strict_types=1);\n\n"
|
||||
. "return ['" . ($file === '' ? $module : $file) . "' => [\n"
|
||||
);
|
||||
}
|
||||
|
||||
\fwrite($fp, "]];\n");
|
||||
\fclose($fp);
|
||||
\ksort($keys);
|
||||
|
||||
foreach ($keys as $key => $values) {
|
||||
\fwrite($fp,
|
||||
" '" . $key . "'" . \str_repeat(' ', $keyLengths[$module][$theme][$file] - \strlen($key)) . " => '" . \str_replace(['\'', '\\'], ['\\\'', '\\\\'], $values[$language] ?? '') . "',\n"
|
||||
);
|
||||
}
|
||||
|
||||
\fwrite($fp, "]];\n");
|
||||
\fclose($fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user