X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/541272c5cf4f874a13eff89993d5d4a941451f42..ab96e204a2beec2302b1850df50f45a6e67a13c4:/SL/Locale.pm diff --git a/SL/Locale.pm b/SL/Locale.pm index 8e7037d78..a6756fefe 100644 --- a/SL/Locale.pm +++ b/SL/Locale.pm @@ -36,7 +36,10 @@ package Locale; +use Text::Iconv; + use SL::LXDebug; +use SL::Common; sub new { $main::lxdebug->enter_sub(); @@ -44,14 +47,33 @@ sub new { 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("", ); eval($code); close(IN); } + + if (open IN, "<", "locale/$country/charset") { + $self->{charset} = ; + 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; @@ -71,7 +93,11 @@ sub new { 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 {