<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_v3.html">Cloud Translation API</a> . <a href="translate_v3.projects.html">projects</a> . <a href="translate_v3.projects.locations.html">locations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="translate_v3.projects.locations.glossaries.html">glossaries()</a></code>
</p>
<p class="firstline">Returns the glossaries Resource.</p>

<p class="toc_element">
  <code><a href="translate_v3.projects.locations.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="#batchTranslateText">batchTranslateText(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Translates a large volume of text in asynchronous batch mode. This function provides real-time output as the inputs are being processed. If caller cancels a request, the partial results (for an input file, it's all or nothing) may still be available on the specified output location. This call returns immediately and you can use google.longrunning.Operation.name to poll the status of the call.</p>
<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="#detectLanguage">detectLanguage(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Detects the language of text within a request.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets information about a location.</p>
<p class="toc_element">
  <code><a href="#getSupportedLanguages">getSupportedLanguages(parent, displayLanguageCode=None, model=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list of supported languages for translation.</p>
<p class="toc_element">
  <code><a href="#list">list(name, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists information about the supported locations for this service.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#translateText">translateText(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Translates input text and returns translated text.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchTranslateText">batchTranslateText(parent, body=None, x__xgafv=None)</code>
  <pre>Translates a large volume of text in asynchronous batch mode. This function provides real-time output as the inputs are being processed. If caller cancels a request, the partial results (for an input file, it&#x27;s all or nothing) may still be available on the specified output location. This call returns immediately and you can use google.longrunning.Operation.name to poll the status of the call.

Args:
  parent: string, Required. Location to make a call. Must refer to a caller&#x27;s project. Format: `projects/{project-number-or-id}/locations/{location-id}`. The `global` location is not supported for batch translation. Only AutoML Translation models or glossaries within the same region (have the same location-id) can be used, otherwise an INVALID_ARGUMENT (400) error is returned. (required)
  body: object, The request body.
    The object takes the form of:

{ # The batch translation request.
  &quot;glossaries&quot;: { # Optional. Glossaries to be applied for translation. It&#x27;s keyed by target language code.
    &quot;a_key&quot;: { # Configures which glossary should be used for a specific target language, and defines options for applying that glossary.
      &quot;glossary&quot;: &quot;A String&quot;, # Required. The `glossary` to be applied for this translation. The format depends on glossary: - User provided custom glossary: `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`
      &quot;ignoreCase&quot;: True or False, # Optional. Indicates match is case-insensitive. Default value is false if missing.
    },
  },
  &quot;inputConfigs&quot;: [ # Required. Input configurations. The total number of files matched should be &lt;= 100. The total content size should be &lt;= 100M Unicode codepoints. The files must use UTF-8 encoding.
    { # Input configuration for BatchTranslateText request.
      &quot;gcsSource&quot;: { # The Google Cloud Storage location for the input content. # Required. Google Cloud Storage location for the source input. This can be a single file (for example, `gs://translation-test/input.tsv`) or a wildcard (for example, `gs://translation-test/*`). If a file extension is `.tsv`, it can contain either one or two columns. The first column (optional) is the id of the text request. If the first column is missing, we use the row number (0-based) from the input file as the ID in the output file. The second column is the actual text to be translated. We recommend each row be &lt;= 10K Unicode codepoints, otherwise an error might be returned. Note that the input tsv must be RFC 4180 compliant. You could use https://github.com/Clever/csvlint to check potential formatting errors in your tsv file. csvlint --delimiter=&#x27;\t&#x27; your_input_file.tsv The other supported file extensions are `.txt` or `.html`, which is treated as a single large chunk of text.
        &quot;inputUri&quot;: &quot;A String&quot;, # Required. Source data URI. For example, `gs://my_bucket/my_object`.
      },
      &quot;mimeType&quot;: &quot;A String&quot;, # Optional. Can be &quot;text/plain&quot; or &quot;text/html&quot;. For `.tsv`, &quot;text/html&quot; is used if mime_type is missing. For `.html`, this field must be &quot;text/html&quot; or empty. For `.txt`, this field must be &quot;text/plain&quot; or empty.
    },
  ],
  &quot;labels&quot;: { # Optional. The labels with user-defined metadata for the request. Label keys and values can be no longer than 63 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter. See https://cloud.google.com/translate/docs/advanced/labels for more information.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;models&quot;: { # Optional. The models to use for translation. Map&#x27;s key is target language code. Map&#x27;s value is model name. Value can be a built-in general model, or an AutoML Translation model. The value format depends on model type: - AutoML Translation models: `projects/{project-number-or-id}/locations/{location-id}/models/{model-id}` - General (built-in) models: `projects/{project-number-or-id}/locations/{location-id}/models/general/nmt`, `projects/{project-number-or-id}/locations/{location-id}/models/general/base` If the map is empty or a specific model is not requested for a language pair, then default google model (nmt) is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;outputConfig&quot;: { # Output configuration for BatchTranslateText request. # Required. Output configuration. If 2 input configs match to the same file (that is, same input path), we don&#x27;t generate output for duplicate inputs.
    &quot;gcsDestination&quot;: { # The Google Cloud Storage location for the output content. # Google Cloud Storage destination for output content. For every single input file (for example, gs://a/b/c.[extension]), we generate at most 2 * n output files. (n is the # of target_language_codes in the BatchTranslateTextRequest). Output files (tsv) generated are compliant with RFC 4180 except that record delimiters are &#x27;\n&#x27; instead of &#x27;\r\n&#x27;. We don&#x27;t provide any way to change record delimiters. While the input files are being processed, we write/update an index file &#x27;index.csv&#x27; under &#x27;output_uri_prefix&#x27; (for example, gs://translation-test/index.csv) The index file is generated/updated as new files are being translated. The format is: input_file,target_language_code,translations_file,errors_file, glossary_translations_file,glossary_errors_file input_file is one file we matched using gcs_source.input_uri. target_language_code is provided in the request. translations_file contains the translations. (details provided below) errors_file contains the errors during processing of the file. (details below). Both translations_file and errors_file could be empty strings if we have no content to output. glossary_translations_file and glossary_errors_file are always empty strings if the input_file is tsv. They could also be empty if we have no content to output. Once a row is present in index.csv, the input/output matching never changes. Callers should also expect all the content in input_file are processed and ready to be consumed (that is, no partial output file is written). Since index.csv will be keeping updated during the process, please make sure there is no custom retention policy applied on the output bucket that may avoid file updating. (https://cloud.google.com/storage/docs/bucket-lock?hl=en#retention-policy) The format of translations_file (for target language code &#x27;trg&#x27;) is: gs://translation_test/a_b_c_&#x27;trg&#x27;_translations.[extension] If the input file extension is tsv, the output has the following columns: Column 1: ID of the request provided in the input, if it&#x27;s not provided in the input, then the input row number is used (0-based). Column 2: source sentence. Column 3: translation without applying a glossary. Empty string if there is an error. Column 4 (only present if a glossary is provided in the request): translation after applying the glossary. Empty string if there is an error applying the glossary. Could be same string as column 3 if there is no glossary applied. If input file extension is a txt or html, the translation is directly written to the output file. If glossary is requested, a separate glossary_translations_file has format of gs://translation_test/a_b_c_&#x27;trg&#x27;_glossary_translations.[extension] The format of errors file (for target language code &#x27;trg&#x27;) is: gs://translation_test/a_b_c_&#x27;trg&#x27;_errors.[extension] If the input file extension is tsv, errors_file contains the following: Column 1: ID of the request provided in the input, if it&#x27;s not provided in the input, then the input row number is used (0-based). Column 2: source sentence. Column 3: Error detail for the translation. Could be empty. Column 4 (only present if a glossary is provided in the request): Error when applying the glossary. If the input file extension is txt or html, glossary_error_file will be generated that contains error details. glossary_error_file has format of gs://translation_test/a_b_c_&#x27;trg&#x27;_glossary_errors.[extension]
      &quot;outputUriPrefix&quot;: &quot;A String&quot;, # Required. The bucket used in &#x27;output_uri_prefix&#x27; must exist and there must be no files under &#x27;output_uri_prefix&#x27;. &#x27;output_uri_prefix&#x27; must end with &quot;/&quot; and start with &quot;gs://&quot;. One &#x27;output_uri_prefix&#x27; can only be used by one batch translation job at a time. Otherwise an INVALID_ARGUMENT (400) error is returned.
    },
  },
  &quot;sourceLanguageCode&quot;: &quot;A String&quot;, # Required. Source language code.
  &quot;targetLanguageCodes&quot;: [ # Required. Specify up to 10 language codes here.
    &quot;A String&quot;,
  ],
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="detectLanguage">detectLanguage(parent, body=None, x__xgafv=None)</code>
  <pre>Detects the language of text within a request.

Args:
  parent: string, Required. Project or location to make a call. Must refer to a caller&#x27;s project. Format: `projects/{project-number-or-id}/locations/{location-id}` or `projects/{project-number-or-id}`. For global calls, use `projects/{project-number-or-id}/locations/global` or `projects/{project-number-or-id}`. Only models within the same region (has same location-id) can be used. Otherwise an INVALID_ARGUMENT (400) error is returned. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request message for language detection.
  &quot;content&quot;: &quot;A String&quot;, # The content of the input stored as a string.
  &quot;labels&quot;: { # Optional. The labels with user-defined metadata for the request. Label keys and values can be no longer than 63 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter. See https://cloud.google.com/translate/docs/advanced/labels for more information.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;mimeType&quot;: &quot;A String&quot;, # Optional. The format of the source text, for example, &quot;text/html&quot;, &quot;text/plain&quot;. If left blank, the MIME type defaults to &quot;text/html&quot;.
  &quot;model&quot;: &quot;A String&quot;, # Optional. The language detection model to be used. Format: `projects/{project-number-or-id}/locations/{location-id}/models/language-detection/{model-id}` Only one language detection model is currently supported: `projects/{project-number-or-id}/locations/{location-id}/models/language-detection/default`. If not specified, the default model is used.
}

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

Returns:
  An object of the form:

    { # The response message for language detection.
  &quot;languages&quot;: [ # The most probable language detected by the Translation API. For each request, the Translation API will always return only one result.
    { # The response message for language detection.
      &quot;confidence&quot;: 3.14, # The confidence of the detection result for this language.
      &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code of source content in the request, detected automatically.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets information about a location.

Args:
  name: string, Resource name for the location. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource that represents Google Cloud Platform location.
  &quot;displayName&quot;: &quot;A String&quot;, # The friendly name for this location, typically a nearby city name. For example, &quot;Tokyo&quot;.
  &quot;labels&quot;: { # Cross-service attributes for the location. For example {&quot;cloud.googleapis.com/region&quot;: &quot;us-east1&quot;}
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;locationId&quot;: &quot;A String&quot;, # The canonical id for this location. For example: `&quot;us-east1&quot;`.
  &quot;metadata&quot;: { # Service-specific metadata. For example the available capacity at the given location.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # Resource name for the location, which may vary between implementations. For example: `&quot;projects/example-project/locations/us-east1&quot;`
}</pre>
</div>

<div class="method">
    <code class="details" id="getSupportedLanguages">getSupportedLanguages(parent, displayLanguageCode=None, model=None, x__xgafv=None)</code>
  <pre>Returns a list of supported languages for translation.

Args:
  parent: string, Required. Project or location to make a call. Must refer to a caller&#x27;s project. Format: `projects/{project-number-or-id}` or `projects/{project-number-or-id}/locations/{location-id}`. For global calls, use `projects/{project-number-or-id}/locations/global` or `projects/{project-number-or-id}`. Non-global location is required for AutoML models. Only models within the same region (have same location-id) can be used, otherwise an INVALID_ARGUMENT (400) error is returned. (required)
  displayLanguageCode: string, Optional. The language to use to return localized, human readable names of supported languages. If missing, then display names are not returned in a response.
  model: string, Optional. Get supported languages of this model. The format depends on model type: - AutoML Translation models: `projects/{project-number-or-id}/locations/{location-id}/models/{model-id}` - General (built-in) models: `projects/{project-number-or-id}/locations/{location-id}/models/general/nmt`, `projects/{project-number-or-id}/locations/{location-id}/models/general/base` Returns languages supported by the specified model. If missing, we get supported languages of Google general base (PBMT) model.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for discovering supported languages.
  &quot;languages&quot;: [ # A list of supported language responses. This list contains an entry for each language the Translation API supports.
    { # A single supported language response corresponds to information related to one supported language.
      &quot;displayName&quot;: &quot;A String&quot;, # Human readable name of the language localized in the display language specified in the request.
      &quot;languageCode&quot;: &quot;A String&quot;, # Supported language code, generally consisting of its ISO 639-1 identifier, for example, &#x27;en&#x27;, &#x27;ja&#x27;. In certain cases, BCP-47 codes including language and region identifiers are returned (for example, &#x27;zh-TW&#x27; and &#x27;zh-CN&#x27;)
      &quot;supportSource&quot;: True or False, # Can be used as source language.
      &quot;supportTarget&quot;: True or False, # Can be used as target language.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(name, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists information about the supported locations for this service.

Args:
  name: string, The resource that owns the locations collection, if applicable. (required)
  filter: string, A filter to narrow down results to a preferred subset. The filtering language accepts strings like &quot;displayName=tokyo&quot;, and is documented in more detail in [AIP-160](https://google.aip.dev/160).
  pageSize: integer, The maximum number of results to return. If not set, the service selects a default.
  pageToken: string, A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for Locations.ListLocations.
  &quot;locations&quot;: [ # A list of locations that matches the specified filter in the request.
    { # A resource that represents Google Cloud Platform location.
      &quot;displayName&quot;: &quot;A String&quot;, # The friendly name for this location, typically a nearby city name. For example, &quot;Tokyo&quot;.
      &quot;labels&quot;: { # Cross-service attributes for the location. For example {&quot;cloud.googleapis.com/region&quot;: &quot;us-east1&quot;}
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;locationId&quot;: &quot;A String&quot;, # The canonical id for this location. For example: `&quot;us-east1&quot;`.
      &quot;metadata&quot;: { # Service-specific metadata. For example the available capacity at the given location.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
      &quot;name&quot;: &quot;A String&quot;, # Resource name for the location, which may vary between implementations. For example: `&quot;projects/example-project/locations/us-east1&quot;`
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The standard List next-page token.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="translateText">translateText(parent, body=None, x__xgafv=None)</code>
  <pre>Translates input text and returns translated text.

Args:
  parent: string, Required. Project or location to make a call. Must refer to a caller&#x27;s project. Format: `projects/{project-number-or-id}` or `projects/{project-number-or-id}/locations/{location-id}`. For global calls, use `projects/{project-number-or-id}/locations/global` or `projects/{project-number-or-id}`. Non-global location is required for requests using AutoML models or custom glossaries. Models and glossaries must be within the same region (have same location-id), otherwise an INVALID_ARGUMENT (400) error is returned. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request message for synchronous translation.
  &quot;contents&quot;: [ # Required. The content of the input in string format. We recommend the total content be less than 30k codepoints. The max length of this field is 1024. Use BatchTranslateText for larger text.
    &quot;A String&quot;,
  ],
  &quot;glossaryConfig&quot;: { # Configures which glossary should be used for a specific target language, and defines options for applying that glossary. # Optional. Glossary to be applied. The glossary must be within the same region (have the same location-id) as the model, otherwise an INVALID_ARGUMENT (400) error is returned.
    &quot;glossary&quot;: &quot;A String&quot;, # Required. The `glossary` to be applied for this translation. The format depends on glossary: - User provided custom glossary: `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`
    &quot;ignoreCase&quot;: True or False, # Optional. Indicates match is case-insensitive. Default value is false if missing.
  },
  &quot;labels&quot;: { # Optional. The labels with user-defined metadata for the request. Label keys and values can be no longer than 63 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter. See https://cloud.google.com/translate/docs/advanced/labels for more information.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;mimeType&quot;: &quot;A String&quot;, # Optional. The format of the source text, for example, &quot;text/html&quot;, &quot;text/plain&quot;. If left blank, the MIME type defaults to &quot;text/html&quot;.
  &quot;model&quot;: &quot;A String&quot;, # Optional. The `model` type requested for this translation. The format depends on model type: - AutoML Translation models: `projects/{project-number-or-id}/locations/{location-id}/models/{model-id}` - General (built-in) models: `projects/{project-number-or-id}/locations/{location-id}/models/general/nmt`, `projects/{project-number-or-id}/locations/{location-id}/models/general/base` For global (non-regionalized) requests, use `location-id` `global`. For example, `projects/{project-number-or-id}/locations/global/models/general/nmt`. If missing, the system decides which google base model to use.
  &quot;sourceLanguageCode&quot;: &quot;A String&quot;, # Optional. The BCP-47 language code of the input text if known, for example, &quot;en-US&quot; or &quot;sr-Latn&quot;. Supported language codes are listed in Language Support. If the source language isn&#x27;t specified, the API attempts to identify the source language automatically and returns the source language within the response.
  &quot;targetLanguageCode&quot;: &quot;A String&quot;, # Required. The BCP-47 language code to use for translation of the input text, set to one of the language codes listed in Language Support.
}

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

Returns:
  An object of the form:

    {
  &quot;glossaryTranslations&quot;: [ # Text translation responses if a glossary is provided in the request. This can be the same as `translations` if no terms apply. This field has the same length as `contents`.
    { # A single translation response.
      &quot;detectedLanguageCode&quot;: &quot;A String&quot;, # The BCP-47 language code of source text in 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 does not occur and this field is empty.
      &quot;glossaryConfig&quot;: { # Configures which glossary should be used for a specific target language, and defines options for applying that glossary. # The `glossary_config` used for this translation.
        &quot;glossary&quot;: &quot;A String&quot;, # Required. The `glossary` to be applied for this translation. The format depends on glossary: - User provided custom glossary: `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`
        &quot;ignoreCase&quot;: True or False, # Optional. Indicates match is case-insensitive. Default value is false if missing.
      },
      &quot;model&quot;: &quot;A String&quot;, # Only present when `model` is present in the request. `model` here is normalized to have project number. For example: If the `model` requested in TranslationTextRequest is `projects/{project-id}/locations/{location-id}/models/general/nmt` then `model` here would be normalized to `projects/{project-number}/locations/{location-id}/models/general/nmt`.
      &quot;translatedText&quot;: &quot;A String&quot;, # Text translated into the target language.
    },
  ],
  &quot;translations&quot;: [ # Text translation responses with no glossary applied. This field has the same length as `contents`.
    { # A single translation response.
      &quot;detectedLanguageCode&quot;: &quot;A String&quot;, # The BCP-47 language code of source text in 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 does not occur and this field is empty.
      &quot;glossaryConfig&quot;: { # Configures which glossary should be used for a specific target language, and defines options for applying that glossary. # The `glossary_config` used for this translation.
        &quot;glossary&quot;: &quot;A String&quot;, # Required. The `glossary` to be applied for this translation. The format depends on glossary: - User provided custom glossary: `projects/{project-number-or-id}/locations/{location-id}/glossaries/{glossary-id}`
        &quot;ignoreCase&quot;: True or False, # Optional. Indicates match is case-insensitive. Default value is false if missing.
      },
      &quot;model&quot;: &quot;A String&quot;, # Only present when `model` is present in the request. `model` here is normalized to have project number. For example: If the `model` requested in TranslationTextRequest is `projects/{project-id}/locations/{location-id}/models/general/nmt` then `model` here would be normalized to `projects/{project-number}/locations/{location-id}/models/general/nmt`.
      &quot;translatedText&quot;: &quot;A String&quot;, # Text translated into the target language.
    },
  ],
}</pre>
</div>

</body></html>