The day names and month names are not stored in php, but in language localization files. In wordpress they are stored in the directory wp-content/languages. I have read somewhere of someone who wanted to change the display strings and made a custom localization file with a custom locale. You would then define that custom locale in your wp-config
define ('WPLANG', 'your_LOCALE');
To read up on the localization process, visit http://codex.wordpress.org/Translating_WordPress
To edit and compile localization files, I would recommend http://www.poedit.net/. It is cross platform and open source.
Basically you download a POT file from wordpress, open it in Poedit, make your desired 'translations' and save the file as your_LOCALE.po and as a your_LOCALE.mo.
Put the .po and .mo files in wp-content/languages (go ahead and create the directory if it is not there already).
I am not sure, but I think that any strings left without translation simply will show untranslated. So you would only need to write something for the strings you want to change. And it would be a good idea to repeat the open-POT-and-save-po process with every wordpress update. Your strings will not get changed or deleted when you update wordpress so it is not strictly necessary, but it is a good idea to keep translation files in sync with the wordpress version.
Unfortunately, specifying a locale in wp-config is site-wide. In PHP it is possible to temporarily switch locale with something like
$old_locale = setlocale(LC_ALL, "0");
setlocale(LC_ALL, "de_DE");
// now use the geman locale
setlocale(LC_ALL, $old_locale);
// now use the original locale
but I don't know how you would hook this in a wordpress widget (or even if it works in wordpress at all...). Thematic is excellent and comes with many hooks and filters, but the calendar widget is 1) a built in wordpress widget and 2) widgets by nature can be included anywhere so can be hard to target. If you can do without the 'widgetability', maybe you can call get_calendar() directly?
function my_calendar() {
// store the original locale
$old_locale = setlocale(LC_ALL, "0");
// change locale to a different one
setlocale(LC_ALL, "your_LOCALE");
get_calendar();
// restore the locale
setlocale(LC_ALL, $old_locale);
}
add_action('thematic_abovemainasides','my_calendar');
This would add the calendar at the top of the sidebar. I haven't tested this myself, but if I wanted to do what you want to do, this what I would try. Let me know if it works :-)