<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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#list">list(q, target, model=None, format=None, source=None, cid=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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="list">list(q, target, model=None, format=None, source=None, cid=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)
  model: string, The `model` type requested for this translation. Valid values are
listed in public documentation.
  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
  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)
  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;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.
        &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.
      },
    ],
  }</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;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;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;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;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.
        &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.
      },
    ],
  }</pre>
</div>

</body></html>