0, 'path' => '/', 'domain' => '', 'secure' => (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'), 'httponly' => true, 'samesite' => 'Lax', ]); session_start(); } } require_once __DIR__ . "/../config.php"; require_once __DIR__ . "/../db.php"; require_once __DIR__ . '/../src/functions.php'; // ----------------------------------------------------------- // 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'] ?? '🏳️', ]; } print_r($availableLangs); // 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 // -----------------------------------------------------------