# file KLEIDER/web/src/localization/Learnchain.pm # Zwei Übersetzer verbinden # 2015-08-03 Herbert Schiemann # GPL Version 2 oder neuer package Herbaer::Translate::Learnchain ; use parent Herbaer::Translate::Base ; use Herbaer::Translate ; use utf8; # update: "Lerner" wird aktualisiert sub new { my ($class, $lrn, $mtr, $update, $dbg) = @_; if ($dbg) { print STDERR "new Herbaer::Translate::Learnchain ($lrn, $mtr)\n"; } my $self = { "l" => new Herbaer::Translate ($lrn, $dbg), "m" => new Herbaer::Translate ($mtr, $dbg), "upd" => $update || 0, "dbg" => $dbg, }; return bless ($self, $class); } # new sub translate { my ($self, $text, $srl, $tgl) = @_ ; my $d = $self -> {"dbg"}; my $upd = $self -> {"upd"}; if ($d) { print STDERR "Herbaer::Translate::Learnchain::translate\n"; } $text || return; $srl || return; $tgl || return; $srl =~ s/-.*// ; $srl = lc ($srl); $tgl =~ s/-.*// ; $tgl = lc ($tgl); my $tt = $self -> {"l"} -> translate ($text, $srl, $tgl); if (!$tt || $upd) { my $tt2 = $self -> {"m"} -> translate ($text, $srl, $tgl); if ($tt2 && (!$tt || $tt ne $tt2) ) { print STDERR "LCHN LEARN $text\n" if $d; $self -> {"l"} -> learn ($text, $srl, $tgl, $tt2); } return $tt2; } else { print STDERR "LCHN FOUND $text\n" if $d; return $tt; } } # translate sub learn { my ($self, $text, $srl, $tgl, $tt) = @_ ; if ($self -> {"dbg"}) { print STDERR "Herbaer::Translate::Learnchain::learn $tt\n"; } $self -> {"m"} -> learn ($text, $srl, $tgl, $tt); $self -> {"l"} -> learn ($text, $srl, $tgl, $tt); } # learn # Name des Uebersetzers sub translator_name { my $self = shift; ($self -> {"upd"} ? "lu" : "lc") . "_" . $self -> {"m"} -> translator_name() . "_" . $self -> {"l"} -> translator_name(); } # translator_name sub finish { my $self = shift; if ($self -> {"dbg"}) { print STDERR "Herbaer::Translate::Learnchain::finish\n"; } $self -> {"m"} -> finish (); $self -> {"l"} -> finish (); } # finish 1; # end of file KLEIDER/web/src/localization/Learnchain.pm