diff options
Diffstat (limited to 'systems/texlive/tlnet/tlpkg/tlperl/lib/I18N/Langinfo.pm')
-rw-r--r-- | systems/texlive/tlnet/tlpkg/tlperl/lib/I18N/Langinfo.pm | 289 |
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 |