summaryrefslogtreecommitdiff
path: root/LedgerSMB/Locale.pm
diff options
context:
space:
mode:
Diffstat (limited to 'LedgerSMB/Locale.pm')
-rw-r--r--LedgerSMB/Locale.pm134
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;
+