Avatar

Tagesnamen im Header (General)

by Auge ⌂, Tuesday, November 08, 2022, 20:35 (533 days ago) @ Micha

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!


Complete thread:

 RSS Feed of thread