- my ($phrase, $languagepair, $req, $ua) = @_;
-
- my $urltext = URI::Escape::uri_escape($phrase);
- $req->content("urltext=$urltext&lp=$languagepair&doit=done");
-
- my $res = $ua->request($req);
-
- my $translated;
- if ($res->is_success) { # success.
- my $html = $res->content;
- my $textarea = 0;
- foreach (split "\n", $html) {
- $textarea = 1 if (/<textarea/i);
- next unless ($textarea);
-
- &::DEBUG(" '$_'");
-
- $textarea = 0 if (/<\/textarea/i);
- }
-
- $html =~ s/\cM//g;
- $html =~ s/\n\s*\n/\n/g;
- $html =~ s/\n/ /g; # ...
-
- if ($html =~ /<textarea.*?>(.*?)<\/textarea/si) {
- $translated = $1;
- $translated =~ s/^[\n ]|[\n ]$//g;
- } else {
- &::WARN("failed regex for babelfish.");
- }
+ return '' if $no_babel;
+ my ($phrase, $languagepair, $req, $ua) = @_;
+ #&main::DEBUG("translate($phrase, $languagepair, $req, $ua)");
+
+ my $urltext = uri_escape($phrase);
+ $req->content("urltext=$urltext&lp=$languagepair");
+ #&main::DEBUG("http://babelfish.altavista.com/raging/translate.dyn??urltext=$urltext&lp=$languagepair");
+
+ my $res = $ua->request($req);
+ my $translated;
+
+ if ($res->is_success) {
+ my $html = $res->content;
+ # This method subject to change with the whims of Altavista's design
+ # staff.
+ $html =~ s/\s+/ /sg;
+ #&main::DEBUG("$html\n===============\n");
+ # look for the first :< which should be the "To English:<", etc.
+ # strip any trailing tags, grab text that follows up to the next tag.
+ #my ($translated) = ($html =~ m{:\s*(<[^>]*>\s*)+([^<]*)}sx);
+ ($translated) = $html;
+ #(undef, $translated) = ($html =~ m{(:\s+(<[^>]*>\s*)+)([^<\s]*)<}sx);
+
+ # Tim@Rikers.org get's frustrated and splits this into steps:
+ # 1) remove everything up to the first ':' in the text
+ $translated =~ s/.*?:\s*</</s;
+ # 2) remove any <attributes> till the first text
+ $translated =~ s/(<[^>]*>\s*)*//s;
+ # 3) remove the first trailing <attribute> and everything after it
+ $translated =~ s/<.*//s;
+
+ # look for contents of first textarea - not anymore cause > 40 char does not get one.
+ #my ($translated) = ($html =~ m{<textarea[^>]*>+([^<]*)}sx);
+ #&main::DEBUG("\"$translated\"\n===============\n");
+# ($html =~ m{<textarea[^>]*>
+# \s*
+# ([^<]*)
+# }sx);
+# ($html =~ m{<br>
+# \s+
+# <font\ face="arial,\ helvetica">
+# \s*
+# (?:\*\*\s+time\ out\s+\*\*)?
+# \s*
+# ([^<]*)
+# }sx);
+ $translated =~ s/\n/ /g;
+ $translated =~ s/\s*$//;
+ # need a way to do unicode->iso
+ } else {
+ $translated = ":("; # failure
+ }
+ &main::pSReply($translated);
+}