<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, x__xgafv=None, source=None, format=None, cid=None, model=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, x__xgafv=None, source=None, format=None, cid=None, model=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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error 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.
  format: string, The format of the source text, in either HTML (default) or plain-text. A
value of "html" indicates HTML and a value of "text" indicates plain-text.
    Allowed values
      html - Specifies the input is in HTML
      text - Specifies the input is in plain textual format
  cid: string, The customization id for translate (repeated)
  model: string, The `model` type requested for this translation. Valid values are
listed in public documentation.

Returns:
  An object of the form:

    { # The main language translation response message.
    "translations": [ # Translations contains list of translation results of given text
      {
        "detectedSourceLanguage": "A String", # 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.
        "model": "A String", # 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.
        "translatedText": "A String", # Text translated into the target language.
      },
    ],
  }</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.
    "q": [ # The input text to translate. Repeat this parameter to perform translation
        # operations on multiple text inputs.
      "A String",
    ],
    "source": "A 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.
    "model": "A String", # The `model` type requested for this translation. Valid values are
        # listed in public documentation.
    "target": "A String", # The language to use for translation of the input text, set to one of the
        # language codes listed in Language Support.
    "format": "A String", # The format of the source text, in either HTML (default) or plain-text. A
        # value of "html" indicates HTML and a value of "text" indicates plain-text.
  }

  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.
    "translations": [ # Translations contains list of translation results of given text
      {
        "detectedSourceLanguage": "A String", # 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.
        "model": "A String", # 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.
        "translatedText": "A String", # Text translated into the target language.
      },
    ],
  }</pre>
</div>

</body></html>