summaryrefslogtreecommitdiff
path: root/systems/texlive/tlnet/tlpkg/tlperl/lib/I18N/Langinfo.pm
diff options
context:
space:
mode:
Diffstat (limited to 'systems/texlive/tlnet/tlpkg/tlperl/lib/I18N/Langinfo.pm')
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/lib/I18N/Langinfo.pm289
1 files changed, 289 insertions, 0 deletions
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/lib/I18N/Langinfo.pm b/systems/texlive/tlnet/tlpkg/tlperl/lib/I18N/Langinfo.pm
new file mode 100644
index 0000000000..8ba76f2d51
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/lib/I18N/Langinfo.pm
@@ -0,0 +1,289 @@
+package I18N::Langinfo;
+
+use 5.006;
+use strict;
+use warnings;
+use Carp;
+
+require Exporter;
+require XSLoader;
+
+our @ISA = qw(Exporter);
+
+our @EXPORT = qw(langinfo);
+
+our @EXPORT_OK = qw(
+ ABDAY_1
+ ABDAY_2
+ ABDAY_3
+ ABDAY_4
+ ABDAY_5
+ ABDAY_6
+ ABDAY_7
+ ABMON_1
+ ABMON_10
+ ABMON_11
+ ABMON_12
+ ABMON_2
+ ABMON_3
+ ABMON_4
+ ABMON_5
+ ABMON_6
+ ABMON_7
+ ABMON_8
+ ABMON_9
+ ALT_DIGITS
+ AM_STR
+ CODESET
+ CRNCYSTR
+ DAY_1
+ DAY_2
+ DAY_3
+ DAY_4
+ DAY_5
+ DAY_6
+ DAY_7
+ D_FMT
+ D_T_FMT
+ ERA
+ ERA_D_FMT
+ ERA_D_T_FMT
+ ERA_T_FMT
+ MON_1
+ MON_10
+ MON_11
+ MON_12
+ MON_2
+ MON_3
+ MON_4
+ MON_5
+ MON_6
+ MON_7
+ MON_8
+ MON_9
+ NOEXPR
+ NOSTR
+ PM_STR
+ RADIXCHAR
+ THOUSEP
+ T_FMT
+ T_FMT_AMPM
+ YESEXPR
+ YESSTR
+);
+
+our $VERSION = '0.17';
+
+XSLoader::load();
+
+1;
+__END__
+
+=head1 NAME
+
+I18N::Langinfo - query locale information
+
+=head1 SYNOPSIS
+
+ use I18N::Langinfo;
+
+=head1 DESCRIPTION
+
+The langinfo() function queries various locale information that can be
+used to localize output and user interfaces. It uses the current underlying
+locale, regardless of whether or not it was called from within the scope of
+S<C<use locale>>. The langinfo() requires
+one numeric argument that identifies the locale constant to query:
+if no argument is supplied, C<$_> is used. The numeric constants
+appropriate to be used as arguments are exportable from I18N::Langinfo.
+
+The following example will import the langinfo() function itself and
+three constants to be used as arguments to langinfo(): a constant for
+the abbreviated first day of the week (the numbering starts from
+Sunday = 1) and two more constants for the affirmative and negative
+answers for a yes/no question in the current locale.
+
+ use I18N::Langinfo qw(langinfo ABDAY_1 YESSTR NOSTR);
+
+ my ($abday_1, $yesstr, $nostr) =
+ map { langinfo($_) } (ABDAY_1, YESSTR, NOSTR);
+
+ print "$abday_1? [$yesstr/$nostr] ";
+
+In other words, in the "C" (or English) locale the above will probably
+print something like:
+
+ Sun? [yes/no]
+
+but under a French locale
+
+ dim? [oui/non]
+
+The usually available constants are as follows.
+
+=over 4
+
+=item *
+
+For abbreviated and full length days of the week and months of the year:
+
+ ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 ABDAY_6 ABDAY_7
+ ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6
+ ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12
+ DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7
+ MON_1 MON_2 MON_3 MON_4 MON_5 MON_6
+ MON_7 MON_8 MON_9 MON_10 MON_11 MON_12
+
+=item *
+
+For the date-time, date, and time formats used by the strftime() function
+(see L<POSIX>):
+
+ D_T_FMT D_FMT T_FMT
+
+=item *
+
+For the locales for which it makes sense to have ante meridiem and post
+meridiem time formats:
+
+ AM_STR PM_STR T_FMT_AMPM
+
+=item *
+
+For the character code set being used (such as "ISO8859-1", "cp850",
+"koi8-r", "sjis", "utf8", etc.), and for the currency string:
+
+ CODESET CRNCYSTR
+
+=item *
+
+For an alternate representation of digits, for the
+radix character used between the integer and the fractional part
+of decimal numbers, the group separator string for large-ish floating point
+numbers (yes, the final two are redundant with
+L<POSIX::localeconv()|POSIX/localeconv>):
+
+ ALT_DIGITS RADIXCHAR THOUSEP
+
+=item *
+
+For the affirmative and negative responses and expressions:
+
+ YESSTR YESEXPR NOSTR NOEXPR
+
+=item *
+
+For the eras based on typically some ruler, such as the Japanese Emperor
+(naturally only defined in the appropriate locales):
+
+ ERA ERA_D_FMT ERA_D_T_FMT ERA_T_FMT
+
+=back
+
+Starting in Perl 5.28, this module is available even on systems that lack a
+native C<nl_langinfo>. On such systems, it uses various methods to construct
+what that function, if present, would return. But there are potential
+glitches. These are the items that could be different:
+
+=over
+
+=item C<ERA>
+
+Unimplemented, so returns C<"">.
+
+=item C<CODESET>
+
+Unimplemented, except on Windows, due to the vagaries of vendor locale names,
+returning C<""> on non-Windows.
+
+=item C<YESEXPR>
+
+=item C<YESSTR>
+
+=item C<NOEXPR>
+
+=item C<NOSTR>
+
+Only the values for English are returned. C<YESSTR> and C<NOSTR> have been
+removed from POSIX 2008, and are retained here for backwards compatibility.
+Your platform's C<nl_langinfo> may not support them.
+
+=item C<D_FMT>
+
+Always evaluates to C<%x>, the locale's appropriate date representation.
+
+=item C<T_FMT>
+
+Always evaluates to C<%X>, the locale's appropriate time representation.
+
+=item C<D_T_FMT>
+
+Always evaluates to C<%c>, the locale's appropriate date and time
+representation.
+
+=item C<CRNCYSTR>
+
+The return may be incorrect for those rare locales where the currency symbol
+replaces the radix character.
+Send email to L<mailto:perlbug@perl.org> if you have examples of it needing
+to work differently.
+
+=item C<ALT_DIGITS>
+
+Currently this gives the same results as Linux does.
+Send email to L<mailto:perlbug@perl.org> if you have examples of it needing
+to work differently.
+
+=item C<ERA_D_FMT>
+
+=item C<ERA_T_FMT>
+
+=item C<ERA_D_T_FMT>
+
+=item C<T_FMT_AMPM>
+
+These are derived by using C<strftime()>, and not all versions of that function
+know about them. C<""> is returned for these on such systems.
+
+=back
+
+See your L<nl_langinfo(3)> for more information about the available
+constants. (Often this means having to look directly at the
+F<langinfo.h> C header file.)
+
+=head2 EXPORT
+
+By default only the C<langinfo()> function is exported.
+
+=head1 BUGS
+
+Before Perl 5.28, the returned values are unreliable for the C<RADIXCHAR> and
+C<THOUSEP> locale constants.
+
+Starting in 5.28, changing locales on threaded builds is supported on systems
+that offer thread-safe locale functions. These include POSIX 2008 systems and
+Windows starting with Visual Studio 2005, and this module will work properly
+in such situations. However, on threaded builds on Windows prior to Visual
+Studio 2015, retrieving the items C<CRNCYSTR> and C<THOUSEP> can result in a
+race with a thread that has converted to use the global locale. It is quite
+uncommon for a thread to have done this. It would be possible to construct a
+workaround for this; patches welcome: see L<perlapi/switch_to_global_locale>.
+
+=head1 SEE ALSO
+
+L<perllocale>, L<POSIX/localeconv>, L<POSIX/setlocale>, L<nl_langinfo(3)>.
+
+The langinfo() is just a wrapper for the C nl_langinfo() interface.
+
+=head1 AUTHOR
+
+Jarkko Hietaniemi, E<lt>jhi@hut.fiE<gt>. Now maintained by Perl 5 porters.
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2001 by Jarkko Hietaniemi
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut