Mark strings like [up to date] passed to print_ref_status() for
translation with N_() instead of _() so they can remain untranslated
in porcelain mode.
While at there, mark some error strings in git push for translation
too.
Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com
Reviewed-by: Jonathan Nieder jrnie...@gmail.com
---
builtin/push.c | 8 +++---
transport.c| 81 ++
2 files changed, 52 insertions(+), 37 deletions(-)
diff --git a/builtin/push.c b/builtin/push.c
index 7b1b66c..22e2d4c 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -319,7 +319,7 @@ static int push_with_options(struct transport *transport,
int flags)
if (!is_empty_cas(cas)) {
if (!transport-smart_options)
- die(underlying transport does not support --%s option,
+ die(_(underlying transport does not support --%s
option),
CAS_OPT_NAME);
transport-smart_options-cas = cas;
}
@@ -426,7 +426,7 @@ static int option_parse_recurse_submodules(const struct
option *opt,
if (*flags (TRANSPORT_RECURSE_SUBMODULES_CHECK |
TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND))
- die(%s can only be used once., opt-long_name);
+ die(_(%s can only be used once.), opt-long_name);
if (arg) {
if (!strcmp(arg, check))
@@ -434,9 +434,9 @@ static int option_parse_recurse_submodules(const struct
option *opt,
else if (!strcmp(arg, on-demand))
*flags |= TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND;
else
- die(bad %s argument: %s, opt-long_name, arg);
+ die(_(bad %s argument: %s), opt-long_name, arg);
} else
- die(option %s needs an argument (check|on-demand),
+ die(_(option %s needs an argument (check|on-demand)),
opt-long_name);
return 0;
diff --git a/transport.c b/transport.c
index 7202b77..1fb92a1 100644
--- a/transport.c
+++ b/transport.c
@@ -14,6 +14,7 @@
#include url.h
#include submodule.h
#include string-list.h
+#include utf8.h
/* rsync support */
@@ -627,16 +628,23 @@ static void print_ref_status(char flag, const char
*summary, struct ref *to, str
else
fprintf(stdout, %s\n, summary);
} else {
- fprintf(stderr, %c %-*s , flag, TRANSPORT_SUMMARY_WIDTH,
summary);
+ int width = TRANSPORT_SUMMARY_WIDTH;
+ const char *localized_summary = _(summary);
+ /*
+* Compensate for the invisible bytes in utf-8
+* strings. The expression below is guaranteed always
+* positive (or zero in case of ascii strings) because
+* none of the doublewidth characters are ASCII
+* characters.
+*/
+ width += strlen(localized_summary) -
utf8_strwidth(localized_summary);
+ fprintf(stderr, %c %-*s , flag, width, localized_summary);
if (from)
fprintf(stderr, %s - %s,
prettify_refname(from-name), prettify_refname(to-name));
else
fputs(prettify_refname(to-name), stderr);
- if (msg) {
- fputs( (, stderr);
- fputs(msg, stderr);
- fputc(')', stderr);
- }
+ if (msg)
+ fprintf(stderr, (%s), _(msg));
fputc('\n', stderr);
}
}
@@ -649,11 +657,11 @@ static const char *status_abbrev(unsigned char sha1[20])
static void print_ok_ref_status(struct ref *ref, int porcelain)
{
if (ref-deletion)
- print_ref_status('-', [deleted], ref, NULL, NULL, porcelain);
+ print_ref_status('-', N_([deleted]), ref, NULL, NULL,
porcelain);
else if (is_null_sha1(ref-old_sha1))
print_ref_status('*',
- (!prefixcmp(ref-name, refs/tags/) ? [new tag] :
- [new branch]),
+ (!prefixcmp(ref-name, refs/tags/) ? N_([new tag]) :
+N_([new branch])),
ref, ref-peer_ref, NULL, porcelain);
else {
char quickref[84];
@@ -664,7 +672,7 @@ static void print_ok_ref_status(struct ref *ref, int
porcelain)
if (ref-forced_update) {
strcat(quickref, ...);
type = '+';
- msg = forced update;
+ msg = N_(forced update);
} else {
strcat(quickref, ..);
type = ' ';
@@ -678,50 +686,57 @@ static void print_ok_ref_status(struct ref *ref, int
porcelain)
static int