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
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,
];
}