Weblog - kronn.de

Kalendarium

WordPress ist schnell übersetzt. Was man nicht über die config.php erledigt, muss man an zwei bis drei Stellen anpassen, wie Perun bereits „beschrieben hat“:http://www.perun.net/wiki/WordpressAnpassungen. So, eigentlich gibt es jetzt nichts mehr zu tun. Also: Kaffee holen, zurücklehnen und das frisch übersetzte Weblog bewundern.

Doch Moment! Was ist das denn? Der Kalendar beginnt mit Sonntag? Vielleicht ist es ja nur eine Macke von mir, aber meine Woche beginnt immer Montags. Samstag und Sonntag heißen doch nicht ohne Grund Wochenende. Das umzustellen ist leider nicht so ganz trivial. Aber es geht, wie ich nach einiger Suche „erfahren habe“:http://www.wasab.dk/morten/blog/archives/2004/05/20/wordpress-and-i18n.

h3. WordPress und die Internationalisierung

Die Lösung liegt darin , die Kalenderfunktion get_calendar() etwas zu verändern. In der Datei /wp-includes/template-functions-general.php ist — bei mir in Zeile 309 — eben diese Funktion definiert. Die tatsächliche Ausgabe des Kalendars wird aber erst am Ende der Funktion in Angriff genommen, bei mir steht in Zeile 456 der Kommentar // See how much we should pad in the beginning. Direkt nach dem Kommentar wird der Abstand vor dem ersten Tag des Monats berechnet. Da wir alle Spalten um eins nach links schieben wollen, muss hier 1 abgezogen werden.

vorher
$pad = intval(date('w', $unixmonth));
nachher
$pad = intval(date('w', $unixmonth)) - 1;

Danach werden die einzelnen Tage des Monats mittels einer (for) Schleife und mehreren (if-then) Prüfungen auf Tabellenzellen verteilt. Wichtig ist für uns der Zeilenwechsel, der am Ende der Schleife geprüft wird. Da es nicht mehr nach Samstag (Wochentag 6), sondern Sonntag (Wochentag 0) ein Zeilenende geben soll, müssen wir das ändern:

vorher
if (6 == date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear)))
nachher
if (0 == date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear)))

Nun wird der Abstand nach dem letzten Tag des Monats berechnet, damit alle Zeilen gleich lang sind. Da wir den Anfang um eins nach links gezogen haben und die einzelnen Zeilen entsprechend um eins verlängert haben (es sollen ja weiterhin 7 Tage pro Woche sein), müssen wir am Ende einen „leeren“ Tag anhängen. Dafür verändern wir dieses direkt nach der Schleife zu findende Codesegment:

vorher
$pad = 7 - date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear));
nachher
$pad = 8 - date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear));

Zu guter Letzt muss jetzt nur noch die Beschriftung des Kalender anpasst werden, damit die Wochentage auch richtig benannt sind. Dies ist recht leicht, es muss nur eine Zeile verschoben werden. Die fragliche Zeile ist in der Datei wp-includes/locale.php schieben wir die Zeile mit der Wertzuweisung $weekday[0] (sunday) ans Ende der Liste, also nach die Zuweisung $weekday[6] (saturday). Das sieht dann so aus:

nachher
$weekday[6] = __('Saturday');
$weekday[0] = __('Sunday');

Wenn alles so wie bei mir funktioniert, sollte der Kalendar jetzt auf den europäischen Wochenanfangsmontag zugeschnitten sein. Wer außerdem die Wochentage mit zwei statt nur einem Buchstaben gekennzeichnet haben möchte, sollte den Kalender mit get_calendar('2') aufrufen.

(Der Kern dieses Artikels ist eine leicht ergänzte und teilweise recht freie Übersetzung eines Artikels von „Morten Frederiksen“:http://www.wasab.dk/morten/. )

Abgelegt in: Code
Veröffentlicht am 09.10.2004 um 09:00
Dauerhafter Link zu "Kalendarium"

Diese Internetseite wurde von Wordpress zusammenebastelt und besteht aus geprüftem XHTML und CSS.
Das hat viele Vorteile.

Weitere Seiten mit ähnlichen Vorteilen preisen gutes Webdesign an oder enthalten Texte.
So ist das Leben eben.
© Kronn/2003-2005

Mein Server hat, nebenbei gesagt, 0,296 Sekunden benötigt, das hier zu fabrizieren.
War aber nicht böse gemeint.


Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /var/www/K1054131198/docroot/kronn.de/etc/counter/counter.php:61 Stack trace: #0 /var/www/K1054131198/docroot/kronn.de/weblog/wp-content/themes/kronn/footer.php(19): include() #1 /var/www/K1054131198/docroot/kronn.de/weblog/wp-includes/template.php(688): require_once('/var/www/K10541...') #2 /var/www/K1054131198/docroot/kronn.de/weblog/wp-includes/template.php(647): load_template('/var/www/K10541...', true) #3 /var/www/K1054131198/docroot/kronn.de/weblog/wp-includes/general-template.php(76): locate_template(Array, true) #4 /var/www/K1054131198/docroot/kronn.de/weblog/wp-content/themes/kronn/index.php(38): get_footer() #5 /var/www/K1054131198/docroot/kronn.de/weblog/wp-includes/template-loader.php(74): include('/var/www/K10541...') #6 /var/www/K1054131198/docroot/kronn.de/weblog/wp-blog-header.php(19): require_once('/var/www/K10541...') #7 /var/www/K1054131198/docroot/kronn.de/weblog/index.php(17): require('/var/www/K10541...') #8 {main} in /var/www/K1054131198/docroot/kronn.de/etc/counter/counter.php on line 61