NAME
    WebService::Async::Google::TranslateV1_0 - Subclass of WebService::Async
    that has a simple interface to Google Translate Service.

SYNOPSIS
  Simple usage
   SOURCE
      use WebService::Async::Google::TranslateV1_0;
      my $translator = WebService::Async::Google::TranslateV1_0->new;
      $translator->source_language('en');
      $translator->set_destination_languages(qw(it fr));
      $translator->set_message( message1 => 'apple' );
      $translator->set_message( message2 => 'banana' );
      $translator->set_message( message3 => 'orange' );
      $translator->translate(
          on_each_translation => sub {
              my ($self, $id, $res) = @_;
              print $res;
          },
          on_translation_complete => sub {
              my ($self, $all_res) = @_;
              print $all_res;
          },
      );

   RESULTS
      <?xml version="1.0" encoding="UTF-8"?>
      <result id="message3">
          <translated lang="it">arancione</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result id="message1">
          <translated lang="fr">Apple</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result id="message2">
          <translated lang="fr">la banane</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result id="message2">
          <translated lang="it">banana</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result id="message3">
          <translated lang="fr">orange</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result id="message1">
          <translated lang="it">mela</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <results>
          <result id="message2">
              <translated lang="it">banana</translated>
              <translated lang="fr">la banane</translated>
          </result>
          <result id="message3">
              <translated lang="it">arancione</translated>
              <translated lang="fr">orange</translated>
          </result>
          <result id="message1">
              <translated lang="it">mela</translated>
              <translated lang="fr">Apple</translated>
          </result>
      </results>

  Using custom templates
   SOURCE
      use WebService::Async::Google::TranslateV1_0;
      my $translator = WebService::Async::Google::TranslateV1_0->new;

      $translator->single_template(get_data_section('single'));
      $translator->whole_template(get_data_section('whole'));
      $translator->critical_error_template(get_data_section('critical_error'));

      $translator->source_language('en');
      $translator->set_destination_languages(qw(it fr));
      $translator->set_message( message1 => 'apple' );
      $translator->set_message( message2 => 'banana' );
      $translator->set_message( message3 => 'orange' );
      $translator->translate(
          on_each_translation => sub {
              my ($self, $id, $res) = @_;
              print $res;
          },
          on_translation_complete => sub {
              my ($self, $all_res) = @_;
              print $all_res;
          },
      );

      __DATA__  
      @@ single
      ?= Text::MicroTemplate::encoded_string '<?xml version="1.0" encoding="UTF-8"?>'
      ? my ($id, $lang, $message) = @_
      <result key="<?= $id ?>">
          <translated lang="<?= $lang ?>"><?= $message ?></translated>
      </result>
      ?= "\0"
  
      @@ whole
      ?= Text::MicroTemplate::encoded_string '<?xml version="1.0" encoding="UTF-8"?>'
      ? my ($self, $messages) = @_;
      <results>
      ? for my $key ($self->all_messages_ids) {
          <result key="<?= $key ?>">
      ?   for my $lang ($self->all_destination_languages) {
      ?       my $text = $self->get_translated_message(id => $key, language => $lang);
              <translated lang="<?= $lang ?>"><?= $text ?></translated>
      ?   }
          </result>
      ? }
      </results>
      ?= "\0"

      @@ critical_error
      CRITICAL ERROR

   RESULTS
      <?xml version="1.0" encoding="UTF-8"?>
      <result key="message3">
          <translated lang="it">arancione</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result key="message1">
          <translated lang="fr">Apple</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result key="message2">
          <translated lang="fr">la banane</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result key="message2">
          <translated lang="it">banana</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result key="message3">
          <translated lang="fr">orange</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <result key="message1">
          <translated lang="it">mela</translated>
      </result>
  
      <?xml version="1.0" encoding="UTF-8"?>
      <results>
          <result key="message2">
              <translated lang="it">banana</translated>
              <translated lang="fr">la banane</translated>
          </result>
          <result key="message3">
              <translated lang="it">arancione</translated>
              <translated lang="fr">orange</translated>
          </result>
          <result key="message1">
              <translated lang="it">mela</translated>
              <translated lang="fr">Apple</translated>
          </result>
      </results>

DESCRIPTION
    WebService::Async::Google::TranslateV1_0 is subclass of
    WebService::Async that has a simple interface to Google Translate
    Service.

METHODS
  source_language
    Sets the source language.

      $translator->source_language('en');

  set_destination_languages
    Sets destination languages.

      $translator->set_destination_languages(qw(it fr));

  set_message
    Sets messages that you want to translate.

      $translator->set_message( message1 => 'apple' );

  translate
      $translator->translate(
          on_each_translation => sub {
              my ($self, $id, $res) = @_;
          },
          on_translation_complete => sub {
              my ($self, $all_res) = @_;
          },
      );

AUTHOR
    keroyon <keroyon@cpan.org>

SEE ALSO
    WebService::Async

LICENSE
    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

