On Tue, Jan 10, 2017 at 1:04 AM, Jeff King <peff@xxxxxxxx> wrote: > On Mon, Jan 09, 2017 at 01:43:15PM +0100, Michael J Gruber wrote: > >> > I can't say I'm excited about having matching "_" variants for each >> > function. Are we sure that they are necessary? I.e., would it be >> > acceptable to just translate them always? >> >> We would still need to mark the strings, e.g. >> >> die(N_("oopsie")); >> >> and would not be able to opt out of translating in the code (only in the >> po file, by not providing a translation). > > I meant more along the lines of: would it be OK to just always translate > the prefix, even if the message itself is not translated? I.e., > > diff --git a/usage.c b/usage.c > index 82ff13163..8e5400f57 100644 > --- a/usage.c > +++ b/usage.c > @@ -32,7 +32,7 @@ static NORETURN void usage_builtin(const char *err, va_list params) > > static NORETURN void die_builtin(const char *err, va_list params) > { > - vreportf("fatal: ", err, params); > + vreportf(_("fatal: "), err, params); > exit(128); > } > >> In any case, the question is whether we want to tell the user >> >> A: B >> >> where A is in English and B is localised, or rather localise both A and >> B (for A in "error", "fatal", "warning"...). >> >> For localising A and B, we'd need this series or something similar. For >> keeping the mix, we don't need to do anything ;) > > What I wrote above would keep the mix, but switch it in the other > direction. > > And then presumably that mix would gradually move to 100% consistency as > more messages are translated. But the implicit question is: are there > die() messages that should never be translated? I'm not sure. I would assume any plumbing command is not localizing? Because in plumbing land, (easily scriptable) you may find a grep on the output/stderr for a certain condition? To find a good example, "git grep die" giving me some food of though: die_errno(..) should always take a string marked up for translation, because the errno string is translated? (-> we'd have to fix up any occurrence of git grep "die_errno(\"") apply.c: die(_("internal error")); That is funny, too. I think we should substitute that with die("BUG: untranslated, but what went wrong instead") > > -Peff