diff options
author | tetragon <tetragon@4979c152-3d1c-0410-bac9-87ea11338e46> | 2006-10-23 20:14:15 +0000 |
---|---|---|
committer | tetragon <tetragon@4979c152-3d1c-0410-bac9-87ea11338e46> | 2006-10-23 20:14:15 +0000 |
commit | 56aefde186c4eba2ddd34017980d35683985417a (patch) | |
tree | 6203ab594f9ad4af65cf2221e8adf06939cc049d /LedgerSMB/Locale.pm | |
parent | af66021ef163a3f51895db8eb89c957d292f8997 (diff) |
Convert locales to Locale::Maketext::Lexicon
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@264 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'LedgerSMB/Locale.pm')
-rw-r--r-- | LedgerSMB/Locale.pm | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/LedgerSMB/Locale.pm b/LedgerSMB/Locale.pm new file mode 100644 index 00000000..80e2043e --- /dev/null +++ b/LedgerSMB/Locale.pm @@ -0,0 +1,134 @@ +#===================================================================== +# +# 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; + +$localepath = 'locale/mo'; +Locale::Maketext::Lexicon->import({ + '*' => [ + Gettext => "$localepath/*/LC_MESSAGES/LedgerSMB.mo", + ], + _auto => 1, + _decode => 1, +}); + +sub text { + my ($self, $text) = @_; + return encode_entities($self->maketext($text)); +} + +##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; + |