Avatar

Tagesnamen im Header (General)

by Auge ⌂, Wednesday, November 09, 2022, 12:10 (19 days ago) @ Micha

Hallo

Ja, default != current. Insofern muss die Zeile wie folgt aussehen.

$formatter = new IntlDateFormatter(setlocale(LC_ALL, $lang['locale']);

Ja, so ungefähr dachte ich mir das. Wobei ich mir die Frage stelle, worin das Problem besteht, einfach den aktuell in index.php in den Zeilen #62 und f durch setlocale gesetzten Wert zu benutzen (es gibt noch drei andere Stellen in index.php und posting.php, wo es um lokale Inhalte für den E-Mail-Versand und die Daily Actions geht, aber das sollte hier nicht relevant sein). Oder meinst du mit "default != current" etwas anderes?

Da die Festlegung für die Locale direkt nach dem einlesen der Einstellungen und Nutzereinstellungen erfolgt, sollte der Wert schon geeignet gesetzt sein. Er steht allerdings nicht als String in einer Variablen zur Verfügung, wie ich eigentlich vermutete. Das ließe sich aber auch zusätzlich machen.

Bevor ich hier wieder wirr rede, habe ich mein Testscript auf projekt-mlf.de angepasst. Die Änderungen betreffen nur den Abschnitt nach $lang = $smarty->getConfigVars();.

echo "<pre>Servereinstellung (servereigener Vorgabewert): ". print_r(setlocale(LC_ALL, '0'), true) ."</pre>";
echo "<pre>Konfiguration: ". print_r($lang['locale'], true) ."</pre>";
 
setlocale(LC_ALL, $lang['locale']);
echo "<pre>Servereinstellung (locale vorher gesetzt): ". print_r(setlocale(LC_ALL, '0'), true) ."</pre>";
 
$localeLocale = setlocale(LC_ALL, '0');
echo "<pre>Servereinstellung (locale aus Variable): ". print_r($localeLocale, true) ."</pre>";

Die Ausgabe:

Servereinstellung (servereigener Vorgabewert): C

Konfiguration: Array
(
    [0] => de_DE.utf8
    [1] => de_DE
    [2] => de_DE@euro
    [3] => de
)

Servereinstellung (locale vorher gesetzt): de_DE.utf8

Servereinstellung (locale aus Variable): de_DE.utf8

Mit setlocale(LC_ALL, '0') wird der aktuell gesetzte Wert für die Locale ausgegeben. Das ist C oder eben einer der Werte aus $lang['locale'].

Ohne jetzt deinen Code ausprobiert zu haben; wenn in deiner Funktion auch Zeitzonen berücksichtigt werden, passt das.


Wobei wir die Information zur Zeitzone bisher nicht bei der Formatierung berücksichtigt haben. Wird der $timestamp ggf. schon korrigiert übergeben?

Du hast recht. Bei der Formatierung selbst wird die Zeitzone nicht benötigt. Allerdings sehe ich nicht wirklich durch, was Alex da einstmals (Anfang 2010) gemacht hat. In main.inc.php wird im Block ab Zeile #62 die Zeitzone aus dem entsprechenden Session-Wert, aus den Forumseinstellungen oder als UTC in die Variable $forum_time_zone übernommen (wobei ich so langsam mal die zusätzliche Angabe der Zeitdifferenz infrage stellen möchte).

Die Variable $forum_time_zone wird im ganzen Projekt aber ausschließlich in der index.php in Zeile #71 an Smarty übergeben, wo sie ausschließlich dazu benutzt wird, in main.tpl im Seitenfuß angezeigt zu werden. Schon die Anzeige der Forumszeit im selben Seitenfuß wird, wie in index.php in Zeile #69 zu sehen ist, aus dem UTC-basierten Zeitstempel über die Zeitdifferenz und nicht mittels der Zeitzone errechnet. So geschieht das auch überall sonst im Forumsskript.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!


Complete thread:

 RSS Feed of thread