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

From: Junio C Hamano <[email-masked]>
Date: Sun, 25 Sep 2016 16:09:35 -0700

Vasco Almeida <[email-masked]> 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.

> +		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?