use SL::Common;
use SL::Inifile;
+use strict;
+
sub new {
$main::lxdebug->enter_sub();
my $country = shift;
my $NLS_file = shift;
+ $self->{charset} = Common::DEFAULT_CHARSET;
+ $self->{countrycode} = $country;
+ $self->{NLS_file} = $NLS_file;
+
if ($country && -d "locale/$country") {
local *IN;
- $self->{countrycode} = $country;
if (open(IN, "<", "locale/$country/$NLS_file")) {
my $code = join("", <IN>);
eval($code);
close IN;
chomp $self->{charset};
-
- } else {
- $self->{charset} = Common::DEFAULT_CHARSET;
}
+ }
- $self->_read_special_chars_file($country);
-
- my $db_charset = $main::dbcharset || Common::DEFAULT_CHARSET;
+ my $db_charset = $main::dbcharset || Common::DEFAULT_CHARSET;
- $self->{iconv} = Text::Iconv->new($self->{charset}, $db_charset);
- $self->{iconv_english} = Text::Iconv->new('ASCII', $db_charset);
- $self->{iconv_iso8859} = Text::Iconv->new('ISO-8859-15', $db_charset);
- }
+ $self->{iconv} = Text::Iconv->new($self->{charset}, $db_charset);
+ $self->{iconv_reverse} = Text::Iconv->new($db_charset, $self->{charset});
+ $self->{iconv_english} = Text::Iconv->new('ASCII', $db_charset);
+ $self->{iconv_iso8859} = Text::Iconv->new('ISO-8859-15', $db_charset);
+ $self->{iconv_to_iso8859} = Text::Iconv->new($db_charset, 'ISO-8859-15');
- $self->{NLS_file} = $NLS_file;
+ $self->_read_special_chars_file($country);
push @{ $self->{LONG_MONTH} },
("January", "February", "March", "April",
}
my $scmap = $self->{special_chars_map}->{$format};
- my $order = $scmap->{order};
+ my $order = $self->{iconv}->convert($scmap->{order});
delete $scmap->{order};
foreach my $key (keys %{ $scmap }) {
- $scmap->{$key} = $self->_handle_markup($scmap->{$key});
+ $scmap->{$key} = $self->_handle_markup($self->{iconv}->convert($scmap->{$key}));
- my $new_key = $self->_handle_markup($key);
+ my $new_key = $self->_handle_markup($self->{iconv}->convert($key));
if ($key ne $new_key) {
$scmap->{$new_key} = $scmap->{$key};
$main::lxdebug->enter_sub();
my ($self, $text) = @_;
+ my $text_rev = $self->{iconv_reverse}->convert($text);
- if (exists $self->{subs}{$text}) {
- $text = $self->{subs}{$text};
- } else {
- if ($self->{countrycode} && $self->{NLS_file}) {
- Form->error(
- "$text not defined in locale/$self->{countrycode}/$self->{NLS_file}");
- }
+ if (exists $self->{subs}{$text_rev}) {
+ $text = $self->{subs}{$text_rev};
+ } elsif ($self->{countrycode} && $self->{NLS_file}) {
+ $main::form->error("$text not defined in locale/$self->{countrycode}/$self->{NLS_file}");
}
$main::lxdebug->leave_sub();
my $longdate = "";
my $longmonth = ($longformat) ? 'LONG_MONTH' : 'SHORT_MONTH';
+ my ($spc, $yy, $mm, $dd);
+
if ($date) {
# get separator
$main::lxdebug->enter_sub();
my ($self, $myconfig, $date, $longformat) = @_;
+ my ($spc, $yy, $mm, $dd);
unless ($date) {
$main::lxdebug->leave_sub();