From: Junio C Hamano <gitster@pobox•com>
To: Matthieu Moy <Matthieu.Moy@imag•fr>
Cc: git@vger•kernel.org, ghostanarky@gmail•com
Subject: Re: [PATCH] status: disable translation when --porcelain is used
Date: Thu, 20 Mar 2014 10:47:43 -0700 [thread overview]
Message-ID: <xmqq38iczrr4.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1395317561-9380-1-git-send-email-Matthieu.Moy@imag.fr> (Matthieu Moy's message of "Thu, 20 Mar 2014 13:12:41 +0100")
Matthieu Moy <Matthieu.Moy@imag•fr> writes:
> "git status --branch --porcelain" displays the status of the branch
> (ahead, behind, gone), and used gettext to translate the string.
>
> Use hardcoded strings when --porcelain is used, but keep the gettext
> translation for "git status --short" which is essentially the same, but
> meant to be read by a human.
>
> Reported-by: Anarky <ghostanarky@gmail•com>
> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag•fr>
> ---
>> The porcelain format of git status is described as not based on user
>> configuration.
>> But with --branch, behind/ahead are translated following the user's locale.
>> Is it normal that scripts need to take care of that?
>
> Indeed, I'd call that a bug. Here's a fix.
Good thing to fix. Thanks.
> wt-status.c | 15 ++++++++++-----
> wt-status.h | 1 +
> 2 files changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/wt-status.c b/wt-status.c
> index a452407..e55e5b9 100644
> --- a/wt-status.c
> +++ b/wt-status.c
> @@ -1509,19 +1509,23 @@ static void wt_shortstatus_print_tracking(struct wt_status *s)
> return;
> }
>
> + const char *gone = s->no_gettext ? "gone" : _("gone");
> + const char *behind = s->no_gettext ? "behind " : _("behind ");
> + const char *ahead = s->no_gettext ? "ahead " : _("ahead ");
Having to repeat the same string constant twice (and a half for the
variable name) each is an eyesore. I wonder if we can do better,
perhaps with:
#define LABEL(string) (s->no_gettext ? (string) : _(string))
and then
color_fprintf(s->fp, header_color, LABEL(N_("gone")));
or something along those lines?
> color_fprintf(s->fp, header_color, " [");
> if (upstream_is_gone) {
> - color_fprintf(s->fp, header_color, _("gone"));
> + color_fprintf(s->fp, header_color, gone);
> } else if (!num_ours) {
> - color_fprintf(s->fp, header_color, _("behind "));
> + color_fprintf(s->fp, header_color, behind);
> color_fprintf(s->fp, branch_color_remote, "%d", num_theirs);
> } else if (!num_theirs) {
> - color_fprintf(s->fp, header_color, _("ahead "));
> + color_fprintf(s->fp, header_color, ahead);
> color_fprintf(s->fp, branch_color_local, "%d", num_ours);
> } else {
> - color_fprintf(s->fp, header_color, _("ahead "));
> + color_fprintf(s->fp, header_color, ahead);
> color_fprintf(s->fp, branch_color_local, "%d", num_ours);
> - color_fprintf(s->fp, header_color, _(", behind "));
> + color_fprintf(s->fp, header_color, ", %s", behind);
> color_fprintf(s->fp, branch_color_remote, "%d", num_theirs);
> }
>
> @@ -1566,5 +1570,6 @@ void wt_porcelain_print(struct wt_status *s)
> s->use_color = 0;
> s->relative_paths = 0;
> s->prefix = NULL;
> + s->no_gettext = 1;
> wt_shortstatus_print(s);
> }
> diff --git a/wt-status.h b/wt-status.h
> index 30a4812..82f6ce6 100644
> --- a/wt-status.h
> +++ b/wt-status.h
> @@ -50,6 +50,7 @@ struct wt_status {
> enum commit_whence whence;
> int nowarn;
> int use_color;
> + int no_gettext;
> int display_comment_prefix;
> int relative_paths;
> int submodule_summary;
next prev parent reply other threads:[~2014-03-20 17:47 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-20 10:31 Bug? git status --porcelain --branch is translated Anarky
2014-03-20 12:12 ` [PATCH] status: disable translation when --porcelain is used Matthieu Moy
2014-03-20 17:47 ` Junio C Hamano [this message]
2014-03-21 8:29 ` Matthieu Moy
2014-03-21 17:38 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqq38iczrr4.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox$(echo .)com \
--cc=Matthieu.Moy@imag$(echo .)fr \
--cc=ghostanarky@gmail$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox