#!/usr/bin/perl # babelfish - simple client to Babelfish language translation services # Jeffrey S. Haemer, jsh@usenix.org, Oct 99 # adapted by Steve Kinzler, kinzler@cs.indiana.edu, Apr 09 # http://www.cs.indiana.edu/~kinzler/home.html#other use strict; ##e WWW::Babelfish; use Lingua::Translate; # apparent successor to broken WWW::Babelfish --kinzler Lingua::Translate::config(src_enc => 'ISO-8859-1', dest_enc => 'ISO-8859-1'); use Getopt::Std; my $options = "[-i input_language | -o output_language] [filename ...]"; my $usage = "usage: $0 $options"; sub get_langs { use vars qw($opt_o $opt_i); getopts "i:o:" or die $usage; die $usage if ($opt_o && $opt_i); my $dflt = 'en'; #'English'; my ($in, $out) = ($opt_i || $dflt, $opt_o || $dflt); $in = 'en' if $in eq 'English'; $out = 'en' if $out eq 'English'; $in = 'es' if $in eq 'Spanish'; $out = 'es' if $out eq 'Spanish'; ($in, $out); } my ($in, $out) = get_langs; #y $obj = new WWW::Babelfish( 'agent' => 'Mozilla/8.0' ); my $obj = new Lingua::Translate(src => $in, dest => $out); die "Babelfish server unavailable ($in -> $out)\n" unless defined $obj; #my @languages = $obj->languages; #die "source language $in must be in @languages\n" # unless grep /$in/, @languages; #die "destination language $out must be in @languages\n" # unless grep /$out/, @languages; $/ = undef; #y $translation = $obj->translate(source=>$in, destination=>$out, text=><>); my $translation = $obj->translate(<>); $translation =~ s/"/"/gs; #die "Could not translate: " . $obj->error unless defined $translation; print $translation, "\n"; =head1 NAME babelfish - Simple Babelfish client =head1 SYNOPSIS babelfish [-i input_langauge | -o output_language] [files] =head1 DESCRIPTION =over 2 B uses babelfish to translate from one language to another. Default language for each is English. =back =head1 OPTIONS AND ARGUMENTS =over 8 =item I<-i> input language =item I<-o> output language =item I files to translate (default: stdin) =back =head1 ORIGINAL AUTHOR Jeffrey S. Haemer =head1 SEE ALSO perl(1) WWW::Babelfish(3) Lingua::Translate(3) =cut