Revision abbd99fd
Von Moritz Bunkus vor mehr als 16 Jahren hinzugefügt
SL/Locale.pm | ||
---|---|---|
85 | 85 |
$self->{charset} = Common::DEFAULT_CHARSET; |
86 | 86 |
} |
87 | 87 |
|
88 |
$self->_read_special_chars_file($country); |
|
89 |
|
|
90 | 88 |
my $db_charset = $main::dbcharset || Common::DEFAULT_CHARSET; |
91 | 89 |
|
92 | 90 |
$self->{iconv} = Text::Iconv->new($self->{charset}, $db_charset); |
91 |
$self->{iconv_reverse} = Text::Iconv->new($db_charset, $self->{charset}); |
|
93 | 92 |
$self->{iconv_english} = Text::Iconv->new('ASCII', $db_charset); |
94 | 93 |
$self->{iconv_iso8859} = Text::Iconv->new('ISO-8859-15', $db_charset); |
94 |
|
|
95 |
$self->_read_special_chars_file($country); |
|
95 | 96 |
} |
96 | 97 |
|
97 | 98 |
$self->{NLS_file} = $NLS_file; |
... | ... | |
166 | 167 |
} |
167 | 168 |
|
168 | 169 |
my $scmap = $self->{special_chars_map}->{$format}; |
169 |
my $order = $scmap->{order};
|
|
170 |
my $order = $self->{iconv}->convert($scmap->{order});
|
|
170 | 171 |
delete $scmap->{order}; |
171 | 172 |
|
172 | 173 |
foreach my $key (keys %{ $scmap }) { |
173 |
$scmap->{$key} = $self->_handle_markup($scmap->{$key});
|
|
174 |
$scmap->{$key} = $self->_handle_markup($self->{iconv}->convert($scmap->{$key}));
|
|
174 | 175 |
|
175 |
my $new_key = $self->_handle_markup($key);
|
|
176 |
my $new_key = $self->_handle_markup($self->{iconv}->convert($key));
|
|
176 | 177 |
|
177 | 178 |
if ($key ne $new_key) { |
178 | 179 |
$scmap->{$new_key} = $scmap->{$key}; |
... | ... | |
208 | 209 |
$main::lxdebug->enter_sub(); |
209 | 210 |
|
210 | 211 |
my ($self, $text) = @_; |
212 |
my $text_rev = $self->{iconv_reverse}->convert($text); |
|
211 | 213 |
|
212 |
if (exists $self->{subs}{$text}) { |
|
213 |
$text = $self->{subs}{$text}; |
|
214 |
} else { |
|
215 |
if ($self->{countrycode} && $self->{NLS_file}) { |
|
216 |
Form->error( |
|
217 |
"$text not defined in locale/$self->{countrycode}/$self->{NLS_file}"); |
|
218 |
} |
|
214 |
if (exists $self->{subs}{$text_rev}) { |
|
215 |
$text = $self->{subs}{$text_rev}; |
|
216 |
} elsif ($self->{countrycode} && $self->{NLS_file}) { |
|
217 |
Form->error("$text not defined in locale/$self->{countrycode}/$self->{NLS_file}"); |
|
219 | 218 |
} |
220 | 219 |
|
221 | 220 |
$main::lxdebug->leave_sub(); |
Auch abrufbar als: Unified diff
Fixes für die Situation, in der $dbcharset anders ist als das Charset der für den Benutzer ausgewählten Sprache: Die Datei "special_chars" in das $dbcharset konvertiert werden. Beim umgekehrten Auflösen der durch Button-Drücke ausgelösten Aktionen in Funktionsnamen muss von $dbcharset, das vom Browser kommt, in das Charset der vom Benutzer ausgewählten Sprache konvertiert werden, damit die Auflösung funktioniert.