This commit is contained in:
2025-11-26 00:11:29 +01:00
parent 73fcba17d5
commit dd06e29266

View File

@@ -52,26 +52,54 @@ $availableLangs = [];
// Alle vorhandenen JSONs einsammeln // Alle vorhandenen JSONs einsammeln
foreach ($langFiles as $file) { foreach ($langFiles as $file) {
$json = json_decode(@file_get_contents($file), true); $raw = @file_get_contents($file);
if (!is_array($json) || !isset($json['meta'])) { if ($raw === false) {
error_log('i18n: Konnte Datei nicht lesen: ' . $file);
continue; continue;
} }
$meta = $json['meta']; $json = json_decode($raw, true);
if (!is_array($json)) {
// Option: nur Sprachen mit enabled=true anzeigen (Template-Dateien rausfiltern) error_log('i18n: Ungültiges JSON in ' . $file . ' :: ' . json_last_error_msg());
if (isset($meta['enabled']) && $meta['enabled'] === false) {
continue; continue;
} }
$code = isset($meta['code']) && is_string($meta['code']) // meta ist optional
? strtolower($meta['code']) $meta = $json['meta'] ?? [];
: strtolower(basename($file, '.json'));
// 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] = [ $availableLangs[$code] = [
'code' => $code, 'code' => $code,
'label' => $meta['label'] ?? strtoupper($code), 'label' => $label,
'flag' => $meta['flag'] ?? '🏳️', 'flag' => $flag,
]; ];
} }