# file KLEIDER/web/src/localization/SystemItemFilter.pm # URIs und Dateipfade herausfiltern # 2015-08-14 Herbert Schiemann # GPL Version 2 oder neuer package Herbaer::Translate::SystemItemFilter ; use parent Herbaer::Translate::Base ; use Herbaer::Translate ; use utf8; BEGIN { binmode (STDERR, ":utf8"); } sub new { my ($class, $trname, $debug) = @_; my $self = { "dbg" => $debug, "trname" => $trname, "trans" => undef, } ; return bless ($self, $class); } # new # lädt den Übersetzer sub _translator { my $self = shift; my $trans = $self -> {"trans"}; if (! $trans) { $trans = new Herbaer::Translate ($self -> {"trname"}); if (! $trans) { print STDERR "Kann Übersetzer \"", $self -> {"trname"}, "\" nicht laden.\n" if $self -> {"dbg"}; return undef; } $self -> {"trans"} = $trans; } return $trans; } sub translate { my ($self, $text, $srl, $tgl) = @_ ; my $debug = $self -> {"dbg"}; if ($debug) { print STDERR "Herbaer::Translate::SystemItemFilter::translate\n"; } # Web-Adressen und Dateinamen werden nicht übersetzt if ($text =~ /^\S*$/) { return $text if $text =~ /^(?:http:|https:|ftp:|mailto:)/ # Web-Adresse || $text =~ /\.[a-z]{2,5}$/ # Dateiname mit Suffix || $text =~ /^\.*(?:::)?(?:[A-Za-z]+::)+[A-Za-z]+$/ # Perl-Modul || $text =~ /^[^@]{3,}@[^.@]{3,}\.[^@]{3,}$/ # E-Mail-Adresse || $text =~ /^.$/ # einzelnes Zeichen ; return $text if $text =~ /^[a-z0-9A-Z_.\/]+$/ # Dateipfade && $text =~ /\// ; } my $trans = $self -> _translator (); return $trans -> translate ($text, $srl, $tgl) if $trans; } # translate sub learn { my ($self, $text, $srl, $tgl, $tt) = @_ ; my $debug = $self -> {"dbg"}; if ($debug) { print STDERR "Herbaer::Translate::SystemItemFilter::learn\n"; } my $trans = $self -> _translator (); $learn -> learn ($text, $srl, $tgl, $tt) if $trans; } # learn # speichert die gelernten Daten sub finish { my $self = shift; my $debug = $self -> {"dbg"}; if ($debug) { print STDERR "Herbaer::Translate::SystemItemFilter::finish\n"; } my $trans = $self -> {"trans"}; $trans -> finish () if $trans; } # finish # Name des zuletzt aktiven Uebersetzers sub translator_name { my $self = shift; my $debug = $self -> {"dbg"}; if ($debug) { print STDERR "Herbaer::Translate::SystemItemFilter::translator_name\n"; } my $trans = $self -> {"trans"}; if ($trans) { return "sif_" . $trans -> translator_name (); } else { return "sif_error"; } } # translator_name 1; # file KLEIDER/web/src/localization/SystemItemFilter.pm