language
This commit is contained in:
@@ -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,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user