90 lines
1.7 KiB
Perl
90 lines
1.7 KiB
Perl
|
package Git::I18N;
|
||
|
use 5.008;
|
||
|
use strict;
|
||
|
use warnings;
|
||
|
use Exporter 'import';
|
||
|
|
||
|
our @EXPORT = qw(__);
|
||
|
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;
|
||
|
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] };
|
||
|
};
|
||
|
}
|
||
|
|
||
|
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 occured: %s\n"), $error;
|
||
|
|
||
|
=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.
|
||
|
|
||
|
=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
|