Tagesnamen im Header (General)
Hallo
locale = de_DE.utf8 locale = de_DE locale = de_DE@euro locale = de
und bei welcher Konfiguration funktioniert "de" nicht?
Das ist eine Frage der Serverkonfiguration. Wenn für "de
" absolut nichts konfiguriert sein sollte, wird PHP auch nichts automatisch übersetzen können. Da ich nun ein paar Tests vollzogen habe, kann ich aber Entwarnung geben. Eine fehlende Konfiguration des Webspaces/Servers für de-irgendwas ist nicht die Ursache des Problems.
Der hiesige wie auch mein Webspace/Server akzeptieren gleich den ersten Eintrag des Arrays de_DE.utf8
, wie ein Testscript auf mylittleforum.net und auf projekt-mlf.de auch anzeigt. Der Quelltext ist folgender.
<?php require('../forum/modules/smarty/Smarty.class.php'); $smarty = new Smarty; $smarty->error_reporting = '0'; //'E_ALL & ~E_NOTICE'; $smarty->compile_dir = 'templates_c'; $smarty->config_overwrite = false; $smarty->config_booleanize = false; $language_file = '../forum/lang/german.lang'; $smarty->assign('language_file', $language_file); $smarty->configLoad($language_file, 'default'); $lang = $smarty->getConfigVars(); echo "<pre>Servereinstellung (pur): ". print_r(setlocale(LC_ALL, '0'), true) ."</pre>"; echo "<pre>Konfiguration: ". print_r($lang['locale'], true) ."</pre>"; echo "<pre>Servereinstellung (de-locale): ". print_r(setlocale(LC_ALL, $lang['locale']), true) ."</pre>"; ?>
Eine fehlerhafte/fehlende Konfiguration des Webspaces/Servers ist also nicht die Ursache.
Was meine neuen Schlüsse betrifft, sollte ich dazu sagen, dass auf www.projekt-mlf.de MLF immer noch in der Version 2.4.24 läuft, weil ich mit den Anpassungen meines Themes noch nicht soweit bin.
Anfangs war die Ausgabe von $lang
noch umfangreicher, weshalb mir die unterschiedliche Angabe der Datumsformate (mylittleforum.net (20220803.1): l, d.m.Y, H:i
, projekt-mlf.de (2.4.24): %A, %d.%m.%Y, %H:%M
) auffiel. Und da fiel es mir wie Schuppen aus den Haaren. Bis Version 2.4.24 benutzen wir die (mit PHP 8.1 als veraltet (deprecated) markierte) Funktion strftime
, die eine lokalisierte Ausgabe eines Datums erzeugt. Für die Version 20220508.1 (2.5.0) wechselten wir mit dem Pull Request #587 zur Funktion date
, die zur Formatierung die selben Schlüsselzeichen wie die Funktion date_format
benutzt.
Dummerweise schert sich date
nicht um locale
-Einstellungen. Allerdings bietet die Doku-Seite zu date auch eine Lösung an:
"Um Datumsangaben in anderen Sprachen auszugeben, kann IntlDateFormatter::format() statt date() verwendet werden."
Das sieht aber, zumindest auf den ersten Blick, sehr viel komplexer aus und hat zudem eine gänzlich andere Syntax für den Datumsformatierung.
Tschö, Auge
--
Trenne niemals Müll, denn er hat nur eine Silbe!