#===================================================================== # # Locale support module for LedgerSMB # LedgerSMB::Locale # # LedgerSMB # Small Medium Business Accounting software # http://www.ledgersmb.org/ # # # Copyright (C) 2006 # This work contains copyrighted information from a number of sources all used # with permission. It is released under the GNU General Public License # Version 2 or, at your option, any later version. See COPYRIGHT file for # details. # # #====================================================================== # This package contains locale related functions: #` # get_handle - gets a locale handle # text - outputs HTML escaped translation for input text # date - formats date for the locale # #==================================================================== package LedgerSMB::Locale; use base 'Locale::Maketext'; use Locale::Maketext::Lexicon; use HTML::Entities; use Encode; Locale::Maketext::Lexicon->import({ '*' => [ Gettext => "${LedgerSMB::Sysconfig::localepath}/*.po", ], _auto => 1, _decode => 1, }); sub text { my ($self, $text, @params) = @_; return encode_entities($self->maketext($text, @params)); } ##sub date { ## my ($self, $myconfig, $date, $longformat) = @_; ## return $date; ##} sub date { my ($self, $myconfig, $date, $longformat) = @_; my @longmonth = (qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)); @longmonth = ("January", "February", "March", "April", "May ", "June", "July", "August", "September", "October", "November", "December") if $longformat; my $longdate = ''; return '' if not $date; my $spc = ''; my $yy = ''; my $mm = ''; my $dd = ''; # get separator $spc = $myconfig->{dateformat}; $spc =~ s/\w//g; $spc = substr($spc, 0, 1); if ($date =~ /\D/) { if ($myconfig->{dateformat} =~ /^yy/) { ($yy, $mm, $dd) = split /\D/, $date; } if ($myconfig->{dateformat} =~ /^mm/) { ($mm, $dd, $yy) = split /\D/, $date; } if ($myconfig->{dateformat} =~ /^dd/) { ($dd, $mm, $yy) = split /\D/, $date; } } else { $date = substr($date, 2); ($yy, $mm, $dd) = ($date =~ /(..)(..)(..)/); } $dd *= 1; $mm--; $yy += 2000 if length $yy == 2; if ($myconfig->{dateformat} =~ /^dd/) { $mm++; $dd = substr("0$dd", -2); $mm = substr("0$mm", -2); $longdate = "$dd$spc$mm$spc$yy"; if (defined $longformat) { $longdate = "$dd"; $longdate .= ($spc eq '.') ? ". " : " "; $longdate .= &text($self, $longmonth[--$mm])." $yy"; } } elsif ($myconfig->{dateformat} =~ /^yy/) { $mm++; $dd = substr("0$dd", -2); $mm = substr("0$mm", -2); $longdate = "$yy$spc$mm$spc$dd"; if (defined $longformat) { $longdate = &text($self, $longmonth[--$mm])." $dd $yy"; } } else { $mm++; $dd = substr("0$dd", -2); $mm = substr("0$mm", -2); $longdate = "$mm$spc$dd$spc$yy"; if (defined $longformat) { $longdate = &text($self, $longmonth[--$mm])." $dd $yy"; } } } 1;