summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xLedgerSMB/Form.pm108
-rw-r--r--LedgerSMB/Locale.pm134
-rwxr-xr-xbin/admin.pl7
-rwxr-xr-xbin/am.pl1
-rwxr-xr-xbin/login.pl7
-rwxr-xr-xbin/oe.pl6
-rw-r--r--locale/mo/en/LC_MESSAGES/LedgerSMB.mobin0 -> 184 bytes
-rw-r--r--locale/po/en.po8
-rwxr-xr-xmenu.pl12
9 files changed, 166 insertions, 117 deletions
diff --git a/LedgerSMB/Form.pm b/LedgerSMB/Form.pm
index deb374d2..b42f68bb 100755
--- a/LedgerSMB/Form.pm
+++ b/LedgerSMB/Form.pm
@@ -3110,112 +3110,4 @@ sub audittrail {
$rv;
}
-package Locale;
-
-sub new {
- my ($type, $country, $NLS_file) = @_;
- my $self = {};
-
- %self = ();
-
- if ($country && -d "locale/$country") {
- $self->{countrycode} = $country;
- eval { require "locale/$country/$NLS_file"; };
- }
-
- $self->{NLS_file} = $NLS_file;
- $self->{charset} = $self{charset};
-
- push @{ $self->{LONG_MONTH} }, ("January", "February", "March", "April", "May ", "June", "July", "August", "September", "October", "November", "December");
- push @{ $self->{SHORT_MONTH} }, (qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec));
-
- bless $self, $type;
-}
-
-
-sub text {
- my ($self, $text) = @_;
- return (exists $self{texts}{$text}) ? $self{texts}{$text} : $text;
-}
-
-
-sub date {
-
- my ($self, $myconfig, $date, $longformat) = @_;
-
- my $longdate = "";
- my $longmonth = ($longformat) ? 'LONG_MONTH' : 'SHORT_MONTH';
-
-
- if ($date) {
-
- # 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, $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, $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, $self->{$longmonth}[--$mm])." $dd $yy";
- }
- }
- }
-
- $longdate;
-}
-
1;
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;
+
diff --git a/bin/admin.pl b/bin/admin.pl
index deac8655..ce96cd6e 100755
--- a/bin/admin.pl
+++ b/bin/admin.pl
@@ -37,13 +37,16 @@
$menufile = "menu.ini";
use LedgerSMB::Form;
+use LedgerSMB::Locale;
use LedgerSMB::User;
$form = new Form;
-$locale = new Locale $language, "admin";
-$form->{charset} = $locale->{charset};
+$locale = LedgerSMB::Locale->get_handle($language);
+$locale->encoding('UTF-8');
+$form->{charset} = 'UTF-8';
+#$form->{charset} = $locale->encoding;
eval { require DBI; };
$form->error($locale->text('DBI not installed!')) if ($@);
diff --git a/bin/am.pl b/bin/am.pl
index 76506f71..cdc5959e 100755
--- a/bin/am.pl
+++ b/bin/am.pl
@@ -2050,7 +2050,6 @@ sub config {
foreach $key (sort { $countrycodes{$a} cmp $countrycodes{$b} } keys %countrycodes) {
$countrycodes .= ($myconfig{countrycode} eq $key) ? "<option selected value=$key>$countrycodes{$key}\n" : "<option value=$key>$countrycodes{$key}\n";
}
- $countrycodes = qq|<option value="">English\n$countrycodes|;
opendir CSS, "css/.";
@all = grep /.*\.css$/, readdir CSS;
diff --git a/bin/login.pl b/bin/login.pl
index fbfdf431..c52c3b9e 100755
--- a/bin/login.pl
+++ b/bin/login.pl
@@ -39,6 +39,7 @@
use DBI;
use LedgerSMB::User;
use LedgerSMB::Form;
+use LedgerSMB::Locale;
## will need this later when session_destroy will be used
#use LedgerSMB::Session;
@@ -46,8 +47,10 @@ use LedgerSMB::Form;
$form = new Form;
-$locale = new Locale $language, "login";
-$form->{charset} = $locale->{charset};
+$locale = LedgerSMB::Locale->get_handle($language);
+$locale->encoding('UTF-8');
+$form->{charset} = 'UTF-8';
+#$form->{charset} = $locale->encoding;
# customization
if (-f "bin/custom/$form->{script}") {
diff --git a/bin/oe.pl b/bin/oe.pl
index 7d87b297..7427014b 100755
--- a/bin/oe.pl
+++ b/bin/oe.pl
@@ -45,6 +45,7 @@ use LedgerSMB::IR;
use LedgerSMB::IS;
use LedgerSMB::PE;
use LedgerSMB::Tax;
+use LedgerSMB::Locale;
require "bin/arap.pl";
require "bin/io.pl";
@@ -1944,7 +1945,10 @@ sub invoice {
$form->{type} = "invoice";
# locale messages
- $locale = new Locale "$myconfig{countrycode}", "$script";
+ $locale = LedgerSMB::Locale->get_handle($myconfig{countrycode});
+ #$form->{charset} = $locale->encoding;
+ $form->{charset} = 'UTF-8';
+ $locale->encoding('UTF-8');
require "bin/$form->{script}";
diff --git a/locale/mo/en/LC_MESSAGES/LedgerSMB.mo b/locale/mo/en/LC_MESSAGES/LedgerSMB.mo
new file mode 100644
index 00000000..43a736aa
--- /dev/null
+++ b/locale/mo/en/LC_MESSAGES/LedgerSMB.mo
Binary files differ
diff --git a/locale/po/en.po b/locale/po/en.po
new file mode 100644
index 00000000..7d9ae799
--- /dev/null
+++ b/locale/po/en.po
@@ -0,0 +1,8 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: LedgerSMB 1.1.1\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
diff --git a/menu.pl b/menu.pl
index 2919b33f..6ac31ebf 100755
--- a/menu.pl
+++ b/menu.pl
@@ -60,6 +60,7 @@ $latex = 0;
$| = 1;
use LedgerSMB::Form;
+use LedgerSMB::Locale;
use LedgerSMB::Session;
eval { require "ledger-smb.conf"; };
@@ -86,7 +87,10 @@ use DBI qw(:sql_types);
# check for user config file, could be missing or ???
eval { require("$userspath/$form->{login}.conf"); };
if ($@) {
- $locale = new Locale "$language", "$script";
+ $locale = LedgerSMB::Locale->get_handle("fr_CA");
+ $form->{charset} = $locale->encoding;
+ $form->{charset} = 'UTF-8';
+ $locale->encoding('UTF-8');
$form->{callback} = "";
$msg1 = $locale->text('You are logged out!');
@@ -95,8 +99,10 @@ if ($@) {
}
# locale messages
-$locale = new Locale "$myconfig{countrycode}", "$script";
-$form->{charset} = $locale->{charset};
+$locale = LedgerSMB::Locale->get_handle($myconfig{countrycode});
+#$form->{charset} = $locale->encoding;
+$form->{charset} = 'UTF-8';
+$locale->encoding('UTF-8');
# send warnings to browser
$SIG{__WARN__} = sub { $form->info($_[0]) };