git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 02/22] i18n: advice: mark string about detached head for translation

From
Vasco Almeida <vascomalmeida@sapo.pt>
Date
May 30, 2016, 11:03 UTC
Message-ID
<574C1E0E.6040808@sapo.pt>
In-Reply-To
<1464031661-18988-3-git-send-email-vascomalmeida@sapo.pt>
Às 19:27 de 23-05-2016, Vasco Almeida escreveu:
Show 28 quoted lines
> Mark string with advice seen by the user when in detached head.
> 
> Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
> ---
>  advice.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/advice.c b/advice.c
> index 4dc5cf1..703a847 100644
> --- a/advice.c
> +++ b/advice.c
> @@ -107,13 +107,13 @@ void NORETURN die_conclude_merge(void)
>  void detach_advice(const char *new_name)
>  {
>  	const char fmt[] =
> -	"Note: checking out '%s'.\n\n"
> +	N_("Note: checking out '%s'.\n\n"
>  	"You are in 'detached HEAD' state. You can look around, make experimental\n"
>  	"changes and commit them, and you can discard any commits you make in this\n"
>  	"state without impacting any branches by performing another checkout.\n\n"
>  	"If you want to create a new branch to retain commits you create, you may\n"
>  	"do so (now or later) by using -b with the checkout command again. Example:\n\n"
> -	"  git checkout -b <new-branch-name>\n\n";
> +	"  git checkout -b <new-branch-name>\n\n");
>  
>  	fprintf(stderr, fmt, new_name);
>  }
> 

I just realized this does nothing but letting xgettext extract the string. Does not allow interpolating the actual translation. Hence, the translator would translate this text but the translation would never be used.

There are 2 solutions: 1) use const char *fmt = _("...") instead
2) still use N_() like this patch but do fprintf(stderr, _(fmt),
new_name); to trigger retrieving the translation when printing the message.

Option 1) it most common on git source and 2) is used primarily during command line option parse (see usage_with_options_internal() in parse-options.c).

I prefer the solution 1) and I'll choose it if there are no objections.
Previous: Vasco AlmeidaNext: Vasco Almeida
Message 4 of 38 in “i18n and test updates”
  1. 00/22 i18n and test updatesVasco Almeida, May 23, 2016
  2. 01/22 i18n: builtin/remote.c: fix mark for translationVasco Almeida, May 23, 2016
  3. 02/22 i18n: advice: mark string about detached head for translationVasco Almeida, May 23, 2016
  4. Vasco AlmeidaMay 30, 2016
  5. 03/22 i18n: advice: internationalize message for conflictsVasco Almeida, May 23, 2016
  6. 04/22 i18n: transport: mark strings for translationVasco Almeida, May 23, 2016
  7. 05/22 i18n: sequencer: mark entire sentences for translationVasco Almeida, May 23, 2016
  8. 06/22 i18n: sequencer: mark string for translationVasco Almeida, May 23, 2016
  9. 07/22 i18n: merge-octopus: mark messages for translationVasco Almeida, May 23, 2016
  10. 08/22 merge-octupus: use die shell function from git-sh-setup.shVasco Almeida, May 23, 2016
  11. 09/22 i18n: rebase: fix marked string to use eval_gettext variantVasco Almeida, May 23, 2016
  12. 10/22 i18n: rebase: mark placeholder for translationVasco Almeida, May 23, 2016
  13. 11/22 i18n: bisect: simplify error message for i18nVasco Almeida, May 23, 2016
  14. 12/22 t6030: update to use test_i18ncmpVasco Almeida, May 23, 2016
  15. 13/22 i18n: git-sh-setup.sh: mark strings for translationVasco Almeida, May 23, 2016
  16. Junio C HamanoMay 26, 2016
  17. Vasco AlmeidaMay 27, 2016
  18. 14/22 i18n: rebase-interactive: mark strings for translationVasco Almeida, May 23, 2016
  19. Junio C HamanoMay 26, 2016
  20. Vasco AlmeidaMay 27, 2016
  21. Junio C HamanoMay 27, 2016
  22. 15/22 i18n: rebase-interactive: mark here-doc strings for translationVasco Almeida, May 23, 2016
  23. Vasco AlmeidaMay 25, 2016
  24. 16/22 i18n: rebase-interactive: mark comments of squash for translationVasco Almeida, May 23, 2016
  25. Junio C HamanoMay 26, 2016
  26. Vasco AlmeidaMay 27, 2016
  27. 17/22 i18n: setup: mark strings for translationVasco Almeida, May 23, 2016
  28. 18/22 tests: use test_i18n* functions to suppress false positivesVasco Almeida, May 23, 2016
  29. Junio C HamanoMay 27, 2016
  30. Vasco AlmeidaMay 27, 2016
  31. Junio C HamanoMay 27, 2016
  32. 19/22 tests: unpack-trees: update to use test_i18n* functionsVasco Almeida, May 23, 2016
  33. 20/22 t9003: become resilient to GETTEXT_POISONVasco Almeida, May 23, 2016
  34. 21/22 t4153: fix negated test_i18ngrep callVasco Almeida, May 23, 2016
  35. 22/22 t5523: use test_i18ngrep for negationVasco Almeida, May 23, 2016
  36. Junio C HamanoMay 27, 2016
  37. Vasco AlmeidaMay 28, 2016
  38. Junio C HamanoMay 30, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.