Skip to content
This repository was archived by the owner on Nov 9, 2017. It is now read-only.

Commit 8f17f5b

Browse files
jrngitster
authored andcommitted
wt-status: i18n of section labels
The original code assumes that: (1) the number of bytes written is the width of a string, so they can line up; (2) the "how" string is always <= 19 bytes. Neither of which we should assume. Using the same approach as the earlier 3651e45 (wt-status: take the alignment burden off translators, 2013-11-05), compute the necessary column width to hold the longest label and use that for alignment. cf. http://bugs.debian.org/725777 Signed-off-by: Jonathan Nieder <[email protected]> Helped-by: Sandy Carter Signed-off-by: Junio C Hamano <[email protected]>
1 parent 335e825 commit 8f17f5b

File tree

1 file changed

+47
-19
lines changed

1 file changed

+47
-19
lines changed

wt-status.c

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -245,27 +245,26 @@ static void wt_status_print_trailer(struct wt_status *s)
245245

246246
#define quote_path quote_path_relative
247247

248-
static void wt_status_print_unmerged_data(struct wt_status *s,
249-
struct string_list_item *it)
248+
static const char *wt_status_unmerged_status_string(int stagemask)
250249
{
251-
const char *c = color(WT_STATUS_UNMERGED, s);
252-
struct wt_status_change_data *d = it->util;
253-
struct strbuf onebuf = STRBUF_INIT;
254-
const char *one, *how = _("bug");
255-
256-
one = quote_path(it->string, s->prefix, &onebuf);
257-
status_printf(s, color(WT_STATUS_HEADER, s), "\t");
258-
switch (d->stagemask) {
259-
case 1: how = _("both deleted:"); break;
260-
case 2: how = _("added by us:"); break;
261-
case 3: how = _("deleted by them:"); break;
262-
case 4: how = _("added by them:"); break;
263-
case 5: how = _("deleted by us:"); break;
264-
case 6: how = _("both added:"); break;
265-
case 7: how = _("both modified:"); break;
250+
switch (stagemask) {
251+
case 1:
252+
return _("both deleted:");
253+
case 2:
254+
return _("added by us:");
255+
case 3:
256+
return _("deleted by them:");
257+
case 4:
258+
return _("added by them:");
259+
case 5:
260+
return _("deleted by us:");
261+
case 6:
262+
return _("both added:");
263+
case 7:
264+
return _("both modified:");
265+
default:
266+
die(_("bug: unhandled unmerged status %x"), stagemask);
266267
}
267-
status_printf_more(s, c, "%-20s%s\n", how, one);
268-
strbuf_release(&onebuf);
269268
}
270269

271270
static const char *wt_status_diff_status_string(int status)
@@ -305,6 +304,35 @@ static int maxwidth(const char *(*label)(int), int minval, int maxval)
305304
return result;
306305
}
307306

307+
static void wt_status_print_unmerged_data(struct wt_status *s,
308+
struct string_list_item *it)
309+
{
310+
const char *c = color(WT_STATUS_UNMERGED, s);
311+
struct wt_status_change_data *d = it->util;
312+
struct strbuf onebuf = STRBUF_INIT;
313+
static char *padding;
314+
static int label_width;
315+
const char *one, *how;
316+
int len;
317+
318+
if (!padding) {
319+
label_width = maxwidth(wt_status_unmerged_status_string, 1, 7);
320+
label_width += strlen(" ");
321+
if (label_width < 20)
322+
label_width = 20;
323+
padding = xmallocz(label_width);
324+
memset(padding, ' ', label_width);
325+
}
326+
327+
one = quote_path(it->string, s->prefix, &onebuf);
328+
status_printf(s, color(WT_STATUS_HEADER, s), "\t");
329+
330+
how = wt_status_unmerged_status_string(d->stagemask);
331+
len = label_width - utf8_strwidth(how);
332+
status_printf_more(s, c, "%s%.*s%s\n", how, len, padding, one);
333+
strbuf_release(&onebuf);
334+
}
335+
308336
static void wt_status_print_change_data(struct wt_status *s,
309337
int change_type,
310338
struct string_list_item *it)

0 commit comments

Comments
 (0)