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.com \
--cc=Matthieu.Moy@imag.fr \
--cc=ghostanarky@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.