# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require "google-cloud-translate"
require "google/cloud/translate/api"
module Google
module Cloud
##
# # Google Translate API
#
# [Google Translate API](https://cloud.google.com/translate/) provides a
# simple, programmatic interface for translating an arbitrary string into
# any supported language. It is highly responsive, so websites and
# applications can integrate with Translate API for fast, dynamic
# translation of source text. Language detection is also available in cases
# where the source language is unknown.
#
# Translate API supports more than ninety different languages, from
# Afrikaans to Zulu. Used in combination, this enables translation between
# thousands of language pairs. Also, you can send in HTML and receive HTML
# with translated text back. You don't need to extract your source text or
# reassemble the translated content.
#
# ## Authenticating
#
# Unlike other Cloud Platform services, which authenticate using a project
# ID and OAuth 2.0 credentials, Translate API requires a public API access
# key. (This may change in future releases of Translate API.) Follow the
# general instructions at [Identifying your application to
# Google](https://cloud.google.com/translate/v2/using_rest#auth), and the
# specific instructions for [Server
# keys](https://cloud.google.com/translate/v2/using_rest#creating-server-api-keys).
#
# ## Translating texts
#
# Translating text from one language to another is easy (and extremely
# fast.) The only required arguments to
# {Google::Cloud::Translate::Api#translate} are a string and the [ISO
# 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) code of the
# language to which you wish to translate.
#
# ```ruby
# require "google/cloud"
#
# gcloud = Google::Cloud.new
# translate = gcloud.translate
#
# translation = translate.translate "Hello world!", to: "la"
#
# puts translation #=> Salve mundi!
#
# translation.from #=> "en"
# translation.origin #=> "Hello world!"
# translation.to #=> "la"
# translation.text #=> "Salve mundi!"
# ```
#
# You may want to use the `from` option to specify the language of the
# source text, as the following example illustrates. (Single words do not
# give Translate API much to work with.)
#
# ```ruby
# require "google/cloud"
#
# gcloud = Google::Cloud.new
# translate = gcloud.translate
#
# translation = translate.translate "chat", to: "en"
#
# translation.detected? #=> true
# translation.from #=> "en"
# translation.text #=> "chat"
#
# translation = translate.translate "chat", from: "fr", to: "en"
#
# translation.detected? #=> false
# translation.from #=> "fr"
# translation.text #=> "cat"
# ```
#
# You can pass multiple texts to {Google::Cloud::Translate::Api#translate}.
#
# ```ruby
# require "google/cloud"
#
# gcloud = Google::Cloud.new
# translate = gcloud.translate
#
# translations = translate.translate "chien", "chat", from: "fr", to: "en"
#
# translations.size #=> 2
# translations[0].origin #=> "chien"
# translations[0].text #=> "dog"
# translations[1].origin #=> "chat"
# translations[1].text #=> "cat"
# ```
#
# By default, any HTML in your source text will be preserved.
#
# ```ruby
# require "google/cloud"
#
# gcloud = Google::Cloud.new
# translate = gcloud.translate
#
# translation = translate.translate "Hello world!",
# to: :la
# translation.text #=> "Salve mundi!"
# ```
#
# ## Detecting languages
#
# You can use {Google::Cloud::Translate::Api#detect} to see which language
# the Translate API ranks as the most likely source language for a text. The
# `confidence` score is a float value between `0` and `1`.
#
# ```ruby
# require "google/cloud"
#
# gcloud = Google::Cloud.new
# translate = gcloud.translate
#
# detection = translate.detect "chat"
#
# detection.text #=> "chat"
# detection.language #=> "en"
# detection.confidence #=> 0.59922177
# ```
#
# You can pass multiple texts to {Google::Cloud::Translate::Api#detect}.
#
# ```ruby
# require "google/cloud"
#
# gcloud = Google::Cloud.new
# translate = gcloud.translate
#
# detections = translate.detect "chien", "chat"
#
# detections.size #=> 2
# detections[0].text #=> "chien"
# detections[0].language #=> "fr"
# detections[0].confidence #=> 0.7109375
# detections[1].text #=> "chat"
# detections[1].language #=> "en"
# detections[1].confidence #=> 0.59922177
# ```
#
# ## Listing supported languages
#
# Translate API adds new languages frequently. You can use
# {Google::Cloud::Translate::Api#languages} to query the list of supported
# languages.
#
# ```ruby
# require "google/cloud"
#
# gcloud = Google::Cloud.new
# translate = gcloud.translate
#
# languages = translate.languages
#
# languages.size #=> 104
# languages[0].code #=> "af"
# languages[0].name #=> nil
# ```
#
# To receive the names of the supported languages, as well as their [ISO
# 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) codes,
# provide the code for the language in which you wish to receive the names.
#
# ```ruby
# require "google/cloud"
#
# gcloud = Google::Cloud.new
# translate = gcloud.translate
#
# languages = translate.languages "en"
#
# languages.size #=> 104
# languages[0].code #=> "af"
# languages[0].name #=> "Afrikaans"
# ```
#
# ## Configuring retries and timeout
#
# You can configure how many times API requests may be automatically
# retried. When an API request fails, the response will be inspected to see
# if the request meets criteria indicating that it may succeed on retry,
# such as `500` and `503` status codes or a specific internal error code
# such as `rateLimitExceeded`. If it meets the criteria, the request will be
# retried after a delay. If another error occurs, the delay will be
# increased before a subsequent attempt, until the `retries` limit is
# reached.
#
# You can also set the request `timeout` value in seconds.
#
# ```ruby
# require "google/cloud"
#
# gcloud = Google::Cloud.new
# translate = gcloud.translate retries: 10, timeout: 120
# ```
#
module Translate
end
end
end