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 )