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

Re: [PATCH v2 05/11] i18n: add--interactive: mark message for translation

From
Jakub Narębski <jnareb@gmail.com>
Date
Oct 1, 2016, 17:09 UTC
Message-ID
<32b8c9ed-82df-0d71-a610-064b6ebf7a4e@gmail.com>
In-Reply-To
<xmqqbmzby3tc.fsf@gitster.mtv.corp.google.com>
W dniu 26.09.2016 o 01:09, Junio C Hamano pisze:
Show 11 quoted lines
> Vasco Almeida <vascomalmeida@sapo.pt> writes:
> 
>> -		print colored $prompt_color, $patch_mode_flavour{VERB},
>> -		  ($hunk[$ix]{TYPE} eq 'mode' ? ' mode change' :
>> -		   $hunk[$ix]{TYPE} eq 'deletion' ? ' deletion' :
>> -		   ' this hunk'),
>> -		  $patch_mode_flavour{TARGET},
>> -		  " [y,n,q,a,d,/$other,?]? ";
> 
> I hate to say this but expanding this single-liner into if/elsif/
> cascade of uncountable number of arms is simply a disaster.

Even if we turn this "single"-liner composition of sentence into interpolation (allowing for reordering of parts in translation), like

   print colored $prompt_color, __x("{verb} {noun}{maybe_target} [y,n,q,a,d,/{other},?]? ",
   	verb => $patch_mode_flavour{VERB}, noun => $patch_mode_noun{$hunk[$ix]{TYPE}},
   	maybe_target => $patch_mode_flavour{TARGET} || "", other => $other);
This would of course require N__() on values of hash, somewhere.

the problem is that the ordering may need to change depending on verb: "Stage", "Stash", "Unstage", "Apply", "Discard", and/or noun: "mode change", "deletion", "this hunk", and/or presence and value of maybe_target: " to index", " from worktree", " from index and worktree", " to index and worktree".

Show 25 quoted lines
>> +		if ($patch_mode eq 'stage') {
>> +			if ($hunk[$ix]{TYPE} eq 'mode') {
>> +			  print colored $prompt_color,
>> +			    sprintf(__("Stage mode change [y,n,q,a,d,/%s,?]? "), $other);
>> +			} elsif ($hunk[$ix]{TYPE} eq 'deletion') {
>> +			  print colored $prompt_color,
>> +			    sprintf(__("Stage deletion [y,n,q,a,d,/%s,?]? "), $other);
>> +			} else {
>> +			  print colored $prompt_color,
>> +			    sprintf(__("Stage this hunk [y,n,q,a,d,/%s,?]? "), $other);
>> +			}
>> +		} elsif ($patch_mode eq 'stash') {
>> + ...
>> +			}
>> +		}
> 
> I wonder if you can make a simple helper function so that the caller
> here can still be a single-liner:
> 
> 	print_colored $prompt_color,
>              sprintf(patch_update_prompt_string($patch_mode, $hunk[$ix]{TYPE}), $other);
>  
> where the patch_update_prompt_string helper function would look up
> these messages from a table that is looked up by patch-mode and TYPE
> and the run __() on it, or something?
Yes, this would be necessary; hide complexity behind helper function.
-- 
Jakub Narębski
Previous: Junio C HamanoNext: Vasco Almeida
Message 28 of 45 in “Mark strings in perl script for translation”
  1. 00/11 Mark strings in perl script for translationVasco Almeida, Aug 31, 2016
  2. 01/11 i18n: add--interactive: mark strings for translationVasco Almeida, Aug 31, 2016
  3. Junio C HamanoSep 25, 2016
  4. Vasco AlmeidaSep 28, 2016
  5. Duy NguyenSep 28, 2016
  6. Junio C HamanoSep 28, 2016
  7. Jakub NarębskiSep 29, 2016
  8. 02/11 i18n: add--interactive: mark simple here documents for translationVasco Almeida, Aug 31, 2016
  9. Junio C HamanoSep 25, 2016
  10. Vasco AlmeidaSep 29, 2016
  11. Junio C HamanoSep 29, 2016
  12. Jakub NarębskiSep 29, 2016
  13. Junio C HamanoSep 29, 2016
  14. Vasco AlmeidaOct 3, 2016
  15. Jakub NarębskiSep 30, 2016
  16. Vasco AlmeidaOct 3, 2016
  17. 03/11 i18n: add--interactive: mark strings with interpolation for translationVasco Almeida, Aug 31, 2016
  18. Junio C HamanoSep 25, 2016
  19. Jakub NarębskiSep 30, 2016
  20. Vasco AlmeidaOct 3, 2016
  21. 04/11 i18n: add--interactive: mark plural stringsVasco Almeida, Aug 31, 2016
  22. Vasco AlmeidaSep 26, 2016
  23. Junio C HamanoSep 26, 2016
  24. Jakub NarębskiOct 1, 2016
  25. Vasco AlmeidaOct 3, 2016
  26. 05/11 i18n: add--interactive: mark message for translationVasco Almeida, Aug 31, 2016
  27. Junio C HamanoSep 25, 2016
  28. Jakub NarębskiOct 1, 2016
  29. Vasco AlmeidaOct 3, 2016
  30. 06/11 i18n: add--interactive: i18n of help_patch_cmdVasco Almeida, Aug 31, 2016
  31. Junio C HamanoSep 25, 2016
  32. 07/11 i18n: add--interactive: mark edit_hunk_manually message for translationVasco Almeida, Aug 31, 2016
  33. Jakub NarębskiOct 1, 2016
  34. 08/11 i18n: send-email: mark strings for translationVasco Almeida, Aug 31, 2016
  35. Junio C HamanoSep 25, 2016
  36. Junio C HamanoSep 25, 2016
  37. Jakub NarębskiOct 1, 2016
  38. 11/11 i18n: difftool: mark warnings for translationVasco Almeida, Aug 31, 2016
  39. Junio C HamanoSep 25, 2016
  40. Jakub NarębskiOct 1, 2016
  41. 09/11 i18n: send-email: mark warnings and errors for translationVasco Almeida, Aug 31, 2016
  42. Jakub NarębskiOct 1, 2016
  43. 10/11 i18n: send-email: mark string with interpolation for translationVasco Almeida, Aug 31, 2016
  44. Junio C HamanoAug 31, 2016
  45. Junio C HamanoSep 25, 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.