English dates get correct plural/singular form as a side effect. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- date.c | 46 +++++++++++++++++++++++++++++----------------- 1 files changed, 29 insertions(+), 17 deletions(-) diff --git a/date.c b/date.c index a5055ca..063f344 100644 --- a/date.c +++ b/date.c @@ -93,38 +93,46 @@ const char *show_date_relative(unsigned long time, int tz, { unsigned long diff; if (now->tv_sec < time) - return "in the future"; + return _("in the future"); diff = now->tv_sec - time; if (diff < 90) { - snprintf(timebuf, timebuf_size, "%lu seconds ago", diff); + snprintf(timebuf, timebuf_size, + Q_("%lu second ago", "%lu seconds ago", diff), diff); return timebuf; } /* Turn it into minutes */ diff = (diff + 30) / 60; if (diff < 90) { - snprintf(timebuf, timebuf_size, "%lu minutes ago", diff); + snprintf(timebuf, timebuf_size, + Q_("%lu minute ago", "%lu minutes ago", diff), diff); return timebuf; } /* Turn it into hours */ diff = (diff + 30) / 60; if (diff < 36) { - snprintf(timebuf, timebuf_size, "%lu hours ago", diff); + snprintf(timebuf, timebuf_size, + Q_("%lu hour ago", "%lu hours ago", diff), diff); return timebuf; } /* We deal with number of days from here on */ diff = (diff + 12) / 24; if (diff < 14) { - snprintf(timebuf, timebuf_size, "%lu days ago", diff); + snprintf(timebuf, timebuf_size, + Q_("%lu day ago", "%lu days ago", diff), diff); return timebuf; } /* Say weeks for the past 10 weeks or so */ if (diff < 70) { - snprintf(timebuf, timebuf_size, "%lu weeks ago", (diff + 3) / 7); + snprintf(timebuf, timebuf_size, + Q_("%lu week ago", "%lu weeks ago", (diff + 3) / 7), + (diff + 3) / 7); return timebuf; } /* Say months for the past 12 months or so */ if (diff < 365) { - snprintf(timebuf, timebuf_size, "%lu months ago", (diff + 15) / 30); + snprintf(timebuf, timebuf_size, + Q_("%lu month ago", "%lu months ago", (diff + 15) / 30), + (diff + 15) / 30); return timebuf; } /* Give years and months for 5 years or so */ @@ -132,19 +140,23 @@ const char *show_date_relative(unsigned long time, int tz, unsigned long totalmonths = (diff * 12 * 2 + 365) / (365 * 2); unsigned long years = totalmonths / 12; unsigned long months = totalmonths % 12; - int n; - n = snprintf(timebuf, timebuf_size, "%lu year%s", - years, (years > 1 ? "s" : "")); - if (months) - snprintf(timebuf + n, timebuf_size - n, - ", %lu month%s ago", - months, (months > 1 ? "s" : "")); - else - snprintf(timebuf + n, timebuf_size - n, " ago"); + if (months) { + struct strbuf sb = STRBUF_INIT; + strbuf_addf(&sb, Q_("%lu year", "%lu years", years), years); + /* TRANSLATORS: "%s" is "<n> years" */ + snprintf(timebuf, timebuf_size, + Q_("%s, %lu month ago", "%s, %lu months ago", months), + sb.buf, months); + strbuf_release(&sb); + } else + snprintf(timebuf, timebuf_size, + Q_("%lu year ago", "%lu years ago", years), years); return timebuf; } /* Otherwise, just years. Centuries is probably overkill. */ - snprintf(timebuf, timebuf_size, "%lu years ago", (diff + 183) / 365); + snprintf(timebuf, timebuf_size, + Q_("%lu year ago", "%lu years ago", (diff + 183) / 365), + (diff + 183) / 365); return timebuf; } -- 1.7.3.1.256.g2539c.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html