<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="translate_v2.html">Google Cloud Translation API</a> . <a href="translate_v2.translations.html">translations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(q, target, source=None, cid=None, format=None, model=None, x__xgafv=None)</a></code></p>
<p class="firstline">Translates input text, returning translated text.</p>
<p class="toc_element">
  <code><a href="#translate">translate(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Translates input text, returning translated text.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(q, target, source=None, cid=None, format=None, model=None, x__xgafv=None)</code>
  <pre>Translates input text, returning translated text.

Args:
  q: string, The input text to translate. Repeat this parameter to perform translation
operations on multiple text inputs. (required) (repeated)
  target: string, The language to use for translation of the input text, set to one of the
language codes listed in Language Support. (required)
  source: string, The language of the source text, set to one of the language codes listed in
Language Support. If the source language is not specified, the API will
attempt to identify the source language automatically and return it within
the response.
  cid: string, The customization id for translate (repeated)
  format: string, The format of the source text, in either HTML (default) or plain-text. A
value of &quot;html&quot; indicates HTML and a value of &quot;text&quot; indicates plain-text.
    Allowed values
      html - Specifies the input is in HTML
      text - Specifies the input is in plain textual format
  model: string, The `model` type requested for this translation. Valid values are
listed in public documentation.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The main language translation response message.
    &quot;translations&quot;: [ # Translations contains list of translation results of given text
      {
        &quot;translatedText&quot;: &quot;A String&quot;, # Text translated into the target language.
        &quot;detectedSourceLanguage&quot;: &quot;A String&quot;, # The source language of the initial request, detected automatically, if
            # no source language was passed within the initial request. If the
            # source language was passed, auto-detection of the language will not
            # occur and this field will be empty.
        &quot;model&quot;: &quot;A String&quot;, # The `model` type used for this translation. Valid values are
            # listed in public documentation. Can be different from requested `model`.
            # Present only if specific model type was explicitly requested.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="translate">translate(body=None, x__xgafv=None)</code>
  <pre>Translates input text, returning translated text.

Args:
  body: object, The request body.
    The object takes the form of:

{ # The main translation request message for the Cloud Translation API.
    &quot;target&quot;: &quot;A String&quot;, # The language to use for translation of the input text, set to one of the
        # language codes listed in Language Support.
    &quot;q&quot;: [ # The input text to translate. Repeat this parameter to perform translation
        # operations on multiple text inputs.
      &quot;A String&quot;,
    ],
    &quot;format&quot;: &quot;A String&quot;, # The format of the source text, in either HTML (default) or plain-text. A
        # value of &quot;html&quot; indicates HTML and a value of &quot;text&quot; indicates plain-text.
    &quot;source&quot;: &quot;A String&quot;, # The language of the source text, set to one of the language codes listed in
        # Language Support. If the source language is not specified, the API will
        # attempt to identify the source language automatically and return it within
        # the response.
    &quot;model&quot;: &quot;A String&quot;, # The `model` type requested for this translation. Valid values are
        # listed in public documentation.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The main language translation response message.
    &quot;translations&quot;: [ # Translations contains list of translation results of given text
      {
        &quot;translatedText&quot;: &quot;A String&quot;, # Text translated into the target language.
        &quot;detectedSourceLanguage&quot;: &quot;A String&quot;, # The source language of the initial request, detected automatically, if
            # no source language was passed within the initial request. If the
            # source language was passed, auto-detection of the language will not
            # occur and this field will be empty.
        &quot;model&quot;: &quot;A String&quot;, # The `model` type used for this translation. Valid values are
            # listed in public documentation. Can be different from requested `model`.
            # Present only if specific model type was explicitly requested.
      },
    ],
  }</pre>
</div>

</body></html>