0539d5e6d5
Mark prompt message assembled in place for translation, unfolding each use case for each entry in the %patch_modes hash table. Previously, this script relied on whether $patch_mode was set to run the command patch_update_cmd() or show status and loop the main loop. Now, it uses $cmd to indicate we must run patch_update_cmd() and $patch_mode is used to tell which flavor of the %patch_modes are we on. This is introduced in order to be able to mark and unfold the message prompt knowing in which context we are. The tracking of context was done previously by point %patch_mode_flavour hash table to the correct entry of %patch_modes, focusing only on value of %patch_modes. Now, we are also interested in the key ('staged', 'stash', 'checkout_head', ...). Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt> Signed-off-by: Junio C Hamano <gitster@pobox.com>
116 lines
2.4 KiB
Perl
116 lines
2.4 KiB
Perl
package Git::I18N;
|
|
use 5.008;
|
|
use strict;
|
|
use warnings;
|
|
BEGIN {
|
|
require Exporter;
|
|
if ($] < 5.008003) {
|
|
*import = \&Exporter::import;
|
|
} else {
|
|
# Exporter 5.57 which supports this invocation was
|
|
# released with perl 5.8.3
|
|
Exporter->import('import');
|
|
}
|
|
}
|
|
|
|
our @EXPORT = qw(__ __n N__);
|
|
our @EXPORT_OK = @EXPORT;
|
|
|
|
sub __bootstrap_locale_messages {
|
|
our $TEXTDOMAIN = 'git';
|
|
our $TEXTDOMAINDIR = $ENV{GIT_TEXTDOMAINDIR} || '++LOCALEDIR++';
|
|
|
|
require POSIX;
|
|
POSIX->import(qw(setlocale));
|
|
# Non-core prerequisite module
|
|
require Locale::Messages;
|
|
Locale::Messages->import(qw(:locale_h :libintl_h));
|
|
|
|
setlocale(LC_MESSAGES(), '');
|
|
setlocale(LC_CTYPE(), '');
|
|
textdomain($TEXTDOMAIN);
|
|
bindtextdomain($TEXTDOMAIN => $TEXTDOMAINDIR);
|
|
|
|
return;
|
|
}
|
|
|
|
BEGIN
|
|
{
|
|
# Used by our test script to see if it should test fallbacks or
|
|
# not.
|
|
our $__HAS_LIBRARY = 1;
|
|
|
|
local $@;
|
|
eval {
|
|
__bootstrap_locale_messages();
|
|
*__ = \&Locale::Messages::gettext;
|
|
*__n = \&Locale::Messages::ngettext;
|
|
1;
|
|
} or do {
|
|
# Tell test.pl that we couldn't load the gettext library.
|
|
$Git::I18N::__HAS_LIBRARY = 0;
|
|
|
|
# Just a fall-through no-op
|
|
*__ = sub ($) { $_[0] };
|
|
*__n = sub ($$$) { $_[2] == 1 ? $_[0] : $_[1] };
|
|
};
|
|
|
|
sub N__($) { return shift; }
|
|
}
|
|
|
|
1;
|
|
|
|
__END__
|
|
|
|
=head1 NAME
|
|
|
|
Git::I18N - Perl interface to Git's Gettext localizations
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
use Git::I18N;
|
|
|
|
print __("Welcome to Git!\n");
|
|
|
|
printf __("The following error occurred: %s\n"), $error;
|
|
|
|
printf __n("commited %d file\n", "commited %d files\n", $files), $files;
|
|
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Git's internal Perl interface to gettext via L<Locale::Messages>. If
|
|
L<Locale::Messages> can't be loaded (it's not a core module) we
|
|
provide stub passthrough fallbacks.
|
|
|
|
This is a distilled interface to gettext, see C<info '(gettext)Perl'>
|
|
for the full interface. This module implements only a small part of
|
|
it.
|
|
|
|
=head1 FUNCTIONS
|
|
|
|
=head2 __($)
|
|
|
|
L<Locale::Messages>'s gettext function if all goes well, otherwise our
|
|
passthrough fallback function.
|
|
|
|
=head2 __n($$$)
|
|
|
|
L<Locale::Messages>'s ngettext function or passthrough fallback function.
|
|
|
|
=head2 N__($)
|
|
|
|
No-operation that only returns its argument. Use this if you want xgettext to
|
|
extract the text to the pot template but do not want to trigger retrival of the
|
|
translation at run time.
|
|
|
|
=head1 AUTHOR
|
|
|
|
E<AElig>var ArnfjE<ouml>rE<eth> Bjarmason <avarab@gmail.com>
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
Copyright 2010 E<AElig>var ArnfjE<ouml>rE<eth> Bjarmason <avarab@gmail.com>
|
|
|
|
=cut
|