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(__); 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 occurred: %s\n"), $error; =head1 DESCRIPTION Git's internal Perl interface to gettext via L. If L can't be loaded (it's not a core module) we provide stub passthrough fallbacks. This is a distilled interface to gettext, see C for the full interface. This module implements only a small part of it. =head1 FUNCTIONS =head2 __($) L's gettext function if all goes well, otherwise our passthrough fallback function. =head1 AUTHOR Evar ArnfjErE Bjarmason =head1 COPYRIGHT Copyright 2010 Evar ArnfjErE Bjarmason =cut