Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision abbd99fd

Von Moritz Bunkus vor mehr als 16 Jahren hinzugefügt

  • ID abbd99fdbe691f0bfc84aac2e76a2296ab808d6a
  • Vorgänger eff7e112
  • Nachfolger aaf1cc99

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.

Unterschiede anzeigen:

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