Index: widgets/misc/e-calendar-item.c
===================================================================
--- widgets/misc/e-calendar-item.c	（版本 34551）
+++ widgets/misc/e-calendar-item.c	（工作副本）
@@ -359,6 +359,17 @@
 }
 
 
+static char *
+get_day_text (int day_index)
+{
+	char buf[256];
+	struct tm weektm;
+	weektm.tm_wday = day_index;
+	strftime(buf, sizeof(buf), "%a", &weektm);
+	return g_locale_to_utf8(buf, -1, NULL, NULL, NULL);
+}
+
+
 static void
 e_calendar_item_init (ECalendarItem *calitem)
 {
@@ -411,9 +422,10 @@
 	calitem->time_callback_data = NULL;
 	calitem->time_callback_destroy = NULL;
 
-	/* Translators: These are the first characters of each day of the
-	   week, 'M' for 'Monday', 'T' for Tuesday etc. */
-	calitem->days = _("MTWTFSS");
+	int i;
+	for (i=0; i<7; i++) {
+		calitem->days[i] = get_day_text(i);
+	}
 
 	calitem->signal_emission_idle_id = 0;
 }
@@ -429,6 +441,11 @@
 	e_calendar_item_set_style_callback (calitem, NULL, NULL, NULL);
 	e_calendar_item_set_get_time_callback (calitem, NULL, NULL, NULL);
 
+	int i;
+	for (i=0; i<7; i++) {
+		g_free(calitem->days[i]);
+	}
+
 	if (calitem->styles) {
 		g_free (calitem->styles);
 		calitem->styles = NULL;
@@ -964,18 +981,7 @@
 static void
 layout_set_day_text (ECalendarItem *calitem, PangoLayout *layout, int day_index)
 {
-	char *day;
-	int char_size = 0;
-
-	day = g_utf8_offset_to_pointer (calitem->days, day_index);
-
-	/* we use strlen because we actually want to count bytes */
-	if (day_index == 6)
-		char_size = strlen (day);
-	else
-		char_size = strlen (day) - strlen (g_utf8_find_next_char (day, NULL));
-
-	pango_layout_set_text (layout, day, char_size);
+	pango_layout_set_text (layout, calitem->days[day_index], -1);
 }
 
 static void
@@ -1611,18 +1617,7 @@
 static void
 layout_set_day_text (ECalendarItem *calitem, PangoLayout *layout, int day_index)
 {
-	char *day;
-	int char_size = 0;
-
-	day = g_utf8_offset_to_pointer (calitem->days, day_index);
-
-	/* we use strlen because we actually want to count bytes */
-	if (day_index == 6)
-		char_size = strlen (day);
-	else
-		char_size = strlen (day) - strlen (g_utf8_find_next_char (day, NULL));
-
-	pango_layout_set_text (layout, day, char_size);
+	pango_layout_set_text (layout, calitem->days[day_index], -1);
 }
 
 static void
Index: widgets/misc/e-calendar-item.h
===================================================================
--- widgets/misc/e-calendar-item.h	（版本 34551）
+++ widgets/misc/e-calendar-item.h	（工作副本）
@@ -216,8 +216,8 @@
 	gint selection_real_start_month_offset;
 	gint selection_real_start_day;
 
-	/* The first character of each day of the week, e.g. 'MTWTFSS'. */
-	gchar *days;
+	/* A array of string pointers to hold day names (abbriviated to 2 chars) */
+	gchar *days[7];
 
 	/* Widths of the day characters. */
 	gint day_widths[7];
Index: calendar/gui/weekday-picker.c
===================================================================
--- calendar/gui/weekday-picker.c	（版本 34551）
+++ calendar/gui/weekday-picker.c	（工作副本）
@@ -315,20 +315,11 @@
 static char *
 get_day_text (int day_index)
 {
-	/* The first letter of each day of the week starting with Sunday */
-	const char *str = _("SMTWTFS");
-	char *day;
-	int char_size = 0;
-
-	day = g_utf8_offset_to_pointer (str, day_index);
-
-	/* we use strlen because we actually want to count bytes */
-	if (day_index == 6)
-		char_size = strlen (day);
-	else
-		char_size = strlen (day) - strlen (g_utf8_find_next_char (day, NULL));
-
-	return g_strndup (day, char_size);
+	char buf[256];
+	struct tm weektm;
+	weektm.tm_wday = day_index;
+	strftime(buf, sizeof(buf), "%a", &weektm);
+	return g_locale_to_utf8(buf, -1, NULL, NULL, NULL);
 }
 
 static void
