Acme-eng2kor
view release on metacpan or search on metacpan
lib/Acme/eng2kor.pm view on Meta::CPAN
has 'text' => (
is => 'rw',
isa => 'Str'
);
has 'translated' => (
is => 'rw',
isa => 'Str'
);
sub translate {
my ($self, $word) = @_;
map { s/^\s+//; s/\s+$// } $word if defined $word;
return $self->_google_translate($word);
}
sub _google_translate {
my ($self, $word) = @_;
$self->text($word) if defined $word;
my $text = uri_escape_utf8($self->text);
my $escaped_uri = sprintf($GOOGLE_TRANSLATE_API_URL, $text, $self->src . '|' . $self->dst);
my $json = $self->get_json($escaped_uri);
$self->translated($json->{responseData}{translatedText});
return $json;
}
sub get_json {
my ($self, $url) = @_;
my $req = HTTP::Request->new( GET => $url );
my $ua = LWP::UserAgent->new;
my $res = $ua->request($req);
die $res->status_line, "\n" unless $res->is_success;
return decode_json($res->content);
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=pod
=encoding utf-8
=head1 NAME
Acme::eng2kor - English to Korean Translator
=head1 VERSION
version v0.0.2
=head1 SYNOPSIS
use utf8;
use Acme::eng2kor;
binmode STDOUT, ':encoding(UTF-8)';
my $app = Acme::eng2kor->new;
$app->translate('hello');
print $app->text, "\n"; # hello
print $app->translated, "\n"; # ìë
íì¸ì
=head1 DESCRIPTION
Yet Another Translator
=head1 METHODS
=head2 translate
Internal interface
=head2 _google_translate
Used google translate api
=head2 get_json
Return decoded json text after HTTP IO.
=head1 SUPPORT LANGUAGES
Google translate available language list is below.
ach: Luo
af: Afrikaans
ak: Akan
am: Amharic
ar: Arabic
az: Azerbaijani
be: Belarusian
bem: Bemba
bg: Bulgarian
bh: Bihari
bn: Bengali
br: Breton
bs: Bosnian
ca: Catalan
co: Corsican
cs: Czech
cy: Welsh
da: Danish
de: German
el: Greek
en: English
eo: Esperanto
es: Spanish
et: Estonian
eu: Basque
fa: Persian
fi: Finnish
fo: Faroese
fr: French
fy: Frisian
ga: Irish
gd: Scots Gaelic
gl: Galician
( run in 0.802 second using v1.01-cache-2.11-cpan-98e64b0badf )