git-subtree-dir: third_party/git git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7
		
			
				
	
	
		
			115 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			115 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("committed %d file\n", "committed %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
 |