Skip to contentSkip to conversation

describe: use Q_() for pluralization of commit and tag counts

PATCH In review Raj Ojha via GitGitGadget 3 participants 4 messages Oct 15 – Oct 17

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 describe: use Q_() for pluralization of commit and tag counts

From: Raj Ojha <[email protected]>

In describe_commit(), debug messages print the number of commits traversed and the number of candidate tags found using basic _() localization format strings:

_("traversed %lu commits\n")
_("found %i tags; gave up search at %s\n")

Because these messages display an integer count of items, using _() fails to account for languages whose pluralization rules differ from English (such as languages with multiple plural forms).

Replace these calls with Q_() to allow gettext (ngettext()) to choose the grammatically appropriate singular or plural string depending on the integer count.

---
describe: use Q_() for pluralization of commit and tag counts

In describe_commit(), debug messages print the number of commits traversed and the number of candidate tags found using basic _() localization format strings:

_("traversed %lu commits\n")
_("found %i tags; gave up search at %s\n")

Because these messages display an integer count of items, using _() fails to account for languages whose pluralization rules differ from English (such as languages with multiple plural forms).

Replace these calls with Q_() to allow gettext (ngettext()) to choose the grammatically appropriate singular or plural string depending on the integer count.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2257%2FRajojha-1%2Fdescribe-q-pluralize-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2257/Rajojha-1/describe-q-pluralize-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/2257

 builtin/describe.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
builtin/describe.c +8 -2
index c0abc931a5..1a7317c811 100644
@@ -481,10 +481,16 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
 				label_width, _(prio_names[t->name->prio]),
 				t->depth, t->name->path);
 		}
-		fprintf(stderr, _("traversed %lu commits\n"), seen_commits);
+		fprintf(stderr,
+			Q_("traversed %lu commit\n",
+			   "traversed %lu commits\n",
+			   seen_commits),
+			seen_commits);
 		if (gave_up_on) {
 			fprintf(stderr,
-				_("found %i tags; gave up search at %s\n"),
+				Q_("found %i tag; gave up search at %s\n",
+				   "found %i tags; gave up search at %s\n",
+				   max_candidates),
 				max_candidates,
 				oid_to_hex(&gave_up_on->object.oid));
 		}

base-commit: 6de20f6092dcf9bdb1c8efe03db4b70c82b423dd

Signature · 1 line
gitgitgadget
#1 lore raw
Quoted 13 lines · Raj Ojha via GitGitGadget

From: Raj Ojha <[email protected]>

In describe_commit(), debug messages print the number of commits traversed and the number of candidate tags found using basic _() localization format strings:

_("traversed %lu commits\n")
_("found %i tags; gave up search at %s\n")

Because these messages display an integer count of items, using _() fails to account for languages whose pluralization rules differ from English (such as languages with multiple plural forms).

Quoted 6 lines

Replace these calls with Q_() to allow gettext (ngettext()) to choose the grammatically appropriate singular or plural string depending on the integer count.

---

Is this convergent evolution or something? The similarity to
https://lore.kernel.org/git/[email protected]/
is striking.

It's not like anybody who sent a change on a piece of code automatically owns the area to be improved, but we would love to see more collaboration and a better use of the lore archive to find similar effort being made before people send patches.

https://lore.kernel.org/git/?q=describe+Q_

Quoted 10 lines

describe: use Q_() for pluralization of commit and tag counts

In describe_commit(), debug messages print the number of commits traversed and the number of candidate tags found using basic _() localization format strings:

_("traversed %lu commits\n")
_("found %i tags; gave up search at %s\n")

Quoted 7 lines

Because these messages display an integer count of items, using _() fails to account for languages whose pluralization rules differ from English (such as languages with multiple plural forms).

Replace these calls with Q_() to allow gettext (ngettext()) to choose the grammatically appropriate singular or plural string depending on the integer count.

You do not want to repeat your log message below the three-dash line. It wastes everybody's time.

Quoted 13 lines
builtin/describe.c +4 -1
index c0abc931a5..1a7317c811 100644
@@ -481,10 +481,16 @@ static void describe_commit(struct commit *cmit, struct strbuf *dst)
 				label_width, _(prio_names[t->name->prio]),
 				t->depth, t->name->path);
 		}
-		fprintf(stderr, _("traversed %lu commits\n"), seen_commits);
+		fprintf(stderr,
+			Q_("traversed %lu commit\n",
+			   "traversed %lu commits\n",
+			   seen_commits),

builtin/describe.c static void describe_commit(struct commit *cmit, struct strbuf *dst) · line 496

Quoted 10 lines
builtin/describe.c +4 -1
+			seen_commits);
 		if (gave_up_on) {
 			fprintf(stderr,
-				_("found %i tags; gave up search at %s\n"),
+				Q_("found %i tag; gave up search at %s\n",
+				   "found %i tags; gave up search at %s\n",
+				   max_candidates),
 				max_candidates,
 				oid_to_hex(&gave_up_on->object.oid));
 		}

Both the log message and patch text look cleanly done.

Thanks.

#2 lore raw
In reply to Raj Ojha via GitGitGadget
Quoted 7 lines · Raj Ojha via GitGitGadget

In describe_commit(), debug messages print the number of commits traversed and the number of candidate tags found using basic _() localization format strings:

_("traversed %lu commits\n")
_("found %i tags; gave up search at %s\n")

i wonder why _debug_ messages are i18n'd in the first place? their target audience would usually be the git developers. or is this just a misnomer?

#3 lore raw
Quoted 11 lines · Oswald Buddenhagen
Quoted 7 lines · Raj Ojha via GitGitGadget

In describe_commit(), debug messages print the number of commits traversed and the number of candidate tags found using basic _() localization format strings:

_("traversed %lu commits\n")
_("found %i tags; gave up search at %s\n")

i wonder why _debug_ messages are i18n'd in the first place? their target audience would usually be the git developers. or is this just a misnomer?

Funny that great minds think alike.

https://lore.kernel.org/git/[email protected]/

which led to

https://lore.kernel.org/git/[email protected]/

;-)