# file KLEIDER/web/src/localization/Normalizer.pm # Platzhalter durch Platzhalter in Normalform ersetzen # 2015-09-28 Herbert Schiemann # GPL Version 2 oder neuer package Herbaer::Translate::Normalizer ; use parent Herbaer::Translate::Base ; use utf8; sub new { my ($class , $trname , $debug ) = @_; $debug ||= 0; if ($debug) { print STDERR "Herbaer::Translate::Normalizer::new\n"; } my $self = { "t" => new Herbaer::Translate ($trname), "dbg" => $debug, }; return bless ($self, $class); } # new sub translate { my ($self, $text, $srl, $tgl) = @_ ; my $debug = $self -> {"dbg"}; if ($debug) { print STDERR "Herbaer::Translate::Normalizer::translate\n"; } # Parameter prüfen $text || return; $srl || return; $tgl || return; $srl =~ s/-.*// ; $srl = lc ($srl); $tgl =~ s/-.*// ; $tgl = lc ($tgl); my $subs = {}; my $bsbs = {}; my $num = 0; my $k; my $s; my $repl = sub { $k = shift; if (! ($s = $subs -> {$k}) ) { $s = "WX" . ++$num . "XW"; $subs -> {$k} = $s; $bsbs -> {$s} = $k; } $s; }; print STDERR "NORM IN:$text\n" if $debug; # XKe315KX $text =~ s/(XK[a-z0-9]+KX)/$repl -> ($1)/ge; print STDERR "NORM MOD:$text\n" if $debug; my $tt = $self -> {"t"} -> translate ($text, $srl, $tgl); if ($tt) { print STDERR "NORM TRT:$tt\n" if $debug; while ( ($k, $s) = each %$bsbs ) { $tt =~ s/$k/$s/ge ; } print STDERR "NORM OUT:$tt\n" if $debug; } $tt; } # translate sub learn { my ($self, $text, $srl, $tgl, $tt) = @_ ; if ($self -> {"dbg"}) { print STDERR "Herbaer::Translate::Normalizer::learn\n" } $self -> {"t"} -> learn ($text, $srl, $tgl, $tt); } # learn # Name des Uebersetzers sub translator_name { my $self = shift; "norm_" . $self -> {"t"} -> translator_name () ; } # translator_name sub finish { my $self = shift; if ($self -> {"dbg"}) { print STDERR "Herbaer::Translate::Normalizer::finish\n"; } $self -> {"t"} -> finish (); } # finish 1; # end of file KLEIDER/web/src/localization/Normalizer.pm