summaryrefslogtreecommitdiff
path: root/ext/I18N/Langinfo/Langinfo.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ext/I18N/Langinfo/Langinfo.pm')
-rw-r--r--ext/I18N/Langinfo/Langinfo.pm194
1 files changed, 194 insertions, 0 deletions
diff --git a/ext/I18N/Langinfo/Langinfo.pm b/ext/I18N/Langinfo/Langinfo.pm
new file mode 100644
index 0000000000..79f8a14e01
--- /dev/null
+++ b/ext/I18N/Langinfo/Langinfo.pm
@@ -0,0 +1,194 @@
+package I18N::Langinfo;
+
+use 5.006;
+use strict;
+use warnings;
+use Carp;
+
+require Exporter;
+require DynaLoader;
+use AutoLoader;
+
+our @ISA = qw(Exporter DynaLoader);
+
+our @EXPORT_OK = qw(
+ langinfo
+ 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.01';
+
+sub AUTOLOAD {
+ # This AUTOLOAD is used to 'autoload' constants from the constant()
+ # XS function.
+
+ my $constname;
+ our $AUTOLOAD;
+ ($constname = $AUTOLOAD) =~ s/.*:://;
+ croak "&I18N::Langinfo::constant not defined" if $constname eq 'constant';
+ my ($error, $val) = constant($constname);
+ if ($error) { croak $error; }
+ {
+ no strict 'refs';
+ # Fixed between 5.005_53 and 5.005_61
+#XXX if ($] >= 5.00561) {
+#XXX *$AUTOLOAD = sub () { $val };
+#XXX }
+#XXX else {
+ *$AUTOLOAD = sub { $val };
+#XXX }
+ }
+ goto &$AUTOLOAD;
+}
+
+bootstrap I18N::Langinfo $VERSION;
+
+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.
+
+The following example will import the langinfo() function itself
+(implicitly) and (explicitly) 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 constant 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 } qw(ABDAY_1 YESSTR NOSTR);
+
+ print "$abday_1? [$yesstr/$nostr] ";
+
+In other words, in the "C" (or English) locale the above will probably print:
+
+ Sun? [y/n]
+
+The usually available constants are
+
+ 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
+
+for abbreviated and full length days of the week and months of the year,
+
+ D_T_FMT D_FMT T_FMT
+
+for the date-time, date, and time formats used by the strftime() function
+(see L<POSIX>, and also L<Time::Piece>),
+
+ AM_STR PM_STR T_FMT_AMPM
+
+for the locales for which it makes sense to have ante meridiem and post
+meridiem time formats,
+
+ CODESET CRNCYSTR RADIXCHAR
+
+for the character code set being used (such as "ISO8859-1", "cp850",
+"koi8-r", "sjis", "utf8", etc.), for the currency string, for the
+radix character (yes, this is redundant with POSIX::localeconv())
+
+ YESSTR YESEXPR NOSTR NOEXPR
+
+for the affirmative and negative responses and expressions, and
+
+ ERA ERA_D_FMT ERA_D_T_FMT ETA_T_FMT
+
+for the Japanese Emperor eras (naturally only defined under Japanese locales).
+
+See your L<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
+
+Nothing is exported by default.
+
+=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>
+
+=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