W dniu 31.08.2016 o 14:31, Vasco Almeida pisze: > Mark message of edit_hunk_manually displayed in the editing file when > user chooses 'e' option. The message had to be unfolded to allow > translation of the $participle verb. Actually you need to unfold the message if exact translation (the ordering of words) depends on the $participle verb. Moreover, because the translation of message of edit_hunk_manually can depend *only* on $participle verb (it cannot depends on $remove_minus and $remove_plus, as they are either ('-', '+') or ('+', '-')), with "particular" (contexted) translation of $participle, if the translation would be different for different $participle, one can simply move whole translation to $participle. > > Some messages end up being exactly the same for some uses cases, but > left it for easier change in the future, e.g., wanting to change wording > of one particular use case. > > Signed-off-by: Vasco Almeida <vascomalmeida@xxxxxxx> > --- > git-add--interactive.perl | 60 ++++++++++++++++++++++++++++++++++++++--------- > 1 file changed, 49 insertions(+), 11 deletions(-) > > diff --git a/git-add--interactive.perl b/git-add--interactive.perl > index acbfa4e..235142c 100755 > --- a/git-add--interactive.perl > +++ b/git-add--interactive.perl > @@ -1057,22 +1057,60 @@ sub edit_hunk_manually { > my $fh; > open $fh, '>', $hunkfile > or die sprintf(__("failed to open hunk edit file for writing: %s"), $!); > - print $fh "# Manual hunk edit mode -- see bottom for a quick guide\n"; > + print $fh __("# Manual hunk edit mode -- see bottom for a quick guide\n"); This would be left as is (though you can write __"..." instead of __("...")). > print $fh @$oldtext; > - my $participle = $patch_mode_flavour{PARTICIPLE}; This would be replaced with - my $participle = __($patch_mode_flavour{PARTICIPLE}); Additionally you would need to mark the text of $participle itself for translation, with context; for example: - PARTICIPLE => 'staging', + PARTICIPLE => N__p('Participle for "stage" operation, for edit hunk manually message', 'staging'), That would require adding "--keyword=N__p:1c,2" to Makefile, of course. The entry in the *.pot / *.po translations file would be preceded with "msgctxt <context>" line. > my $is_reverse = $patch_mode_flavour{IS_REVERSE}; > my ($remove_plus, $remove_minus) = $is_reverse ? ('-', '+') : ('+', '-'); > - print $fh <<EOF; > -# --- > -# To remove '$remove_minus' lines, make them ' ' lines (context). > -# To remove '$remove_plus' lines, delete them. > + print $fh sprintf(__( + print $fh __x(<<'EOF', remove_minus => $remove_minus, remove_plus => $remove_plus, + participle => $participle); or + participle => __($participle)); assuming that $participle assignment doesn't use __ then. Note that xgettext supports heredoc syntax for Perl language: Here-documents are recognized. If the delimiter is enclosed in single quotes, the string is not interpolated. If it is enclosed in double quotes or has no quotes at all, the string is interpolated. Delimiters that start with a digit are not supported! > +"# --- > +# To remove '%s' lines, make them ' ' lines (context). > +# To remove '%s' lines, delete them. +# To remove '{remove_minus}' lines, make them ' ' lines (context). +# To remove '{remove_plus}' lines, delete them. > # Lines starting with # will be removed. > -# > -# If the patch applies cleanly, the edited hunk will immediately be > -# marked for $participle. If it does not apply cleanly, you will be given > +#"), $remove_minus, $remove_plus), # Lines starting with # will be removed. +# +# If the patch applies cleanly, the edited hunk will immediately be +# marked for {participle}. If it does not apply cleanly, you will be given [...] Here is definition of relevant subroutines, based on Locale::TextDomain. sub N__p($$) { return @_; } -- Jakub Narębski