All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/13] i18n: apply: mark plural string for translation
@ 2016-09-07 14:49 Vasco Almeida
  2016-09-07 14:49 ` [PATCH 02/13] i18n: apply: mark error messages " Vasco Almeida
                   ` (41 more replies)
  0 siblings, 42 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Mark plural string for translation using Q_().

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/apply.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index 1a488f9..ef03c74 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -4768,10 +4768,12 @@ static int apply_all_patches(struct apply_state *state,
 			       state->whitespace_error),
 			    state->whitespace_error);
 		if (state->applied_after_fixing_ws && state->apply)
-			warning("%d line%s applied after"
-				" fixing whitespace errors.",
-				state->applied_after_fixing_ws,
-				state->applied_after_fixing_ws == 1 ? "" : "s");
+			warning(Q_("%d line applied after"
+				   " fixing whitespace errors.",
+				   "%d lines applied after"
+				   " fixing whitespace errors.",
+				   state->applied_after_fixing_ws),
+				state->applied_after_fixing_ws);
 		else if (state->whitespace_error)
 			warning(Q_("%d line adds whitespace errors.",
 				   "%d lines add whitespace errors.",
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 02/13] i18n: apply: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 03/13] i18n: apply: mark info " Vasco Almeida
                   ` (40 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Mark error messages for translation passed to error() and die()
functions.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/apply.c | 46 +++++++++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index ef03c74..ef2c084 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -3065,8 +3065,8 @@ static int apply_binary_fragment(struct apply_state *state,
 	/* Binary patch is irreversible without the optional second hunk */
 	if (state->apply_in_reverse) {
 		if (!fragment->next)
-			return error("cannot reverse-apply a binary patch "
-				     "without the reverse hunk to '%s'",
+			return error(_("cannot reverse-apply a binary patch "
+				       "without the reverse hunk to '%s'"),
 				     patch->new_name
 				     ? patch->new_name : patch->old_name);
 		fragment = fragment->next;
@@ -3111,8 +3111,8 @@ static int apply_binary(struct apply_state *state,
 	    strlen(patch->new_sha1_prefix) != 40 ||
 	    get_sha1_hex(patch->old_sha1_prefix, sha1) ||
 	    get_sha1_hex(patch->new_sha1_prefix, sha1))
-		return error("cannot apply binary patch to '%s' "
-			     "without full index line", name);
+		return error(_("cannot apply binary patch to '%s' "
+			       "without full index line"), name);
 
 	if (patch->old_name) {
 		/*
@@ -3121,16 +3121,16 @@ static int apply_binary(struct apply_state *state,
 		 */
 		hash_sha1_file(img->buf, img->len, blob_type, sha1);
 		if (strcmp(sha1_to_hex(sha1), patch->old_sha1_prefix))
-			return error("the patch applies to '%s' (%s), "
-				     "which does not match the "
-				     "current contents.",
+			return error(_("the patch applies to '%s' (%s), "
+				       "which does not match the "
+				       "current contents."),
 				     name, sha1_to_hex(sha1));
 	}
 	else {
 		/* Otherwise, the old one must be empty. */
 		if (img->len)
-			return error("the patch applies to an empty "
-				     "'%s' but it is not empty", name);
+			return error(_("the patch applies to an empty "
+				       "'%s' but it is not empty"), name);
 	}
 
 	get_sha1_hex(patch->new_sha1_prefix, sha1);
@@ -3147,8 +3147,8 @@ static int apply_binary(struct apply_state *state,
 
 		result = read_sha1_file(sha1, &type, &size);
 		if (!result)
-			return error("the necessary postimage %s for "
-				     "'%s' cannot be read",
+			return error(_("the necessary postimage %s for "
+				       "'%s' cannot be read"),
 				     patch->new_sha1_prefix, name);
 		clear_image(img);
 		img->buf = result;
@@ -3523,7 +3523,7 @@ static int try_threeway(struct apply_state *state,
 		write_sha1_file("", 0, blob_type, pre_sha1);
 	else if (get_sha1(patch->old_sha1_prefix, pre_sha1) ||
 		 read_blob_object(&buf, pre_sha1, patch->old_mode))
-		return error("repository lacks the necessary blob to fall back on 3-way merge.");
+		return error(_("repository lacks the necessary blob to fall back on 3-way merge."));
 
 	fprintf(stderr, "Falling back to three-way merge...\n");
 
@@ -3541,11 +3541,11 @@ static int try_threeway(struct apply_state *state,
 	/* our_sha1[] is ours */
 	if (patch->is_new) {
 		if (load_current(state, &tmp_image, patch))
-			return error("cannot read the current contents of '%s'",
+			return error(_("cannot read the current contents of '%s'"),
 				     patch->new_name);
 	} else {
 		if (load_preimage(state, &tmp_image, patch, st, ce))
-			return error("cannot read the current contents of '%s'",
+			return error(_("cannot read the current contents of '%s'"),
 				     patch->old_name);
 	}
 	write_sha1_file(tmp_image.buf, tmp_image.len, blob_type, our_sha1);
@@ -4020,29 +4020,29 @@ static void build_fake_ancestor(struct patch *list, const char *filename)
 			if (!preimage_sha1_in_gitlink_patch(patch, sha1))
 				; /* ok, the textual part looks sane */
 			else
-				die("sha1 information is lacking or useless for submodule %s",
+				die(_("sha1 information is lacking or useless for submodule %s"),
 				    name);
 		} else if (!get_sha1_blob(patch->old_sha1_prefix, sha1)) {
 			; /* ok */
 		} else if (!patch->lines_added && !patch->lines_deleted) {
 			/* mode-only change: update the current */
 			if (get_current_sha1(patch->old_name, sha1))
-				die("mode change for %s, which is not "
-				    "in current HEAD", name);
+				die(_("mode change for %s, which is not "
+				    "in current HEAD"), name);
 		} else
-			die("sha1 information is lacking or useless "
-			    "(%s).", name);
+			die(_("sha1 information is lacking or useless "
+			    "(%s)."), name);
 
 		ce = make_cache_entry(patch->old_mode, sha1, name, 0, 0);
 		if (!ce)
 			die(_("make_cache_entry failed for path '%s'"), name);
 		if (add_index_entry(&result, ce, ADD_CACHE_OK_TO_ADD))
-			die ("Could not add %s to temporary index", name);
+			die(_("Could not add %s to temporary index"), name);
 	}
 
 	hold_lock_file_for_update(&lock, filename, LOCK_DIE_ON_ERROR);
 	if (write_locked_index(&result, &lock, COMMIT_LOCK))
-		die ("Could not write temporary index to %s", filename);
+		die(_("Could not write temporary index to %s"), filename);
 
 	discard_index(&result);
 }
@@ -4693,9 +4693,9 @@ static void check_apply_state(struct apply_state *state, int force_apply)
 	int is_not_gitdir = !startup_info->have_repository;
 
 	if (state->apply_with_reject && state->threeway)
-		die("--reject and --3way cannot be used together.");
+		die(_("--reject and --3way cannot be used together."));
 	if (state->cached && state->threeway)
-		die("--cached and --3way cannot be used together.");
+		die(_("--cached and --3way cannot be used together."));
 	if (state->threeway) {
 		if (is_not_gitdir)
 			die(_("--3way outside a repository"));
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 03/13] i18n: apply: mark info messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
  2016-09-07 14:49 ` [PATCH 02/13] i18n: apply: mark error messages " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 04/13] i18n: blame: mark error " Vasco Almeida
                   ` (39 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Mark messages for translation printed to stderr.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/apply.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index ef2c084..43ab7c5 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -3525,7 +3525,7 @@ static int try_threeway(struct apply_state *state,
 		 read_blob_object(&buf, pre_sha1, patch->old_mode))
 		return error(_("repository lacks the necessary blob to fall back on 3-way merge."));
 
-	fprintf(stderr, "Falling back to three-way merge...\n");
+	fprintf(stderr, _("Falling back to three-way merge...\n"));
 
 	img = strbuf_detach(&buf, &len);
 	prepare_image(&tmp_image, img, len, 1);
@@ -3555,7 +3555,7 @@ static int try_threeway(struct apply_state *state,
 	status = three_way_merge(image, patch->new_name,
 				 pre_sha1, our_sha1, post_sha1);
 	if (status < 0) {
-		fprintf(stderr, "Failed to fall back on three-way merge...\n");
+		fprintf(stderr, _("Failed to fall back on three-way merge...\n"));
 		return status;
 	}
 
@@ -3567,9 +3567,9 @@ static int try_threeway(struct apply_state *state,
 			hashcpy(patch->threeway_stage[0].hash, pre_sha1);
 		hashcpy(patch->threeway_stage[1].hash, our_sha1);
 		hashcpy(patch->threeway_stage[2].hash, post_sha1);
-		fprintf(stderr, "Applied patch to '%s' with conflicts.\n", patch->new_name);
+		fprintf(stderr, _("Applied patch to '%s' with conflicts.\n"), patch->new_name);
 	} else {
-		fprintf(stderr, "Applied patch to '%s' cleanly.\n", patch->new_name);
+		fprintf(stderr, _("Applied patch to '%s' cleanly.\n"), patch->new_name);
 	}
 	return 0;
 }
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 04/13] i18n: blame: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
  2016-09-07 14:49 ` [PATCH 02/13] i18n: apply: mark error messages " Vasco Almeida
  2016-09-07 14:49 ` [PATCH 03/13] i18n: apply: mark info " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-10  9:41   ` Jean-Noël AVILA
  2016-09-07 14:49 ` [PATCH 05/13] i18n: branch: mark option description " Vasco Almeida
                   ` (38 subsequent siblings)
  41 siblings, 1 reply; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Mark error messages for translation passed to die() function.
Change "Cannot" to lowercase following the usual style.

Reflect changes to test by using test_i18ngrep.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/blame.c               | 12 ++++++------
 t/t8003-blame-corner-cases.sh |  4 ++--
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/builtin/blame.c b/builtin/blame.c
index a5bbf91..3fee197 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -2601,7 +2601,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 
 	if (incremental || (output_option & OUTPUT_PORCELAIN)) {
 		if (show_progress > 0)
-			die("--progress can't be used with --incremental or porcelain formats");
+			die(_("--progress can't be used with --incremental or porcelain formats"));
 		show_progress = 0;
 	} else if (show_progress < 0)
 		show_progress = isatty(2);
@@ -2727,7 +2727,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		sb.commits.compare = compare_commits_by_commit_date;
 	}
 	else if (contents_from)
-		die("--contents and --reverse do not blend well.");
+		die(_("--contents and --reverse do not blend well."));
 	else {
 		final_commit_name = prepare_initial(&sb);
 		sb.commits.compare = compare_commits_by_reverse_commit_date;
@@ -2747,12 +2747,12 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		add_pending_object(&revs, &(sb.final->object), ":");
 	}
 	else if (contents_from)
-		die("Cannot use --contents with final commit object name");
+		die(_("cannot use --contents with final commit object name"));
 
 	if (reverse && revs.first_parent_only) {
 		final_commit = find_single_final(sb.revs, NULL);
 		if (!final_commit)
-			die("--reverse and --first-parent together require specified latest commit");
+			die(_("--reverse and --first-parent together require specified latest commit"));
 	}
 
 	/*
@@ -2779,7 +2779,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		}
 
 		if (oidcmp(&c->object.oid, &sb.final->object.oid))
-			die("--reverse --first-parent together require range along first-parent chain");
+			die(_("--reverse --first-parent together require range along first-parent chain"));
 	}
 
 	if (is_null_oid(&sb.final->object.oid)) {
@@ -2820,7 +2820,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 				    &bottom, &top, sb.path))
 			usage(blame_usage);
 		if (lno < top || ((lno || bottom) && lno < bottom))
-			die("file %s has only %lu lines", path, lno);
+			die(_("file %s has only %lu lines"), path, lno);
 		if (bottom < 1)
 			bottom = 1;
 		if (top < 1)
diff --git a/t/t8003-blame-corner-cases.sh b/t/t8003-blame-corner-cases.sh
index e48370d..661f9d4 100755
--- a/t/t8003-blame-corner-cases.sh
+++ b/t/t8003-blame-corner-cases.sh
@@ -212,12 +212,12 @@ EOF
 
 test_expect_success 'blame -L with invalid start' '
 	test_must_fail git blame -L5 tres 2>errors &&
-	grep "has only 2 lines" errors
+	test_i18ngrep "has only 2 lines" errors
 '
 
 test_expect_success 'blame -L with invalid end' '
 	test_must_fail git blame -L1,5 tres 2>errors &&
-	grep "has only 2 lines" errors
+	test_i18ngrep "has only 2 lines" errors
 '
 
 test_expect_success 'blame parses <end> part of -L' '
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 05/13] i18n: branch: mark option description for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (2 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 04/13] i18n: blame: mark error " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 06/13] i18n: config: mark error message " Vasco Almeida
                   ` (37 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/branch.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/branch.c b/builtin/branch.c
index 7df0543..d5d93a8 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -657,7 +657,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
 		OPT_SET_INT( 0, "set-upstream",  &track, N_("change upstream info"),
 			BRANCH_TRACK_OVERRIDE),
 		OPT_STRING('u', "set-upstream-to", &new_upstream, N_("upstream"), N_("change the upstream info")),
-		OPT_BOOL(0, "unset-upstream", &unset_upstream, "Unset the upstream info"),
+		OPT_BOOL(0, "unset-upstream", &unset_upstream, N_("Unset the upstream info")),
 		OPT__COLOR(&branch_use_color, N_("use colored output")),
 		OPT_SET_INT('r', "remotes",     &filter.kind, N_("act on remote-tracking branches"),
 			FILTER_REFS_REMOTES),
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 06/13] i18n: config: mark error message for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (3 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 05/13] i18n: branch: mark option description " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 07/13] i18n: merge-recursive: mark error messages " Vasco Almeida
                   ` (36 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/config.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/builtin/config.c b/builtin/config.c
index 6cbf733..05843a0 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -622,8 +622,8 @@ int cmd_config(int argc, const char **argv, const char *prefix)
 		value = normalize_value(argv[0], argv[1]);
 		ret = git_config_set_in_file_gently(given_config_source.file, argv[0], value);
 		if (ret == CONFIG_NOTHING_SET)
-			error("cannot overwrite multiple values with a single value\n"
-			"       Use a regexp, --add or --replace-all to change %s.", argv[0]);
+			error(_("cannot overwrite multiple values with a single value\n"
+			"       Use a regexp, --add or --replace-all to change %s."), argv[0]);
 		return ret;
 	}
 	else if (actions == ACTION_SET_ALL) {
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 07/13] i18n: merge-recursive: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (4 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 06/13] i18n: config: mark error message " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-09 19:23   ` Junio C Hamano
  2016-09-07 14:49 ` [PATCH 08/13] i18n: merge-recursive: mark verbose message " Vasco Almeida
                   ` (35 subsequent siblings)
  41 siblings, 1 reply; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Lowercase first word of such error messages following the usual style.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/merge-recursive.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index fd2c455..0bc88a7 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -42,30 +42,30 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 			if (!arg[2])
 				break;
 			if (parse_merge_opt(&o, arg + 2))
-				die("Unknown option %s", arg);
+				die(_("unknown option %s"), arg);
 			continue;
 		}
 		if (bases_count < ARRAY_SIZE(bases)-1) {
 			struct object_id *oid = xmalloc(sizeof(struct object_id));
 			if (get_oid(argv[i], oid))
-				die("Could not parse object '%s'", argv[i]);
+				die(_("could not parse object '%s'"), argv[i]);
 			bases[bases_count++] = oid;
 		}
 		else
-			warning("Cannot handle more than %d bases. "
-				"Ignoring %s.",
+			warning(_("cannot handle more than %d bases. "
+				  "Ignoring %s."),
 				(int)ARRAY_SIZE(bases)-1, argv[i]);
 	}
 	if (argc - i != 3) /* "--" "<head>" "<remote>" */
-		die("Not handling anything other than two heads merge.");
+		die(_("not handling anything other than two heads merge."));
 
 	o.branch1 = argv[++i];
 	o.branch2 = argv[++i];
 
 	if (get_oid(o.branch1, &h1))
-		die("Could not resolve ref '%s'", o.branch1);
+		die(_("could not resolve ref '%s'"), o.branch1);
 	if (get_oid(o.branch2, &h2))
-		die("Could not resolve ref '%s'", o.branch2);
+		die(_("could not resolve ref '%s'"), o.branch2);
 
 	o.branch1 = better_branch_name(o.branch1);
 	o.branch2 = better_branch_name(o.branch2);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 08/13] i18n: merge-recursive: mark verbose message for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (5 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 07/13] i18n: merge-recursive: mark error messages " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 09/13] i18n: notes: mark error messages " Vasco Almeida
                   ` (34 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/merge-recursive.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 0bc88a7..1c21802 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -71,7 +71,7 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 	o.branch2 = better_branch_name(o.branch2);
 
 	if (o.verbosity >= 3)
-		printf("Merging %s with %s\n", o.branch1, o.branch2);
+		printf(_("Merging %s with %s\n"), o.branch1, o.branch2);
 
 	failed = merge_recursive_generic(&o, &h1, &h2, bases_count, bases, &result);
 	if (failed < 0)
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 09/13] i18n: notes: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (6 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 08/13] i18n: merge-recursive: mark verbose message " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 10/13] notes: lowercase first word of error messages Vasco Almeida
                   ` (33 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/notes.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/builtin/notes.c b/builtin/notes.c
index f848b89..abacae2 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -340,7 +340,7 @@ static struct notes_tree *init_notes_check(const char *subcommand,
 
 	ref = (flags & NOTES_INIT_WRITABLE) ? t->update_ref : t->ref;
 	if (!starts_with(ref, "refs/notes/"))
-		die("Refusing to %s notes in %s (outside of refs/notes/)",
+		die(_("Refusing to %s notes in %s (outside of refs/notes/)"),
 		    subcommand, ref);
 	return t;
 }
@@ -680,11 +680,11 @@ static int merge_abort(struct notes_merge_options *o)
 	 */
 
 	if (delete_ref("NOTES_MERGE_PARTIAL", NULL, 0))
-		ret += error("Failed to delete ref NOTES_MERGE_PARTIAL");
+		ret += error(_("Failed to delete ref NOTES_MERGE_PARTIAL"));
 	if (delete_ref("NOTES_MERGE_REF", NULL, REF_NODEREF))
-		ret += error("Failed to delete ref NOTES_MERGE_REF");
+		ret += error(_("Failed to delete ref NOTES_MERGE_REF"));
 	if (notes_merge_abort(o))
-		ret += error("Failed to remove 'git notes merge' worktree");
+		ret += error(_("Failed to remove 'git notes merge' worktree"));
 	return ret;
 }
 
@@ -704,11 +704,11 @@ static int merge_commit(struct notes_merge_options *o)
 	 */
 
 	if (get_sha1("NOTES_MERGE_PARTIAL", sha1))
-		die("Failed to read ref NOTES_MERGE_PARTIAL");
+		die(_("Failed to read ref NOTES_MERGE_PARTIAL"));
 	else if (!(partial = lookup_commit_reference(sha1)))
-		die("Could not find commit from NOTES_MERGE_PARTIAL.");
+		die(_("Could not find commit from NOTES_MERGE_PARTIAL."));
 	else if (parse_commit(partial))
-		die("Could not parse commit from NOTES_MERGE_PARTIAL.");
+		die(_("Could not parse commit from NOTES_MERGE_PARTIAL."));
 
 	if (partial->parents)
 		hashcpy(parent_sha1, partial->parents->item->object.oid.hash);
@@ -721,10 +721,10 @@ static int merge_commit(struct notes_merge_options *o)
 	o->local_ref = local_ref_to_free =
 		resolve_refdup("NOTES_MERGE_REF", 0, sha1, NULL);
 	if (!o->local_ref)
-		die("Failed to resolve NOTES_MERGE_REF");
+		die(_("Failed to resolve NOTES_MERGE_REF"));
 
 	if (notes_merge_commit(o, t, partial, sha1))
-		die("Failed to finalize notes merge");
+		die(_("Failed to finalize notes merge"));
 
 	/* Reuse existing commit message in reflog message */
 	memset(&pretty_ctx, 0, sizeof(pretty_ctx));
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 10/13] notes: lowercase first word of error messages
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (7 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 09/13] i18n: notes: mark error messages " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 11/13] i18n: receive-pack: mark messages for translation Vasco Almeida
                   ` (32 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Follow the usual case style.

Update one test to reflect these changes.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/notes.c                  | 64 ++++++++++++++++++++--------------------
 t/t3320-notes-merge-worktrees.sh |  2 +-
 2 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/builtin/notes.c b/builtin/notes.c
index abacae2..14488ba 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -191,7 +191,7 @@ static void prepare_note_data(const unsigned char *object, struct note_data *d,
 		strbuf_reset(&d->buf);
 
 		if (launch_editor(d->edit_path, &d->buf, NULL)) {
-			die(_("Please supply the note contents using either -m or -F option"));
+			die(_("please supply the note contents using either -m or -F option"));
 		}
 		strbuf_stripspace(&d->buf, 1);
 	}
@@ -202,7 +202,7 @@ static void write_note_data(struct note_data *d, unsigned char *sha1)
 	if (write_sha1_file(d->buf.buf, d->buf.len, blob_type, sha1)) {
 		error(_("unable to write note object"));
 		if (d->edit_path)
-			error(_("The note contents have been left in %s"),
+			error(_("the note contents have been left in %s"),
 				d->edit_path);
 		exit(128);
 	}
@@ -251,14 +251,14 @@ static int parse_reuse_arg(const struct option *opt, const char *arg, int unset)
 		strbuf_addch(&d->buf, '\n');
 
 	if (get_sha1(arg, object))
-		die(_("Failed to resolve '%s' as a valid ref."), arg);
+		die(_("failed to resolve '%s' as a valid ref."), arg);
 	if (!(buf = read_sha1_file(object, &type, &len))) {
 		free(buf);
-		die(_("Failed to read object '%s'."), arg);
+		die(_("failed to read object '%s'."), arg);
 	}
 	if (type != OBJ_BLOB) {
 		free(buf);
-		die(_("Cannot read note data from non-blob object '%s'."), arg);
+		die(_("cannot read note data from non-blob object '%s'."), arg);
 	}
 	strbuf_add(&d->buf, buf, len);
 	free(buf);
@@ -298,13 +298,13 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
 
 		split = strbuf_split(&buf, ' ');
 		if (!split[0] || !split[1])
-			die(_("Malformed input line: '%s'."), buf.buf);
+			die(_("malformed input line: '%s'."), buf.buf);
 		strbuf_rtrim(split[0]);
 		strbuf_rtrim(split[1]);
 		if (get_sha1(split[0]->buf, from_obj))
-			die(_("Failed to resolve '%s' as a valid ref."), split[0]->buf);
+			die(_("failed to resolve '%s' as a valid ref."), split[0]->buf);
 		if (get_sha1(split[1]->buf, to_obj))
-			die(_("Failed to resolve '%s' as a valid ref."), split[1]->buf);
+			die(_("failed to resolve '%s' as a valid ref."), split[1]->buf);
 
 		if (rewrite_cmd)
 			err = copy_note_for_rewrite(c, from_obj, to_obj);
@@ -313,7 +313,7 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
 					combine_notes_overwrite);
 
 		if (err) {
-			error(_("Failed to copy notes from '%s' to '%s'"),
+			error(_("failed to copy notes from '%s' to '%s'"),
 			      split[0]->buf, split[1]->buf);
 			ret = 1;
 		}
@@ -340,7 +340,7 @@ static struct notes_tree *init_notes_check(const char *subcommand,
 
 	ref = (flags & NOTES_INIT_WRITABLE) ? t->update_ref : t->ref;
 	if (!starts_with(ref, "refs/notes/"))
-		die(_("Refusing to %s notes in %s (outside of refs/notes/)"),
+		die(_("refusing to %s notes in %s (outside of refs/notes/)"),
 		    subcommand, ref);
 	return t;
 }
@@ -367,13 +367,13 @@ static int list(int argc, const char **argv, const char *prefix)
 	t = init_notes_check("list", 0);
 	if (argc) {
 		if (get_sha1(argv[0], object))
-			die(_("Failed to resolve '%s' as a valid ref."), argv[0]);
+			die(_("failed to resolve '%s' as a valid ref."), argv[0]);
 		note = get_note(t, object);
 		if (note) {
 			puts(sha1_to_hex(note));
 			retval = 0;
 		} else
-			retval = error(_("No note found for object %s."),
+			retval = error(_("no note found for object %s."),
 				       sha1_to_hex(object));
 	} else
 		retval = for_each_note(t, 0, list_each_note, NULL);
@@ -422,7 +422,7 @@ static int add(int argc, const char **argv, const char *prefix)
 	object_ref = argc > 1 ? argv[1] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check("add", NOTES_INIT_WRITABLE);
 	note = get_note(t, object);
@@ -508,12 +508,12 @@ static int copy(int argc, const char **argv, const char *prefix)
 	}
 
 	if (get_sha1(argv[0], from_obj))
-		die(_("Failed to resolve '%s' as a valid ref."), argv[0]);
+		die(_("failed to resolve '%s' as a valid ref."), argv[0]);
 
 	object_ref = 1 < argc ? argv[1] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check("copy", NOTES_INIT_WRITABLE);
 	note = get_note(t, object);
@@ -532,7 +532,7 @@ static int copy(int argc, const char **argv, const char *prefix)
 
 	from_note = get_note(t, from_obj);
 	if (!from_note) {
-		retval = error(_("Missing notes on source object %s. Cannot "
+		retval = error(_("missing notes on source object %s. Cannot "
 			       "copy."), sha1_to_hex(from_obj));
 		goto out;
 	}
@@ -591,7 +591,7 @@ static int append_edit(int argc, const char **argv, const char *prefix)
 	object_ref = 1 < argc ? argv[1] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check(argv[0], NOTES_INIT_WRITABLE);
 	note = get_note(t, object);
@@ -654,13 +654,13 @@ static int show(int argc, const char **argv, const char *prefix)
 	object_ref = argc ? argv[0] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check("show", 0);
 	note = get_note(t, object);
 
 	if (!note)
-		retval = error(_("No note found for object %s."),
+		retval = error(_("no note found for object %s."),
 			       sha1_to_hex(object));
 	else {
 		const char *show_args[3] = {"show", sha1_to_hex(note), NULL};
@@ -680,11 +680,11 @@ static int merge_abort(struct notes_merge_options *o)
 	 */
 
 	if (delete_ref("NOTES_MERGE_PARTIAL", NULL, 0))
-		ret += error(_("Failed to delete ref NOTES_MERGE_PARTIAL"));
+		ret += error(_("failed to delete ref NOTES_MERGE_PARTIAL"));
 	if (delete_ref("NOTES_MERGE_REF", NULL, REF_NODEREF))
-		ret += error(_("Failed to delete ref NOTES_MERGE_REF"));
+		ret += error(_("failed to delete ref NOTES_MERGE_REF"));
 	if (notes_merge_abort(o))
-		ret += error(_("Failed to remove 'git notes merge' worktree"));
+		ret += error(_("failed to remove 'git notes merge' worktree"));
 	return ret;
 }
 
@@ -704,11 +704,11 @@ static int merge_commit(struct notes_merge_options *o)
 	 */
 
 	if (get_sha1("NOTES_MERGE_PARTIAL", sha1))
-		die(_("Failed to read ref NOTES_MERGE_PARTIAL"));
+		die(_("failed to read ref NOTES_MERGE_PARTIAL"));
 	else if (!(partial = lookup_commit_reference(sha1)))
-		die(_("Could not find commit from NOTES_MERGE_PARTIAL."));
+		die(_("could not find commit from NOTES_MERGE_PARTIAL."));
 	else if (parse_commit(partial))
-		die(_("Could not parse commit from NOTES_MERGE_PARTIAL."));
+		die(_("could not parse commit from NOTES_MERGE_PARTIAL."));
 
 	if (partial->parents)
 		hashcpy(parent_sha1, partial->parents->item->object.oid.hash);
@@ -721,10 +721,10 @@ static int merge_commit(struct notes_merge_options *o)
 	o->local_ref = local_ref_to_free =
 		resolve_refdup("NOTES_MERGE_REF", 0, sha1, NULL);
 	if (!o->local_ref)
-		die(_("Failed to resolve NOTES_MERGE_REF"));
+		die(_("failed to resolve NOTES_MERGE_REF"));
 
 	if (notes_merge_commit(o, t, partial, sha1))
-		die(_("Failed to finalize notes merge"));
+		die(_("failed to finalize notes merge"));
 
 	/* Reuse existing commit message in reflog message */
 	memset(&pretty_ctx, 0, sizeof(pretty_ctx));
@@ -794,7 +794,7 @@ static int merge(int argc, const char **argv, const char *prefix)
 	}
 
 	if (do_merge && argc != 1) {
-		error(_("Must specify a notes ref to merge"));
+		error(_("must specify a notes ref to merge"));
 		usage_with_options(git_notes_merge_usage, options);
 	} else if (!do_merge && argc) {
 		error(_("too many parameters"));
@@ -818,7 +818,7 @@ static int merge(int argc, const char **argv, const char *prefix)
 
 	if (strategy) {
 		if (parse_notes_merge_strategy(strategy, &o.strategy)) {
-			error(_("Unknown -s/--strategy: %s"), strategy);
+			error(_("unknown -s/--strategy: %s"), strategy);
 			usage_with_options(git_notes_merge_usage, options);
 		}
 	} else {
@@ -855,10 +855,10 @@ static int merge(int argc, const char **argv, const char *prefix)
 		/* Store ref-to-be-updated into .git/NOTES_MERGE_REF */
 		wt = find_shared_symref("NOTES_MERGE_REF", default_notes_ref());
 		if (wt)
-			die(_("A notes merge into %s is already in-progress at %s"),
+			die(_("a notes merge into %s is already in-progress at %s"),
 			    default_notes_ref(), wt->path);
 		if (create_symref("NOTES_MERGE_REF", default_notes_ref(), NULL))
-			die(_("Failed to store link to current notes ref (%s)"),
+			die(_("failed to store link to current notes ref (%s)"),
 			    default_notes_ref());
 		printf(_("Automatic notes merge failed. Fix conflicts in %s and "
 			 "commit the result with 'git notes merge --commit', or "
@@ -1014,7 +1014,7 @@ int cmd_notes(int argc, const char **argv, const char *prefix)
 	else if (!strcmp(argv[0], "get-ref"))
 		result = get_ref(argc, argv, prefix);
 	else {
-		result = error(_("Unknown subcommand: %s"), argv[0]);
+		result = error(_("unknown subcommand: %s"), argv[0]);
 		usage_with_options(git_notes_usage, options);
 	}
 
diff --git a/t/t3320-notes-merge-worktrees.sh b/t/t3320-notes-merge-worktrees.sh
index 6e05115..b9c3bc2 100755
--- a/t/t3320-notes-merge-worktrees.sh
+++ b/t/t3320-notes-merge-worktrees.sh
@@ -52,7 +52,7 @@ test_expect_success 'merge z into y while mid-merge in another workdir fails' '
 		cd worktree &&
 		git config core.notesRef refs/notes/y &&
 		test_must_fail git notes merge z 2>err &&
-		test_i18ngrep "A notes merge into refs/notes/y is already in-progress at" err
+		test_i18ngrep "a notes merge into refs/notes/y is already in-progress at" err
 	) &&
 	test_path_is_missing .git/worktrees/worktree/NOTES_MERGE_REF
 '
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 11/13] i18n: receive-pack: mark messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (8 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 10/13] notes: lowercase first word of error messages Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 12/13] i18n: show-branch: mark error " Vasco Almeida
                   ` (31 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Mark messages refuse_unconfigured_deny_msg and
refuse_unconfigured_deny_delete_current_msg for translation.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/receive-pack.c | 58 ++++++++++++++++++++++----------------------------
 1 file changed, 25 insertions(+), 33 deletions(-)

diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 011db00..79839d0 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -775,47 +775,39 @@ static int is_ref_checked_out(const char *ref)
 	return !strcmp(head_name, ref);
 }
 
-static char *refuse_unconfigured_deny_msg[] = {
-	"By default, updating the current branch in a non-bare repository",
-	"is denied, because it will make the index and work tree inconsistent",
-	"with what you pushed, and will require 'git reset --hard' to match",
-	"the work tree to HEAD.",
-	"",
-	"You can set 'receive.denyCurrentBranch' configuration variable to",
-	"'ignore' or 'warn' in the remote repository to allow pushing into",
-	"its current branch; however, this is not recommended unless you",
-	"arranged to update its work tree to match what you pushed in some",
-	"other way.",
-	"",
-	"To squelch this message and still keep the default behaviour, set",
-	"'receive.denyCurrentBranch' configuration variable to 'refuse'."
-};
+static char *refuse_unconfigured_deny_msg =
+	N_("By default, updating the current branch in a non-bare repository\n"
+	   "is denied, because it will make the index and work tree inconsistent\n"
+	   "with what you pushed, and will require 'git reset --hard' to match\n"
+	   "the work tree to HEAD.\n"
+	   "\n"
+	   "You can set 'receive.denyCurrentBranch' configuration variable to\n"
+	   "'ignore' or 'warn' in the remote repository to allow pushing into\n"
+	   "its current branch; however, this is not recommended unless you\n"
+	   "arranged to update its work tree to match what you pushed in some\n"
+	   "other way.\n"
+	   "\n"
+	   "To squelch this message and still keep the default behaviour, set\n"
+	   "'receive.denyCurrentBranch' configuration variable to 'refuse'.");
 
 static void refuse_unconfigured_deny(void)
 {
-	int i;
-	for (i = 0; i < ARRAY_SIZE(refuse_unconfigured_deny_msg); i++)
-		rp_error("%s", refuse_unconfigured_deny_msg[i]);
+	rp_error("%s", _(refuse_unconfigured_deny_msg));
 }
 
-static char *refuse_unconfigured_deny_delete_current_msg[] = {
-	"By default, deleting the current branch is denied, because the next",
-	"'git clone' won't result in any file checked out, causing confusion.",
-	"",
-	"You can set 'receive.denyDeleteCurrent' configuration variable to",
-	"'warn' or 'ignore' in the remote repository to allow deleting the",
-	"current branch, with or without a warning message.",
-	"",
-	"To squelch this message, you can set it to 'refuse'."
-};
+static char *refuse_unconfigured_deny_delete_current_msg =
+	N_("By default, deleting the current branch is denied, because the next\n"
+	   "'git clone' won't result in any file checked out, causing confusion.\n"
+	   "\n"
+	   "You can set 'receive.denyDeleteCurrent' configuration variable to\n"
+	   "'warn' or 'ignore' in the remote repository to allow deleting the\n"
+	   "current branch, with or without a warning message.\n"
+	   "\n"
+	   "To squelch this message, you can set it to 'refuse'.");
 
 static void refuse_unconfigured_deny_delete_current(void)
 {
-	int i;
-	for (i = 0;
-	     i < ARRAY_SIZE(refuse_unconfigured_deny_delete_current_msg);
-	     i++)
-		rp_error("%s", refuse_unconfigured_deny_delete_current_msg[i]);
+	rp_error("%s", _(refuse_unconfigured_deny_delete_current_msg));
 }
 
 static int command_singleton_iterator(void *cb_data, unsigned char sha1[20]);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 12/13] i18n: show-branch: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (9 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 11/13] i18n: receive-pack: mark messages for translation Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 13/13] i18n: update-index: mark warning " Vasco Almeida
                   ` (30 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Lowercase some messages first word to match style of the others.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/show-branch.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index 2566935..8a5097d 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -701,8 +701,8 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 			 *
 			 * Also --all and --remotes do not make sense either.
 			 */
-			die("--reflog is incompatible with --all, --remotes, "
-			    "--independent or --merge-base");
+			die(_("--reflog is incompatible with --all, --remotes, "
+			      "--independent or --merge-base"));
 	}
 
 	/* If nothing is specified, show all branches by default */
@@ -725,16 +725,16 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 			av = fake_av;
 			ac = 1;
 			if (!*av)
-				die("no branches given, and HEAD is not valid");
+				die(_("no branches given, and HEAD is not valid"));
 		}
 		if (ac != 1)
-			die("--reflog option needs one branch name");
+			die(_("--reflog option needs one branch name"));
 
 		if (MAX_REVS < reflog)
-			die("Only %d entries can be shown at one time.",
+			die(_("only %d entries can be shown at one time."),
 			    MAX_REVS);
 		if (!dwim_ref(*av, strlen(*av), oid.hash, &ref))
-			die("No such ref %s", *av);
+			die(_("no such ref %s"), *av);
 
 		/* Has the base been specified? */
 		if (reflog_base) {
@@ -826,12 +826,12 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 		unsigned int flag = 1u << (num_rev + REV_SHIFT);
 
 		if (MAX_REVS <= num_rev)
-			die("cannot handle more than %d revs.", MAX_REVS);
+			die(_("cannot handle more than %d revs."), MAX_REVS);
 		if (get_sha1(ref_name[num_rev], revkey.hash))
-			die("'%s' is not a valid ref.", ref_name[num_rev]);
+			die(_("'%s' is not a valid ref."), ref_name[num_rev]);
 		commit = lookup_commit_reference(revkey.hash);
 		if (!commit)
-			die("cannot find commit %s (%s)",
+			die(_("cannot find commit %s (%s)"),
 			    ref_name[num_rev], oid_to_hex(&revkey));
 		parse_commit(commit);
 		mark_seen(commit, &seen);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 13/13] i18n: update-index: mark warning for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (10 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 12/13] i18n: show-branch: mark error " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-07 14:49 ` [PATCH 13/13] i18n: update-index: mark warnings " Vasco Almeida
                   ` (29 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/update-index.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/builtin/update-index.c b/builtin/update-index.c
index ba04b19..7a17ce1 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -1127,9 +1127,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 		break;
 	case UC_DISABLE:
 		if (git_config_get_untracked_cache() == 1)
-			warning("core.untrackedCache is set to true; "
-				"remove or change it, if you really want to "
-				"disable the untracked cache");
+			warning(_("core.untrackedCache is set to true; "
+				  "remove or change it, if you really want to "
+				  "disable the untracked cache"));
 		remove_untracked_cache(&the_index);
 		report(_("Untracked cache disabled"));
 		break;
@@ -1139,9 +1139,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 	case UC_ENABLE:
 	case UC_FORCE:
 		if (git_config_get_untracked_cache() == 0)
-			warning("core.untrackedCache is set to false; "
-				"remove or change it, if you really want to "
-				"enable the untracked cache");
+			warning(_("core.untrackedCache is set to false; "
+				  "remove or change it, if you really want to "
+				  "enable the untracked cache"));
 		add_untracked_cache(&the_index);
 		report(_("Untracked cache enabled for '%s'"), get_git_work_tree());
 		break;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH 13/13] i18n: update-index: mark warnings for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (11 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 13/13] i18n: update-index: mark warning " Vasco Almeida
@ 2016-09-07 14:49 ` Vasco Almeida
  2016-09-08 20:45 ` [PATCH 01/13] i18n: apply: mark plural string " Junio C Hamano
                   ` (28 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-07 14:49 UTC (permalink / raw)
  To: git; +Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/update-index.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/builtin/update-index.c b/builtin/update-index.c
index ba04b19..7a17ce1 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -1127,9 +1127,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 		break;
 	case UC_DISABLE:
 		if (git_config_get_untracked_cache() == 1)
-			warning("core.untrackedCache is set to true; "
-				"remove or change it, if you really want to "
-				"disable the untracked cache");
+			warning(_("core.untrackedCache is set to true; "
+				  "remove or change it, if you really want to "
+				  "disable the untracked cache"));
 		remove_untracked_cache(&the_index);
 		report(_("Untracked cache disabled"));
 		break;
@@ -1139,9 +1139,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 	case UC_ENABLE:
 	case UC_FORCE:
 		if (git_config_get_untracked_cache() == 0)
-			warning("core.untrackedCache is set to false; "
-				"remove or change it, if you really want to "
-				"enable the untracked cache");
+			warning(_("core.untrackedCache is set to false; "
+				  "remove or change it, if you really want to "
+				  "enable the untracked cache"));
 		add_untracked_cache(&the_index);
 		report(_("Untracked cache enabled for '%s'"), get_git_work_tree());
 		break;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* Re: [PATCH 01/13] i18n: apply: mark plural string for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (12 preceding siblings ...)
  2016-09-07 14:49 ` [PATCH 13/13] i18n: update-index: mark warnings " Vasco Almeida
@ 2016-09-08 20:45 ` Junio C Hamano
  2016-09-12 11:29 ` [PATCH v2 01/14] " Vasco Almeida
                   ` (27 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Junio C Hamano @ 2016-09-08 20:45 UTC (permalink / raw)
  To: Vasco Almeida; +Cc: git, Jiang Xin, Ævar Arnfjörð Bjarmason

Thanks.

I'll skip 01-03/13 and queue the remainder for now, as I'd want to
see Christian's "split builtin/apply.c into two, moving bulk to
apply.c at the top-level to be reused" merged to 'next' sooner and
to 'master' hopefully during this cycle.






^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH 07/13] i18n: merge-recursive: mark error messages for translation
  2016-09-07 14:49 ` [PATCH 07/13] i18n: merge-recursive: mark error messages " Vasco Almeida
@ 2016-09-09 19:23   ` Junio C Hamano
  0 siblings, 0 replies; 60+ messages in thread
From: Junio C Hamano @ 2016-09-09 19:23 UTC (permalink / raw)
  To: Vasco Almeida; +Cc: git, Jiang Xin, Ævar Arnfjörð Bjarmason

Vasco Almeida <vascomalmeida@sapo.pt> writes:

> Lowercase first word of such error messages following the usual style.

"Change X to lowercase" is fine, but "Lowercase" is not a verb.

I'd reword it to "Downcase the first word...".

Other than that all 04-13/13 looked fine to me.

Thanks.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH 04/13] i18n: blame: mark error messages for translation
  2016-09-07 14:49 ` [PATCH 04/13] i18n: blame: mark error " Vasco Almeida
@ 2016-09-10  9:41   ` Jean-Noël AVILA
  2016-09-12 15:40     ` Junio C Hamano
  0 siblings, 1 reply; 60+ messages in thread
From: Jean-Noël AVILA @ 2016-09-10  9:41 UTC (permalink / raw)
  To: Vasco Almeida; +Cc: git, Jiang Xin, Ævar Arnfjörð Bjarmason

On mercredi 7 septembre 2016 14:49:08 CEST Vasco Almeida wrote:
> Mark error messages for translation passed to die() function.
> Change "Cannot" to lowercase following the usual style.
> 
> Reflect changes to test by using test_i18ngrep.
> 
> Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
> ---
>  builtin/blame.c               | 12 ++++++------
>  t/t8003-blame-corner-cases.sh |  4 ++--
>  2 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/builtin/blame.c b/builtin/blame.c
> index a5bbf91..3fee197 100644
> --- a/builtin/blame.c
> +++ b/builtin/blame.c
> @@ -2601,7 +2601,7 @@ int cmd_blame(int argc, const char **argv, const char
> *prefix)
> 
>  	if (incremental || (output_option & OUTPUT_PORCELAIN)) {
>  		if (show_progress > 0)
> -			die("--progress can't be used with --incremental or porcelain 
formats");
> +			die(_("--progress can't be used with --incremental or porcelain
> formats")); show_progress = 0;
>  	} else if (show_progress < 0)
>  		show_progress = isatty(2);
> @@ -2727,7 +2727,7 @@ int cmd_blame(int argc, const char **argv, const char
> *prefix) sb.commits.compare = compare_commits_by_commit_date;
>  	}
>  	else if (contents_from)
> -		die("--contents and --reverse do not blend well.");
> +		die(_("--contents and --reverse do not blend well."));
>  	else {
>  		final_commit_name = prepare_initial(&sb);
>  		sb.commits.compare = compare_commits_by_reverse_commit_date;
> @@ -2747,12 +2747,12 @@ int cmd_blame(int argc, const char **argv, const
> char *prefix) add_pending_object(&revs, &(sb.final->object), ":");
>  	}
>  	else if (contents_from)
> -		die("Cannot use --contents with final commit object name");
> +		die(_("cannot use --contents with final commit object name"));
> 
>  	if (reverse && revs.first_parent_only) {
>  		final_commit = find_single_final(sb.revs, NULL);
>  		if (!final_commit)
> -			die("--reverse and --first-parent together require specified latest
> commit"); +			die(_("--reverse and --first-parent together require
> specified latest commit")); }
> 
>  	/*
> @@ -2779,7 +2779,7 @@ int cmd_blame(int argc, const char **argv, const char
> *prefix) }
> 
>  		if (oidcmp(&c->object.oid, &sb.final->object.oid))
> -			die("--reverse --first-parent together require range along first-
parent
> chain"); +			die(_("--reverse --first-parent together require range along
> first-parent chain")); }
> 
>  	if (is_null_oid(&sb.final->object.oid)) {
> @@ -2820,7 +2820,7 @@ int cmd_blame(int argc, const char **argv, const char
> *prefix) &bottom, &top, sb.path))
>  			usage(blame_usage);
>  		if (lno < top || ((lno || bottom) && lno < bottom))
> -			die("file %s has only %lu lines", path, lno);
> +			die(_("file %s has only %lu lines"), path, lno);

Here a plural version is needed.

>  		if (bottom < 1)
>  			bottom = 1;
>  		if (top < 1)
> diff --git a/t/t8003-blame-corner-cases.sh b/t/t8003-blame-corner-cases.sh
> index e48370d..661f9d4 100755
> --- a/t/t8003-blame-corner-cases.sh
> +++ b/t/t8003-blame-corner-cases.sh
> @@ -212,12 +212,12 @@ EOF
> 
>  test_expect_success 'blame -L with invalid start' '
>  	test_must_fail git blame -L5 tres 2>errors &&
> -	grep "has only 2 lines" errors
> +	test_i18ngrep "has only 2 lines" errors
>  '
> 
>  test_expect_success 'blame -L with invalid end' '
>  	test_must_fail git blame -L1,5 tres 2>errors &&
> -	grep "has only 2 lines" errors
> +	test_i18ngrep "has only 2 lines" errors
>  '
> 
>  test_expect_success 'blame parses <end> part of -L' '



^ permalink raw reply	[flat|nested] 60+ messages in thread

* [PATCH v2 01/14] i18n: apply: mark plural string for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (13 preceding siblings ...)
  2016-09-08 20:45 ` [PATCH 01/13] i18n: apply: mark plural string " Junio C Hamano
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:29 ` [PATCH v2 02/14] i18n: apply: mark error messages " Vasco Almeida
                   ` (26 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark plural string for translation using Q_().

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/apply.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index 1a488f9..ef03c74 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -4768,10 +4768,12 @@ static int apply_all_patches(struct apply_state *state,
 			       state->whitespace_error),
 			    state->whitespace_error);
 		if (state->applied_after_fixing_ws && state->apply)
-			warning("%d line%s applied after"
-				" fixing whitespace errors.",
-				state->applied_after_fixing_ws,
-				state->applied_after_fixing_ws == 1 ? "" : "s");
+			warning(Q_("%d line applied after"
+				   " fixing whitespace errors.",
+				   "%d lines applied after"
+				   " fixing whitespace errors.",
+				   state->applied_after_fixing_ws),
+				state->applied_after_fixing_ws);
 		else if (state->whitespace_error)
 			warning(Q_("%d line adds whitespace errors.",
 				   "%d lines add whitespace errors.",
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 02/14] i18n: apply: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (14 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 01/14] " Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:29 ` [PATCH v2 03/14] i18n: apply: mark info " Vasco Almeida
                   ` (25 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark error messages for translation passed to error() and die()
functions.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/apply.c | 46 +++++++++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index ef03c74..ef2c084 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -3065,8 +3065,8 @@ static int apply_binary_fragment(struct apply_state *state,
 	/* Binary patch is irreversible without the optional second hunk */
 	if (state->apply_in_reverse) {
 		if (!fragment->next)
-			return error("cannot reverse-apply a binary patch "
-				     "without the reverse hunk to '%s'",
+			return error(_("cannot reverse-apply a binary patch "
+				       "without the reverse hunk to '%s'"),
 				     patch->new_name
 				     ? patch->new_name : patch->old_name);
 		fragment = fragment->next;
@@ -3111,8 +3111,8 @@ static int apply_binary(struct apply_state *state,
 	    strlen(patch->new_sha1_prefix) != 40 ||
 	    get_sha1_hex(patch->old_sha1_prefix, sha1) ||
 	    get_sha1_hex(patch->new_sha1_prefix, sha1))
-		return error("cannot apply binary patch to '%s' "
-			     "without full index line", name);
+		return error(_("cannot apply binary patch to '%s' "
+			       "without full index line"), name);
 
 	if (patch->old_name) {
 		/*
@@ -3121,16 +3121,16 @@ static int apply_binary(struct apply_state *state,
 		 */
 		hash_sha1_file(img->buf, img->len, blob_type, sha1);
 		if (strcmp(sha1_to_hex(sha1), patch->old_sha1_prefix))
-			return error("the patch applies to '%s' (%s), "
-				     "which does not match the "
-				     "current contents.",
+			return error(_("the patch applies to '%s' (%s), "
+				       "which does not match the "
+				       "current contents."),
 				     name, sha1_to_hex(sha1));
 	}
 	else {
 		/* Otherwise, the old one must be empty. */
 		if (img->len)
-			return error("the patch applies to an empty "
-				     "'%s' but it is not empty", name);
+			return error(_("the patch applies to an empty "
+				       "'%s' but it is not empty"), name);
 	}
 
 	get_sha1_hex(patch->new_sha1_prefix, sha1);
@@ -3147,8 +3147,8 @@ static int apply_binary(struct apply_state *state,
 
 		result = read_sha1_file(sha1, &type, &size);
 		if (!result)
-			return error("the necessary postimage %s for "
-				     "'%s' cannot be read",
+			return error(_("the necessary postimage %s for "
+				       "'%s' cannot be read"),
 				     patch->new_sha1_prefix, name);
 		clear_image(img);
 		img->buf = result;
@@ -3523,7 +3523,7 @@ static int try_threeway(struct apply_state *state,
 		write_sha1_file("", 0, blob_type, pre_sha1);
 	else if (get_sha1(patch->old_sha1_prefix, pre_sha1) ||
 		 read_blob_object(&buf, pre_sha1, patch->old_mode))
-		return error("repository lacks the necessary blob to fall back on 3-way merge.");
+		return error(_("repository lacks the necessary blob to fall back on 3-way merge."));
 
 	fprintf(stderr, "Falling back to three-way merge...\n");
 
@@ -3541,11 +3541,11 @@ static int try_threeway(struct apply_state *state,
 	/* our_sha1[] is ours */
 	if (patch->is_new) {
 		if (load_current(state, &tmp_image, patch))
-			return error("cannot read the current contents of '%s'",
+			return error(_("cannot read the current contents of '%s'"),
 				     patch->new_name);
 	} else {
 		if (load_preimage(state, &tmp_image, patch, st, ce))
-			return error("cannot read the current contents of '%s'",
+			return error(_("cannot read the current contents of '%s'"),
 				     patch->old_name);
 	}
 	write_sha1_file(tmp_image.buf, tmp_image.len, blob_type, our_sha1);
@@ -4020,29 +4020,29 @@ static void build_fake_ancestor(struct patch *list, const char *filename)
 			if (!preimage_sha1_in_gitlink_patch(patch, sha1))
 				; /* ok, the textual part looks sane */
 			else
-				die("sha1 information is lacking or useless for submodule %s",
+				die(_("sha1 information is lacking or useless for submodule %s"),
 				    name);
 		} else if (!get_sha1_blob(patch->old_sha1_prefix, sha1)) {
 			; /* ok */
 		} else if (!patch->lines_added && !patch->lines_deleted) {
 			/* mode-only change: update the current */
 			if (get_current_sha1(patch->old_name, sha1))
-				die("mode change for %s, which is not "
-				    "in current HEAD", name);
+				die(_("mode change for %s, which is not "
+				    "in current HEAD"), name);
 		} else
-			die("sha1 information is lacking or useless "
-			    "(%s).", name);
+			die(_("sha1 information is lacking or useless "
+			    "(%s)."), name);
 
 		ce = make_cache_entry(patch->old_mode, sha1, name, 0, 0);
 		if (!ce)
 			die(_("make_cache_entry failed for path '%s'"), name);
 		if (add_index_entry(&result, ce, ADD_CACHE_OK_TO_ADD))
-			die ("Could not add %s to temporary index", name);
+			die(_("Could not add %s to temporary index"), name);
 	}
 
 	hold_lock_file_for_update(&lock, filename, LOCK_DIE_ON_ERROR);
 	if (write_locked_index(&result, &lock, COMMIT_LOCK))
-		die ("Could not write temporary index to %s", filename);
+		die(_("Could not write temporary index to %s"), filename);
 
 	discard_index(&result);
 }
@@ -4693,9 +4693,9 @@ static void check_apply_state(struct apply_state *state, int force_apply)
 	int is_not_gitdir = !startup_info->have_repository;
 
 	if (state->apply_with_reject && state->threeway)
-		die("--reject and --3way cannot be used together.");
+		die(_("--reject and --3way cannot be used together."));
 	if (state->cached && state->threeway)
-		die("--cached and --3way cannot be used together.");
+		die(_("--cached and --3way cannot be used together."));
 	if (state->threeway) {
 		if (is_not_gitdir)
 			die(_("--3way outside a repository"));
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 03/14] i18n: apply: mark info messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (15 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 02/14] i18n: apply: mark error messages " Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:29 ` [PATCH v2 04/14] i18n: blame: mark error " Vasco Almeida
                   ` (24 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark messages for translation printed to stderr.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/apply.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index ef2c084..43ab7c5 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -3525,7 +3525,7 @@ static int try_threeway(struct apply_state *state,
 		 read_blob_object(&buf, pre_sha1, patch->old_mode))
 		return error(_("repository lacks the necessary blob to fall back on 3-way merge."));
 
-	fprintf(stderr, "Falling back to three-way merge...\n");
+	fprintf(stderr, _("Falling back to three-way merge...\n"));
 
 	img = strbuf_detach(&buf, &len);
 	prepare_image(&tmp_image, img, len, 1);
@@ -3555,7 +3555,7 @@ static int try_threeway(struct apply_state *state,
 	status = three_way_merge(image, patch->new_name,
 				 pre_sha1, our_sha1, post_sha1);
 	if (status < 0) {
-		fprintf(stderr, "Failed to fall back on three-way merge...\n");
+		fprintf(stderr, _("Failed to fall back on three-way merge...\n"));
 		return status;
 	}
 
@@ -3567,9 +3567,9 @@ static int try_threeway(struct apply_state *state,
 			hashcpy(patch->threeway_stage[0].hash, pre_sha1);
 		hashcpy(patch->threeway_stage[1].hash, our_sha1);
 		hashcpy(patch->threeway_stage[2].hash, post_sha1);
-		fprintf(stderr, "Applied patch to '%s' with conflicts.\n", patch->new_name);
+		fprintf(stderr, _("Applied patch to '%s' with conflicts.\n"), patch->new_name);
 	} else {
-		fprintf(stderr, "Applied patch to '%s' cleanly.\n", patch->new_name);
+		fprintf(stderr, _("Applied patch to '%s' cleanly.\n"), patch->new_name);
 	}
 	return 0;
 }
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 04/14] i18n: blame: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (16 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 03/14] i18n: apply: mark info " Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:29 ` [PATCH v2 05/14] i18n: branch: mark option description " Vasco Almeida
                   ` (23 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark error messages for translation passed to die() function.
Change "Cannot" to lowercase following the usual style.

Reflect changes to test by using test_i18ngrep.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/blame.c               | 18 ++++++++++--------
 t/t8003-blame-corner-cases.sh |  4 ++--
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/builtin/blame.c b/builtin/blame.c
index a5bbf91..27aea79 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -2601,7 +2601,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 
 	if (incremental || (output_option & OUTPUT_PORCELAIN)) {
 		if (show_progress > 0)
-			die("--progress can't be used with --incremental or porcelain formats");
+			die(_("--progress can't be used with --incremental or porcelain formats"));
 		show_progress = 0;
 	} else if (show_progress < 0)
 		show_progress = isatty(2);
@@ -2727,7 +2727,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		sb.commits.compare = compare_commits_by_commit_date;
 	}
 	else if (contents_from)
-		die("--contents and --reverse do not blend well.");
+		die(_("--contents and --reverse do not blend well."));
 	else {
 		final_commit_name = prepare_initial(&sb);
 		sb.commits.compare = compare_commits_by_reverse_commit_date;
@@ -2747,12 +2747,12 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		add_pending_object(&revs, &(sb.final->object), ":");
 	}
 	else if (contents_from)
-		die("Cannot use --contents with final commit object name");
+		die(_("cannot use --contents with final commit object name"));
 
 	if (reverse && revs.first_parent_only) {
 		final_commit = find_single_final(sb.revs, NULL);
 		if (!final_commit)
-			die("--reverse and --first-parent together require specified latest commit");
+			die(_("--reverse and --first-parent together require specified latest commit"));
 	}
 
 	/*
@@ -2779,7 +2779,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		}
 
 		if (oidcmp(&c->object.oid, &sb.final->object.oid))
-			die("--reverse --first-parent together require range along first-parent chain");
+			die(_("--reverse --first-parent together require range along first-parent chain"));
 	}
 
 	if (is_null_oid(&sb.final->object.oid)) {
@@ -2790,7 +2790,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 	else {
 		o = get_origin(&sb, sb.final, path);
 		if (fill_blob_sha1_and_mode(o))
-			die("no such path %s in %s", path, final_commit_name);
+			die(_("no such path %s in %s"), path, final_commit_name);
 
 		if (DIFF_OPT_TST(&sb.revs->diffopt, ALLOW_TEXTCONV) &&
 		    textconv_object(path, o->mode, o->blob_sha1, 1, (char **) &sb.final_buf,
@@ -2801,7 +2801,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 						      &sb.final_buf_size);
 
 		if (!sb.final_buf)
-			die("Cannot read blob %s for path %s",
+			die(_("cannot read blob %s for path %s"),
 			    sha1_to_hex(o->blob_sha1),
 			    path);
 	}
@@ -2820,7 +2820,9 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 				    &bottom, &top, sb.path))
 			usage(blame_usage);
 		if (lno < top || ((lno || bottom) && lno < bottom))
-			die("file %s has only %lu lines", path, lno);
+			die(Q_("file %s has only %lu line",
+			       "file %s has only %lu lines",
+			       lno), path, lno);
 		if (bottom < 1)
 			bottom = 1;
 		if (top < 1)
diff --git a/t/t8003-blame-corner-cases.sh b/t/t8003-blame-corner-cases.sh
index e48370d..661f9d4 100755
--- a/t/t8003-blame-corner-cases.sh
+++ b/t/t8003-blame-corner-cases.sh
@@ -212,12 +212,12 @@ EOF
 
 test_expect_success 'blame -L with invalid start' '
 	test_must_fail git blame -L5 tres 2>errors &&
-	grep "has only 2 lines" errors
+	test_i18ngrep "has only 2 lines" errors
 '
 
 test_expect_success 'blame -L with invalid end' '
 	test_must_fail git blame -L1,5 tres 2>errors &&
-	grep "has only 2 lines" errors
+	test_i18ngrep "has only 2 lines" errors
 '
 
 test_expect_success 'blame parses <end> part of -L' '
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 05/14] i18n: branch: mark option description for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (17 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 04/14] i18n: blame: mark error " Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:29 ` [PATCH v2 06/14] i18n: config: mark error message " Vasco Almeida
                   ` (22 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/branch.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/branch.c b/builtin/branch.c
index 7df0543..d5d93a8 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -657,7 +657,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
 		OPT_SET_INT( 0, "set-upstream",  &track, N_("change upstream info"),
 			BRANCH_TRACK_OVERRIDE),
 		OPT_STRING('u', "set-upstream-to", &new_upstream, N_("upstream"), N_("change the upstream info")),
-		OPT_BOOL(0, "unset-upstream", &unset_upstream, "Unset the upstream info"),
+		OPT_BOOL(0, "unset-upstream", &unset_upstream, N_("Unset the upstream info")),
 		OPT__COLOR(&branch_use_color, N_("use colored output")),
 		OPT_SET_INT('r', "remotes",     &filter.kind, N_("act on remote-tracking branches"),
 			FILTER_REFS_REMOTES),
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 06/14] i18n: config: mark error message for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (18 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 05/14] i18n: branch: mark option description " Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:29 ` [PATCH v2 07/14] i18n: merge-recursive: mark error messages " Vasco Almeida
                   ` (21 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/config.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/builtin/config.c b/builtin/config.c
index 6cbf733..05843a0 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -622,8 +622,8 @@ int cmd_config(int argc, const char **argv, const char *prefix)
 		value = normalize_value(argv[0], argv[1]);
 		ret = git_config_set_in_file_gently(given_config_source.file, argv[0], value);
 		if (ret == CONFIG_NOTHING_SET)
-			error("cannot overwrite multiple values with a single value\n"
-			"       Use a regexp, --add or --replace-all to change %s.", argv[0]);
+			error(_("cannot overwrite multiple values with a single value\n"
+			"       Use a regexp, --add or --replace-all to change %s."), argv[0]);
 		return ret;
 	}
 	else if (actions == ACTION_SET_ALL) {
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 07/14] i18n: merge-recursive: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (19 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 06/14] i18n: config: mark error message " Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:47   ` Jean-Noël Avila
  2016-09-12 16:04   ` Junio C Hamano
  2016-09-12 11:29 ` [PATCH v2 08/14] i18n: merge-recursive: mark verbose message " Vasco Almeida
                   ` (20 subsequent siblings)
  41 siblings, 2 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Lowercase first word of such error messages following the usual style.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/merge-recursive.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index fd2c455..0bc88a7 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -42,30 +42,30 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 			if (!arg[2])
 				break;
 			if (parse_merge_opt(&o, arg + 2))
-				die("Unknown option %s", arg);
+				die(_("unknown option %s"), arg);
 			continue;
 		}
 		if (bases_count < ARRAY_SIZE(bases)-1) {
 			struct object_id *oid = xmalloc(sizeof(struct object_id));
 			if (get_oid(argv[i], oid))
-				die("Could not parse object '%s'", argv[i]);
+				die(_("could not parse object '%s'"), argv[i]);
 			bases[bases_count++] = oid;
 		}
 		else
-			warning("Cannot handle more than %d bases. "
-				"Ignoring %s.",
+			warning(_("cannot handle more than %d bases. "
+				  "Ignoring %s."),
 				(int)ARRAY_SIZE(bases)-1, argv[i]);
 	}
 	if (argc - i != 3) /* "--" "<head>" "<remote>" */
-		die("Not handling anything other than two heads merge.");
+		die(_("not handling anything other than two heads merge."));
 
 	o.branch1 = argv[++i];
 	o.branch2 = argv[++i];
 
 	if (get_oid(o.branch1, &h1))
-		die("Could not resolve ref '%s'", o.branch1);
+		die(_("could not resolve ref '%s'"), o.branch1);
 	if (get_oid(o.branch2, &h2))
-		die("Could not resolve ref '%s'", o.branch2);
+		die(_("could not resolve ref '%s'"), o.branch2);
 
 	o.branch1 = better_branch_name(o.branch1);
 	o.branch2 = better_branch_name(o.branch2);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 08/14] i18n: merge-recursive: mark verbose message for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (20 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 07/14] i18n: merge-recursive: mark error messages " Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:29 ` [PATCH v2 09/14] i18n: notes: mark error messages " Vasco Almeida
                   ` (19 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/merge-recursive.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 0bc88a7..1c21802 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -71,7 +71,7 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 	o.branch2 = better_branch_name(o.branch2);
 
 	if (o.verbosity >= 3)
-		printf("Merging %s with %s\n", o.branch1, o.branch2);
+		printf(_("Merging %s with %s\n"), o.branch1, o.branch2);
 
 	failed = merge_recursive_generic(&o, &h1, &h2, bases_count, bases, &result);
 	if (failed < 0)
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 09/14] i18n: notes: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (21 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 08/14] i18n: merge-recursive: mark verbose message " Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 12:23   ` Jean-Noël Avila
  2016-09-12 11:29 ` [PATCH v2 10/14] notes: lowercase first word of error messages Vasco Almeida
                   ` (18 subsequent siblings)
  41 siblings, 1 reply; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/notes.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/builtin/notes.c b/builtin/notes.c
index f848b89..abacae2 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -340,7 +340,7 @@ static struct notes_tree *init_notes_check(const char *subcommand,
 
 	ref = (flags & NOTES_INIT_WRITABLE) ? t->update_ref : t->ref;
 	if (!starts_with(ref, "refs/notes/"))
-		die("Refusing to %s notes in %s (outside of refs/notes/)",
+		die(_("Refusing to %s notes in %s (outside of refs/notes/)"),
 		    subcommand, ref);
 	return t;
 }
@@ -680,11 +680,11 @@ static int merge_abort(struct notes_merge_options *o)
 	 */
 
 	if (delete_ref("NOTES_MERGE_PARTIAL", NULL, 0))
-		ret += error("Failed to delete ref NOTES_MERGE_PARTIAL");
+		ret += error(_("Failed to delete ref NOTES_MERGE_PARTIAL"));
 	if (delete_ref("NOTES_MERGE_REF", NULL, REF_NODEREF))
-		ret += error("Failed to delete ref NOTES_MERGE_REF");
+		ret += error(_("Failed to delete ref NOTES_MERGE_REF"));
 	if (notes_merge_abort(o))
-		ret += error("Failed to remove 'git notes merge' worktree");
+		ret += error(_("Failed to remove 'git notes merge' worktree"));
 	return ret;
 }
 
@@ -704,11 +704,11 @@ static int merge_commit(struct notes_merge_options *o)
 	 */
 
 	if (get_sha1("NOTES_MERGE_PARTIAL", sha1))
-		die("Failed to read ref NOTES_MERGE_PARTIAL");
+		die(_("Failed to read ref NOTES_MERGE_PARTIAL"));
 	else if (!(partial = lookup_commit_reference(sha1)))
-		die("Could not find commit from NOTES_MERGE_PARTIAL.");
+		die(_("Could not find commit from NOTES_MERGE_PARTIAL."));
 	else if (parse_commit(partial))
-		die("Could not parse commit from NOTES_MERGE_PARTIAL.");
+		die(_("Could not parse commit from NOTES_MERGE_PARTIAL."));
 
 	if (partial->parents)
 		hashcpy(parent_sha1, partial->parents->item->object.oid.hash);
@@ -721,10 +721,10 @@ static int merge_commit(struct notes_merge_options *o)
 	o->local_ref = local_ref_to_free =
 		resolve_refdup("NOTES_MERGE_REF", 0, sha1, NULL);
 	if (!o->local_ref)
-		die("Failed to resolve NOTES_MERGE_REF");
+		die(_("Failed to resolve NOTES_MERGE_REF"));
 
 	if (notes_merge_commit(o, t, partial, sha1))
-		die("Failed to finalize notes merge");
+		die(_("Failed to finalize notes merge"));
 
 	/* Reuse existing commit message in reflog message */
 	memset(&pretty_ctx, 0, sizeof(pretty_ctx));
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 10/14] notes: lowercase first word of error messages
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (22 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 09/14] i18n: notes: mark error messages " Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:29 ` [PATCH v2 11/14] i18n: receive-pack: mark messages for translation Vasco Almeida
                   ` (17 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Follow the usual case style.

Update one test to reflect these changes.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/notes.c                  | 64 ++++++++++++++++++++--------------------
 t/t3320-notes-merge-worktrees.sh |  2 +-
 2 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/builtin/notes.c b/builtin/notes.c
index abacae2..14488ba 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -191,7 +191,7 @@ static void prepare_note_data(const unsigned char *object, struct note_data *d,
 		strbuf_reset(&d->buf);
 
 		if (launch_editor(d->edit_path, &d->buf, NULL)) {
-			die(_("Please supply the note contents using either -m or -F option"));
+			die(_("please supply the note contents using either -m or -F option"));
 		}
 		strbuf_stripspace(&d->buf, 1);
 	}
@@ -202,7 +202,7 @@ static void write_note_data(struct note_data *d, unsigned char *sha1)
 	if (write_sha1_file(d->buf.buf, d->buf.len, blob_type, sha1)) {
 		error(_("unable to write note object"));
 		if (d->edit_path)
-			error(_("The note contents have been left in %s"),
+			error(_("the note contents have been left in %s"),
 				d->edit_path);
 		exit(128);
 	}
@@ -251,14 +251,14 @@ static int parse_reuse_arg(const struct option *opt, const char *arg, int unset)
 		strbuf_addch(&d->buf, '\n');
 
 	if (get_sha1(arg, object))
-		die(_("Failed to resolve '%s' as a valid ref."), arg);
+		die(_("failed to resolve '%s' as a valid ref."), arg);
 	if (!(buf = read_sha1_file(object, &type, &len))) {
 		free(buf);
-		die(_("Failed to read object '%s'."), arg);
+		die(_("failed to read object '%s'."), arg);
 	}
 	if (type != OBJ_BLOB) {
 		free(buf);
-		die(_("Cannot read note data from non-blob object '%s'."), arg);
+		die(_("cannot read note data from non-blob object '%s'."), arg);
 	}
 	strbuf_add(&d->buf, buf, len);
 	free(buf);
@@ -298,13 +298,13 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
 
 		split = strbuf_split(&buf, ' ');
 		if (!split[0] || !split[1])
-			die(_("Malformed input line: '%s'."), buf.buf);
+			die(_("malformed input line: '%s'."), buf.buf);
 		strbuf_rtrim(split[0]);
 		strbuf_rtrim(split[1]);
 		if (get_sha1(split[0]->buf, from_obj))
-			die(_("Failed to resolve '%s' as a valid ref."), split[0]->buf);
+			die(_("failed to resolve '%s' as a valid ref."), split[0]->buf);
 		if (get_sha1(split[1]->buf, to_obj))
-			die(_("Failed to resolve '%s' as a valid ref."), split[1]->buf);
+			die(_("failed to resolve '%s' as a valid ref."), split[1]->buf);
 
 		if (rewrite_cmd)
 			err = copy_note_for_rewrite(c, from_obj, to_obj);
@@ -313,7 +313,7 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
 					combine_notes_overwrite);
 
 		if (err) {
-			error(_("Failed to copy notes from '%s' to '%s'"),
+			error(_("failed to copy notes from '%s' to '%s'"),
 			      split[0]->buf, split[1]->buf);
 			ret = 1;
 		}
@@ -340,7 +340,7 @@ static struct notes_tree *init_notes_check(const char *subcommand,
 
 	ref = (flags & NOTES_INIT_WRITABLE) ? t->update_ref : t->ref;
 	if (!starts_with(ref, "refs/notes/"))
-		die(_("Refusing to %s notes in %s (outside of refs/notes/)"),
+		die(_("refusing to %s notes in %s (outside of refs/notes/)"),
 		    subcommand, ref);
 	return t;
 }
@@ -367,13 +367,13 @@ static int list(int argc, const char **argv, const char *prefix)
 	t = init_notes_check("list", 0);
 	if (argc) {
 		if (get_sha1(argv[0], object))
-			die(_("Failed to resolve '%s' as a valid ref."), argv[0]);
+			die(_("failed to resolve '%s' as a valid ref."), argv[0]);
 		note = get_note(t, object);
 		if (note) {
 			puts(sha1_to_hex(note));
 			retval = 0;
 		} else
-			retval = error(_("No note found for object %s."),
+			retval = error(_("no note found for object %s."),
 				       sha1_to_hex(object));
 	} else
 		retval = for_each_note(t, 0, list_each_note, NULL);
@@ -422,7 +422,7 @@ static int add(int argc, const char **argv, const char *prefix)
 	object_ref = argc > 1 ? argv[1] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check("add", NOTES_INIT_WRITABLE);
 	note = get_note(t, object);
@@ -508,12 +508,12 @@ static int copy(int argc, const char **argv, const char *prefix)
 	}
 
 	if (get_sha1(argv[0], from_obj))
-		die(_("Failed to resolve '%s' as a valid ref."), argv[0]);
+		die(_("failed to resolve '%s' as a valid ref."), argv[0]);
 
 	object_ref = 1 < argc ? argv[1] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check("copy", NOTES_INIT_WRITABLE);
 	note = get_note(t, object);
@@ -532,7 +532,7 @@ static int copy(int argc, const char **argv, const char *prefix)
 
 	from_note = get_note(t, from_obj);
 	if (!from_note) {
-		retval = error(_("Missing notes on source object %s. Cannot "
+		retval = error(_("missing notes on source object %s. Cannot "
 			       "copy."), sha1_to_hex(from_obj));
 		goto out;
 	}
@@ -591,7 +591,7 @@ static int append_edit(int argc, const char **argv, const char *prefix)
 	object_ref = 1 < argc ? argv[1] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check(argv[0], NOTES_INIT_WRITABLE);
 	note = get_note(t, object);
@@ -654,13 +654,13 @@ static int show(int argc, const char **argv, const char *prefix)
 	object_ref = argc ? argv[0] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check("show", 0);
 	note = get_note(t, object);
 
 	if (!note)
-		retval = error(_("No note found for object %s."),
+		retval = error(_("no note found for object %s."),
 			       sha1_to_hex(object));
 	else {
 		const char *show_args[3] = {"show", sha1_to_hex(note), NULL};
@@ -680,11 +680,11 @@ static int merge_abort(struct notes_merge_options *o)
 	 */
 
 	if (delete_ref("NOTES_MERGE_PARTIAL", NULL, 0))
-		ret += error(_("Failed to delete ref NOTES_MERGE_PARTIAL"));
+		ret += error(_("failed to delete ref NOTES_MERGE_PARTIAL"));
 	if (delete_ref("NOTES_MERGE_REF", NULL, REF_NODEREF))
-		ret += error(_("Failed to delete ref NOTES_MERGE_REF"));
+		ret += error(_("failed to delete ref NOTES_MERGE_REF"));
 	if (notes_merge_abort(o))
-		ret += error(_("Failed to remove 'git notes merge' worktree"));
+		ret += error(_("failed to remove 'git notes merge' worktree"));
 	return ret;
 }
 
@@ -704,11 +704,11 @@ static int merge_commit(struct notes_merge_options *o)
 	 */
 
 	if (get_sha1("NOTES_MERGE_PARTIAL", sha1))
-		die(_("Failed to read ref NOTES_MERGE_PARTIAL"));
+		die(_("failed to read ref NOTES_MERGE_PARTIAL"));
 	else if (!(partial = lookup_commit_reference(sha1)))
-		die(_("Could not find commit from NOTES_MERGE_PARTIAL."));
+		die(_("could not find commit from NOTES_MERGE_PARTIAL."));
 	else if (parse_commit(partial))
-		die(_("Could not parse commit from NOTES_MERGE_PARTIAL."));
+		die(_("could not parse commit from NOTES_MERGE_PARTIAL."));
 
 	if (partial->parents)
 		hashcpy(parent_sha1, partial->parents->item->object.oid.hash);
@@ -721,10 +721,10 @@ static int merge_commit(struct notes_merge_options *o)
 	o->local_ref = local_ref_to_free =
 		resolve_refdup("NOTES_MERGE_REF", 0, sha1, NULL);
 	if (!o->local_ref)
-		die(_("Failed to resolve NOTES_MERGE_REF"));
+		die(_("failed to resolve NOTES_MERGE_REF"));
 
 	if (notes_merge_commit(o, t, partial, sha1))
-		die(_("Failed to finalize notes merge"));
+		die(_("failed to finalize notes merge"));
 
 	/* Reuse existing commit message in reflog message */
 	memset(&pretty_ctx, 0, sizeof(pretty_ctx));
@@ -794,7 +794,7 @@ static int merge(int argc, const char **argv, const char *prefix)
 	}
 
 	if (do_merge && argc != 1) {
-		error(_("Must specify a notes ref to merge"));
+		error(_("must specify a notes ref to merge"));
 		usage_with_options(git_notes_merge_usage, options);
 	} else if (!do_merge && argc) {
 		error(_("too many parameters"));
@@ -818,7 +818,7 @@ static int merge(int argc, const char **argv, const char *prefix)
 
 	if (strategy) {
 		if (parse_notes_merge_strategy(strategy, &o.strategy)) {
-			error(_("Unknown -s/--strategy: %s"), strategy);
+			error(_("unknown -s/--strategy: %s"), strategy);
 			usage_with_options(git_notes_merge_usage, options);
 		}
 	} else {
@@ -855,10 +855,10 @@ static int merge(int argc, const char **argv, const char *prefix)
 		/* Store ref-to-be-updated into .git/NOTES_MERGE_REF */
 		wt = find_shared_symref("NOTES_MERGE_REF", default_notes_ref());
 		if (wt)
-			die(_("A notes merge into %s is already in-progress at %s"),
+			die(_("a notes merge into %s is already in-progress at %s"),
 			    default_notes_ref(), wt->path);
 		if (create_symref("NOTES_MERGE_REF", default_notes_ref(), NULL))
-			die(_("Failed to store link to current notes ref (%s)"),
+			die(_("failed to store link to current notes ref (%s)"),
 			    default_notes_ref());
 		printf(_("Automatic notes merge failed. Fix conflicts in %s and "
 			 "commit the result with 'git notes merge --commit', or "
@@ -1014,7 +1014,7 @@ int cmd_notes(int argc, const char **argv, const char *prefix)
 	else if (!strcmp(argv[0], "get-ref"))
 		result = get_ref(argc, argv, prefix);
 	else {
-		result = error(_("Unknown subcommand: %s"), argv[0]);
+		result = error(_("unknown subcommand: %s"), argv[0]);
 		usage_with_options(git_notes_usage, options);
 	}
 
diff --git a/t/t3320-notes-merge-worktrees.sh b/t/t3320-notes-merge-worktrees.sh
index 6e05115..b9c3bc2 100755
--- a/t/t3320-notes-merge-worktrees.sh
+++ b/t/t3320-notes-merge-worktrees.sh
@@ -52,7 +52,7 @@ test_expect_success 'merge z into y while mid-merge in another workdir fails' '
 		cd worktree &&
 		git config core.notesRef refs/notes/y &&
 		test_must_fail git notes merge z 2>err &&
-		test_i18ngrep "A notes merge into refs/notes/y is already in-progress at" err
+		test_i18ngrep "a notes merge into refs/notes/y is already in-progress at" err
 	) &&
 	test_path_is_missing .git/worktrees/worktree/NOTES_MERGE_REF
 '
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 11/14] i18n: receive-pack: mark messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (23 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 10/14] notes: lowercase first word of error messages Vasco Almeida
@ 2016-09-12 11:29 ` Vasco Almeida
  2016-09-12 11:30 ` [PATCH v2 12/14] i18n: show-branch: mark error " Vasco Almeida
                   ` (16 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:29 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark messages refuse_unconfigured_deny_msg and
refuse_unconfigured_deny_delete_current_msg for translation.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/receive-pack.c | 58 ++++++++++++++++++++++----------------------------
 1 file changed, 25 insertions(+), 33 deletions(-)

diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index f1ce05c..896b16f 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -781,47 +781,39 @@ static int is_ref_checked_out(const char *ref)
 	return !strcmp(head_name, ref);
 }
 
-static char *refuse_unconfigured_deny_msg[] = {
-	"By default, updating the current branch in a non-bare repository",
-	"is denied, because it will make the index and work tree inconsistent",
-	"with what you pushed, and will require 'git reset --hard' to match",
-	"the work tree to HEAD.",
-	"",
-	"You can set 'receive.denyCurrentBranch' configuration variable to",
-	"'ignore' or 'warn' in the remote repository to allow pushing into",
-	"its current branch; however, this is not recommended unless you",
-	"arranged to update its work tree to match what you pushed in some",
-	"other way.",
-	"",
-	"To squelch this message and still keep the default behaviour, set",
-	"'receive.denyCurrentBranch' configuration variable to 'refuse'."
-};
+static char *refuse_unconfigured_deny_msg =
+	N_("By default, updating the current branch in a non-bare repository\n"
+	   "is denied, because it will make the index and work tree inconsistent\n"
+	   "with what you pushed, and will require 'git reset --hard' to match\n"
+	   "the work tree to HEAD.\n"
+	   "\n"
+	   "You can set 'receive.denyCurrentBranch' configuration variable to\n"
+	   "'ignore' or 'warn' in the remote repository to allow pushing into\n"
+	   "its current branch; however, this is not recommended unless you\n"
+	   "arranged to update its work tree to match what you pushed in some\n"
+	   "other way.\n"
+	   "\n"
+	   "To squelch this message and still keep the default behaviour, set\n"
+	   "'receive.denyCurrentBranch' configuration variable to 'refuse'.");
 
 static void refuse_unconfigured_deny(void)
 {
-	int i;
-	for (i = 0; i < ARRAY_SIZE(refuse_unconfigured_deny_msg); i++)
-		rp_error("%s", refuse_unconfigured_deny_msg[i]);
+	rp_error("%s", _(refuse_unconfigured_deny_msg));
 }
 
-static char *refuse_unconfigured_deny_delete_current_msg[] = {
-	"By default, deleting the current branch is denied, because the next",
-	"'git clone' won't result in any file checked out, causing confusion.",
-	"",
-	"You can set 'receive.denyDeleteCurrent' configuration variable to",
-	"'warn' or 'ignore' in the remote repository to allow deleting the",
-	"current branch, with or without a warning message.",
-	"",
-	"To squelch this message, you can set it to 'refuse'."
-};
+static char *refuse_unconfigured_deny_delete_current_msg =
+	N_("By default, deleting the current branch is denied, because the next\n"
+	   "'git clone' won't result in any file checked out, causing confusion.\n"
+	   "\n"
+	   "You can set 'receive.denyDeleteCurrent' configuration variable to\n"
+	   "'warn' or 'ignore' in the remote repository to allow deleting the\n"
+	   "current branch, with or without a warning message.\n"
+	   "\n"
+	   "To squelch this message, you can set it to 'refuse'.");
 
 static void refuse_unconfigured_deny_delete_current(void)
 {
-	int i;
-	for (i = 0;
-	     i < ARRAY_SIZE(refuse_unconfigured_deny_delete_current_msg);
-	     i++)
-		rp_error("%s", refuse_unconfigured_deny_delete_current_msg[i]);
+	rp_error("%s", _(refuse_unconfigured_deny_delete_current_msg));
 }
 
 static int command_singleton_iterator(void *cb_data, unsigned char sha1[20]);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 12/14] i18n: show-branch: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (24 preceding siblings ...)
  2016-09-12 11:29 ` [PATCH v2 11/14] i18n: receive-pack: mark messages for translation Vasco Almeida
@ 2016-09-12 11:30 ` Vasco Almeida
  2016-09-12 12:12   ` Jean-Noël Avila
  2016-09-12 11:30 ` [PATCH v2 13/14] i18n: update-index: mark warnings " Vasco Almeida
                   ` (15 subsequent siblings)
  41 siblings, 1 reply; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:30 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Lowercase some messages first word to match style of the others.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/show-branch.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index 2566935..6bf82cd 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -538,7 +538,7 @@ static void append_one_rev(const char *av)
 		for_each_ref(append_matching_ref, NULL);
 		if (saved_matches == ref_name_cnt &&
 		    ref_name_cnt < MAX_REVS)
-			error("no matching refs with %s", av);
+			error(_("no matching refs with %s"), av);
 		if (saved_matches + 1 < ref_name_cnt)
 			sort_ref_range(saved_matches, ref_name_cnt);
 		return;
@@ -701,8 +701,8 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 			 *
 			 * Also --all and --remotes do not make sense either.
 			 */
-			die("--reflog is incompatible with --all, --remotes, "
-			    "--independent or --merge-base");
+			die(_("--reflog is incompatible with --all, --remotes, "
+			      "--independent or --merge-base"));
 	}
 
 	/* If nothing is specified, show all branches by default */
@@ -725,16 +725,16 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 			av = fake_av;
 			ac = 1;
 			if (!*av)
-				die("no branches given, and HEAD is not valid");
+				die(_("no branches given, and HEAD is not valid"));
 		}
 		if (ac != 1)
-			die("--reflog option needs one branch name");
+			die(_("--reflog option needs one branch name"));
 
 		if (MAX_REVS < reflog)
-			die("Only %d entries can be shown at one time.",
+			die("only %d entries can be shown at one time.",
 			    MAX_REVS);
 		if (!dwim_ref(*av, strlen(*av), oid.hash, &ref))
-			die("No such ref %s", *av);
+			die(_("no such ref %s"), *av);
 
 		/* Has the base been specified? */
 		if (reflog_base) {
@@ -828,10 +828,10 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 		if (MAX_REVS <= num_rev)
 			die("cannot handle more than %d revs.", MAX_REVS);
 		if (get_sha1(ref_name[num_rev], revkey.hash))
-			die("'%s' is not a valid ref.", ref_name[num_rev]);
+			die(_("'%s' is not a valid ref."), ref_name[num_rev]);
 		commit = lookup_commit_reference(revkey.hash);
 		if (!commit)
-			die("cannot find commit %s (%s)",
+			die(_("cannot find commit %s (%s)"),
 			    ref_name[num_rev], oid_to_hex(&revkey));
 		parse_commit(commit);
 		mark_seen(commit, &seen);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 13/14] i18n: update-index: mark warnings for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (25 preceding siblings ...)
  2016-09-12 11:30 ` [PATCH v2 12/14] i18n: show-branch: mark error " Vasco Almeida
@ 2016-09-12 11:30 ` Vasco Almeida
  2016-09-12 11:30 ` [PATCH v2 14/14] i18n: show-branch: mark plural strings " Vasco Almeida
                   ` (14 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:30 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/update-index.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/builtin/update-index.c b/builtin/update-index.c
index ba04b19..7a17ce1 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -1127,9 +1127,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 		break;
 	case UC_DISABLE:
 		if (git_config_get_untracked_cache() == 1)
-			warning("core.untrackedCache is set to true; "
-				"remove or change it, if you really want to "
-				"disable the untracked cache");
+			warning(_("core.untrackedCache is set to true; "
+				  "remove or change it, if you really want to "
+				  "disable the untracked cache"));
 		remove_untracked_cache(&the_index);
 		report(_("Untracked cache disabled"));
 		break;
@@ -1139,9 +1139,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 	case UC_ENABLE:
 	case UC_FORCE:
 		if (git_config_get_untracked_cache() == 0)
-			warning("core.untrackedCache is set to false; "
-				"remove or change it, if you really want to "
-				"enable the untracked cache");
+			warning(_("core.untrackedCache is set to false; "
+				  "remove or change it, if you really want to "
+				  "enable the untracked cache"));
 		add_untracked_cache(&the_index);
 		report(_("Untracked cache enabled for '%s'"), get_git_work_tree());
 		break;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v2 14/14] i18n: show-branch: mark plural strings for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (26 preceding siblings ...)
  2016-09-12 11:30 ` [PATCH v2 13/14] i18n: update-index: mark warnings " Vasco Almeida
@ 2016-09-12 11:30 ` Vasco Almeida
  2016-09-15 14:58 ` [PATCH v3 01/14] i18n: apply: mark plural string " Vasco Almeida
                   ` (13 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-12 11:30 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark plural string for translation using Q_().

Although we already know that the plural sentence is always used in the
English source, other languages have complex plural rules they must
comply according to the value of MAX_REVS.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/show-branch.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index 6bf82cd..5905ca1 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -373,8 +373,9 @@ static int append_ref(const char *refname, const struct object_id *oid,
 				return 0;
 	}
 	if (MAX_REVS <= ref_name_cnt) {
-		warning("ignoring %s; cannot handle more than %d refs",
-			refname, MAX_REVS);
+		warning(Q_("ignoring %s; cannot handle more than %d ref",
+			   "ignoring %s; cannot handle more than %d refs",
+			   MAX_REVS), refname, MAX_REVS);
 		return 0;
 	}
 	ref_name[ref_name_cnt++] = xstrdup(refname);
@@ -731,8 +732,9 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 			die(_("--reflog option needs one branch name"));
 
 		if (MAX_REVS < reflog)
-			die("only %d entries can be shown at one time.",
-			    MAX_REVS);
+			die(Q_("only %d entry can be shown at one time.",
+			       "only %d entries can be shown at one time.",
+			       MAX_REVS), MAX_REVS);
 		if (!dwim_ref(*av, strlen(*av), oid.hash, &ref))
 			die(_("no such ref %s"), *av);
 
@@ -826,7 +828,10 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 		unsigned int flag = 1u << (num_rev + REV_SHIFT);
 
 		if (MAX_REVS <= num_rev)
-			die("cannot handle more than %d revs.", MAX_REVS);
+			die(Q_("cannot handle more than %d rev.",
+			       "cannot handle more than %d revs.",
+			       MAX_REVS), MAX_REVS);
+		if (get_sha1(ref_name[num_rev], revkey.hash))
 		if (get_sha1(ref_name[num_rev], revkey.hash))
 			die(_("'%s' is not a valid ref."), ref_name[num_rev]);
 		commit = lookup_commit_reference(revkey.hash);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 07/14] i18n: merge-recursive: mark error messages for translation
  2016-09-12 11:29 ` [PATCH v2 07/14] i18n: merge-recursive: mark error messages " Vasco Almeida
@ 2016-09-12 11:47   ` Jean-Noël Avila
  2016-09-12 17:01     ` Junio C Hamano
  2016-09-12 16:04   ` Junio C Hamano
  1 sibling, 1 reply; 60+ messages in thread
From: Jean-Noël Avila @ 2016-09-12 11:47 UTC (permalink / raw)
  To: Vasco Almeida, git
  Cc: Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Hi,

Le 12/09/2016 à 13:29, Vasco Almeida a écrit :
> -			warning("Cannot handle more than %d bases. "
> -				"Ignoring %s.",
> +			warning(_("cannot handle more than %d bases. "
> +				  "Ignoring %s."),
>  				(int)ARRAY_SIZE(bases)-1, argv[i]);
>  	}

This one is also missing the plural form.

Thanks,

JN

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 12/14] i18n: show-branch: mark error messages for translation
  2016-09-12 11:30 ` [PATCH v2 12/14] i18n: show-branch: mark error " Vasco Almeida
@ 2016-09-12 12:12   ` Jean-Noël Avila
  2016-09-12 17:02     ` Junio C Hamano
  0 siblings, 1 reply; 60+ messages in thread
From: Jean-Noël Avila @ 2016-09-12 12:12 UTC (permalink / raw)
  To: Vasco Almeida, git
  Cc: Jiang Xin, Ævar Arnfjörð Bjarmason, Junio C Hamano

Le 12/09/2016 à 13:30, Vasco Almeida a écrit :
>  		if (MAX_REVS < reflog)
> -			die("Only %d entries can be shown at one time.",
> +			die("only %d entries can be shown at one time.",
>  			    MAX_REVS);

Wouldn't you i18n this one too, with plural form?


JN

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 09/14] i18n: notes: mark error messages for translation
  2016-09-12 11:29 ` [PATCH v2 09/14] i18n: notes: mark error messages " Vasco Almeida
@ 2016-09-12 12:23   ` Jean-Noël Avila
  2016-09-13 16:35     ` Vasco Almeida
  0 siblings, 1 reply; 60+ messages in thread
From: Jean-Noël Avila @ 2016-09-12 12:23 UTC (permalink / raw)
  To: Vasco Almeida, git
  Cc: Jiang Xin, Ævar Arnfjörð Bjarmason, Junio C Hamano

Le 12/09/2016 à 13:29, Vasco Almeida a écrit :
> Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
> ---
>  builtin/notes.c | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/builtin/notes.c b/builtin/notes.c
> index f848b89..abacae2 100644
> --- a/builtin/notes.c
> +++ b/builtin/notes.c
> @@ -340,7 +340,7 @@ static struct notes_tree *init_notes_check(const char *subcommand,
>  
>  	ref = (flags & NOTES_INIT_WRITABLE) ? t->update_ref : t->ref;
>  	if (!starts_with(ref, "refs/notes/"))
> -		die("Refusing to %s notes in %s (outside of refs/notes/)",
> +		die(_("Refusing to %s notes in %s (outside of refs/notes/)"),
>  		    subcommand, ref);
>  	return t;
>  }

Not sure this one will be easy to localize. The verb is passed as a
parameter : see line 366 "list", line 426 "add", line 517 "copy", line
658 "show", line 816 "merge", line 908 "remove" or line 595 with argv[0].

If all the verbs are real subcommands, then the translators should be
warned that this is some english twisting, but that they need to refer
to the subcommand on the command line.

Otherwise,

Acked-by: Jean-Noël Avila <jean-noel.avila@free.fr>

JN

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH 04/13] i18n: blame: mark error messages for translation
  2016-09-10  9:41   ` Jean-Noël AVILA
@ 2016-09-12 15:40     ` Junio C Hamano
  0 siblings, 0 replies; 60+ messages in thread
From: Junio C Hamano @ 2016-09-12 15:40 UTC (permalink / raw)
  To: Jean-Noël AVILA
  Cc: Vasco Almeida, git, Jiang Xin, Ævar Arnfjörð Bjarmason

Jean-Noël AVILA <jn.avila@free.fr> writes:

>> @@ -2820,7 +2820,7 @@ int cmd_blame(int argc, const char **argv, const char
>> *prefix) &bottom, &top, sb.path))
>>  			usage(blame_usage);
>>  		if (lno < top || ((lno || bottom) && lno < bottom))
>> -			die("file %s has only %lu lines", path, lno);
>> +			die(_("file %s has only %lu lines"), path, lno);
>
> Here a plural version is needed.

Good eyes, like this?

 builtin/blame.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/builtin/blame.c b/builtin/blame.c
index 3fee197..cb12085 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -2820,7 +2820,9 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 				    &bottom, &top, sb.path))
 			usage(blame_usage);
 		if (lno < top || ((lno || bottom) && lno < bottom))
-			die(_("file %s has only %lu lines"), path, lno);
+			die(Q_("file %s has only %lu line",
+			       "file %s has only %lu lines", lno),
+			    path, lno);
 		if (bottom < 1)
 			bottom = 1;
 		if (top < 1)

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 07/14] i18n: merge-recursive: mark error messages for translation
  2016-09-12 11:29 ` [PATCH v2 07/14] i18n: merge-recursive: mark error messages " Vasco Almeida
  2016-09-12 11:47   ` Jean-Noël Avila
@ 2016-09-12 16:04   ` Junio C Hamano
  2016-09-13 16:54     ` Vasco Almeida
  1 sibling, 1 reply; 60+ messages in thread
From: Junio C Hamano @ 2016-09-12 16:04 UTC (permalink / raw)
  To: Vasco Almeida
  Cc: git, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA

Vasco Almeida <vascomalmeida@sapo.pt> writes:

> Lowercase first word of such error messages following the usual style.

"Change X to lowercase" is fine, but "Lowercase" is not a verb.

Reword it to "Downcase the first word...", perhaps (not limited to
this step).

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 07/14] i18n: merge-recursive: mark error messages for translation
  2016-09-12 11:47   ` Jean-Noël Avila
@ 2016-09-12 17:01     ` Junio C Hamano
  0 siblings, 0 replies; 60+ messages in thread
From: Junio C Hamano @ 2016-09-12 17:01 UTC (permalink / raw)
  To: Jean-Noël Avila
  Cc: Vasco Almeida, git, Jiang Xin,
	Ævar Arnfjörð Bjarmason, Jean-Noël AVILA

Jean-Noël Avila <avila.jn@gmail.com> writes:

> Le 12/09/2016 à 13:29, Vasco Almeida a écrit :
>> -			warning("Cannot handle more than %d bases. "
>> -				"Ignoring %s.",
>> +			warning(_("cannot handle more than %d bases. "
>> +				  "Ignoring %s."),
>>  				(int)ARRAY_SIZE(bases)-1, argv[i]);
>>  	}
>
> This one is also missing the plural form.

That is technically correct, but I do not think it matters, as we
won't be making bases[] array smaller than it currently is, so the
"more than %d bases" part of the message will always be in the
plural form and never be singular.

Thanks.


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 12/14] i18n: show-branch: mark error messages for translation
  2016-09-12 12:12   ` Jean-Noël Avila
@ 2016-09-12 17:02     ` Junio C Hamano
  2016-09-12 17:19       ` Jean-Noël AVILA
  0 siblings, 1 reply; 60+ messages in thread
From: Junio C Hamano @ 2016-09-12 17:02 UTC (permalink / raw)
  To: Jean-Noël Avila
  Cc: Vasco Almeida, git, Jiang Xin, Ævar Arnfjörð Bjarmason

Jean-Noël Avila <jn.avila@free.fr> writes:

> Le 12/09/2016 à 13:30, Vasco Almeida a écrit :
>>  		if (MAX_REVS < reflog)
>> -			die("Only %d entries can be shown at one time.",
>> +			die("only %d entries can be shown at one time.",
>>  			    MAX_REVS);
>
> Wouldn't you i18n this one too, with plural form?

I would think this one is OK in practice for the same reason as 7/14

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 12/14] i18n: show-branch: mark error messages for translation
  2016-09-12 17:02     ` Junio C Hamano
@ 2016-09-12 17:19       ` Jean-Noël AVILA
  2016-09-12 20:46         ` Junio C Hamano
  0 siblings, 1 reply; 60+ messages in thread
From: Jean-Noël AVILA @ 2016-09-12 17:19 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Vasco Almeida, git, Jiang Xin, Ævar Arnfjörð Bjarmason

On lundi 12 septembre 2016 10:02:54 CEST Junio C Hamano wrote:
> Jean-Noël Avila <jn.avila@free.fr> writes:
> > Le 12/09/2016 à 13:30, Vasco Almeida a écrit :
> >>  		if (MAX_REVS < reflog)
> >> 
> >> -			die("Only %d entries can be shown at one time.",
> >> +			die("only %d entries can be shown at one time.",
> >> 
> >>  			    MAX_REVS);
> > 
> > Wouldn't you i18n this one too, with plural form?
> 
> I would think this one is OK in practice for the same reason as 7/14

I would think the contrary for the same reason as 14/14 

We don't know the actual value of MAX_REVS at the time we translate, and 
plural forms can be quite different depending on its value. See for instance 
polish:

https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html

Of course, too bad, we only use one of the forms but I don't see any 
alternative.

Thanks,

JN


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 12/14] i18n: show-branch: mark error messages for translation
  2016-09-12 17:19       ` Jean-Noël AVILA
@ 2016-09-12 20:46         ` Junio C Hamano
  0 siblings, 0 replies; 60+ messages in thread
From: Junio C Hamano @ 2016-09-12 20:46 UTC (permalink / raw)
  To: Jean-Noël AVILA
  Cc: Vasco Almeida, git, Jiang Xin, Ævar Arnfjörð Bjarmason

Jean-Noël AVILA <jn.avila@free.fr> writes:

> ..., and 
> plural forms can be quite different depending on its value.

AHHhhh, of course you are right.

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 09/14] i18n: notes: mark error messages for translation
  2016-09-12 12:23   ` Jean-Noël Avila
@ 2016-09-13 16:35     ` Vasco Almeida
  2016-09-13 20:23       ` Jean-Noël AVILA
  0 siblings, 1 reply; 60+ messages in thread
From: Vasco Almeida @ 2016-09-13 16:35 UTC (permalink / raw)
  To: Jean-Noël Avila
  Cc: git, Jiang Xin, Ævar Arnfjörð Bjarmason, Junio C Hamano

A Seg, 12-09-2016 às 14:23 +0200, Jean-Noël Avila escreveu:
> Le 12/09/2016 à 13:29, Vasco Almeida a écrit :
> > 
> > Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
> > ---
> >  builtin/notes.c | 18 +++++++++---------
> >  1 file changed, 9 insertions(+), 9 deletions(-)
> > 
> > diff --git a/builtin/notes.c b/builtin/notes.c
> > index f848b89..abacae2 100644
> > --- a/builtin/notes.c
> > +++ b/builtin/notes.c
> > @@ -340,7 +340,7 @@ static struct notes_tree
> > *init_notes_check(const char *subcommand,
> >  
> >  	ref = (flags & NOTES_INIT_WRITABLE) ? t->update_ref : t-
> > >ref;
> >  	if (!starts_with(ref, "refs/notes/"))
> > -		die("Refusing to %s notes in %s (outside of
> > refs/notes/)",
> > +		die(_("Refusing to %s notes in %s (outside of
> > refs/notes/)"),
> >  		    subcommand, ref);
> >  	return t;
> >  }
> 
> Not sure this one will be easy to localize. The verb is passed as a
> parameter : see line 366 "list", line 426 "add", line 517 "copy",
> line
> 658 "show", line 816 "merge", line 908 "remove" or line 595 with
> argv[0].
> 
> If all the verbs are real subcommands, then the translators should be
> warned that this is some english twisting, but that they need to
> refer
> to the subcommand on the command line.

Yes, these verbs are git notes subcommands. I will add a Translators
comment to it explaining so. Or we can unfold that error messages like

if (!strcmp(subcommand, "add")
	die(_("Refusing to add notes in %s (outside of refs/notes/)"),
ref);
elseif ...

else
	die(_("Refusing to %s notes in %s (outside of refs/notes/)"),
subcommand, ref);

This is more verbose but translations would benefit from it being more
natural. What do we prefer: (1) concise source and a little unnatural
translations or (2) verbose code and natural translations?

Compare, imaging that English is a target translation language, the
user would read:
"Refusing to do add of notes in /path [...]" (1)
"Refusing do add notes in /path [...]" (2)

> Otherwise,
> 
> Acked-by: Jean-Noël Avila <jean-noel.avila@free.fr>
> 
> JN

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 07/14] i18n: merge-recursive: mark error messages for translation
  2016-09-12 16:04   ` Junio C Hamano
@ 2016-09-13 16:54     ` Vasco Almeida
  0 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-13 16:54 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: git, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA

A Seg, 12-09-2016 às 09:04 -0700, Junio C Hamano escreveu:
> Vasco Almeida <vascomalmeida@sapo.pt> writes:
> 
> > 
> > Lowercase first word of such error messages following the usual
> > style.
> 
> "Change X to lowercase" is fine, but "Lowercase" is not a verb.
> 
> Reword it to "Downcase the first word...", perhaps (not limited to
> this step).

Lowercase is a verb [1] meaning to print or write with a lowercase
letter or letters. Knowing that can the commit message be kept?

[1] http://www.dictionary.com/browse/lowercase

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 09/14] i18n: notes: mark error messages for translation
  2016-09-13 16:35     ` Vasco Almeida
@ 2016-09-13 20:23       ` Jean-Noël AVILA
  2016-09-13 22:01         ` Junio C Hamano
  0 siblings, 1 reply; 60+ messages in thread
From: Jean-Noël AVILA @ 2016-09-13 20:23 UTC (permalink / raw)
  To: Vasco Almeida
  Cc: git, Jiang Xin, Ævar Arnfjörð Bjarmason, Junio C Hamano

On mardi 13 septembre 2016 16:35:05 CEST Vasco Almeida wrote:
> A Seg, 12-09-2016 às 14:23 +0200, Jean-Noël Avila escreveu:
> > Not sure this one will be easy to localize. The verb is passed as a
> > parameter : see line 366 "list", line 426 "add", line 517 "copy",
> > line
> > 658 "show", line 816 "merge", line 908 "remove" or line 595 with
> > argv[0].
> > 
> > If all the verbs are real subcommands, then the translators should be
> > warned that this is some english twisting, but that they need to
> > refer
> > to the subcommand on the command line.
> 
> Yes, these verbs are git notes subcommands. I will add a Translators
> comment to it explaining so. Or we can unfold that error messages like
> 
> if (!strcmp(subcommand, "add")
> 	die(_("Refusing to add notes in %s (outside of refs/notes/)"),
> ref);
> elseif ...
> 
> else
> 	die(_("Refusing to %s notes in %s (outside of refs/notes/)"),
> subcommand, ref);

This would be counter productive to use the inject strings as keys just to 
test them just after.

> 
> This is more verbose but translations would benefit from it being more
> natural. What do we prefer: (1) concise source and a little unnatural
> translations or (2) verbose code and natural translations?
> 
> Compare, imaging that English is a target translation language, the
> user would read:
> "Refusing to do add of notes in /path [...]" (1)
> "Refusing do add notes in /path [...]" (2)

Having one sentence per action is cumbersome, but avoiding sentence lego is 
mandatory for proper i18n. How about  just adding quotes around the subcommand 
and warn translators ? 





^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v2 09/14] i18n: notes: mark error messages for translation
  2016-09-13 20:23       ` Jean-Noël AVILA
@ 2016-09-13 22:01         ` Junio C Hamano
  0 siblings, 0 replies; 60+ messages in thread
From: Junio C Hamano @ 2016-09-13 22:01 UTC (permalink / raw)
  To: Jean-Noël AVILA
  Cc: Vasco Almeida, git, Jiang Xin, Ævar Arnfjörð Bjarmason

Jean-Noël AVILA <jn.avila@free.fr> writes:

>> Yes, these verbs are git notes subcommands....
>
> Having one sentence per action is cumbersome, but avoiding sentence lego is 
> mandatory for proper i18n. How about  just adding quotes around the subcommand 
> and warn translators ? 

I think that is a sensible way to go.  I do not think it adds value
to "translate" the action names that needs to be typed verbatim in
the message.


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [PATCH v3 01/14] i18n: apply: mark plural string for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (27 preceding siblings ...)
  2016-09-12 11:30 ` [PATCH v2 14/14] i18n: show-branch: mark plural strings " Vasco Almeida
@ 2016-09-15 14:58 ` Vasco Almeida
  2016-09-15 14:58 ` [PATCH v3 02/14] i18n: apply: mark error messages " Vasco Almeida
                   ` (12 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:58 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark plural string for translation using Q_().

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/apply.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index 1a488f9..ef03c74 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -4768,10 +4768,12 @@ static int apply_all_patches(struct apply_state *state,
 			       state->whitespace_error),
 			    state->whitespace_error);
 		if (state->applied_after_fixing_ws && state->apply)
-			warning("%d line%s applied after"
-				" fixing whitespace errors.",
-				state->applied_after_fixing_ws,
-				state->applied_after_fixing_ws == 1 ? "" : "s");
+			warning(Q_("%d line applied after"
+				   " fixing whitespace errors.",
+				   "%d lines applied after"
+				   " fixing whitespace errors.",
+				   state->applied_after_fixing_ws),
+				state->applied_after_fixing_ws);
 		else if (state->whitespace_error)
 			warning(Q_("%d line adds whitespace errors.",
 				   "%d lines add whitespace errors.",
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 02/14] i18n: apply: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (28 preceding siblings ...)
  2016-09-15 14:58 ` [PATCH v3 01/14] i18n: apply: mark plural string " Vasco Almeida
@ 2016-09-15 14:58 ` Vasco Almeida
  2016-09-15 14:58 ` [PATCH v3 03/14] i18n: apply: mark info " Vasco Almeida
                   ` (11 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:58 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark error messages for translation passed to error() and die()
functions.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/apply.c | 46 +++++++++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index ef03c74..ef2c084 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -3065,8 +3065,8 @@ static int apply_binary_fragment(struct apply_state *state,
 	/* Binary patch is irreversible without the optional second hunk */
 	if (state->apply_in_reverse) {
 		if (!fragment->next)
-			return error("cannot reverse-apply a binary patch "
-				     "without the reverse hunk to '%s'",
+			return error(_("cannot reverse-apply a binary patch "
+				       "without the reverse hunk to '%s'"),
 				     patch->new_name
 				     ? patch->new_name : patch->old_name);
 		fragment = fragment->next;
@@ -3111,8 +3111,8 @@ static int apply_binary(struct apply_state *state,
 	    strlen(patch->new_sha1_prefix) != 40 ||
 	    get_sha1_hex(patch->old_sha1_prefix, sha1) ||
 	    get_sha1_hex(patch->new_sha1_prefix, sha1))
-		return error("cannot apply binary patch to '%s' "
-			     "without full index line", name);
+		return error(_("cannot apply binary patch to '%s' "
+			       "without full index line"), name);
 
 	if (patch->old_name) {
 		/*
@@ -3121,16 +3121,16 @@ static int apply_binary(struct apply_state *state,
 		 */
 		hash_sha1_file(img->buf, img->len, blob_type, sha1);
 		if (strcmp(sha1_to_hex(sha1), patch->old_sha1_prefix))
-			return error("the patch applies to '%s' (%s), "
-				     "which does not match the "
-				     "current contents.",
+			return error(_("the patch applies to '%s' (%s), "
+				       "which does not match the "
+				       "current contents."),
 				     name, sha1_to_hex(sha1));
 	}
 	else {
 		/* Otherwise, the old one must be empty. */
 		if (img->len)
-			return error("the patch applies to an empty "
-				     "'%s' but it is not empty", name);
+			return error(_("the patch applies to an empty "
+				       "'%s' but it is not empty"), name);
 	}
 
 	get_sha1_hex(patch->new_sha1_prefix, sha1);
@@ -3147,8 +3147,8 @@ static int apply_binary(struct apply_state *state,
 
 		result = read_sha1_file(sha1, &type, &size);
 		if (!result)
-			return error("the necessary postimage %s for "
-				     "'%s' cannot be read",
+			return error(_("the necessary postimage %s for "
+				       "'%s' cannot be read"),
 				     patch->new_sha1_prefix, name);
 		clear_image(img);
 		img->buf = result;
@@ -3523,7 +3523,7 @@ static int try_threeway(struct apply_state *state,
 		write_sha1_file("", 0, blob_type, pre_sha1);
 	else if (get_sha1(patch->old_sha1_prefix, pre_sha1) ||
 		 read_blob_object(&buf, pre_sha1, patch->old_mode))
-		return error("repository lacks the necessary blob to fall back on 3-way merge.");
+		return error(_("repository lacks the necessary blob to fall back on 3-way merge."));
 
 	fprintf(stderr, "Falling back to three-way merge...\n");
 
@@ -3541,11 +3541,11 @@ static int try_threeway(struct apply_state *state,
 	/* our_sha1[] is ours */
 	if (patch->is_new) {
 		if (load_current(state, &tmp_image, patch))
-			return error("cannot read the current contents of '%s'",
+			return error(_("cannot read the current contents of '%s'"),
 				     patch->new_name);
 	} else {
 		if (load_preimage(state, &tmp_image, patch, st, ce))
-			return error("cannot read the current contents of '%s'",
+			return error(_("cannot read the current contents of '%s'"),
 				     patch->old_name);
 	}
 	write_sha1_file(tmp_image.buf, tmp_image.len, blob_type, our_sha1);
@@ -4020,29 +4020,29 @@ static void build_fake_ancestor(struct patch *list, const char *filename)
 			if (!preimage_sha1_in_gitlink_patch(patch, sha1))
 				; /* ok, the textual part looks sane */
 			else
-				die("sha1 information is lacking or useless for submodule %s",
+				die(_("sha1 information is lacking or useless for submodule %s"),
 				    name);
 		} else if (!get_sha1_blob(patch->old_sha1_prefix, sha1)) {
 			; /* ok */
 		} else if (!patch->lines_added && !patch->lines_deleted) {
 			/* mode-only change: update the current */
 			if (get_current_sha1(patch->old_name, sha1))
-				die("mode change for %s, which is not "
-				    "in current HEAD", name);
+				die(_("mode change for %s, which is not "
+				    "in current HEAD"), name);
 		} else
-			die("sha1 information is lacking or useless "
-			    "(%s).", name);
+			die(_("sha1 information is lacking or useless "
+			    "(%s)."), name);
 
 		ce = make_cache_entry(patch->old_mode, sha1, name, 0, 0);
 		if (!ce)
 			die(_("make_cache_entry failed for path '%s'"), name);
 		if (add_index_entry(&result, ce, ADD_CACHE_OK_TO_ADD))
-			die ("Could not add %s to temporary index", name);
+			die(_("Could not add %s to temporary index"), name);
 	}
 
 	hold_lock_file_for_update(&lock, filename, LOCK_DIE_ON_ERROR);
 	if (write_locked_index(&result, &lock, COMMIT_LOCK))
-		die ("Could not write temporary index to %s", filename);
+		die(_("Could not write temporary index to %s"), filename);
 
 	discard_index(&result);
 }
@@ -4693,9 +4693,9 @@ static void check_apply_state(struct apply_state *state, int force_apply)
 	int is_not_gitdir = !startup_info->have_repository;
 
 	if (state->apply_with_reject && state->threeway)
-		die("--reject and --3way cannot be used together.");
+		die(_("--reject and --3way cannot be used together."));
 	if (state->cached && state->threeway)
-		die("--cached and --3way cannot be used together.");
+		die(_("--cached and --3way cannot be used together."));
 	if (state->threeway) {
 		if (is_not_gitdir)
 			die(_("--3way outside a repository"));
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 03/14] i18n: apply: mark info messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (29 preceding siblings ...)
  2016-09-15 14:58 ` [PATCH v3 02/14] i18n: apply: mark error messages " Vasco Almeida
@ 2016-09-15 14:58 ` Vasco Almeida
  2016-09-15 14:58 ` [PATCH v3 04/14] i18n: blame: mark error " Vasco Almeida
                   ` (10 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:58 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark messages for translation printed to stderr.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/apply.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index ef2c084..43ab7c5 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -3525,7 +3525,7 @@ static int try_threeway(struct apply_state *state,
 		 read_blob_object(&buf, pre_sha1, patch->old_mode))
 		return error(_("repository lacks the necessary blob to fall back on 3-way merge."));
 
-	fprintf(stderr, "Falling back to three-way merge...\n");
+	fprintf(stderr, _("Falling back to three-way merge...\n"));
 
 	img = strbuf_detach(&buf, &len);
 	prepare_image(&tmp_image, img, len, 1);
@@ -3555,7 +3555,7 @@ static int try_threeway(struct apply_state *state,
 	status = three_way_merge(image, patch->new_name,
 				 pre_sha1, our_sha1, post_sha1);
 	if (status < 0) {
-		fprintf(stderr, "Failed to fall back on three-way merge...\n");
+		fprintf(stderr, _("Failed to fall back on three-way merge...\n"));
 		return status;
 	}
 
@@ -3567,9 +3567,9 @@ static int try_threeway(struct apply_state *state,
 			hashcpy(patch->threeway_stage[0].hash, pre_sha1);
 		hashcpy(patch->threeway_stage[1].hash, our_sha1);
 		hashcpy(patch->threeway_stage[2].hash, post_sha1);
-		fprintf(stderr, "Applied patch to '%s' with conflicts.\n", patch->new_name);
+		fprintf(stderr, _("Applied patch to '%s' with conflicts.\n"), patch->new_name);
 	} else {
-		fprintf(stderr, "Applied patch to '%s' cleanly.\n", patch->new_name);
+		fprintf(stderr, _("Applied patch to '%s' cleanly.\n"), patch->new_name);
 	}
 	return 0;
 }
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 04/14] i18n: blame: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (30 preceding siblings ...)
  2016-09-15 14:58 ` [PATCH v3 03/14] i18n: apply: mark info " Vasco Almeida
@ 2016-09-15 14:58 ` Vasco Almeida
  2016-09-15 20:14   ` Junio C Hamano
  2016-09-15 14:58 ` [PATCH v3 05/14] i18n: branch: mark option description " Vasco Almeida
                   ` (9 subsequent siblings)
  41 siblings, 1 reply; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:58 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark error messages for translation passed to die() function.
Change "Cannot" to lowercase following the usual style.

Reflect changes to test by using test_i18ngrep.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/blame.c               | 18 ++++++++++--------
 t/t8003-blame-corner-cases.sh |  4 ++--
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/builtin/blame.c b/builtin/blame.c
index a5bbf91..27aea79 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -2601,7 +2601,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 
 	if (incremental || (output_option & OUTPUT_PORCELAIN)) {
 		if (show_progress > 0)
-			die("--progress can't be used with --incremental or porcelain formats");
+			die(_("--progress can't be used with --incremental or porcelain formats"));
 		show_progress = 0;
 	} else if (show_progress < 0)
 		show_progress = isatty(2);
@@ -2727,7 +2727,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		sb.commits.compare = compare_commits_by_commit_date;
 	}
 	else if (contents_from)
-		die("--contents and --reverse do not blend well.");
+		die(_("--contents and --reverse do not blend well."));
 	else {
 		final_commit_name = prepare_initial(&sb);
 		sb.commits.compare = compare_commits_by_reverse_commit_date;
@@ -2747,12 +2747,12 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		add_pending_object(&revs, &(sb.final->object), ":");
 	}
 	else if (contents_from)
-		die("Cannot use --contents with final commit object name");
+		die(_("cannot use --contents with final commit object name"));
 
 	if (reverse && revs.first_parent_only) {
 		final_commit = find_single_final(sb.revs, NULL);
 		if (!final_commit)
-			die("--reverse and --first-parent together require specified latest commit");
+			die(_("--reverse and --first-parent together require specified latest commit"));
 	}
 
 	/*
@@ -2779,7 +2779,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		}
 
 		if (oidcmp(&c->object.oid, &sb.final->object.oid))
-			die("--reverse --first-parent together require range along first-parent chain");
+			die(_("--reverse --first-parent together require range along first-parent chain"));
 	}
 
 	if (is_null_oid(&sb.final->object.oid)) {
@@ -2790,7 +2790,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 	else {
 		o = get_origin(&sb, sb.final, path);
 		if (fill_blob_sha1_and_mode(o))
-			die("no such path %s in %s", path, final_commit_name);
+			die(_("no such path %s in %s"), path, final_commit_name);
 
 		if (DIFF_OPT_TST(&sb.revs->diffopt, ALLOW_TEXTCONV) &&
 		    textconv_object(path, o->mode, o->blob_sha1, 1, (char **) &sb.final_buf,
@@ -2801,7 +2801,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 						      &sb.final_buf_size);
 
 		if (!sb.final_buf)
-			die("Cannot read blob %s for path %s",
+			die(_("cannot read blob %s for path %s"),
 			    sha1_to_hex(o->blob_sha1),
 			    path);
 	}
@@ -2820,7 +2820,9 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 				    &bottom, &top, sb.path))
 			usage(blame_usage);
 		if (lno < top || ((lno || bottom) && lno < bottom))
-			die("file %s has only %lu lines", path, lno);
+			die(Q_("file %s has only %lu line",
+			       "file %s has only %lu lines",
+			       lno), path, lno);
 		if (bottom < 1)
 			bottom = 1;
 		if (top < 1)
diff --git a/t/t8003-blame-corner-cases.sh b/t/t8003-blame-corner-cases.sh
index e48370d..661f9d4 100755
--- a/t/t8003-blame-corner-cases.sh
+++ b/t/t8003-blame-corner-cases.sh
@@ -212,12 +212,12 @@ EOF
 
 test_expect_success 'blame -L with invalid start' '
 	test_must_fail git blame -L5 tres 2>errors &&
-	grep "has only 2 lines" errors
+	test_i18ngrep "has only 2 lines" errors
 '
 
 test_expect_success 'blame -L with invalid end' '
 	test_must_fail git blame -L1,5 tres 2>errors &&
-	grep "has only 2 lines" errors
+	test_i18ngrep "has only 2 lines" errors
 '
 
 test_expect_success 'blame parses <end> part of -L' '
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 05/14] i18n: branch: mark option description for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (31 preceding siblings ...)
  2016-09-15 14:58 ` [PATCH v3 04/14] i18n: blame: mark error " Vasco Almeida
@ 2016-09-15 14:58 ` Vasco Almeida
  2016-09-15 14:59 ` [PATCH v3 06/14] i18n: config: mark error message " Vasco Almeida
                   ` (8 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:58 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/branch.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/branch.c b/builtin/branch.c
index 7df0543..d5d93a8 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -657,7 +657,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
 		OPT_SET_INT( 0, "set-upstream",  &track, N_("change upstream info"),
 			BRANCH_TRACK_OVERRIDE),
 		OPT_STRING('u', "set-upstream-to", &new_upstream, N_("upstream"), N_("change the upstream info")),
-		OPT_BOOL(0, "unset-upstream", &unset_upstream, "Unset the upstream info"),
+		OPT_BOOL(0, "unset-upstream", &unset_upstream, N_("Unset the upstream info")),
 		OPT__COLOR(&branch_use_color, N_("use colored output")),
 		OPT_SET_INT('r', "remotes",     &filter.kind, N_("act on remote-tracking branches"),
 			FILTER_REFS_REMOTES),
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 06/14] i18n: config: mark error message for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (32 preceding siblings ...)
  2016-09-15 14:58 ` [PATCH v3 05/14] i18n: branch: mark option description " Vasco Almeida
@ 2016-09-15 14:59 ` Vasco Almeida
  2016-09-15 14:59 ` [PATCH v3 07/14] i18n: merge-recursive: mark error messages " Vasco Almeida
                   ` (7 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:59 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/config.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/builtin/config.c b/builtin/config.c
index 6cbf733..05843a0 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -622,8 +622,8 @@ int cmd_config(int argc, const char **argv, const char *prefix)
 		value = normalize_value(argv[0], argv[1]);
 		ret = git_config_set_in_file_gently(given_config_source.file, argv[0], value);
 		if (ret == CONFIG_NOTHING_SET)
-			error("cannot overwrite multiple values with a single value\n"
-			"       Use a regexp, --add or --replace-all to change %s.", argv[0]);
+			error(_("cannot overwrite multiple values with a single value\n"
+			"       Use a regexp, --add or --replace-all to change %s."), argv[0]);
 		return ret;
 	}
 	else if (actions == ACTION_SET_ALL) {
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 07/14] i18n: merge-recursive: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (33 preceding siblings ...)
  2016-09-15 14:59 ` [PATCH v3 06/14] i18n: config: mark error message " Vasco Almeida
@ 2016-09-15 14:59 ` Vasco Almeida
  2016-09-15 14:59 ` [PATCH v3 08/14] i18n: merge-recursive: mark verbose message " Vasco Almeida
                   ` (6 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:59 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Lowercase first word of such error messages following the usual style.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/merge-recursive.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index fd2c455..3b09610 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -42,30 +42,33 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 			if (!arg[2])
 				break;
 			if (parse_merge_opt(&o, arg + 2))
-				die("Unknown option %s", arg);
+				die(_("unknown option %s"), arg);
 			continue;
 		}
 		if (bases_count < ARRAY_SIZE(bases)-1) {
 			struct object_id *oid = xmalloc(sizeof(struct object_id));
 			if (get_oid(argv[i], oid))
-				die("Could not parse object '%s'", argv[i]);
+				die(_("could not parse object '%s'"), argv[i]);
 			bases[bases_count++] = oid;
 		}
 		else
-			warning("Cannot handle more than %d bases. "
-				"Ignoring %s.",
+			warning(Q_("cannot handle more than %d base. "
+				   "Ignoring %s.",
+				   "cannot handle more than %d bases. "
+				   "Ignoring %s.",
+				    (int)ARRAY_SIZE(bases)-1),
 				(int)ARRAY_SIZE(bases)-1, argv[i]);
 	}
 	if (argc - i != 3) /* "--" "<head>" "<remote>" */
-		die("Not handling anything other than two heads merge.");
+		die(_("not handling anything other than two heads merge."));
 
 	o.branch1 = argv[++i];
 	o.branch2 = argv[++i];
 
 	if (get_oid(o.branch1, &h1))
-		die("Could not resolve ref '%s'", o.branch1);
+		die(_("could not resolve ref '%s'"), o.branch1);
 	if (get_oid(o.branch2, &h2))
-		die("Could not resolve ref '%s'", o.branch2);
+		die(_("could not resolve ref '%s'"), o.branch2);
 
 	o.branch1 = better_branch_name(o.branch1);
 	o.branch2 = better_branch_name(o.branch2);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 08/14] i18n: merge-recursive: mark verbose message for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (34 preceding siblings ...)
  2016-09-15 14:59 ` [PATCH v3 07/14] i18n: merge-recursive: mark error messages " Vasco Almeida
@ 2016-09-15 14:59 ` Vasco Almeida
  2016-09-15 14:59 ` [PATCH v3 09/14] i18n: notes: mark error messages " Vasco Almeida
                   ` (5 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:59 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/merge-recursive.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 3b09610..0dd9021 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -74,7 +74,7 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 	o.branch2 = better_branch_name(o.branch2);
 
 	if (o.verbosity >= 3)
-		printf("Merging %s with %s\n", o.branch1, o.branch2);
+		printf(_("Merging %s with %s\n"), o.branch1, o.branch2);
 
 	failed = merge_recursive_generic(&o, &h1, &h2, bases_count, bases, &result);
 	if (failed < 0)
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 09/14] i18n: notes: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (35 preceding siblings ...)
  2016-09-15 14:59 ` [PATCH v3 08/14] i18n: merge-recursive: mark verbose message " Vasco Almeida
@ 2016-09-15 14:59 ` Vasco Almeida
  2016-09-15 14:59 ` [PATCH v3 10/14] notes: lowercase first word of error messages Vasco Almeida
                   ` (4 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:59 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/notes.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/builtin/notes.c b/builtin/notes.c
index f848b89..229ad6d 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -340,7 +340,9 @@ static struct notes_tree *init_notes_check(const char *subcommand,
 
 	ref = (flags & NOTES_INIT_WRITABLE) ? t->update_ref : t->ref;
 	if (!starts_with(ref, "refs/notes/"))
-		die("Refusing to %s notes in %s (outside of refs/notes/)",
+		/* TRANSLATORS: the first %s will be replaced by a
+		   git notes command: 'add', 'merge', 'remove', etc.*/
+		die(_("Refusing to %s notes in %s (outside of refs/notes/)"),
 		    subcommand, ref);
 	return t;
 }
@@ -680,11 +682,11 @@ static int merge_abort(struct notes_merge_options *o)
 	 */
 
 	if (delete_ref("NOTES_MERGE_PARTIAL", NULL, 0))
-		ret += error("Failed to delete ref NOTES_MERGE_PARTIAL");
+		ret += error(_("Failed to delete ref NOTES_MERGE_PARTIAL"));
 	if (delete_ref("NOTES_MERGE_REF", NULL, REF_NODEREF))
-		ret += error("Failed to delete ref NOTES_MERGE_REF");
+		ret += error(_("Failed to delete ref NOTES_MERGE_REF"));
 	if (notes_merge_abort(o))
-		ret += error("Failed to remove 'git notes merge' worktree");
+		ret += error(_("Failed to remove 'git notes merge' worktree"));
 	return ret;
 }
 
@@ -704,11 +706,11 @@ static int merge_commit(struct notes_merge_options *o)
 	 */
 
 	if (get_sha1("NOTES_MERGE_PARTIAL", sha1))
-		die("Failed to read ref NOTES_MERGE_PARTIAL");
+		die(_("Failed to read ref NOTES_MERGE_PARTIAL"));
 	else if (!(partial = lookup_commit_reference(sha1)))
-		die("Could not find commit from NOTES_MERGE_PARTIAL.");
+		die(_("Could not find commit from NOTES_MERGE_PARTIAL."));
 	else if (parse_commit(partial))
-		die("Could not parse commit from NOTES_MERGE_PARTIAL.");
+		die(_("Could not parse commit from NOTES_MERGE_PARTIAL."));
 
 	if (partial->parents)
 		hashcpy(parent_sha1, partial->parents->item->object.oid.hash);
@@ -721,10 +723,10 @@ static int merge_commit(struct notes_merge_options *o)
 	o->local_ref = local_ref_to_free =
 		resolve_refdup("NOTES_MERGE_REF", 0, sha1, NULL);
 	if (!o->local_ref)
-		die("Failed to resolve NOTES_MERGE_REF");
+		die(_("Failed to resolve NOTES_MERGE_REF"));
 
 	if (notes_merge_commit(o, t, partial, sha1))
-		die("Failed to finalize notes merge");
+		die(_("Failed to finalize notes merge"));
 
 	/* Reuse existing commit message in reflog message */
 	memset(&pretty_ctx, 0, sizeof(pretty_ctx));
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 10/14] notes: lowercase first word of error messages
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (36 preceding siblings ...)
  2016-09-15 14:59 ` [PATCH v3 09/14] i18n: notes: mark error messages " Vasco Almeida
@ 2016-09-15 14:59 ` Vasco Almeida
  2016-09-15 14:59 ` [PATCH v3 11/14] i18n: receive-pack: mark messages for translation Vasco Almeida
                   ` (3 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:59 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Follow the usual case style.

Update one test to reflect these changes.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/notes.c                  | 64 ++++++++++++++++++++--------------------
 t/t3320-notes-merge-worktrees.sh |  2 +-
 2 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/builtin/notes.c b/builtin/notes.c
index 229ad6d..5248a9b 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -191,7 +191,7 @@ static void prepare_note_data(const unsigned char *object, struct note_data *d,
 		strbuf_reset(&d->buf);
 
 		if (launch_editor(d->edit_path, &d->buf, NULL)) {
-			die(_("Please supply the note contents using either -m or -F option"));
+			die(_("please supply the note contents using either -m or -F option"));
 		}
 		strbuf_stripspace(&d->buf, 1);
 	}
@@ -202,7 +202,7 @@ static void write_note_data(struct note_data *d, unsigned char *sha1)
 	if (write_sha1_file(d->buf.buf, d->buf.len, blob_type, sha1)) {
 		error(_("unable to write note object"));
 		if (d->edit_path)
-			error(_("The note contents have been left in %s"),
+			error(_("the note contents have been left in %s"),
 				d->edit_path);
 		exit(128);
 	}
@@ -251,14 +251,14 @@ static int parse_reuse_arg(const struct option *opt, const char *arg, int unset)
 		strbuf_addch(&d->buf, '\n');
 
 	if (get_sha1(arg, object))
-		die(_("Failed to resolve '%s' as a valid ref."), arg);
+		die(_("failed to resolve '%s' as a valid ref."), arg);
 	if (!(buf = read_sha1_file(object, &type, &len))) {
 		free(buf);
-		die(_("Failed to read object '%s'."), arg);
+		die(_("failed to read object '%s'."), arg);
 	}
 	if (type != OBJ_BLOB) {
 		free(buf);
-		die(_("Cannot read note data from non-blob object '%s'."), arg);
+		die(_("cannot read note data from non-blob object '%s'."), arg);
 	}
 	strbuf_add(&d->buf, buf, len);
 	free(buf);
@@ -298,13 +298,13 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
 
 		split = strbuf_split(&buf, ' ');
 		if (!split[0] || !split[1])
-			die(_("Malformed input line: '%s'."), buf.buf);
+			die(_("malformed input line: '%s'."), buf.buf);
 		strbuf_rtrim(split[0]);
 		strbuf_rtrim(split[1]);
 		if (get_sha1(split[0]->buf, from_obj))
-			die(_("Failed to resolve '%s' as a valid ref."), split[0]->buf);
+			die(_("failed to resolve '%s' as a valid ref."), split[0]->buf);
 		if (get_sha1(split[1]->buf, to_obj))
-			die(_("Failed to resolve '%s' as a valid ref."), split[1]->buf);
+			die(_("failed to resolve '%s' as a valid ref."), split[1]->buf);
 
 		if (rewrite_cmd)
 			err = copy_note_for_rewrite(c, from_obj, to_obj);
@@ -313,7 +313,7 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
 					combine_notes_overwrite);
 
 		if (err) {
-			error(_("Failed to copy notes from '%s' to '%s'"),
+			error(_("failed to copy notes from '%s' to '%s'"),
 			      split[0]->buf, split[1]->buf);
 			ret = 1;
 		}
@@ -342,7 +342,7 @@ static struct notes_tree *init_notes_check(const char *subcommand,
 	if (!starts_with(ref, "refs/notes/"))
 		/* TRANSLATORS: the first %s will be replaced by a
 		   git notes command: 'add', 'merge', 'remove', etc.*/
-		die(_("Refusing to %s notes in %s (outside of refs/notes/)"),
+		die(_("refusing to %s notes in %s (outside of refs/notes/)"),
 		    subcommand, ref);
 	return t;
 }
@@ -369,13 +369,13 @@ static int list(int argc, const char **argv, const char *prefix)
 	t = init_notes_check("list", 0);
 	if (argc) {
 		if (get_sha1(argv[0], object))
-			die(_("Failed to resolve '%s' as a valid ref."), argv[0]);
+			die(_("failed to resolve '%s' as a valid ref."), argv[0]);
 		note = get_note(t, object);
 		if (note) {
 			puts(sha1_to_hex(note));
 			retval = 0;
 		} else
-			retval = error(_("No note found for object %s."),
+			retval = error(_("no note found for object %s."),
 				       sha1_to_hex(object));
 	} else
 		retval = for_each_note(t, 0, list_each_note, NULL);
@@ -424,7 +424,7 @@ static int add(int argc, const char **argv, const char *prefix)
 	object_ref = argc > 1 ? argv[1] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check("add", NOTES_INIT_WRITABLE);
 	note = get_note(t, object);
@@ -510,12 +510,12 @@ static int copy(int argc, const char **argv, const char *prefix)
 	}
 
 	if (get_sha1(argv[0], from_obj))
-		die(_("Failed to resolve '%s' as a valid ref."), argv[0]);
+		die(_("failed to resolve '%s' as a valid ref."), argv[0]);
 
 	object_ref = 1 < argc ? argv[1] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check("copy", NOTES_INIT_WRITABLE);
 	note = get_note(t, object);
@@ -534,7 +534,7 @@ static int copy(int argc, const char **argv, const char *prefix)
 
 	from_note = get_note(t, from_obj);
 	if (!from_note) {
-		retval = error(_("Missing notes on source object %s. Cannot "
+		retval = error(_("missing notes on source object %s. Cannot "
 			       "copy."), sha1_to_hex(from_obj));
 		goto out;
 	}
@@ -593,7 +593,7 @@ static int append_edit(int argc, const char **argv, const char *prefix)
 	object_ref = 1 < argc ? argv[1] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check(argv[0], NOTES_INIT_WRITABLE);
 	note = get_note(t, object);
@@ -656,13 +656,13 @@ static int show(int argc, const char **argv, const char *prefix)
 	object_ref = argc ? argv[0] : "HEAD";
 
 	if (get_sha1(object_ref, object))
-		die(_("Failed to resolve '%s' as a valid ref."), object_ref);
+		die(_("failed to resolve '%s' as a valid ref."), object_ref);
 
 	t = init_notes_check("show", 0);
 	note = get_note(t, object);
 
 	if (!note)
-		retval = error(_("No note found for object %s."),
+		retval = error(_("no note found for object %s."),
 			       sha1_to_hex(object));
 	else {
 		const char *show_args[3] = {"show", sha1_to_hex(note), NULL};
@@ -682,11 +682,11 @@ static int merge_abort(struct notes_merge_options *o)
 	 */
 
 	if (delete_ref("NOTES_MERGE_PARTIAL", NULL, 0))
-		ret += error(_("Failed to delete ref NOTES_MERGE_PARTIAL"));
+		ret += error(_("failed to delete ref NOTES_MERGE_PARTIAL"));
 	if (delete_ref("NOTES_MERGE_REF", NULL, REF_NODEREF))
-		ret += error(_("Failed to delete ref NOTES_MERGE_REF"));
+		ret += error(_("failed to delete ref NOTES_MERGE_REF"));
 	if (notes_merge_abort(o))
-		ret += error(_("Failed to remove 'git notes merge' worktree"));
+		ret += error(_("failed to remove 'git notes merge' worktree"));
 	return ret;
 }
 
@@ -706,11 +706,11 @@ static int merge_commit(struct notes_merge_options *o)
 	 */
 
 	if (get_sha1("NOTES_MERGE_PARTIAL", sha1))
-		die(_("Failed to read ref NOTES_MERGE_PARTIAL"));
+		die(_("failed to read ref NOTES_MERGE_PARTIAL"));
 	else if (!(partial = lookup_commit_reference(sha1)))
-		die(_("Could not find commit from NOTES_MERGE_PARTIAL."));
+		die(_("could not find commit from NOTES_MERGE_PARTIAL."));
 	else if (parse_commit(partial))
-		die(_("Could not parse commit from NOTES_MERGE_PARTIAL."));
+		die(_("could not parse commit from NOTES_MERGE_PARTIAL."));
 
 	if (partial->parents)
 		hashcpy(parent_sha1, partial->parents->item->object.oid.hash);
@@ -723,10 +723,10 @@ static int merge_commit(struct notes_merge_options *o)
 	o->local_ref = local_ref_to_free =
 		resolve_refdup("NOTES_MERGE_REF", 0, sha1, NULL);
 	if (!o->local_ref)
-		die(_("Failed to resolve NOTES_MERGE_REF"));
+		die(_("failed to resolve NOTES_MERGE_REF"));
 
 	if (notes_merge_commit(o, t, partial, sha1))
-		die(_("Failed to finalize notes merge"));
+		die(_("failed to finalize notes merge"));
 
 	/* Reuse existing commit message in reflog message */
 	memset(&pretty_ctx, 0, sizeof(pretty_ctx));
@@ -796,7 +796,7 @@ static int merge(int argc, const char **argv, const char *prefix)
 	}
 
 	if (do_merge && argc != 1) {
-		error(_("Must specify a notes ref to merge"));
+		error(_("must specify a notes ref to merge"));
 		usage_with_options(git_notes_merge_usage, options);
 	} else if (!do_merge && argc) {
 		error(_("too many parameters"));
@@ -820,7 +820,7 @@ static int merge(int argc, const char **argv, const char *prefix)
 
 	if (strategy) {
 		if (parse_notes_merge_strategy(strategy, &o.strategy)) {
-			error(_("Unknown -s/--strategy: %s"), strategy);
+			error(_("unknown -s/--strategy: %s"), strategy);
 			usage_with_options(git_notes_merge_usage, options);
 		}
 	} else {
@@ -857,10 +857,10 @@ static int merge(int argc, const char **argv, const char *prefix)
 		/* Store ref-to-be-updated into .git/NOTES_MERGE_REF */
 		wt = find_shared_symref("NOTES_MERGE_REF", default_notes_ref());
 		if (wt)
-			die(_("A notes merge into %s is already in-progress at %s"),
+			die(_("a notes merge into %s is already in-progress at %s"),
 			    default_notes_ref(), wt->path);
 		if (create_symref("NOTES_MERGE_REF", default_notes_ref(), NULL))
-			die(_("Failed to store link to current notes ref (%s)"),
+			die(_("failed to store link to current notes ref (%s)"),
 			    default_notes_ref());
 		printf(_("Automatic notes merge failed. Fix conflicts in %s and "
 			 "commit the result with 'git notes merge --commit', or "
@@ -1016,7 +1016,7 @@ int cmd_notes(int argc, const char **argv, const char *prefix)
 	else if (!strcmp(argv[0], "get-ref"))
 		result = get_ref(argc, argv, prefix);
 	else {
-		result = error(_("Unknown subcommand: %s"), argv[0]);
+		result = error(_("unknown subcommand: %s"), argv[0]);
 		usage_with_options(git_notes_usage, options);
 	}
 
diff --git a/t/t3320-notes-merge-worktrees.sh b/t/t3320-notes-merge-worktrees.sh
index 6e05115..b9c3bc2 100755
--- a/t/t3320-notes-merge-worktrees.sh
+++ b/t/t3320-notes-merge-worktrees.sh
@@ -52,7 +52,7 @@ test_expect_success 'merge z into y while mid-merge in another workdir fails' '
 		cd worktree &&
 		git config core.notesRef refs/notes/y &&
 		test_must_fail git notes merge z 2>err &&
-		test_i18ngrep "A notes merge into refs/notes/y is already in-progress at" err
+		test_i18ngrep "a notes merge into refs/notes/y is already in-progress at" err
 	) &&
 	test_path_is_missing .git/worktrees/worktree/NOTES_MERGE_REF
 '
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 11/14] i18n: receive-pack: mark messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (37 preceding siblings ...)
  2016-09-15 14:59 ` [PATCH v3 10/14] notes: lowercase first word of error messages Vasco Almeida
@ 2016-09-15 14:59 ` Vasco Almeida
  2016-09-15 14:59 ` [PATCH v3 12/14] i18n: show-branch: mark error " Vasco Almeida
                   ` (2 subsequent siblings)
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:59 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark messages refuse_unconfigured_deny_msg and
refuse_unconfigured_deny_delete_current_msg for translation.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/receive-pack.c | 58 ++++++++++++++++++++++----------------------------
 1 file changed, 25 insertions(+), 33 deletions(-)

diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index f1ce05c..896b16f 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -781,47 +781,39 @@ static int is_ref_checked_out(const char *ref)
 	return !strcmp(head_name, ref);
 }
 
-static char *refuse_unconfigured_deny_msg[] = {
-	"By default, updating the current branch in a non-bare repository",
-	"is denied, because it will make the index and work tree inconsistent",
-	"with what you pushed, and will require 'git reset --hard' to match",
-	"the work tree to HEAD.",
-	"",
-	"You can set 'receive.denyCurrentBranch' configuration variable to",
-	"'ignore' or 'warn' in the remote repository to allow pushing into",
-	"its current branch; however, this is not recommended unless you",
-	"arranged to update its work tree to match what you pushed in some",
-	"other way.",
-	"",
-	"To squelch this message and still keep the default behaviour, set",
-	"'receive.denyCurrentBranch' configuration variable to 'refuse'."
-};
+static char *refuse_unconfigured_deny_msg =
+	N_("By default, updating the current branch in a non-bare repository\n"
+	   "is denied, because it will make the index and work tree inconsistent\n"
+	   "with what you pushed, and will require 'git reset --hard' to match\n"
+	   "the work tree to HEAD.\n"
+	   "\n"
+	   "You can set 'receive.denyCurrentBranch' configuration variable to\n"
+	   "'ignore' or 'warn' in the remote repository to allow pushing into\n"
+	   "its current branch; however, this is not recommended unless you\n"
+	   "arranged to update its work tree to match what you pushed in some\n"
+	   "other way.\n"
+	   "\n"
+	   "To squelch this message and still keep the default behaviour, set\n"
+	   "'receive.denyCurrentBranch' configuration variable to 'refuse'.");
 
 static void refuse_unconfigured_deny(void)
 {
-	int i;
-	for (i = 0; i < ARRAY_SIZE(refuse_unconfigured_deny_msg); i++)
-		rp_error("%s", refuse_unconfigured_deny_msg[i]);
+	rp_error("%s", _(refuse_unconfigured_deny_msg));
 }
 
-static char *refuse_unconfigured_deny_delete_current_msg[] = {
-	"By default, deleting the current branch is denied, because the next",
-	"'git clone' won't result in any file checked out, causing confusion.",
-	"",
-	"You can set 'receive.denyDeleteCurrent' configuration variable to",
-	"'warn' or 'ignore' in the remote repository to allow deleting the",
-	"current branch, with or without a warning message.",
-	"",
-	"To squelch this message, you can set it to 'refuse'."
-};
+static char *refuse_unconfigured_deny_delete_current_msg =
+	N_("By default, deleting the current branch is denied, because the next\n"
+	   "'git clone' won't result in any file checked out, causing confusion.\n"
+	   "\n"
+	   "You can set 'receive.denyDeleteCurrent' configuration variable to\n"
+	   "'warn' or 'ignore' in the remote repository to allow deleting the\n"
+	   "current branch, with or without a warning message.\n"
+	   "\n"
+	   "To squelch this message, you can set it to 'refuse'.");
 
 static void refuse_unconfigured_deny_delete_current(void)
 {
-	int i;
-	for (i = 0;
-	     i < ARRAY_SIZE(refuse_unconfigured_deny_delete_current_msg);
-	     i++)
-		rp_error("%s", refuse_unconfigured_deny_delete_current_msg[i]);
+	rp_error("%s", _(refuse_unconfigured_deny_delete_current_msg));
 }
 
 static int command_singleton_iterator(void *cb_data, unsigned char sha1[20]);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 12/14] i18n: show-branch: mark error messages for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (38 preceding siblings ...)
  2016-09-15 14:59 ` [PATCH v3 11/14] i18n: receive-pack: mark messages for translation Vasco Almeida
@ 2016-09-15 14:59 ` Vasco Almeida
  2016-09-15 14:59 ` [PATCH v3 13/14] i18n: show-branch: mark plural strings " Vasco Almeida
  2016-09-15 14:59 ` [PATCH v3 14/14] i18n: update-index: mark warnings " Vasco Almeida
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:59 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Lowercase some messages first word to match style of the others.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/show-branch.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index 2566935..5809371 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -538,7 +538,7 @@ static void append_one_rev(const char *av)
 		for_each_ref(append_matching_ref, NULL);
 		if (saved_matches == ref_name_cnt &&
 		    ref_name_cnt < MAX_REVS)
-			error("no matching refs with %s", av);
+			error(_("no matching refs with %s"), av);
 		if (saved_matches + 1 < ref_name_cnt)
 			sort_ref_range(saved_matches, ref_name_cnt);
 		return;
@@ -701,8 +701,8 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 			 *
 			 * Also --all and --remotes do not make sense either.
 			 */
-			die("--reflog is incompatible with --all, --remotes, "
-			    "--independent or --merge-base");
+			die(_("--reflog is incompatible with --all, --remotes, "
+			      "--independent or --merge-base"));
 	}
 
 	/* If nothing is specified, show all branches by default */
@@ -725,16 +725,16 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 			av = fake_av;
 			ac = 1;
 			if (!*av)
-				die("no branches given, and HEAD is not valid");
+				die(_("no branches given, and HEAD is not valid"));
 		}
 		if (ac != 1)
-			die("--reflog option needs one branch name");
+			die(_("--reflog option needs one branch name"));
 
 		if (MAX_REVS < reflog)
 			die("Only %d entries can be shown at one time.",
 			    MAX_REVS);
 		if (!dwim_ref(*av, strlen(*av), oid.hash, &ref))
-			die("No such ref %s", *av);
+			die(_("no such ref %s"), *av);
 
 		/* Has the base been specified? */
 		if (reflog_base) {
@@ -828,10 +828,10 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 		if (MAX_REVS <= num_rev)
 			die("cannot handle more than %d revs.", MAX_REVS);
 		if (get_sha1(ref_name[num_rev], revkey.hash))
-			die("'%s' is not a valid ref.", ref_name[num_rev]);
+			die(_("'%s' is not a valid ref."), ref_name[num_rev]);
 		commit = lookup_commit_reference(revkey.hash);
 		if (!commit)
-			die("cannot find commit %s (%s)",
+			die(_("cannot find commit %s (%s)"),
 			    ref_name[num_rev], oid_to_hex(&revkey));
 		parse_commit(commit);
 		mark_seen(commit, &seen);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 13/14] i18n: show-branch: mark plural strings for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (39 preceding siblings ...)
  2016-09-15 14:59 ` [PATCH v3 12/14] i18n: show-branch: mark error " Vasco Almeida
@ 2016-09-15 14:59 ` Vasco Almeida
  2016-09-15 20:19   ` Junio C Hamano
  2016-09-15 14:59 ` [PATCH v3 14/14] i18n: update-index: mark warnings " Vasco Almeida
  41 siblings, 1 reply; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:59 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Mark plural string for translation using Q_().

Although we already know that the plural sentence is always used in the
English source, other languages have complex plural rules they must
comply according to the value of MAX_REVS.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/show-branch.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index 5809371..623ca56 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -373,8 +373,9 @@ static int append_ref(const char *refname, const struct object_id *oid,
 				return 0;
 	}
 	if (MAX_REVS <= ref_name_cnt) {
-		warning("ignoring %s; cannot handle more than %d refs",
-			refname, MAX_REVS);
+		warning(Q_("ignoring %s; cannot handle more than %d ref",
+			   "ignoring %s; cannot handle more than %d refs",
+			   MAX_REVS), refname, MAX_REVS);
 		return 0;
 	}
 	ref_name[ref_name_cnt++] = xstrdup(refname);
@@ -731,8 +732,9 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 			die(_("--reflog option needs one branch name"));
 
 		if (MAX_REVS < reflog)
-			die("Only %d entries can be shown at one time.",
-			    MAX_REVS);
+			die(Q_("only %d entry can be shown at one time.",
+			       "only %d entries can be shown at one time.",
+			       MAX_REVS), MAX_REVS);
 		if (!dwim_ref(*av, strlen(*av), oid.hash, &ref))
 			die(_("no such ref %s"), *av);
 
@@ -826,7 +828,9 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 		unsigned int flag = 1u << (num_rev + REV_SHIFT);
 
 		if (MAX_REVS <= num_rev)
-			die("cannot handle more than %d revs.", MAX_REVS);
+			die(Q_("cannot handle more than %d rev.",
+			       "cannot handle more than %d revs.",
+			       MAX_REVS), MAX_REVS);
 		if (get_sha1(ref_name[num_rev], revkey.hash))
 			die(_("'%s' is not a valid ref."), ref_name[num_rev]);
 		commit = lookup_commit_reference(revkey.hash);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH v3 14/14] i18n: update-index: mark warnings for translation
  2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
                   ` (40 preceding siblings ...)
  2016-09-15 14:59 ` [PATCH v3 13/14] i18n: show-branch: mark plural strings " Vasco Almeida
@ 2016-09-15 14:59 ` Vasco Almeida
  41 siblings, 0 replies; 60+ messages in thread
From: Vasco Almeida @ 2016-09-15 14:59 UTC (permalink / raw)
  To: git
  Cc: Vasco Almeida, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA, Junio C Hamano

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
---
 builtin/update-index.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/builtin/update-index.c b/builtin/update-index.c
index ba04b19..7a17ce1 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -1127,9 +1127,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 		break;
 	case UC_DISABLE:
 		if (git_config_get_untracked_cache() == 1)
-			warning("core.untrackedCache is set to true; "
-				"remove or change it, if you really want to "
-				"disable the untracked cache");
+			warning(_("core.untrackedCache is set to true; "
+				  "remove or change it, if you really want to "
+				  "disable the untracked cache"));
 		remove_untracked_cache(&the_index);
 		report(_("Untracked cache disabled"));
 		break;
@@ -1139,9 +1139,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 	case UC_ENABLE:
 	case UC_FORCE:
 		if (git_config_get_untracked_cache() == 0)
-			warning("core.untrackedCache is set to false; "
-				"remove or change it, if you really want to "
-				"enable the untracked cache");
+			warning(_("core.untrackedCache is set to false; "
+				  "remove or change it, if you really want to "
+				  "enable the untracked cache"));
 		add_untracked_cache(&the_index);
 		report(_("Untracked cache enabled for '%s'"), get_git_work_tree());
 		break;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* Re: [PATCH v3 04/14] i18n: blame: mark error messages for translation
  2016-09-15 14:58 ` [PATCH v3 04/14] i18n: blame: mark error " Vasco Almeida
@ 2016-09-15 20:14   ` Junio C Hamano
  0 siblings, 0 replies; 60+ messages in thread
From: Junio C Hamano @ 2016-09-15 20:14 UTC (permalink / raw)
  To: Vasco Almeida
  Cc: git, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA

Vasco Almeida <vascomalmeida@sapo.pt> writes:

> @@ -2790,7 +2790,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
>  	else {
>  		o = get_origin(&sb, sb.final, path);
>  		if (fill_blob_sha1_and_mode(o))
> -			die("no such path %s in %s", path, final_commit_name);
> +			die(_("no such path %s in %s"), path, final_commit_name);

This was missing in the earlier round, which is good to make it translated.

> -			die("file %s has only %lu lines", path, lno);
> +			die(Q_("file %s has only %lu line",
> +			       "file %s has only %lu lines",
> +			       lno), path, lno);

Looks good here, too.  I would have moved "lno)," at the beginning
of the third line to the end of the second line to make it easier to
read, but this is OK.


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH v3 13/14] i18n: show-branch: mark plural strings for translation
  2016-09-15 14:59 ` [PATCH v3 13/14] i18n: show-branch: mark plural strings " Vasco Almeida
@ 2016-09-15 20:19   ` Junio C Hamano
  0 siblings, 0 replies; 60+ messages in thread
From: Junio C Hamano @ 2016-09-15 20:19 UTC (permalink / raw)
  To: Vasco Almeida
  Cc: git, Jiang Xin, Ævar Arnfjörð Bjarmason,
	Jean-Noël AVILA

Vasco Almeida <vascomalmeida@sapo.pt> writes:

> Mark plural string for translation using Q_().
>
> Although we already know that the plural sentence is always used in the
> English source, other languages have complex plural rules they must
> comply according to the value of MAX_REVS.

Nicely explained.  Thanks.

^ permalink raw reply	[flat|nested] 60+ messages in thread

end of thread, other threads:[~2016-09-15 20:19 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-07 14:49 [PATCH 01/13] i18n: apply: mark plural string for translation Vasco Almeida
2016-09-07 14:49 ` [PATCH 02/13] i18n: apply: mark error messages " Vasco Almeida
2016-09-07 14:49 ` [PATCH 03/13] i18n: apply: mark info " Vasco Almeida
2016-09-07 14:49 ` [PATCH 04/13] i18n: blame: mark error " Vasco Almeida
2016-09-10  9:41   ` Jean-Noël AVILA
2016-09-12 15:40     ` Junio C Hamano
2016-09-07 14:49 ` [PATCH 05/13] i18n: branch: mark option description " Vasco Almeida
2016-09-07 14:49 ` [PATCH 06/13] i18n: config: mark error message " Vasco Almeida
2016-09-07 14:49 ` [PATCH 07/13] i18n: merge-recursive: mark error messages " Vasco Almeida
2016-09-09 19:23   ` Junio C Hamano
2016-09-07 14:49 ` [PATCH 08/13] i18n: merge-recursive: mark verbose message " Vasco Almeida
2016-09-07 14:49 ` [PATCH 09/13] i18n: notes: mark error messages " Vasco Almeida
2016-09-07 14:49 ` [PATCH 10/13] notes: lowercase first word of error messages Vasco Almeida
2016-09-07 14:49 ` [PATCH 11/13] i18n: receive-pack: mark messages for translation Vasco Almeida
2016-09-07 14:49 ` [PATCH 12/13] i18n: show-branch: mark error " Vasco Almeida
2016-09-07 14:49 ` [PATCH 13/13] i18n: update-index: mark warning " Vasco Almeida
2016-09-07 14:49 ` [PATCH 13/13] i18n: update-index: mark warnings " Vasco Almeida
2016-09-08 20:45 ` [PATCH 01/13] i18n: apply: mark plural string " Junio C Hamano
2016-09-12 11:29 ` [PATCH v2 01/14] " Vasco Almeida
2016-09-12 11:29 ` [PATCH v2 02/14] i18n: apply: mark error messages " Vasco Almeida
2016-09-12 11:29 ` [PATCH v2 03/14] i18n: apply: mark info " Vasco Almeida
2016-09-12 11:29 ` [PATCH v2 04/14] i18n: blame: mark error " Vasco Almeida
2016-09-12 11:29 ` [PATCH v2 05/14] i18n: branch: mark option description " Vasco Almeida
2016-09-12 11:29 ` [PATCH v2 06/14] i18n: config: mark error message " Vasco Almeida
2016-09-12 11:29 ` [PATCH v2 07/14] i18n: merge-recursive: mark error messages " Vasco Almeida
2016-09-12 11:47   ` Jean-Noël Avila
2016-09-12 17:01     ` Junio C Hamano
2016-09-12 16:04   ` Junio C Hamano
2016-09-13 16:54     ` Vasco Almeida
2016-09-12 11:29 ` [PATCH v2 08/14] i18n: merge-recursive: mark verbose message " Vasco Almeida
2016-09-12 11:29 ` [PATCH v2 09/14] i18n: notes: mark error messages " Vasco Almeida
2016-09-12 12:23   ` Jean-Noël Avila
2016-09-13 16:35     ` Vasco Almeida
2016-09-13 20:23       ` Jean-Noël AVILA
2016-09-13 22:01         ` Junio C Hamano
2016-09-12 11:29 ` [PATCH v2 10/14] notes: lowercase first word of error messages Vasco Almeida
2016-09-12 11:29 ` [PATCH v2 11/14] i18n: receive-pack: mark messages for translation Vasco Almeida
2016-09-12 11:30 ` [PATCH v2 12/14] i18n: show-branch: mark error " Vasco Almeida
2016-09-12 12:12   ` Jean-Noël Avila
2016-09-12 17:02     ` Junio C Hamano
2016-09-12 17:19       ` Jean-Noël AVILA
2016-09-12 20:46         ` Junio C Hamano
2016-09-12 11:30 ` [PATCH v2 13/14] i18n: update-index: mark warnings " Vasco Almeida
2016-09-12 11:30 ` [PATCH v2 14/14] i18n: show-branch: mark plural strings " Vasco Almeida
2016-09-15 14:58 ` [PATCH v3 01/14] i18n: apply: mark plural string " Vasco Almeida
2016-09-15 14:58 ` [PATCH v3 02/14] i18n: apply: mark error messages " Vasco Almeida
2016-09-15 14:58 ` [PATCH v3 03/14] i18n: apply: mark info " Vasco Almeida
2016-09-15 14:58 ` [PATCH v3 04/14] i18n: blame: mark error " Vasco Almeida
2016-09-15 20:14   ` Junio C Hamano
2016-09-15 14:58 ` [PATCH v3 05/14] i18n: branch: mark option description " Vasco Almeida
2016-09-15 14:59 ` [PATCH v3 06/14] i18n: config: mark error message " Vasco Almeida
2016-09-15 14:59 ` [PATCH v3 07/14] i18n: merge-recursive: mark error messages " Vasco Almeida
2016-09-15 14:59 ` [PATCH v3 08/14] i18n: merge-recursive: mark verbose message " Vasco Almeida
2016-09-15 14:59 ` [PATCH v3 09/14] i18n: notes: mark error messages " Vasco Almeida
2016-09-15 14:59 ` [PATCH v3 10/14] notes: lowercase first word of error messages Vasco Almeida
2016-09-15 14:59 ` [PATCH v3 11/14] i18n: receive-pack: mark messages for translation Vasco Almeida
2016-09-15 14:59 ` [PATCH v3 12/14] i18n: show-branch: mark error " Vasco Almeida
2016-09-15 14:59 ` [PATCH v3 13/14] i18n: show-branch: mark plural strings " Vasco Almeida
2016-09-15 20:19   ` Junio C Hamano
2016-09-15 14:59 ` [PATCH v3 14/14] i18n: update-index: mark warnings " Vasco Almeida

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.