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/. )