my $self = shift;
my $country = shift;
- $self->{charset} = Common::DEFAULT_CHARSET;
$self->{countrycode} = $country;
if ($country && -d "locale/$country") {
eval($code);
close(IN);
}
-
- if (open IN, "<", "locale/$country/charset") {
- $self->{charset} = <IN>;
- close IN;
-
- chomp $self->{charset};
- }
}
- 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";
- binmode STDERR, ":utf8";
- }
+ binmode STDOUT, ":utf8";
+ binmode STDERR, ":utf8";
- $self->{iconv} = SL::Iconv->new($self->{charset}, $db_charset);
- $self->{iconv_reverse} = SL::Iconv->new($db_charset, $self->{charset});
- $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->{iconv} = SL::Iconv->new('UTF-8', 'UTF-8');
+ $self->{iconv_reverse} = SL::Iconv->new('UTF-8', 'UTF-8');
+ $self->{iconv_english} = SL::Iconv->new('ASCII', 'UTF-8');
+ $self->{iconv_iso8859} = SL::Iconv->new('ISO-8859-15', 'UTF-8');
+ $self->{iconv_to_iso8859} = SL::Iconv->new('UTF-8', 'ISO-8859-15');
+ $self->{iconv_utf8} = SL::Iconv->new('UTF-8', 'UTF-8');
$self->_read_special_chars_file($country);
(qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec));
}
-sub is_utf8 {
- my $self = shift;
- my $handle = shift;
- return $self->{is_utf8} && (!$handle || $handle->is_utf8);
-}
-
sub _handle_markup {
my $self = shift;
my $str = shift;
my $self = shift;
my $text = shift;
+ return $text->translated if (ref($text) || '') eq 'SL::Locale::String';
+
if ($self->{texts}->{$text}) {
$text = $self->{iconv}->convert($self->{texts}->{$text});
} else {
} elsif ($myconfig->{dateformat} eq "yyyy-mm-dd") {
# Use German syntax with the ISO date style "yyyy-mm-dd" because
- # Lx-Office is mainly used in Germany or German speaking countries.
+ # kivitendo is mainly used in Germany or German speaking countries.
if (defined $longformat && $longformat == 0) {
$mm++;
$dd = "0$dd" if ($dd < 10);
my ($self, $datetime, %params) = @_;
my $format = $::myconfig{dateformat} || 'yyyy-mm-dd';
- $format =~ s/yyyy/\%Y/;
- $format =~ s/yy/\%y/;
+ $format =~ s/yy(?:yy)?/\%Y/;
$format =~ s/mm/\%m/;
$format =~ s/dd/\%d/;
$self->{raw_io_active} = 1;
binmode $fh, ":raw";
$code->();
- binmode $fh, ":utf8" if $self->is_utf8;
+ binmode $fh, ":utf8";
$self->{raw_io_active} = 0;
}
return $self->{local_time_zone};
}
+sub language_join {
+ my ($self, $items, %params) = @_;
+
+ $items ||= [];
+ $params{conjunction} ||= $::locale->text('and');
+ my $num = scalar @{ $items };
+
+ return 0 == $num ? ''
+ : 1 == $num ? $items->[0]
+ : join(', ', @{ $items }[0..$num - 2]) . ' ' . $params{conjunction} . ' ' . $items->[$num - 1];
+}
+
1;
+
__END__
=pod
=head1 NAME
-Locale - Functions for dealing with locale-dependant information
+Locale - Functions for dealing with locale-dependent information
=head1 SYNOPSIS
TODO: Describe get_local_time_zone
-=item C<is_utf8>
-
-TODO: Describe is_utf8
-
=item C<lang_to_locale>
TODO: Describe lang_to_locale