X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FLocale.pm;h=24131378fb4d01739f3c92e4536f950abcd5d387;hb=6cbad8aa1bf482483fcd300d00f331fe4f23f57c;hp=b1c8205e8cd1aaae80b6715e76f11eafb7ded05e;hpb=7ecdb94715674d62df85fc746fe06db10c7ade9b;p=kivitendo-erp.git diff --git a/SL/Locale.pm b/SL/Locale.pm index b1c8205e8..24131378f 100644 --- a/SL/Locale.pm +++ b/SL/Locale.pm @@ -55,7 +55,7 @@ sub new { my ($type, $country) = @_; - $country ||= $::language; + $country ||= $::lx_office_conf{system}->{language}; $country =~ s|.*/||; $country =~ s|\.||g; @@ -96,8 +96,8 @@ sub _init { } } - my $db_charset = $main::dbcharset || Common::DEFAULT_CHARSET; - $self->{is_utf8} = (any { lc($::dbcharset || '') eq $_ } qw(utf8 utf-8 unicode)) ? 1 : 0; + my $db_charset = $::lx_office_conf{system}->{dbcharset} || Common::DEFAULT_CHARSET; + $self->{is_utf8} = (any { lc($::lx_office_conf{system}->{dbcharset} || '') eq $_ } qw(utf8 utf-8 unicode)) ? 1 : 0; if ($self->{is_utf8}) { binmode STDOUT, ":utf8"; @@ -109,6 +109,7 @@ sub _init { $self->{iconv_english} = SL::Iconv->new('ASCII', $db_charset); $self->{iconv_iso8859} = SL::Iconv->new('ISO-8859-15', $db_charset); $self->{iconv_to_iso8859} = SL::Iconv->new($db_charset, 'ISO-8859-15'); + $self->{iconv_utf8} = SL::Iconv->new('UTF-8', $db_charset); $self->_read_special_chars_file($country); @@ -226,11 +227,24 @@ sub text { return $text; } +sub lang_to_locale { + my ($self, $requested_lang) = @_; + + my $requested_locale; + $requested_locale = 'de' if $requested_lang =~ m/^_(de|deu|ger)/i; + $requested_locale = 'en' if $requested_lang =~ m/^_(en|uk|us|gr)/i; + $requested_locale = 'fr' if $requested_lang =~ m/^_fr/i; + $requested_locale ||= 'de'; + + return $requested_locale; +} + sub findsub { $main::lxdebug->enter_sub(); my ($self, $text) = @_; my $text_rev = lc $self->{iconv_reverse}->convert($text); + $text_rev =~ s/[\s\-]+/_/g; if (!$self->{texts_reverse}) { $self->{texts_reverse} = { }; @@ -240,7 +254,7 @@ sub findsub { $original =~ s/_+/_/g; $translation = lc $translation; - $translation =~ s/\s+/_/g; + $translation =~ s/[\s\-]+/_/g; $self->{texts_reverse}->{$translation} ||= [ ]; push @{ $self->{texts_reverse}->{$translation} }, $original; @@ -338,13 +352,13 @@ sub date { } sub parse_date { - $main::lxdebug->enter_sub(); + $main::lxdebug->enter_sub(2); my ($self, $myconfig, $date, $longformat) = @_; my ($spc, $yy, $mm, $dd); unless ($date) { - $main::lxdebug->leave_sub(); + $main::lxdebug->leave_sub(2); return (); } @@ -371,7 +385,7 @@ sub parse_date { $yy = ($yy < 70) ? $yy + 2000 : $yy; $yy = ($yy >= 70 && $yy <= 99) ? $yy + 1900 : $yy; - $main::lxdebug->leave_sub(); + $main::lxdebug->leave_sub(2); return ($yy, $mm, $dd); } @@ -383,11 +397,11 @@ sub parse_date_to_object { } sub reformat_date { - $main::lxdebug->enter_sub(); + $main::lxdebug->enter_sub(2); my ($self, $myconfig, $date, $output_format, $longformat) = @_; - $main::lxdebug->leave_sub() and return "" unless ($date); + $main::lxdebug->leave_sub(2) and return "" unless ($date); my ($yy, $mm, $dd) = $self->parse_date($myconfig, $date); @@ -402,7 +416,7 @@ sub reformat_date { $output_format =~ /y+/; substr($output_format, $-[0], $+[0] - $-[0]) = $yy; - $main::lxdebug->leave_sub(); + $main::lxdebug->leave_sub(2); return $output_format; } @@ -495,4 +509,10 @@ sub restore_numberformat { $myconfig->{numberformat} = $self->{saved_numberformat} if $self->{saved_numberformat}; } +sub get_local_time_zone { + my $self = shift; + $self->{local_time_zone} ||= DateTime::TimeZone->new(name => 'local'); + return $self->{local_time_zone}; +} + 1;