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