summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/Date/Language
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-04-26 22:16:26 +0000
committerKarl Berry <karl@freefriends.org>2015-04-26 22:16:26 +0000
commit342e672574c4e67d510e46ab6acd0e21a7d0cf54 (patch)
tree79e04202d08c0404bbd780bd26c1e34710e539b6 /Master/tlpkg/tlperl/lib/Date/Language
parentbe2706af7c57a0ef0f4d4e9f684ca4ef74922a82 (diff)
(tl)perl 5.20.2 for windows, from siep
git-svn-id: svn://tug.org/texlive/trunk@37064 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Date/Language')
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Afar.pm49
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Amharic.pm87
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Austrian.pm36
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Brazilian.pm35
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Bulgarian.pm92
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Chinese.pm36
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Chinese_GB.pm36
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Czech.pm58
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Danish.pm36
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Dutch.pm40
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/English.pm37
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Finnish.pm45
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/French.pm36
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Gedeo.pm51
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/German.pm37
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Greek.pm91
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Hungarian.pm88
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Icelandic.pm36
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Italian.pm36
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Norwegian.pm36
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Oromo.pm37
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Romanian.pm37
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Russian.pm49
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Russian_cp1251.pm39
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Russian_koi8r.pm39
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Sidama.pm37
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Somali.pm62
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Spanish.pm35
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Swedish.pm41
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Tigrinya.pm58
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/TigrinyaEritrean.pm93
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/TigrinyaEthiopian.pm93
-rw-r--r--Master/tlpkg/tlperl/lib/Date/Language/Turkish.pm59
33 files changed, 1677 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Afar.pm b/Master/tlpkg/tlperl/lib/Date/Language/Afar.pm
new file mode 100644
index 00000000000..f67cf37685c
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Afar.pm
@@ -0,0 +1,49 @@
+##
+## Afar tables
+##
+
+package Date::Language::Afar;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw(Acaada Etleeni Talaata Arbaqa Kamiisi Gumqata Sabti);
+@MoY = (
+"Qunxa Garablu",
+"Kudo",
+"Ciggilta Kudo",
+"Agda Baxis",
+"Caxah Alsa",
+"Qasa Dirri",
+"Qado Dirri",
+"Liiqen",
+"Waysu",
+"Diteli",
+"Ximoli",
+"Kaxxa Garablu"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(saaku carra);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Amharic.pm b/Master/tlpkg/tlperl/lib/Date/Language/Amharic.pm
new file mode 100644
index 00000000000..a79984ecffa
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Amharic.pm
@@ -0,0 +1,87 @@
+##
+## Amharic tables
+##
+
+package Date::Language::Amharic;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+if ( $] >= 5.006 ) {
+@DoW = (
+"\x{12a5}\x{1211}\x{12f5}",
+"\x{1230}\x{129e}",
+"\x{121b}\x{12ad}\x{1230}\x{129e}",
+"\x{1228}\x{1261}\x{12d5}",
+"\x{1210}\x{1219}\x{1235}",
+"\x{12d3}\x{122d}\x{1265}",
+"\x{1245}\x{12f3}\x{121c}"
+);
+@MoY = (
+"\x{1303}\x{1295}\x{12e9}\x{12c8}\x{122a}",
+"\x{134c}\x{1265}\x{1229}\x{12c8}\x{122a}",
+"\x{121b}\x{122d}\x{127d}",
+"\x{12a4}\x{1355}\x{1228}\x{120d}",
+"\x{121c}\x{12ed}",
+"\x{1301}\x{1295}",
+"\x{1301}\x{120b}\x{12ed}",
+"\x{12a6}\x{1308}\x{1235}\x{1275}",
+"\x{1234}\x{1355}\x{1274}\x{121d}\x{1260}\x{122d}",
+"\x{12a6}\x{12ad}\x{1270}\x{12cd}\x{1260}\x{122d}",
+"\x{1296}\x{126c}\x{121d}\x{1260}\x{122d}",
+"\x{12f2}\x{1234}\x{121d}\x{1260}\x{122d}"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = ( "\x{1320}\x{12cb}\x{1275}", "\x{12a8}\x{1230}\x{12d3}\x{1275}" );
+
+@Dsuf = ("\x{129b}" x 31);
+}
+else {
+@DoW = (
+"እሑድ",
+"ሰኞ",
+"ማክሰኞ",
+"ረቡዕ",
+"ሐሙስ",
+"ዓርብ",
+"ቅዳሜ"
+);
+@MoY = (
+"ጃንዩወሪ",
+"ፌብሩወሪ",
+"ማርች",
+"ኤፕረል",
+"ሜይ",
+"ጁን",
+"ጁላይ",
+"ኦገስት",
+"ሴፕቴምበር",
+"ኦክተውበር",
+"ኖቬምበር",
+"ዲሴምበር"
+);
+@DoWs = map { substr($_,0,9) } @DoW;
+@MoYs = map { substr($_,0,9) } @MoY;
+@AMPM = ( "ጠዋት", "ከሰዓት" );
+
+@Dsuf = ("ኛ" x 31);
+}
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Austrian.pm b/Master/tlpkg/tlperl/lib/Date/Language/Austrian.pm
new file mode 100644
index 00000000000..8ff398bd106
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Austrian.pm
@@ -0,0 +1,36 @@
+##
+## Austrian tables
+##
+
+package Date::Language::Austrian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Jnner Feber Mrz April Mai Juni
+ Juli August September Oktober November Dezember);
+@MoYs = qw(Jn Feb Mr Apr Mai Jun Jul Aug Sep Oct Nov Dez);
+@DoW = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
+@DoWs = qw(Son Mon Die Mit Don Fre Sam);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Brazilian.pm b/Master/tlpkg/tlperl/lib/Date/Language/Brazilian.pm
new file mode 100644
index 00000000000..fa4d15fff91
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Brazilian.pm
@@ -0,0 +1,35 @@
+##
+## Brazilian tables, contributed by Christian Tosta (tosta@cce.ufmg.br)
+##
+
+package Date::Language::Brazilian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw(Domingo Segunda Tera Quarta Quinta Sexta Sbado);
+@MoY = qw(Janeiro Fevereiro Maro Abril Maio Junho
+ Julho Agosto Setembro Outubro Novembro Dezembro);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = (qw(mo ro do ro to to to mo vo no)) x 3;
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Bulgarian.pm b/Master/tlpkg/tlperl/lib/Date/Language/Bulgarian.pm
new file mode 100644
index 00000000000..cf3d127486e
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Bulgarian.pm
@@ -0,0 +1,92 @@
+##
+## Bulgarian tables contributed by Krasimir Berov
+##
+
+package Date::Language::Bulgarian;
+use strict;
+use warnings;
+use utf8;
+use base qw(Date::Language);
+our (@DoW, @DoWs, @MoY, @MoYs, @AMPM, @Dsuf, %MoY, %DoW, $VERSION);
+$VERSION = "1.01";
+
+@DoW = qw(неделя понеделник вторник сряда четвъртък петък събота);
+@MoY = qw(януари февруари март април май юни
+ юли август септември октомври ноември декември);
+@DoWs = qw(нд пн вт ср чт пт сб);
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = (qw(ти ви ри ти ти ти ти ми ми ти)) x 3;
+@Dsuf[11,12,13] = qw(ти ти ти);
+@Dsuf[30,31] = qw(ти ви);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { ($_[0]->[3]<10?' ':'').$_[0]->[3].$Dsuf[$_[0]->[3]] }
+
+1;
+
+__END__
+
+=encoding utf8
+
+=head1 NAME
+
+Date::Language::Bulgarian - localization for Date::Format
+
+=head1 DESCRIPTION
+
+This is Bulgarian localization for Date::Format.
+It is important to note that this module source code is in utf8.
+All strings which it outputs are in utf8, so it is safe to use it
+currently only with English. You are left alone to try and convert
+the output when using different Date::Language::* in the same application.
+This should be addresed in the future.
+
+=head1 SYNOPSIS
+
+ use strict;
+ use warnings;
+ use Date::Language;
+ local $\=$/;
+ my $template ='%a %b %e %T %Y (%Y-%m-%d %H:%M:%S)';
+ my $time=1290883821; #or just use time();
+ my @lt = localtime($time);
+ my %languages = qw(English GMT German EEST Bulgarian EET);
+ binmode(select,':utf8');
+
+ foreach my $l(keys %languages){
+ my $lang = Date::Language->new($l);
+ my $zone = $languages{$l};
+ print $/. "$l $zone";
+ print $lang->time2str($template, $time);
+ print $lang->time2str($template, $time, $zone);
+
+ print $lang->strftime($template, \@lt);
+ }
+
+=head1 AUTHOR
+
+Krasimir Berov (berov@cpan.org)
+
+=head1 COPYRIGHT
+
+Copyright (c) 2010 Krasimir Berov. This program is free
+software; you can redistribute it and/or modify it under the same terms
+as Perl itself.
+
+=cut
+
+
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Chinese.pm b/Master/tlpkg/tlperl/lib/Date/Language/Chinese.pm
new file mode 100644
index 00000000000..abfb3c05728
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Chinese.pm
@@ -0,0 +1,36 @@
+##
+## English tables
+##
+
+package Date::Language::Chinese;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+@DoW = qw(星期日 星期一 星期二 星期三 星期四 星期五 星期六);
+@MoY = qw(一月 二月 三月 四月 五月 六月
+ 七月 八月 九月 十月 十一月 十二月);
+@DoWs = map { $_ } @DoW;
+@MoYs = map { $_ } @MoY;
+@AMPM = qw(上午 下午);
+
+@Dsuf = (qw(日 日 日 日 日 日 日 日 日 日)) x 3;
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+sub format_o { sprintf("%2d%s",$_[0]->[3],"日") }
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Chinese_GB.pm b/Master/tlpkg/tlperl/lib/Date/Language/Chinese_GB.pm
new file mode 100644
index 00000000000..7be05552266
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Chinese_GB.pm
@@ -0,0 +1,36 @@
+##
+## English tables
+##
+
+package Date::Language::Chinese_GB;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw( һ ڶ );
+@MoY = qw(һ
+ ʮ ʮһ ʮ);
+@DoWs = map { $_ } @DoW;
+@MoYs = map { $_ } @MoY;
+@AMPM = qw( );
+
+@Dsuf = (qw( )) x 3;
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+sub format_o { sprintf("%2d%s",$_[0]->[3],"") }
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Czech.pm b/Master/tlpkg/tlperl/lib/Date/Language/Czech.pm
new file mode 100644
index 00000000000..756f5c552fc
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Czech.pm
@@ -0,0 +1,58 @@
+##
+## Czech tables
+##
+## Contributed by Honza Pazdziora
+
+package Date::Language::Czech;
+
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @MoY2 @AMPM %MoY %DoW $VERSION);
+@ISA = qw(Date::Language Date::Format::Generic);
+$VERSION = "1.01";
+
+@MoY = qw(leden nor bezen duben kvten erven ervenec srpen z
+ jen listopad prosinec);
+@MoYs = qw(led nor be dub kv vn ec srp z j lis pro);
+@MoY2 = @MoY;
+for (@MoY2)
+ { s!en$!na! or s!ec$!ce! or s!ad$!adu! or s!or$!ora!; }
+
+@DoW = qw(nedle pondl ter steda tvrtek ptek sobota);
+@DoWs = qw(Ne Po t St t P So);
+
+@AMPM = qw(dop. odp.);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+sub format_d { $_[0]->[3] }
+sub format_m { $_[0]->[4] + 1 }
+sub format_o { $_[0]->[3] . '.' }
+
+sub format_Q { $MoY2[$_[0]->[4]] }
+
+sub time2str {
+ my $ref = shift;
+ my @a = @_;
+ $a[0] =~ s/(%[do]\.?\s?)%B/$1%Q/;
+ $ref->SUPER::time2str(@a);
+ }
+
+sub strftime {
+ my $ref = shift;
+ my @a = @_;
+ $a[0] =~ s/(%[do]\.?\s?)%B/$1%Q/;
+ $ref->SUPER::time2str(@a);
+ }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Danish.pm b/Master/tlpkg/tlperl/lib/Date/Language/Danish.pm
new file mode 100644
index 00000000000..c43d08528ef
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Danish.pm
@@ -0,0 +1,36 @@
+##
+## Danish tables
+##
+
+package Date::Language::Danish;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Januar Februar Marts April Maj Juni
+ Juli August September Oktober November December);
+@MoYs = qw(Jan Feb Mar Apr Maj Jun Jul Aug Sep Okt Nov Dec);
+@DoW = qw(Sndag Mandag Tirsdag Onsdag Torsdag Fredag Lrdag Sndag);
+@DoWs = qw(Sn Man Tir Ons Tor Fre Lr Sn);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Dutch.pm b/Master/tlpkg/tlperl/lib/Date/Language/Dutch.pm
new file mode 100644
index 00000000000..219758b4b29
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Dutch.pm
@@ -0,0 +1,40 @@
+##
+## Dutch tables
+## Contributed by Johannes la Poutre <jlpoutre@corp.nl.home.com>
+##
+
+package Date::Language::Dutch;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.02";
+
+@MoY = qw(januari februari maart april mei juni juli
+ augustus september oktober november december);
+@MoYs = map(substr($_, 0, 3), @MoY);
+$MoYs[2] = 'mrt'; # mrt is more common (Frank Maas)
+@DoW = map($_ . "dag", qw(zon maan dins woens donder vrij zater));
+@DoWs = map(substr($_, 0, 2), @DoW);
+
+# these aren't normally used...
+@AMPM = qw(VM NM);
+@Dsuf = ('e') x 31;
+
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/English.pm b/Master/tlpkg/tlperl/lib/Date/Language/English.pm
new file mode 100644
index 00000000000..638cb3c2a21
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/English.pm
@@ -0,0 +1,37 @@
+##
+## English tables
+##
+
+package Date::Language::English;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday);
+@MoY = qw(January February March April May June
+ July August September October November December);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Finnish.pm b/Master/tlpkg/tlperl/lib/Date/Language/Finnish.pm
new file mode 100644
index 00000000000..415b50c73df
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Finnish.pm
@@ -0,0 +1,45 @@
+##
+## Finnish tables
+## Contributed by Matthew Musgrove <muskrat@mindless.com>
+## Corrected by roke
+##
+
+package Date::Language::Finnish;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+# In Finnish, the names of the months and days are only capitalized at the beginning of sentences.
+@MoY = map($_ . "kuu", qw(tammi helmi maalis huhti touko kes hein elo syys loka marras joulu));
+@DoW = qw(sunnuntai maanantai tiistai keskiviikko torstai perjantai lauantai);
+
+# it is not customary to use abbreviated names of months or days
+# per Graham's suggestion:
+@MoYs = @MoY;
+@DoWs = @DoW;
+
+# the short form of ordinals
+@Dsuf = ('.') x 31;
+
+# doesn't look like this is normally used...
+@AMPM = qw(ap ip);
+
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1; \ No newline at end of file
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/French.pm b/Master/tlpkg/tlperl/lib/Date/Language/French.pm
new file mode 100644
index 00000000000..91b414c2eb4
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/French.pm
@@ -0,0 +1,36 @@
+##
+## French tables, contributed by Emmanuel Bataille (bem@residents.frmug.org)
+##
+
+package Date::Language::French;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.04";
+
+@DoW = qw(dimanche lundi mardi mercredi jeudi vendredi samedi);
+@MoY = qw(janvier fvrier mars avril mai juin
+ juillet aot septembre octobre novembre dcembre);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+$MoYs[6] = 'jul';
+@AMPM = qw(AM PM);
+
+@Dsuf = ((qw(er e e e e e e e e e)) x 3, 'er');
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Gedeo.pm b/Master/tlpkg/tlperl/lib/Date/Language/Gedeo.pm
new file mode 100644
index 00000000000..c18ad8cadda
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Gedeo.pm
@@ -0,0 +1,51 @@
+##
+## Gedeo tables
+##
+
+package Date::Language::Gedeo;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw( Sanbbattaa Sanno Masano Roobe Hamusse Arbe Qiddamme);
+@MoY = (
+"Oritto",
+"Birre'a",
+"Onkkollessa",
+"Saddasa",
+"Arrasa",
+"Qammo",
+"Ella",
+"Waacibajje",
+"Canissa",
+"Addolessa",
+"Bittitotessa",
+"Hegeya"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+$DoWs[0] = "Snb";
+$DoWs[1] = "Sno";
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(gorsa warreti-udumma);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/German.pm b/Master/tlpkg/tlperl/lib/Date/Language/German.pm
new file mode 100644
index 00000000000..11242c4c46a
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/German.pm
@@ -0,0 +1,37 @@
+##
+## German tables
+##
+
+package Date::Language::German;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.02";
+
+@MoY = qw(Januar Februar Mrz April Mai Juni
+ Juli August September Oktober November Dezember);
+@MoYs = qw(Jan Feb Mr Apr Mai Jun Jul Aug Sep Okt Nov Dez);
+@DoW = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
+@DoWs = qw(Son Mon Die Mit Don Fre Sam);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2d.",$_[0]->[3]) }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Greek.pm b/Master/tlpkg/tlperl/lib/Date/Language/Greek.pm
new file mode 100644
index 00000000000..00f917ce474
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Greek.pm
@@ -0,0 +1,91 @@
+##
+## Greek tables
+##
+## Traditional date format is: DoW DD{eta} MoY Year (%A %o %B %Y)
+##
+## Matthew Musgrove <muskrat@mindless.com>
+## Translations gratiously provided by Menelaos Stamatelos <men@kwsn.net>
+## This module returns unicode (utf8) encoded characters. You will need to
+## take the necessary steps for this to display correctly.
+##
+
+package Date::Language::Greek;
+
+use utf8;
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+@DoW = (
+"\x{039a}\x{03c5}\x{03c1}\x{03b9}\x{03b1}\x{03ba}\x{03ae}",
+"\x{0394}\x{03b5}\x{03c5}\x{03c4}\x{03ad}\x{03c1}\x{03b1}",
+"\x{03a4}\x{03c1}\x{03af}\x{03c4}\x{03b7}",
+"\x{03a4}\x{03b5}\x{03c4}\x{03ac}\x{03c1}\x{03c4}\x{03b7}",
+"\x{03a0}\x{03ad}\x{03bc}\x{03c0}\x{03c4}\x{03b7}",
+"\x{03a0}\x{03b1}\x{03c1}\x{03b1}\x{03c3}\x{03ba}\x{03b5}\x{03c5}\x{03ae}",
+"\x{03a3}\x{03ac}\x{03b2}\x{03b2}\x{03b1}\x{03c4}\x{03bf}",
+);
+
+@MoY = (
+"\x{0399}\x{03b1}\x{03bd}\x{03bf}\x{03c5}\x{03b1}\x{03c1}\x{03af}\x{03bf}\x{03c5}",
+"\x{03a6}\x{03b5}\x{03b2}\x{03c1}\x{03bf}\x{03c5}\x{03b1}\x{03c1}\x{03af}\x{03bf}\x{03c5}",
+"\x{039c}\x{03b1}\x{03c1}\x{03c4}\x{03af}\x{03bf}\x{03c5}",
+"\x{0391}\x{03c0}\x{03c1}\x{03b9}\x{03bb}\x{03af}\x{03c5}",
+"\x{039c}\x{03b1}\x{0390}\x{03bf}\x{03c5}",
+"\x{0399}\x{03bf}\x{03c5}\x{03bd}\x{03af}\x{03bf}\x{03c5}",
+"\x{0399}\x{03bf}\x{03c5}\x{03bb}\x{03af}\x{03bf}\x{03c5}",
+"\x{0391}\x{03c5}\x{03b3}\x{03bf}\x{03cd}\x{03c3}\x{03c4}\x{03bf}\x{03c5}",
+"\x{03a3}\x{03b5}\x{03c0}\x{03c4}\x{03b5}\x{03bc}\x{03c4}\x{03bf}\x{03c5}",
+"\x{039f}\x{03ba}\x{03c4}\x{03c9}\x{03b2}\x{03c1}\x{03af}\x{03bf}\x{03c5}",
+"\x{039d}\x{03bf}\x{03b5}\x{03bc}\x{03b2}\x{03c1}\x{03af}\x{03bf}\x{03c5}",
+"\x{0394}\x{03b5}\x{03ba}\x{03b5}\x{03bc}\x{03b2}\x{03c1}\x{03bf}\x{03c5}",
+);
+
+@DoWs = (
+"\x{039a}\x{03c5}",
+"\x{0394}\x{03b5}",
+"\x{03a4}\x{03c1}",
+"\x{03a4}\x{03b5}",
+"\x{03a0}\x{03b5}",
+"\x{03a0}\x{03b1}",
+"\x{03a3}\x{03b1}",
+);
+@MoYs = (
+"\x{0399}\x{03b1}\x{03bd}",
+"\x{03a6}\x{03b5}",
+"\x{039c}\x{03b1}\x{03c1}",
+"\x{0391}\x{03c0}\x{03c1}",
+"\x{039c}\x{03b1}",
+"\x{0399}\x{03bf}\x{03c5}\x{03bd}",
+"\x{0399}\x{03bf}\x{03c5}\x{03bb}",
+"\x{0391}\x{03c5}\x{03b3}",
+"\x{03a3}\x{03b5}\x{03c0}",
+"\x{039f}\x{03ba}",
+"\x{039d}\x{03bf}",
+"\x{0394}\x{03b5}",
+);
+
+@AMPM = ("\x{03c0}\x{03bc}", "\x{03bc}\x{03bc}");
+
+@Dsuf = ("\x{03b7}" x 31);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_o { sprintf("%2d%s",$_[0]->[3],"\x{03b7}") }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
+
+
+
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Hungarian.pm b/Master/tlpkg/tlperl/lib/Date/Language/Hungarian.pm
new file mode 100644
index 00000000000..d9c838d15b9
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Hungarian.pm
@@ -0,0 +1,88 @@
+##
+## Hungarian tables based on English
+##
+#
+# This is a just-because-I-stumbled-across-it
+# -and-my-wife-is-Hungarian release: if Graham or
+# someone adds to docs to Date::Format, I'd be
+# glad to correct bugs and extend as neeed.
+#
+
+package Date::Language::Hungarian;
+
+=head1 NAME
+
+Date::Language::Hungarian - Magyar format for Date::Format
+
+=head1 SYNOPSIS
+
+ my $lang = Date::Language->new('Hungarian');
+ print $lang->time2str("%a %b %e %T %Y", time);
+
+ @lt = localtime(time);
+ print $lang->time2str($template, time);
+ print $lang->strftime($template, @lt);
+
+ print $lang->time2str($template, time, $zone);
+ print $lang->strftime($template, @lt, $zone);
+
+ print $lang->ctime(time);
+ print $lang->asctime(@lt);
+
+ print $lang->ctime(time, $zone);
+ print $lang->asctime(@lt, $zone);
+
+See L<Date::Format>.
+
+=head1 AUTHOR
+
+Paula Goddard (paula -at- paulacska -dot- com)
+
+=head1 LICENCE
+
+Made available under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+use base "Date::Language";
+use vars qw( @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+$VERSION = "1.01";
+
+@DoW = qw(Vasrnap Htf Kedd Szerda Cstrtk Pntek Szombat);
+@MoY = qw(Janur Februr Mrcius prilis Mjus Jnius
+ Jlius Augusztus Szeptember Oktber November December);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(DE. DU.);
+
+# There is no 'th or 'nd in Hungarian, just a dot
+@Dsuf = (".") x 31;
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_P { lc($_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0]) }
+sub format_o { $_[0]->[3].'.' }
+
+
+
+sub format_D { &format_y . "." . &format_m . "." . &format_d }
+
+sub format_y { sprintf("%02d",$_[0]->[5] % 100) }
+sub format_d { sprintf("%02d",$_[0]->[3]) }
+sub format_m { sprintf("%02d",$_[0]->[4] + 1) }
+
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Icelandic.pm b/Master/tlpkg/tlperl/lib/Date/Language/Icelandic.pm
new file mode 100644
index 00000000000..5ca3ee32099
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Icelandic.pm
@@ -0,0 +1,36 @@
+##
+## Icelandic tables
+##
+
+package Date::Language::Icelandic;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Janar Febrar Mars Aprl Ma Jni
+ Jli gst September Oktber Nvember Desember);
+@MoYs = qw(Jan Feb Mar Apr Ma Jn Jl g Sep Okt Nv Des);
+@DoW = qw(Sunnudagur Mnudagur rijudagur Mivikudagur Fimmtudagur Fstudagur Laugardagur Sunnudagur);
+@DoWs = qw(Sun Mn ri Mi Fim Fs Lau Sun);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Italian.pm b/Master/tlpkg/tlperl/lib/Date/Language/Italian.pm
new file mode 100644
index 00000000000..6db0a8e67c9
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Italian.pm
@@ -0,0 +1,36 @@
+##
+## Italian tables
+##
+
+package Date::Language::Italian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Gennaio Febbraio Marzo Aprile Maggio Giugno
+ Luglio Agosto Settembre Ottobre Novembre Dicembre);
+@MoYs = qw(Gen Feb Mar Apr Mag Giu Lug Ago Set Ott Nov Dic);
+@DoW = qw(Domenica Lunedi Martedi Mercoledi Giovedi Venerdi Sabato);
+@DoWs = qw(Dom Lun Mar Mer Gio Ven Sab);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Norwegian.pm b/Master/tlpkg/tlperl/lib/Date/Language/Norwegian.pm
new file mode 100644
index 00000000000..bbd997f0b4d
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Norwegian.pm
@@ -0,0 +1,36 @@
+##
+## Norwegian tables
+##
+
+package Date::Language::Norwegian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Januar Februar Mars April Mai Juni
+ Juli August September Oktober November Desember);
+@MoYs = qw(Jan Feb Mar Apr Mai Jun Jul Aug Sep Okt Nov Des);
+@DoW = qw(Sndag Mandag Tirsdag Onsdag Torsdag Fredag Lrdag Sndag);
+@DoWs = qw(Sn Man Tir Ons Tor Fre Lr Sn);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Oromo.pm b/Master/tlpkg/tlperl/lib/Date/Language/Oromo.pm
new file mode 100644
index 00000000000..b6a6230c87d
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Oromo.pm
@@ -0,0 +1,37 @@
+##
+## Oromo tables
+##
+
+package Date::Language::Oromo;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw(Dilbata Wiixata Qibxata Roobii Kamiisa Jimaata Sanbata);
+@MoY = qw(Amajjii Guraandhala Bitooteessa Elba Caamsa Waxabajjii
+ Adooleessa Hagayya Fuulbana Onkololeessa Sadaasa Muddee);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(WD WB);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Romanian.pm b/Master/tlpkg/tlperl/lib/Date/Language/Romanian.pm
new file mode 100644
index 00000000000..cbd2c8cbc4d
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Romanian.pm
@@ -0,0 +1,37 @@
+##
+## Italian tables
+##
+
+package Date::Language::Romanian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(ianuarie februarie martie aprilie mai iunie
+ iulie august septembrie octombrie noembrie decembrie);
+@DoW = qw(duminica luni marti miercuri joi vineri sambata);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+
+@AMPM = qw(AM PM);
+
+@Dsuf = ('') x 31;
+
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Russian.pm b/Master/tlpkg/tlperl/lib/Date/Language/Russian.pm
new file mode 100644
index 00000000000..ca9f4142327
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Russian.pm
@@ -0,0 +1,49 @@
+##
+## Russian tables
+##
+## Contributed by Danil Pismenny <dapi@mail.ru>
+
+package Date::Language::Russian;
+
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @MoY2 @AMPM %MoY %DoW $VERSION);
+@ISA = qw(Date::Language Date::Format::Generic);
+$VERSION = "1.01";
+
+@MoY = qw( );
+@MoY2 = qw( );
+@MoYs = qw( );
+
+@DoW = qw( );
+@DoWs = qw( );
+@DoWs2 = qw( );
+
+@AMPM = qw( );
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+sub format_d { $_[0]->[3] }
+sub format_m { $_[0]->[4] + 1 }
+sub format_o { $_[0]->[3] . '.' }
+
+sub format_Q { $MoY2[$_[0]->[4]] }
+
+sub str2time {
+ my ($self,$value) = @_;
+ map {$value=~s/(\s|^)$DoWs2[$_](\s)/$DoWs[$_]$2/ig} (0..6);
+ $value=~s/(\s+|^)(\s+)/$1$2/;
+ return $self->SUPER::str2time($value);
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Russian_cp1251.pm b/Master/tlpkg/tlperl/lib/Date/Language/Russian_cp1251.pm
new file mode 100644
index 00000000000..cc28e6ed43a
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Russian_cp1251.pm
@@ -0,0 +1,39 @@
+##
+## Russian cp1251
+##
+
+package Date::Language::Russian_cp1251;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw( );
+@MoY = qw(
+ );
+@DoWs = qw( );
+#@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = ('e') x 31;
+#@Dsuf[11,12,13] = qw( );
+#@Dsuf[30,31] = qw( );
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Russian_koi8r.pm b/Master/tlpkg/tlperl/lib/Date/Language/Russian_koi8r.pm
new file mode 100644
index 00000000000..53de8d0567b
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Russian_koi8r.pm
@@ -0,0 +1,39 @@
+##
+## Russian koi8r
+##
+
+package Date::Language::Russian_koi8r;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw( );
+@MoY = qw(
+ );
+@DoWs = qw( );
+#@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = ('e') x 31;
+#@Dsuf[11,12,13] = qw( );
+#@Dsuf[30,31] = qw( );
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Sidama.pm b/Master/tlpkg/tlperl/lib/Date/Language/Sidama.pm
new file mode 100644
index 00000000000..bc26d7c3f09
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Sidama.pm
@@ -0,0 +1,37 @@
+##
+## Sidama tables
+##
+
+package Date::Language::Sidama;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw(Sambata Sanyo Maakisanyo Roowe Hamuse Arbe Qidaame);
+@MoY = qw(January February March April May June
+ July August September October November December);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(soodo hawwaro);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Somali.pm b/Master/tlpkg/tlperl/lib/Date/Language/Somali.pm
new file mode 100644
index 00000000000..5b2496170e9
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Somali.pm
@@ -0,0 +1,62 @@
+##
+## Somali tables
+##
+
+package Date::Language::Somali;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw(Axad Isniin Salaaso Arbaco Khamiis Jimco Sabti);
+@MoY = (
+"Bisha Koobaad",
+"Bisha Labaad",
+"Bisha Saddexaad",
+"Bisha Afraad",
+"Bisha Shanaad",
+"Bisha Lixaad",
+"Bisha Todobaad",
+"Bisha Sideedaad",
+"Bisha Sagaalaad",
+"Bisha Tobnaad",
+"Bisha Kow iyo Tobnaad",
+"Bisha Laba iyo Tobnaad"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = (
+"Kob",
+"Lab",
+"Sad",
+"Afr",
+"Sha",
+"Lix",
+"Tod",
+"Sid",
+"Sag",
+"Tob",
+"KIT",
+"LIT"
+);
+@AMPM = qw(SN GN);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Spanish.pm b/Master/tlpkg/tlperl/lib/Date/Language/Spanish.pm
new file mode 100644
index 00000000000..d464ae78ad1
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Spanish.pm
@@ -0,0 +1,35 @@
+##
+## Spanish tables
+##
+
+package Date::Language::Spanish;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+@DoW = qw(domingo lunes martes mircoles jueves viernes sbado);
+@MoY = qw(enero febrero marzo abril mayo junio
+ julio agosto septiembre octubre noviembre diciembre);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = ((qw(ro do ro to to to mo vo no mo)) x 3, 'ro');
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Swedish.pm b/Master/tlpkg/tlperl/lib/Date/Language/Swedish.pm
new file mode 100644
index 00000000000..8f16594ba73
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Swedish.pm
@@ -0,0 +1,41 @@
+##
+## Swedish tables
+## Contributed by Matthew Musgrove <muskrat@mindless.com>
+## Corrected by dempa
+##
+
+package Date::Language::Swedish;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(januari februari mars april maj juni juli augusti september oktober november december);
+@MoYs = map { substr($_,0,3) } @MoY;
+@DoW = map($_ . "dagen", qw(sn mn tis ons tors fre lr));
+@DoWs = map { substr($_,0,2) } @DoW;
+
+# the ordinals are not typically used in modern times
+@Dsuf = ('a' x 2, 'e' x 29);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Tigrinya.pm b/Master/tlpkg/tlperl/lib/Date/Language/Tigrinya.pm
new file mode 100644
index 00000000000..ce4fcb3a1cb
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Tigrinya.pm
@@ -0,0 +1,58 @@
+##
+## Tigrinya tables
+##
+
+package Date::Language::Tigrinya;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+@DoW = (
+"\x{1230}\x{1295}\x{1260}\x{1275}",
+"\x{1230}\x{1291}\x{12ed}",
+"\x{1230}\x{1209}\x{1235}",
+"\x{1228}\x{1261}\x{12d5}",
+"\x{1213}\x{1219}\x{1235}",
+"\x{12d3}\x{122d}\x{1262}",
+"\x{1240}\x{12f3}\x{121d}"
+);
+@MoY = (
+"\x{1303}\x{1295}\x{12e9}\x{12c8}\x{122a}",
+"\x{134c}\x{1265}\x{1229}\x{12c8}\x{122a}",
+"\x{121b}\x{122d}\x{127d}",
+"\x{12a4}\x{1355}\x{1228}\x{120d}",
+"\x{121c}\x{12ed}",
+"\x{1301}\x{1295}",
+"\x{1301}\x{120b}\x{12ed}",
+"\x{12a6}\x{1308}\x{1235}\x{1275}",
+"\x{1234}\x{1355}\x{1274}\x{121d}\x{1260}\x{122d}",
+"\x{12a6}\x{12ad}\x{1270}\x{12cd}\x{1260}\x{122d}",
+"\x{1296}\x{126c}\x{121d}\x{1260}\x{122d}",
+"\x{12f2}\x{1234}\x{121d}\x{1260}\x{122d}"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = (
+"\x{1295}/\x{1230}",
+"\x{12F5}/\x{1230}"
+);
+
+@Dsuf = ("\x{12ed}" x 31);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/TigrinyaEritrean.pm b/Master/tlpkg/tlperl/lib/Date/Language/TigrinyaEritrean.pm
new file mode 100644
index 00000000000..7ab8d0fdd1e
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/TigrinyaEritrean.pm
@@ -0,0 +1,93 @@
+##
+## Tigrinya-Eritrean tables
+##
+
+package Date::Language::TigrinyaEritrean;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+if ( $] >= 5.006 ) {
+@DoW = (
+"\x{1230}\x{1295}\x{1260}\x{1275}",
+"\x{1230}\x{1291}\x{12ed}",
+"\x{1230}\x{1209}\x{1235}",
+"\x{1228}\x{1261}\x{12d5}",
+"\x{1213}\x{1219}\x{1235}",
+"\x{12d3}\x{122d}\x{1262}",
+"\x{1240}\x{12f3}\x{121d}"
+);
+@MoY = (
+"\x{1303}\x{1295}\x{12e9}\x{12c8}\x{122a}",
+"\x{134c}\x{1265}\x{1229}\x{12c8}\x{122a}",
+"\x{121b}\x{122d}\x{127d}",
+"\x{12a4}\x{1355}\x{1228}\x{120d}",
+"\x{121c}\x{12ed}",
+"\x{1301}\x{1295}",
+"\x{1301}\x{120b}\x{12ed}",
+"\x{12a6}\x{1308}\x{1235}\x{1275}",
+"\x{1234}\x{1355}\x{1274}\x{121d}\x{1260}\x{122d}",
+"\x{12a6}\x{12ad}\x{1270}\x{12cd}\x{1260}\x{122d}",
+"\x{1296}\x{126c}\x{121d}\x{1260}\x{122d}",
+"\x{12f2}\x{1234}\x{121d}\x{1260}\x{122d}"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = (
+"\x{1295}/\x{1230}",
+"\x{12F5}/\x{1230}"
+);
+
+@Dsuf = ("\x{12ed}" x 31);
+}
+else {
+@DoW = (
+"ሰንበት",
+"ሰኑይ",
+"ሰሉስ",
+"ረቡዕ",
+"ሓሙስ",
+"ዓርቢ",
+"ቀዳም"
+);
+@MoY = (
+"ጥሪ",
+"ለካቲት",
+"መጋቢት",
+"ሚያዝያ",
+"ግንቦት",
+"ሰነ",
+"ሓምለ",
+"ነሓሰ",
+"መስከረም",
+"ጥቅምቲ",
+"ሕዳር",
+"ታሕሳስ"
+);
+@DoWs = map { substr($_,0,9) } @DoW;
+@MoYs = map { substr($_,0,9) } @MoY;
+@AMPM = (
+"ን/ሰ",
+"ድ/ሰ"
+);
+
+@Dsuf = ("ይ" x 31);
+}
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/TigrinyaEthiopian.pm b/Master/tlpkg/tlperl/lib/Date/Language/TigrinyaEthiopian.pm
new file mode 100644
index 00000000000..84fb7237c31
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/TigrinyaEthiopian.pm
@@ -0,0 +1,93 @@
+##
+## Tigrinya-Ethiopian tables
+##
+
+package Date::Language::TigrinyaEthiopian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+if ( $] >= 5.006 ) {
+@DoW = (
+"\x{1230}\x{1295}\x{1260}\x{1275}",
+"\x{1230}\x{1291}\x{12ed}",
+"\x{1230}\x{1209}\x{1235}",
+"\x{1228}\x{1261}\x{12d5}",
+"\x{1213}\x{1219}\x{1235}",
+"\x{12d3}\x{122d}\x{1262}",
+"\x{1240}\x{12f3}\x{121d}"
+);
+@MoY = (
+"\x{1303}\x{1295}\x{12e9}\x{12c8}\x{122a}",
+"\x{134c}\x{1265}\x{1229}\x{12c8}\x{122a}",
+"\x{121b}\x{122d}\x{127d}",
+"\x{12a4}\x{1355}\x{1228}\x{120d}",
+"\x{121c}\x{12ed}",
+"\x{1301}\x{1295}",
+"\x{1301}\x{120b}\x{12ed}",
+"\x{12a6}\x{1308}\x{1235}\x{1275}",
+"\x{1234}\x{1355}\x{1274}\x{121d}\x{1260}\x{122d}",
+"\x{12a6}\x{12ad}\x{1270}\x{12cd}\x{1260}\x{122d}",
+"\x{1296}\x{126c}\x{121d}\x{1260}\x{122d}",
+"\x{12f2}\x{1234}\x{121d}\x{1260}\x{122d}"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = (
+"\x{1295}/\x{1230}",
+"\x{12F5}/\x{1230}"
+);
+
+@Dsuf = ("\x{12ed}" x 31);
+}
+else {
+@DoW = (
+"ሰንበት",
+"ሰኑይ",
+"ሰሉስ",
+"ረቡዕ",
+"ሓሙስ",
+"ዓርቢ",
+"ቀዳም"
+);
+@MoY = (
+"ጃንዩወሪ",
+"ፌብሩወሪ",
+"ማርች",
+"ኤፕረል",
+"ሜይ",
+"ጁን",
+"ጁላይ",
+"ኦገስት",
+"ሴፕቴምበር",
+"ኦክተውበር",
+"ኖቬምበር",
+"ዲሴምበር"
+);
+@DoWs = map { substr($_,0,9) } @DoW;
+@MoYs = map { substr($_,0,9) } @MoY;
+@AMPM = (
+"ን/ሰ",
+"ድ/ሰ"
+);
+
+@Dsuf = ("ይ" x 31);
+}
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Date/Language/Turkish.pm b/Master/tlpkg/tlperl/lib/Date/Language/Turkish.pm
new file mode 100644
index 00000000000..593e20925cf
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Date/Language/Turkish.pm
@@ -0,0 +1,59 @@
+#----------------------------------------------------#
+#
+# Turkish tables
+# Burak Grsoy <burak@cpan.org>
+# Last modified: Sat Nov 15 20:28:32 2003
+#
+# use Date::Language;
+# my $turkish = Date::Language->new('Turkish');
+# print $turkish->time2str("%e %b %Y, %a %T\n", time);
+# print $turkish->str2time("25 Haz 1996 21:09:55 +0100");
+#----------------------------------------------------#
+
+package Date::Language::Turkish;
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION %DsufMAP);
+@ISA = qw(Date::Language);
+$VERSION = "1.0";
+
+@DoW = qw(Pazar Pazartesi Sal aramba Perembe Cuma Cumartesi);
+@MoY = qw(Ocak ubat Mart Nisan Mays Haziran Temmuz Austos Eyll Ekim Kasm Aralk);
+@DoWs = map { substr($_,0,3) } @DoW;
+$DoWs[1] = 'Pzt'; # Since we'll get two 'Paz' s
+$DoWs[-1] = 'Cmt'; # Since we'll get two 'Cum' s
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = ('',''); # no am-pm thingy
+
+# not easy as in english... maybe we can just use a dot "." ? :)
+%DsufMAP = (
+(map {$_ => 'inci', $_+10 => 'inci', $_+20 => 'inci' } 1,2,5,8 ),
+(map {$_ => 'nci', $_+10 => 'nci', $_+20 => 'nci' } 7 ),
+(map {$_ => 'nci', $_+10 => 'nci', $_+20 => 'nci' } 2 ),
+(map {$_ => 'nc', $_+10 => 'nc', $_+20 => 'nc' } 3,4 ),
+(map {$_ => 'uncu', $_+10 => 'uncu', $_+20 => 'uncu' } 9 ),
+(map {$_ => 'nc', $_+10 => 'nc', $_+20 => 'nc' } 6 ),
+(map {$_ => 'uncu', } 10,30 ),
+ 20 => 'nci',
+ 31 => 'inci',
+);
+
+@Dsuf = map{ $DsufMAP{$_} } sort {$a <=> $b} keys %DsufMAP;
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[ $_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[ $_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { '' } # disable
+sub format_P { '' } # disable
+sub format_o { sprintf("%2d%s",$_[0]->[3],$Dsuf[$_[0]->[3]-1]) }
+
+1;
+
+__END__