GDateTime: don't use separate strings for upper/lowercase am/pm

We can just as well change the case ourselves.
This commit is contained in:
Matthias Clasen 2011-08-21 20:45:57 -04:00
parent 414c8ce532
commit 2282036b5d

View File

@ -145,15 +145,11 @@ struct _GDateTime
#define JULIAN_YEAR(d) ((d)->julian / 365.25) #define JULIAN_YEAR(d) ((d)->julian / 365.25)
#define DAYS_PER_PERIOD (G_GINT64_CONSTANT (2914695)) #define DAYS_PER_PERIOD (G_GINT64_CONSTANT (2914695))
#define GET_AMPM(d,l) ((g_date_time_get_hour (d) < 12) \ #define GET_AMPM(d) ((g_date_time_get_hour (d) < 12) \
/* Translators: 'before midday' indicator */ \ /* Translators: 'before midday' indicator */ \
? (l ? C_("GDateTime", "am") \ ? C_("GDateTime", "am") \
/* Translators: 'before midday' indicator */ \
: C_("GDateTime", "AM")) \
/* Translators: 'after midday' indicator */ \ /* Translators: 'after midday' indicator */ \
: (l ? C_("GDateTime", "pm") \ : C_("GDateTime", "pm"))
/* Translators: 'after midday' indicator */ \
: C_("GDateTime", "PM")))
#define WEEKDAY_ABBR(d) (get_weekday_name_abbr (g_date_time_get_day_of_week (datetime))) #define WEEKDAY_ABBR(d) (get_weekday_name_abbr (g_date_time_get_day_of_week (datetime)))
#define WEEKDAY_FULL(d) (get_weekday_name (g_date_time_get_day_of_week (datetime))) #define WEEKDAY_FULL(d) (get_weekday_name (g_date_time_get_day_of_week (datetime)))
@ -2329,6 +2325,7 @@ g_date_time_format (GDateTime *datetime,
gboolean pad_set = FALSE; gboolean pad_set = FALSE;
gchar pad = '\0'; gchar pad = '\0';
gchar fmt[20]; gchar fmt[20];
gchar *ampm;
g_return_val_if_fail (datetime != NULL, NULL); g_return_val_if_fail (datetime != NULL, NULL);
g_return_val_if_fail (format != NULL, NULL); g_return_val_if_fail (format != NULL, NULL);
@ -2431,21 +2428,27 @@ g_date_time_format (GDateTime *datetime,
alt_digits = TRUE; alt_digits = TRUE;
goto next_mod; goto next_mod;
case 'p': case 'p':
g_string_append (outstr, GET_AMPM (datetime, FALSE)); ampm = g_utf8_strup (GET_AMPM (datetime), -1);
g_string_append (outstr, ampm);
g_free (ampm);
break; break;
case 'P': case 'P':
g_string_append (outstr, GET_AMPM (datetime, TRUE)); ampm = g_utf8_strdown (GET_AMPM (datetime), -1);
g_string_append (outstr, ampm);
g_free (ampm);
break; break;
case 'r': case 'r':
{ {
gint hour = g_date_time_get_hour (datetime) % 12; gint hour = g_date_time_get_hour (datetime) % 12;
if (hour == 0) if (hour == 0)
hour = 12; hour = 12;
ampm = g_utf8_strup (GET_AMPM (datetime), -1);
g_string_append_printf (outstr, "%02d:%02d:%02d %s", g_string_append_printf (outstr, "%02d:%02d:%02d %s",
hour, hour,
g_date_time_get_minute (datetime), g_date_time_get_minute (datetime),
g_date_time_get_second (datetime), g_date_time_get_second (datetime),
GET_AMPM (datetime, FALSE)); ampm);
g_free (ampm);
} }
break; break;
case 'R': case 'R':