package Locale;
+use Text::Iconv;
+
use SL::LXDebug;
+use SL::Common;
sub new {
$main::lxdebug->enter_sub();
my ($type, $country, $NLS_file) = @_;
my $self = {};
+ $country =~ s|.*/||;
+ $country =~ s|\.||g;
+ $NLS_file =~ s|.*/||;
+
if ($country && -d "locale/$country") {
local *IN;
$self->{countrycode} = $country;
- if (open(IN, "locale/$country/$NLS_file")) {
+ if (open(IN, "<", "locale/$country/$NLS_file")) {
my $code = join("", <IN>);
eval($code);
close(IN);
}
+
+ if (open IN, "<", "locale/$country/charset") {
+ $self->{charset} = <IN>;
+ close IN;
+
+ chomp $self->{charset};
+
+ } else {
+ $self->{charset} = Common::DEFAULT_CHARSET;
+ }
+
+ my $db_charset = $main::dbcharset;
+ $db_charset ||= Common::DEFAULT_CHARSET;
+ $self->{iconv} = Text::Iconv->new($self->{charset}, $db_charset);
+ $self->{iconv_english} = Text::Iconv->new("ASCII", $db_charset);
}
$self->{NLS_file} = $NLS_file;
sub text {
my ($self, $text) = @_;
- return (exists $self->{texts}{$text}) ? $self->{texts}{$text} : $text;
+ if (exists $self->{texts}->{$text}) {
+ return $self->{iconv}->convert($self->{texts}->{$text});
+ }
+
+ return $self->{iconv_english}->convert($text);
}
sub findsub {