All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Christian Couder <christian.couder@gmail.com>
Cc: git@vger.kernel.org,  Patrick Steinhardt <ps@pks.im>,
	 Elijah Newren <newren@gmail.com>,  Jeff King <peff@peff.net>,
	 "brian m . carlson" <sandals@crustytoothpaste.net>,
	 Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	 Christian Couder <chriscool@tuxfamily.org>
Subject: Re: [PATCH 3/5] fast-export: mark strings for translation
Date: Tue, 28 Oct 2025 06:43:26 -0700	[thread overview]
Message-ID: <xmqqv7jzdtvl.fsf@gitster.g> (raw)
In-Reply-To: <20251028081232.3068147-4-christian.couder@gmail.com> (Christian Couder's message of "Tue, 28 Oct 2025 09:12:30 +0100")

Christian Couder <christian.couder@gmail.com> writes:

> Some error or warning messages in "builtin/fast-export.c" are marked
> for translation, but many are not.
>
> To be more consistent and provide a better experience to people using a
> translated version, let's mark all the remaining error or warning
> messages for translation.

Makes sense.  Should we also downcase some Unknown and Unexpected?

> While at it, improve how some arguments to some error functions are
> indented.

OK.

> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
> ---
>  builtin/fast-export.c | 77 ++++++++++++++++++++++---------------------
>  1 file changed, 39 insertions(+), 38 deletions(-)
>
> diff --git a/builtin/fast-export.c b/builtin/fast-export.c
> index dc2486f9a8..cb532f6325 100644
> --- a/builtin/fast-export.c
> +++ b/builtin/fast-export.c
> @@ -65,7 +65,7 @@ static int parse_opt_sign_mode(const struct option *opt,
>  		return 0;
>  
>  	if (parse_sign_mode(arg, val))
> -		return error("Unknown %s mode: %s", opt->long_name, arg);
> +		return error(_("Unknown %s mode: %s"), opt->long_name, arg);
>  
>  	return 0;
>  }
> @@ -82,7 +82,7 @@ static int parse_opt_tag_of_filtered_mode(const struct option *opt,
>  	else if (!strcmp(arg, "rewrite"))
>  		*val = REWRITE;
>  	else
> -		return error("Unknown tag-of-filtered mode: %s", arg);
> +		return error(_("Unknown tag-of-filtered mode: %s"), arg);
>  	return 0;
>  }
>  
> @@ -107,7 +107,7 @@ static int parse_opt_reencode_mode(const struct option *opt,
>  		if (!strcasecmp(arg, "abort"))
>  			*val = REENCODE_ABORT;
>  		else
> -			return error("Unknown reencoding mode: %s", arg);
> +			return error(_("Unknown reencoding mode: %s"), arg);
>  	}
>  
>  	return 0;
> @@ -318,16 +318,16 @@ static void export_blob(const struct object_id *oid)
>  	} else {
>  		buf = odb_read_object(the_repository->objects, oid, &type, &size);
>  		if (!buf)
> -			die("could not read blob %s", oid_to_hex(oid));
> +			die(_("could not read blob %s"), oid_to_hex(oid));
>  		if (check_object_signature(the_repository, oid, buf, size,
>  					   type) < 0)
> -			die("oid mismatch in blob %s", oid_to_hex(oid));
> +			die(_("oid mismatch in blob %s"), oid_to_hex(oid));
>  		object = parse_object_buffer(the_repository, oid, type,
>  					     size, buf, &eaten);
>  	}
>  
>  	if (!object)
> -		die("Could not read blob %s", oid_to_hex(oid));
> +		die(_("Could not read blob %s"), oid_to_hex(oid));
>  
>  	mark_next_object(object);
>  
> @@ -336,7 +336,7 @@ static void export_blob(const struct object_id *oid)
>  		printf("original-oid %s\n", oid_to_hex(oid));
>  	printf("data %"PRIuMAX"\n", (uintmax_t)size);
>  	if (size && fwrite(buf, size, 1, stdout) != 1)
> -		die_errno("could not write blob '%s'", oid_to_hex(oid));
> +		die_errno(_("could not write blob '%s'"), oid_to_hex(oid));
>  	printf("\n");
>  
>  	show_progress();
> @@ -499,10 +499,10 @@ static void show_filemodify(struct diff_queue_struct *q,
>  			break;
>  
>  		default:
> -			die("Unexpected comparison status '%c' for %s, %s",
> -				q->queue[i]->status,
> -				ospec->path ? ospec->path : "none",
> -				spec->path ? spec->path : "none");
> +			die(_("Unexpected comparison status '%c' for %s, %s"),
> +			    q->queue[i]->status,
> +			    ospec->path ? ospec->path : _("none"),
> +			    spec->path ? spec->path : _("none"));
>  		}
>  	}
>  }
> @@ -699,14 +699,14 @@ static void handle_commit(struct commit *commit, struct rev_info *rev,
>  
>  	author = strstr(commit_buffer_cursor, "\nauthor ");
>  	if (!author)
> -		die("could not find author in commit %s",
> +		die(_("could not find author in commit %s"),
>  		    oid_to_hex(&commit->object.oid));
>  	author++;
>  	commit_buffer_cursor = author_end = strchrnul(author, '\n');
>  
>  	committer = strstr(commit_buffer_cursor, "\ncommitter ");
>  	if (!committer)
> -		die("could not find committer in commit %s",
> +		die(_("could not find committer in commit %s"),
>  		    oid_to_hex(&commit->object.oid));
>  	committer++;
>  	commit_buffer_cursor = committer_end = strchrnul(committer, '\n');
> @@ -781,8 +781,8 @@ static void handle_commit(struct commit *commit, struct rev_info *rev,
>  		case REENCODE_NO:
>  			break;
>  		case REENCODE_ABORT:
> -			die("Encountered commit-specific encoding %.*s in commit "
> -			    "%s; use --reencode=[yes|no] to handle it",
> +			die(_("Encountered commit-specific encoding %.*s in commit "
> +			      "%s; use --reencode=[yes|no] to handle it"),
>  			    (int)encoding_len, encoding,
>  			    oid_to_hex(&commit->object.oid));
>  		}
> @@ -798,11 +798,11 @@ static void handle_commit(struct commit *commit, struct rev_info *rev,
>  	if (signatures.nr) {
>  		switch (signed_commit_mode) {
>  		case SIGN_ABORT:
> -			die("encountered signed commit %s; use "
> -			    "--signed-commits=<mode> to handle it",
> +			die(_("encountered signed commit %s; use "
> +			      "--signed-commits=<mode> to handle it"),
>  			    oid_to_hex(&commit->object.oid));
>  		case SIGN_WARN_VERBATIM:
> -			warning("exporting %"PRIuMAX" signature(s) for commit %s",
> +			warning(_("exporting %"PRIuMAX" signature(s) for commit %s"),
>  				(uintmax_t)signatures.nr, oid_to_hex(&commit->object.oid));
>  			/* fallthru */
>  		case SIGN_VERBATIM:
> @@ -812,7 +812,7 @@ static void handle_commit(struct commit *commit, struct rev_info *rev,
>  			}
>  			break;
>  		case SIGN_WARN_STRIP:
> -			warning("stripping signature(s) from commit %s",
> +			warning(_("stripping signature(s) from commit %s"),
>  				oid_to_hex(&commit->object.oid));
>  			/* fallthru */
>  		case SIGN_STRIP:
> @@ -890,7 +890,8 @@ static void handle_tag(const char *name, struct tag *tag)
>  		tagged = ((struct tag *)tagged)->tagged;
>  	}
>  	if (tagged->type == OBJ_TREE) {
> -		warning("Omitting tag %s,\nsince tags of trees (or tags of tags of trees, etc.) are not supported.",
> +		warning(_("Omitting tag %s,\nsince tags of trees (or tags "
> +			  "of tags of trees, etc.) are not supported."),
>  			oid_to_hex(&tag->object.oid));
>  		return;
>  	}
> @@ -898,7 +899,7 @@ static void handle_tag(const char *name, struct tag *tag)
>  	buf = odb_read_object(the_repository->objects, &tag->object.oid,
>  			      &type, &size);
>  	if (!buf)
> -		die("could not read tag %s", oid_to_hex(&tag->object.oid));
> +		die(_("could not read tag %s"), oid_to_hex(&tag->object.oid));
>  	message = memmem(buf, size, "\n\n", 2);
>  	if (message) {
>  		message += 2;
> @@ -936,17 +937,17 @@ static void handle_tag(const char *name, struct tag *tag)
>  		if (signature)
>  			switch (signed_tag_mode) {
>  			case SIGN_ABORT:
> -				die("encountered signed tag %s; use "
> -				    "--signed-tags=<mode> to handle it",
> +				die(_("encountered signed tag %s; use "
> +				      "--signed-tags=<mode> to handle it"),
>  				    oid_to_hex(&tag->object.oid));
>  			case SIGN_WARN_VERBATIM:
> -				warning("exporting signed tag %s",
> +				warning(_("exporting signed tag %s"),
>  					oid_to_hex(&tag->object.oid));
>  				/* fallthru */
>  			case SIGN_VERBATIM:
>  				break;
>  			case SIGN_WARN_STRIP:
> -				warning("stripping signature from tag %s",
> +				warning(_("stripping signature from tag %s"),
>  					oid_to_hex(&tag->object.oid));
>  				/* fallthru */
>  			case SIGN_STRIP:
> @@ -961,8 +962,8 @@ static void handle_tag(const char *name, struct tag *tag)
>  	if (!tagged_mark) {
>  		switch (tag_of_filtered_mode) {
>  		case TAG_FILTERING_ABORT:
> -			die("tag %s tags unexported object; use "
> -			    "--tag-of-filtered-object=<mode> to handle it",
> +			die(_("tag %s tags unexported object; use "
> +			      "--tag-of-filtered-object=<mode> to handle it"),
>  			    oid_to_hex(&tag->object.oid));
>  		case DROP:
>  			/* Ignore this tag altogether */
> @@ -1026,7 +1027,7 @@ static struct commit *get_commit(struct rev_cmdline_entry *e, const char *full_n
>  			tag = (struct tag *)tag->tagged;
>  		}
>  		if (!tag)
> -			die("Tag %s points nowhere?", e->name);
> +			die(_("Tag %s points nowhere?"), e->name);
>  		return (struct commit *)tag;
>  	}
>  	default:
> @@ -1064,7 +1065,7 @@ static void get_tags_and_duplicates(struct rev_cmdline_info *info)
>  
>  		commit = get_commit(e, full_name);
>  		if (!commit) {
> -			warning("%s: Unexpected object of type %s, skipping.",
> +			warning(_("%s: Unexpected object of type %s, skipping."),
>  				e->name,
>  				type_name(e->item->type));
>  			free(full_name);
> @@ -1079,7 +1080,7 @@ static void get_tags_and_duplicates(struct rev_cmdline_info *info)
>  			free(full_name);
>  			continue;
>  		default: /* OBJ_TAG (nested tags) is already handled */
> -			warning("Tag points to object of unexpected type %s, skipping.",
> +			warning(_("Tag points to object of unexpected type %s, skipping."),
>  				type_name(commit->object.type));
>  			free(full_name);
>  			continue;
> @@ -1175,7 +1176,7 @@ static void export_marks(char *file)
>  
>  	f = fopen_for_writing(file);
>  	if (!f)
> -		die_errno("Unable to open marks file %s for writing.", file);
> +		die_errno(_("Unable to open marks file %s for writing."), file);
>  
>  	for (i = 0; i < idnums.size; i++) {
>  		if (deco->base && deco->base->type == 1) {
> @@ -1192,7 +1193,7 @@ static void export_marks(char *file)
>  	e |= ferror(f);
>  	e |= fclose(f);
>  	if (e)
> -		error("Unable to write marks file %s.", file);
> +		error(_("Unable to write marks file %s."), file);
>  }
>  
>  static void import_marks(char *input_file, int check_exists)
> @@ -1215,20 +1216,20 @@ static void import_marks(char *input_file, int check_exists)
>  
>  		line_end = strchr(line, '\n');
>  		if (line[0] != ':' || !line_end)
> -			die("corrupt mark line: %s", line);
> +			die(_("corrupt mark line: %s"), line);
>  		*line_end = '\0';
>  
>  		mark = strtoumax(line + 1, &mark_end, 10);
>  		if (!mark || mark_end == line + 1
>  			|| *mark_end != ' ' || get_oid_hex(mark_end + 1, &oid))
> -			die("corrupt mark line: %s", line);
> +			die(_("corrupt mark line: %s"), line);
>  
>  		if (last_idnum < mark)
>  			last_idnum = mark;
>  
>  		type = odb_read_object_info(the_repository->objects, &oid, NULL);
>  		if (type < 0)
> -			die("object not found: %s", oid_to_hex(&oid));
> +			die(_("object not found: %s"), oid_to_hex(&oid));
>  
>  		if (type != OBJ_COMMIT)
>  			/* only commits */
> @@ -1236,12 +1237,12 @@ static void import_marks(char *input_file, int check_exists)
>  
>  		commit = lookup_commit(the_repository, &oid);
>  		if (!commit)
> -			die("not a commit? can't happen: %s", oid_to_hex(&oid));
> +			die(_("not a commit? can't happen: %s"), oid_to_hex(&oid));
>  
>  		object = &commit->object;
>  
>  		if (object->flags & SHOWN)
> -			error("Object %s already has a mark", oid_to_hex(&oid));
> +			error(_("Object %s already has a mark"), oid_to_hex(&oid));
>  
>  		mark_object(object, mark);
>  
> @@ -1395,7 +1396,7 @@ int cmd_fast_export(int argc,
>  	get_tags_and_duplicates(&revs.cmdline);
>  
>  	if (prepare_revision_walk(&revs))
> -		die("revision walk setup failed");
> +		die(_("revision walk setup failed"));
>  
>  	revs.reverse = 1;
>  	revs.diffopt.format_callback = show_filemodify;

  reply	other threads:[~2025-10-28 13:43 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-28  8:12 [PATCH 0/5] fast-export/import: cleanups and translation Christian Couder
2025-10-28  8:12 ` [PATCH 1/5] gpg-interface: simplify ssh fingerprint parsing Christian Couder
2025-10-28 16:45   ` Junio C Hamano
2025-10-28  8:12 ` [PATCH 2/5] gpg-interface: use left shift to define GPG_VERIFY_* Christian Couder
2025-10-28  8:12 ` [PATCH 3/5] fast-export: mark strings for translation Christian Couder
2025-10-28 13:43   ` Junio C Hamano [this message]
2025-10-29 14:29     ` Christian Couder
2025-10-29 16:12       ` Junio C Hamano
2025-10-30 12:39         ` Christian Couder
2025-10-28  8:12 ` [PATCH 4/5] fast-import: " Christian Couder
2025-10-28 16:46   ` Junio C Hamano
2025-10-28  8:12 ` [PATCH 5/5] gpg-interface: mark a string " Christian Couder
2025-10-30 12:33 ` [PATCH v2 0/5] fast-export/import: cleanups and translation Christian Couder
2025-10-30 12:33   ` [PATCH v2 1/5] gpg-interface: simplify ssh fingerprint parsing Christian Couder
2025-10-30 12:33   ` [PATCH v2 2/5] gpg-interface: use left shift to define GPG_VERIFY_* Christian Couder
2025-10-30 12:33   ` [PATCH v2 3/5] fast-export: mark strings for translation Christian Couder
2025-10-30 12:33   ` [PATCH v2 4/5] fast-import: " Christian Couder
2025-10-31 19:35     ` Elijah Newren
2025-10-30 12:33   ` [PATCH v2 5/5] gpg-interface: mark a string " Christian Couder
2025-10-30 18:14   ` [PATCH v2 0/5] fast-export/import: cleanups and translation Junio C Hamano
2025-10-31 19:37   ` Elijah Newren
2025-11-01 15:16     ` Christian Couder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqv7jzdtvl.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=chriscool@tuxfamily.org \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=newren@gmail.com \
    --cc=peff@peff.net \
    --cc=ps@pks.im \
    --cc=sandals@crustytoothpaste.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.