Karthik Nayak <karthik.188@xxxxxxxxx> writes: > +static struct ref_msg { > + const char *gone; > + const char *ahead; > + const char *behind; > + const char *ahead_behind; > +} msgs = { > + "gone", > + "ahead %d", > + "behind %d", > + "ahead %d, behind %d" > +}; > + > +void setup_ref_filter_porcelain_msg(void) > +{ > + msgs.gone = _("gone"); > + msgs.ahead = _("ahead %d"); > + msgs.behind = _("behind %d"); > + msgs.ahead_behind = _("ahead %d, behind %d"); > +} I do not think this patch is wrong, but I wonder if it would be sufficient to have a single bit in file-scope static variable and flip it in setup_ref_filter_porcelain_msg(). I.e. static int use_porcelain_msg; /* false by default */ void setup_ref_filter_porcelain_msg(void) { use_porcelain_msg = 1; } static const char *P_(const char *msg) { return use_porcelain_msg ? _(msg) : msg; } and then mark the message up perhaps like so: - *s = xstrdup("gone"); + *s = xstrdup(P_("gone")); which may make things much simpler. We'd need to update Makefile to recognize X_() as another keyword; I'd think something like this should do: XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \ - --keyword=_ --keyword=N_ --keyword="Q_:1,2" + --keyword=_ --keyword=N_ --keyword=P_ --keyword="Q_:1,2" > typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME } cmp_type; > > struct align { > @@ -1097,15 +1117,15 @@ static void fill_remote_ref_details(struct used_atom *atom, const char *refname, > else if (atom->u.remote_ref.option == RR_TRACK) { > if (stat_tracking_info(branch, &num_ours, > &num_theirs, NULL)) { > - *s = xstrdup("gone"); > + *s = xstrdup(msgs.gone); > } else if (!num_ours && !num_theirs) > *s = ""; > else if (!num_ours) > - *s = xstrfmt("behind %d", num_theirs); > + *s = xstrfmt(msgs.behind, num_theirs); > else if (!num_theirs) > - *s = xstrfmt("ahead %d", num_ours); > + *s = xstrfmt(msgs.ahead, num_ours); > else > - *s = xstrfmt("ahead %d, behind %d", > + *s = xstrfmt(msgs.ahead_behind, > num_ours, num_theirs); > if (!atom->u.remote_ref.nobracket && *s[0]) { > const char *to_free = *s; > diff --git a/ref-filter.h b/ref-filter.h > index 0014b92..da17145 100644 > --- a/ref-filter.h > +++ b/ref-filter.h > @@ -111,5 +111,7 @@ struct ref_sorting *ref_default_sorting(void); > int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset); > /* Get the current HEAD's description */ > char *get_head_description(void); > +/* Set up translated strings in the output. */ > +void setup_ref_filter_porcelain_msg(void); > > #endif /* REF_FILTER_H */ -- 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