UPDATE (January 2011): I have updated the attached script and added a command for generating a calendar for the entire year using various languages (note that only the language of the rendered calendar is changed, the script's interface itself will still be in English). A more thorough description of the script can be found by visiting http://chiselapp.com/user/saulgoode/repository/script-fu/wiki?name=sg-ca...
The script I've written adds two layers to an image which overlay the active layer with dates and a grid of lines producing a calendar for the specified month. It is not so much intended to create a complete calendar, but to be used as a tool in creating calendars. The command appears in the menus as "Filters->Render->Calendar..."
The options presented in the dialog are:
* Month - the month to be used
* Year - the year to be used
* Sunday first - if checked then Sunday is the first day of the week, otherwise Monday
* Font - the font to be used
* Fontsize - The size of the numbers used for the dates. 100% will use the largest possible
* Right justify - If checked then the date will be right-justified in a field two characters wide
* Border width - determines how thick the lines of the grid will be (can be "0" for no grid)
* Border color - color used for grid (note: FG color is used for the text)
* Date position - the alignment of the date number within its box
The month and year are not generated on the image; they should be added to the image manually if desired. For reference, the month and year appear in the layer names of the newly created layers.
EDIT: When called from within Script-fu, the script will return a list containing the "dates" layerID and the "grid" layerID.
EDIT2: I have updated the script and added a "Layout" option which offers the following treatments of the dates:
* Allow 6 weeks (resizing text for optimal fit)
* Force 6 weeks (use six rows of weeks in all cases, even for a 4-week February)
* Wrap week 6 to week 1 (the approach proposed by wbool)
* Wrap week 6 to week 5 (and if needed compressing two days into a single cell)