X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/51c64daf815a9b58dbe35f8d3a9daf3f08c0d1e5..38e08b2f3ae7b386eb22f2475077cf1c3a1711a7:/SL/Locale.pm diff --git a/SL/Locale.pm b/SL/Locale.pm index c45a1a1f1..7c524e984 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"; @@ -227,6 +227,18 @@ 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(); @@ -340,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 (); } @@ -373,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); } @@ -384,12 +396,34 @@ sub parse_date_to_object { return $yy && $mm && $dd ? DateTime->new(year => $yy, month => $mm, day => $dd) : undef; } +sub format_date_object { + my ($self, $datetime, %params) = @_; + + my $format = $::myconfig{dateformat} || 'yyyy-mm-dd'; + $format =~ s/yyyy/\%Y/; + $format =~ s/yy/\%y/; + $format =~ s/mm/\%m/; + $format =~ s/dd/\%d/; + + my $precision = $params{precision} || 'day'; + $precision =~ s/s$//; + my %precision_spec_map = ( + second => '%H:%M:%S', + minute => '%H:%M', + hour => '%H', + ); + + $format .= ' ' . $precision_spec_map{$precision} if $precision_spec_map{$precision}; + + return $datetime->strftime($format); +} + 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); @@ -404,7 +438,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; } @@ -504,3 +538,140 @@ sub get_local_time_zone { } 1; +__END__ + +=pod + +=encoding utf8 + +=head1 NAME + +Locale - Functions for dealing with locale-dependant information + +=head1 SYNOPSIS + + use Locale; + use DateTime; + + my $locale = Locale->new('de'); + my $now = DateTime->now_local; + print "Current date and time: ", $::locale->format_date_object($now, precision => 'second'), "\n"; + +=head1 OVERVIEW + +TODO: write overview + +=head1 FUNCTIONS + +=over 4 + +=item C + +TODO: Describe date + +=item C + +TODO: Describe findsub + +=item C + +TODO: Describe format_date + +=item C + +Formats the C<$datetime> object accoring to the user's locale setting. + +The parameter C can control whether or not the time +component is formatted as well: + +=over 4 + +=item * C + +Only format the year, month and day. This is also the default. + +=item * C + +Add the hour to the date. + +=item * C + +Add hour:minute to the date. + +=item * C + +Add hour:minute:second to the date. + +=back + +=item C + +TODO: Describe get_local_time_zone + +=item C + +TODO: Describe is_utf8 + +=item C + +TODO: Describe lang_to_locale + +=item C + +TODO: Describe new + +=item C + +TODO: Describe parse_date + +=item C + +TODO: Describe parse_date_to_object + +=item C + +TODO: Describe quote_special_chars + +=item C + +TODO: Describe raw_io_active + +=item C + +TODO: Describe reformat_date + +=item C + +TODO: Describe remap_special_chars + +=item C + +TODO: Describe restore_numberformat + +=item C + +TODO: Describe set_numberformat_wo_thousands_separator + +=item C + +TODO: Describe text + +=item C + +TODO: Describe unquote_special_chars + +=item C + +TODO: Describe with_raw_io + +=back + +=head1 BUGS + +Nothing here yet. + +=head1 AUTHOR + +Moritz Bunkus Em.bunkus@linet-services.deE + +=cut