Subject: [PATCH on ab/i18n] branch: remove lego in i18n tracking info strings

From: Nguyễn Thái Ngọc Duy <[email-masked]>
Date: Thu, 3 May 2012 20:12:00 +0700

Signed-off-by: Nguyễn Thái Ngọc Duy <[email-masked]>
---
 On Thu, May 3, 2012 at 2:42 PM, Thomas Rast <[email-masked]> wrote:
 > Christian Stimming <[email-masked]> writes:
 >
 >> As one of the earlier translators: I agree with most of those as well. Thanks
 >> a lot. However, one small remark:
 >>
 >> Am Mittwoch, 2. Mai 2012, 15:49:27 schrieb Thomas Rast:
 >>> @@ -676,11 +675,11 @@ msgstr "hinter "
 >>>
 >>>  #: wt-status.c:908 wt-status.c:911
 >>>  msgid "ahead "
 >>> -msgstr "über "
 >>> +msgstr "weiter: "
 >>>
 >>>  #: wt-status.c:913
 >>>  msgid ", behind "
 >>> -msgstr ", hinter "
 >>> +msgstr ", zurückgefallen "
 >>>
 >>>  #: builtin/add.c:62
 >>>  #, c-format
 >>> @@ -903,12 +902,12 @@ msgstr "Zweig '%s' zeigt auf keine Version"
 >>>  #: builtin/branch.c:396
 >>>  #, c-format
 >>>  msgid "behind %d] "
 >>> -msgstr "hinter %d] "
 >>> +msgstr "%d hinterher] "
 >>>
 >>>  #: builtin/branch.c:398
 >>>  #, c-format
 >>>  msgid "ahead %d] "
 >>> -msgstr "vor %d] "
 >>> +msgstr "%d voraus] "
 >>
 >> In the above hunk, you said "ahead = weiter" and "behind = zurückgefallen",
 >> but now you say "ahead = voraus" and "behind = hinterher". Is it helpful to
 >> use two different translations, or shouldn't those rather be chosen
 >> identically? The second set sounds somewhat better to me, but the more
 >> important question is whether both hunks should use the same translations.
 >
 > Yeah, sorry about that.  The whole thing is a mess because of the lego
 > going on.  It would probably be better to first patch the code into
 > shape so that it builds the displays in one step, and then translate
 > that.  As it stands, it's very hard to translate because wt-status.c
 > does not even let you reposition the number.

 The translator in me totally agrees with you. I'll look into
 wt-status legos, but we probably need better infrastructure to mix
 color and text. Pseudo html tags to to mark color, like
 "On branch <color1>%s</color1>" is probably not a bad idea.

 builtin/branch.c |   31 ++++++++++++++++++++++---------
 1 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/builtin/branch.c b/builtin/branch.c
index 8813d2e..5011881 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -384,6 +384,7 @@ static void fill_tracking_info(struct strbuf *stat, const char *branch_name,
 		int show_upstream_ref)
 {
 	int ours, theirs;
+	const char *ref = NULL;
 	struct branch *branch = branch_get(branch_name);
 
 	if (!stat_tracking_info(branch, &ours, &theirs)) {
@@ -394,16 +395,28 @@ static void fill_tracking_info(struct strbuf *stat, const char *branch_name,
 		return;
 	}
 
-	strbuf_addch(stat, '[');
 	if (show_upstream_ref)
-		strbuf_addf(stat, "%s: ",
-			shorten_unambiguous_ref(branch->merge[0]->dst, 0));
-	if (!ours)
-		strbuf_addf(stat, _("behind %d] "), theirs);
-	else if (!theirs)
-		strbuf_addf(stat, _("ahead %d] "), ours);
-	else
-		strbuf_addf(stat, _("ahead %d, behind %d] "), ours, theirs);
+		ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0);
+	if (!ours) {
+		if (ref)
+			strbuf_addf(stat, _("[%s: behind %d]"), ref, theirs);
+		else
+			strbuf_addf(stat, _("[behind %d]"), theirs);
+
+	} else if (!theirs) {
+		if (ref)
+			strbuf_addf(stat, _("[%s: ahead %d]"), ref, ours);
+		else
+			strbuf_addf(stat, _("[ahead %d]"), ours);
+	} else {
+		if (ref)
+			strbuf_addf(stat, _("[%s: ahead %d, behind %d]"),
+				    ref, ours, theirs);
+		else
+			strbuf_addf(stat, _("[ahead %d, behind %d]"),
+				    ours, theirs);
+	}
+	strbuf_addch(stat, ' ');
 }
 
 static int matches_merge_filter(struct commit *commit)
-- 
1.7.8.36.g69ee2