From acc4b87b584a48003796e18b7ed5959879a281af Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Tue, 25 Nov 2025 21:05:13 +0100 Subject: [PATCH] asdas --- config/fileload.php | 124 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 config/fileload.php diff --git a/config/fileload.php b/config/fileload.php new file mode 100644 index 0000000..2dc227a --- /dev/null +++ b/config/fileload.php @@ -0,0 +1,124 @@ + 0, + 'path' => '/', + 'domain' => '', + 'secure' => (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'), + 'httponly' => true, + 'samesite' => 'Lax', + ]); + + session_start(); + } +} + +// ----------------------------------------------------------- +// 1) Sprache bestimmen (vor dem Laden der JSON-Dateien!) +// ----------------------------------------------------------- +$lang = $_GET['lang'] ?? null; + +if (is_string($lang)) { + $lang = strtolower($lang); + if (!preg_match('/^[a-z]{2}$/', $lang)) { + $lang = null; + } +} else { + $lang = null; +} + +// ----------------------------------------------------------- +// 2) Verfügbare JSON-Sprachen erkennen +// ----------------------------------------------------------- +$i18nDir = __DIR__ . '/../public/assets/i18n'; +$langFiles = glob($i18nDir . '/*.json') ?: []; + +$availableLangs = []; + +// Alle vorhandenen JSONs einsammeln +foreach ($langFiles as $file) { + $json = json_decode(@file_get_contents($file), true); + if (!is_array($json) || !isset($json['meta'])) { + continue; + } + + $meta = $json['meta']; + $code = strtolower($meta['code'] ?? basename($file, '.json')); + + $availableLangs[$code] = [ + 'code' => $code, + 'label' => $meta['label'] ?? strtoupper($code), + 'flag' => $meta['flag'] ?? '🏳️', + ]; +} + +// Falls keine Sprachdateien gefunden wurden → Minimal-Fallback +if (empty($availableLangs)) { + $availableLangs = [ + 'en' => [ + 'code' => 'en', + 'label' => 'English', + 'flag' => '🇬🇧', + ], + ]; +} + +// Falls Sprache ungültig oder nicht in available → erste verfügbare Sprache wählen +if (!$lang || !isset($availableLangs[$lang])) { + // erste Sprache aus dem Array, ohne array_key_first (falls ältere PHP-Version) + $keys = array_keys($availableLangs); + $lang = $keys[0] ?? 'en'; +} + +// ----------------------------------------------------------- +// 3) Aktive Sprachdatei laden +// ----------------------------------------------------------- +$activeLangFile = $i18nDir . '/' . $lang . '.json'; +$activeLangData = []; + +if (is_readable($activeLangFile)) { + $json = json_decode(@file_get_contents($activeLangFile), true); + if (is_array($json)) { + $activeLangData = $json; + } +} + +// ----------------------------------------------------------- +// 4) Fallback-Sprache (EN) +// ----------------------------------------------------------- +$fallbackLangData = []; +$fallbackFile = $i18nDir . '/en.json'; + +if ($lang !== 'en' && is_readable($fallbackFile)) { + $json = json_decode(@file_get_contents($fallbackFile), true); + if (is_array($json)) { + $fallbackLangData = $json; + } +} + +// ----------------------------------------------------------- +// 5) Globale i18n-Struktur bereitstellen +// ----------------------------------------------------------- +$GLOBALS['lang'] = $lang; +$GLOBALS['availableLangs'] = $availableLangs; + +$GLOBALS['i18n'] = [ + 'current' => $activeLangData, + 'fallback' => $fallbackLangData, +]; + +// ----------------------------------------------------------- +// 6) Rest des Systems laden +// ----------------------------------------------------------- + +require_once __DIR__ . "/db.php"; +require_once __DIR__ . '/../src/functions.php';