static void _monthly_append_when(Recurrence *r, GString *buf) { GDate date = recurrenceGetDate(r); if (recurrenceGetPeriodType(r) == PERIOD_LAST_WEEKDAY) { gchar day_name_buf[abbrev_day_name_bufsize]; gnc_dow_abbrev(day_name_buf, abbrev_day_name_bufsize, g_date_get_weekday(&date) % 7); /* translators: %s is an already-localized form of the day of the week. */ g_string_append_printf(buf, _("last %s"), day_name_buf); } else if (recurrenceGetPeriodType(r) == PERIOD_NTH_WEEKDAY) { int week = 0; int day_of_month_index = 0; const char *numerals[] = {N_("1st"), N_("2nd"), N_("3rd"), N_("4th")}; gchar day_name_buf[abbrev_day_name_bufsize]; gnc_dow_abbrev(day_name_buf, abbrev_day_name_bufsize, g_date_get_weekday(&date) % 7); day_of_month_index = g_date_get_day(&date) - 1; week = day_of_month_index / 7 > 3 ? 3 : day_of_month_index / 7; if (week > 0 && day_of_month_index % 7 == 0) --week; /* translators: %s is the string 1st, 2nd, 3rd and so on, and * %s is an already-localized form of the day of the week. */ g_string_append_printf(buf, _("%s %s"), _(numerals[week]), day_name_buf); } else { /* translators: %u is the day of month */ g_string_append_printf(buf, "%u", g_date_get_day(&date)); } }
static void _weekly_list_to_compact_string(GList *rs, GString *buf) { int dow_idx; char dow_present_bits = 0; int multiplier = -1; for (; rs != NULL; rs = rs->next) { Recurrence *r = (Recurrence*)rs->data; GDate date = recurrenceGetDate(r); GDateWeekday dow = g_date_get_weekday(&date); if (dow == G_DATE_BAD_WEEKDAY) { g_critical("bad weekday pretty-printing recurrence"); continue; } dow_present_bits |= (1 << (dow % 7)); // there's not necessarily a single multiplier, but for all intents // and purposes this will be fine. multiplier = recurrenceGetMultiplier(r); } g_string_printf(buf, "%s", _("Weekly")); if (multiplier > 1) { /* translators: %u is the recurrence multipler, i.e. this event should occur every %u'th week. */ g_string_append_printf(buf, _(" (x%u)"), multiplier); } g_string_append_printf(buf, ": "); // @@fixme: this is only Sunday-started weeks. :/ for (dow_idx = 0; dow_idx < 7; dow_idx++) { if ((dow_present_bits & (1 << dow_idx)) != 0) { gchar dbuf[10]; gnc_dow_abbrev(dbuf, 10, dow_idx); g_string_append_unichar(buf, g_utf8_get_char(dbuf)); } else { g_string_append_printf(buf, "-"); } } }
static void _monthly_append_when(Recurrence *r, GString *buf) { GDate date = recurrenceGetDate(r); if (recurrenceGetPeriodType(r) == PERIOD_LAST_WEEKDAY) { gchar day_name_buf[abbrev_day_name_bufsize]; gnc_dow_abbrev(day_name_buf, abbrev_day_name_bufsize, g_date_get_weekday(&date) % 7); /* translators: %s is an already-localized form of the day of the week. */ g_string_append_printf(buf, _("last %s"), day_name_buf); } else { /* translators: %u is the day of month */ g_string_append_printf(buf, "%u", g_date_get_day(&date)); } }