From dd06e292668c5fd249e8c045172f8685d4a6010d Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Wed, 26 Nov 2025 00:11:29 +0100 Subject: [PATCH] language --- config/fileload.php | 50 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/config/fileload.php b/config/fileload.php index 1211e09..064ee07 100644 --- a/config/fileload.php +++ b/config/fileload.php @@ -52,26 +52,54 @@ $availableLangs = []; // Alle vorhandenen JSONs einsammeln foreach ($langFiles as $file) { - $json = json_decode(@file_get_contents($file), true); - if (!is_array($json) || !isset($json['meta'])) { + $raw = @file_get_contents($file); + if ($raw === false) { + error_log('i18n: Konnte Datei nicht lesen: ' . $file); continue; } - $meta = $json['meta']; - - // Option: nur Sprachen mit enabled=true anzeigen (Template-Dateien rausfiltern) - if (isset($meta['enabled']) && $meta['enabled'] === false) { + $json = json_decode($raw, true); + if (!is_array($json)) { + error_log('i18n: Ungültiges JSON in ' . $file . ' :: ' . json_last_error_msg()); continue; } - $code = isset($meta['code']) && is_string($meta['code']) - ? strtolower($meta['code']) - : strtolower(basename($file, '.json')); + // meta ist optional + $meta = $json['meta'] ?? []; + + // Option: nur Sprachen mit enabled=false ausblenden + if (array_key_exists('enabled', $meta) && $meta['enabled'] === false) { + continue; + } + + // Sprachcode bestimmen + $code = strtolower($meta['code'] ?? basename($file, '.json')); + + // Nur 2-Buchstaben-Codes zulassen (de, en, fr, it, ...) + if (!preg_match('/^[a-z]{2}$/', $code)) { + // Sonderdatei (z.B. template.json) ignorieren + continue; + } + + // Label + $label = $meta['label'] ?? strtoupper($code); + + // Default-Flag nach Code + $defaultFlag = '🏳️'; + switch ($code) { + case 'de': $defaultFlag = '🇩🇪'; break; + case 'en': $defaultFlag = '🇬🇧'; break; + case 'fr': $defaultFlag = '🇫🇷'; break; + case 'it': $defaultFlag = '🇮🇹'; break; + } + + // Flag aus meta oder Default + $flag = $meta['flag'] ?? $defaultFlag; $availableLangs[$code] = [ 'code' => $code, - 'label' => $meta['label'] ?? strtoupper($code), - 'flag' => $meta['flag'] ?? '🏳️', + 'label' => $label, + 'flag' => $flag, ]; }