= AWS Translate Component
:doctitle: AWS Translate
:shortname: aws2-translate
:artifactid: camel-aws2-translate
:description: Translate texts using AWS Translate and AWS SDK version 2.x.
:since: 3.1
:supportlevel: Stable
:component-header: Only producer is supported
//Manually maintained attributes
:group: AWS
:camel-spring-boot-name: aws2-translate

*Since Camel {since}*

*{component-header}*

The AWS2 Translate component supports translate a text in multiple languages.
https://aws.amazon.com/translate/[AWS Translate] clusters instances.

Prerequisites

You must have a valid Amazon Web Services developer account, and be
signed up to use Amazon Translate. More information is available at
https://aws.amazon.com/translate/[Amazon Translate].

== URI Format

-------------------------
aws2-translate://label[?options]
-------------------------

You can append query options to the URI in the following format,
?options=value&option2=value&...


// component-configure options: START

// component-configure options: END

// component options: START
include::partial$component-configure-options.adoc[]
include::partial$component-endpoint-options.adoc[]
// component options: END

// endpoint options: START

// endpoint options: END


Required Translate component options

You have to provide the amazonTranslateClient in the
Registry or your accessKey and secretKey to access
the https://aws.amazon.com/translate/[Amazon Translate] service.

== Usage

=== Static credentials vs Default Credential Provider

You have the possibility of avoiding the usage of explicit static credentials, by specifying the useDefaultCredentialsProvider option and set it to true.

 - Java system properties - aws.accessKeyId and aws.secretKey
 - Environment variables - AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.
 - Web Identity Token from AWS STS.
 - The shared credentials and config files.
 - Amazon ECS container credentials - loaded from the Amazon ECS if the environment variable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI is set.
 - Amazon EC2 Instance profile credentials.

// component headers: START
include::partial$component-endpoint-headers.adoc[]
// component headers: END

=== Translate Producer operations

Camel-AWS Translate component provides the following operation on the producer side:

- translateText

== Translate Text example

[source,java]
------------------------------------------------------------------------------------------------------
from("direct:start")
  .setHeader(TranslateConstants.SOURCE_LANGUAGE, TranslateLanguageEnum.ITALIAN)
  .setHeader(TranslateConstants.TARGET_LANGUAGE, TranslateLanguageEnum.GERMAN)
  .setBody("Ciao")
  .to("aws2-translate://test?translateClient=#amazonTranslateClient&operation=translateText");
------------------------------------------------------------------------------------------------------

As result you'll get an exchange containing the translated text.

== Using a POJO as body

Sometimes build an AWS Request can be complex, because of multiple options. We introduce the possibility to use a POJO as body.
In AWS Translate the only operation available is TranslateText so you can do something like:

[source,java]
------------------------------------------------------------------------------------------------------
from("direct:start")
  .setBody(TranslateTextRequest.builder().sourceLanguageCode(Translate2LanguageEnum.ITALIAN.toString())
                    .targetLanguageCode(Translate2LanguageEnum.GERMAN.toString()).text("Ciao").build())
  .to("aws2-translate://test?translateClient=#amazonTranslateClient&operation=translateText&pojoRequest=true");
------------------------------------------------------------------------------------------------------

In this way you'll pass the request directly without the need of passing headers and options specifically related to this operation.

== Dependencies

Maven users will need to add the following dependency to their pom.xml.

*pom.xml*

[source,xml]
---------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws2-translate</artifactId>
    <version>${camel-version}</version>
</dependency>
---------------------------------------

where `$\{camel-version}` must be replaced by the actual version of Camel.


include::spring-boot:partial$starter.adoc[]
