google-cloud-translate 1.4.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHENTICATION.md +6 -2
  3. data/CHANGELOG.md +33 -0
  4. data/CONTRIBUTING.md +1 -1
  5. data/LICENSE +1 -1
  6. data/OVERVIEW.md +223 -18
  7. data/lib/google-cloud-translate.rb +79 -91
  8. data/lib/google/cloud/translate.rb +127 -114
  9. data/lib/google/cloud/translate/v2.rb +169 -0
  10. data/lib/google/cloud/translate/v2/api.rb +255 -0
  11. data/lib/google/cloud/translate/v2/credentials.rb +58 -0
  12. data/lib/google/cloud/translate/v2/detection.rb +132 -0
  13. data/lib/google/cloud/translate/v2/language.rb +68 -0
  14. data/lib/google/cloud/translate/v2/service.rb +205 -0
  15. data/lib/google/cloud/translate/v2/translation.rb +120 -0
  16. data/lib/google/cloud/translate/v3.rb +144 -0
  17. data/lib/google/cloud/translate/v3/credentials.rb +42 -0
  18. data/lib/google/cloud/translate/v3/doc/google/cloud/translate/v3/translation_service.rb +663 -0
  19. data/lib/google/cloud/translate/v3/doc/google/longrunning/operations.rb +51 -0
  20. data/lib/google/cloud/translate/v3/doc/google/protobuf/any.rb +131 -0
  21. data/lib/google/cloud/translate/v3/doc/google/protobuf/timestamp.rb +113 -0
  22. data/lib/google/cloud/translate/v3/doc/google/rpc/status.rb +87 -0
  23. data/lib/google/cloud/translate/v3/translation_service_client.rb +927 -0
  24. data/lib/google/cloud/translate/v3/translation_service_client_config.json +66 -0
  25. data/lib/google/cloud/translate/v3/translation_service_pb.rb +226 -0
  26. data/lib/google/cloud/translate/v3/translation_service_services_pb.rb +68 -0
  27. data/lib/google/cloud/translate/version.rb +1 -1
  28. metadata +47 -37
  29. data/lib/google/cloud/translate/api.rb +0 -274
  30. data/lib/google/cloud/translate/credentials.rb +0 -57
  31. data/lib/google/cloud/translate/detection.rb +0 -139
  32. data/lib/google/cloud/translate/language.rb +0 -70
  33. data/lib/google/cloud/translate/service.rb +0 -206
  34. data/lib/google/cloud/translate/translation.rb +0 -125
@@ -1,274 +0,0 @@
1
- # Copyright 2016 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
-
16
- require "google/cloud/translate/service"
17
- require "google/cloud/translate/translation"
18
- require "google/cloud/translate/detection"
19
- require "google/cloud/translate/language"
20
-
21
- module Google
22
- module Cloud
23
- module Translate
24
- ##
25
- # # Api
26
- #
27
- # Represents top-level access to the Google Cloud Translation API.
28
- # Translation API supports more than one hundred different languages, from
29
- # Afrikaans to Zulu. Used in combination, this enables translation between
30
- # thousands of language pairs. Also, you can send in HTML and receive HTML
31
- # with translated text back. You don't need to extract your source text or
32
- # reassemble the translated content.
33
- #
34
- # @see https://cloud.google.com/translation/docs/getting-started
35
- # Cloud Translation API Quickstart
36
- #
37
- # @example
38
- # require "google/cloud/translate"
39
- #
40
- # translate = Google::Cloud::Translate.new
41
- #
42
- # translation = translate.translate "Hello world!", to: "la"
43
- #
44
- # translation.to_s #=> "Salve mundi!"
45
- #
46
- # translation.from #=> "en"
47
- # translation.origin #=> "Hello world!"
48
- # translation.to #=> "la"
49
- # translation.text #=> "Salve mundi!"
50
- #
51
- class Api
52
- ##
53
- # @private The Service object.
54
- attr_accessor :service
55
-
56
- ##
57
- # @private Creates a new Api instance.
58
- #
59
- # See {Google::Cloud.translate}
60
- def initialize service
61
- @service = service
62
- end
63
-
64
- ##
65
- # The Cloud Translation API project connected to.
66
- #
67
- # @example
68
- # require "google/cloud/translate"
69
- #
70
- # translate = Google::Cloud::Translate.new(
71
- # project_id: "my-todo-project",
72
- # credentials: "/path/to/keyfile.json"
73
- # )
74
- #
75
- # translate.project_id #=> "my-todo-project"
76
- #
77
- def project_id
78
- service.project
79
- end
80
- alias project project_id
81
-
82
- ##
83
- # Returns text translations from one language to another.
84
- #
85
- # @see https://cloud.google.com/translation/docs/translating-text#Translate
86
- # Translating Text
87
- #
88
- # @param [String] text The text or texts to translate.
89
- # @param [String] to The target language into which the text should be
90
- # translated. This is required. The value must be an [ISO
91
- # 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
92
- # language code.
93
- # @param [String] from The source language of the text or texts. This is
94
- # an [ISO
95
- # 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
96
- # language code. This is optional.
97
- # @param [String] format The format of the text. Possible values include
98
- # `:text` and `:html`. This is optional. The Translation API default
99
- # is `:html`.
100
- # @param [String] model The model used by the service to perform the
101
- # translation. Can be either `base` to use the Phrase-Based Machine
102
- # Translation (PBMT) model, or `nmt` to use the Neural Machine
103
- # Translation (NMT) model. The default is `nmt`.
104
- #
105
- # If the model is `nmt`, and the requested language translation pair
106
- # is not supported for the NMT model, then the request is translated
107
- # using the PBMT model.
108
- #
109
- # @param [String] cid The customization id for translate. This is
110
- # optional.
111
- #
112
- # @return [Translation, Array<Translation>] A single {Translation}
113
- # object if just one text was given, or an array of {Translation}
114
- # objects if multiple texts were given.
115
- #
116
- # @example
117
- # require "google/cloud/translate"
118
- #
119
- # translate = Google::Cloud::Translate.new
120
- #
121
- # translation = translate.translate "Hello world!", to: "la"
122
- #
123
- # translation.to_s #=> "Salve mundi!"
124
- #
125
- # translation.detected? #=> true
126
- # translation.from #=> "en"
127
- # translation.origin #=> "Hello world!"
128
- # translation.to #=> "la"
129
- # translation.text #=> "Salve mundi!"
130
- # translation.model #=> "base"
131
- #
132
- # @example Using the neural machine translation model:
133
- # require "google/cloud/translate"
134
- #
135
- # translate = Google::Cloud::Translate.new
136
- #
137
- # translation = translate.translate "Hello world!",
138
- # to: "la", model: "nmt"
139
- #
140
- # translation.to_s #=> "Salve mundi!"
141
- # translation.model #=> "nmt"
142
- #
143
- # @example Setting the `from` language.
144
- # require "google/cloud/translate"
145
- #
146
- # translate = Google::Cloud::Translate.new
147
- #
148
- # translation = translate.translate "Hello world!",
149
- # from: :en, to: :la
150
- # translation.detected? #=> false
151
- # translation.text #=> "Salve mundi!"
152
- #
153
- # @example Retrieving multiple translations.
154
- # require "google/cloud/translate"
155
- #
156
- # translate = Google::Cloud::Translate.new
157
- #
158
- # translations = translate.translate "Hello my friend.",
159
- # "See you soon.",
160
- # from: "en", to: "la"
161
- # translations.count #=> 2
162
- # translations[0].text #=> "Salve amice."
163
- # translations[1].text #=> "Vide te mox."
164
- #
165
- # @example Preserving HTML tags.
166
- # require "google/cloud/translate"
167
- #
168
- # translate = Google::Cloud::Translate.new
169
- #
170
- # translation = translate.translate "<strong>Hello</strong> world!",
171
- # to: :la
172
- # translation.text #=> "<strong>Salve</strong> mundi!"
173
- #
174
- def translate *text, to: nil, from: nil, format: nil, model: nil,
175
- cid: nil
176
- return nil if text.empty?
177
- raise ArgumentError, "to is required" if to.nil?
178
- to = to.to_s
179
- from = from.to_s if from
180
- format = format.to_s if format
181
- text = Array(text).flatten
182
- gapi = service.translate text, to: to, from: from,
183
- format: format, model: model, cid: cid
184
- Translation.from_gapi_list gapi, text, to, from
185
- end
186
-
187
- ##
188
- # Detect the most likely language or languages of a text or multiple
189
- # texts.
190
- #
191
- # @see https://cloud.google.com/translation/docs/detecting-language
192
- # Detecting Language
193
- #
194
- # @param [String] text The text or texts upon which language detection
195
- # should be performed.
196
- #
197
- # @return [Detection, Array<Detection>] A single {Detection} object if
198
- # just one text was given, or an array of {Detection} objects if
199
- # multiple texts were given.
200
- #
201
- # @example
202
- # require "google/cloud/translate"
203
- #
204
- # translate = Google::Cloud::Translate.new
205
- #
206
- # detection = translate.detect "Hello world!"
207
- # detection.language #=> "en"
208
- # detection.confidence #=> 0.7100697
209
- #
210
- # @example Detecting multiple texts.
211
- # require "google/cloud/translate"
212
- #
213
- # translate = Google::Cloud::Translate.new
214
- #
215
- # detections = translate.detect "Hello world!",
216
- # "Bonjour le monde!"
217
- # detections.count #=> 2
218
- # detections.first.language #=> "en"
219
- # detections.first.confidence #=> 0.7100697
220
- # detections.last.language #=> "fr"
221
- # detections.last.confidence #=> 0.40440267
222
- #
223
- def detect *text
224
- return nil if text.empty?
225
- text = Array(text).flatten
226
- gapi = service.detect text
227
- Detection.from_gapi gapi, text
228
- end
229
-
230
- ##
231
- # List the languages supported by the API. These are the languages to
232
- # and from which text can be translated.
233
- #
234
- # @see https://cloud.google.com/translation/docs/discovering-supported-languages
235
- # Discovering Supported Languages
236
- #
237
- # @param [String] language The language and collation in which the names
238
- # of the languages are returned. If this is `nil` then no names are
239
- # returned.
240
- #
241
- # @return [Array<Language>] An array of {Language} objects supported by
242
- # the API.
243
- #
244
- # @example
245
- # require "google/cloud/translate"
246
- #
247
- # translate = Google::Cloud::Translate.new
248
- #
249
- # languages = translate.languages
250
- # languages.count #=> 104
251
- #
252
- # english = languages.detect { |l| l.code == "en" }
253
- # english.name #=> nil
254
- #
255
- # @example Get all languages with their names in French.
256
- # require "google/cloud/translate"
257
- #
258
- # translate = Google::Cloud::Translate.new
259
- #
260
- # languages = translate.languages "fr"
261
- # languages.count #=> 104
262
- #
263
- # english = languages.detect { |l| l.code == "en" }
264
- # english.name #=> "Anglais"
265
- #
266
- def languages language = nil
267
- language = language.to_s if language
268
- gapi = service.languages language
269
- Array(gapi["languages"]).map { |g| Language.from_gapi g }
270
- end
271
- end
272
- end
273
- end
274
- end
@@ -1,57 +0,0 @@
1
- # Copyright 2016 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
-
16
- require "googleauth"
17
-
18
- module Google
19
- module Cloud
20
- module Translate
21
- ##
22
- # # Credentials
23
- #
24
- # Represents the authentication and authorization used to connect to the
25
- # Cloud Translation API.
26
- #
27
- # @example
28
- # require "google/cloud/translate"
29
- #
30
- # keyfile = "/path/to/keyfile.json"
31
- # creds = Google::Cloud::Translate::Credentials.new keyfile
32
- #
33
- # translate = Google::Cloud::Translate.new(
34
- # project_id: "my-todo-project",
35
- # credentials: creds
36
- # )
37
- #
38
- # translate.project_id #=> "my-todo-project"
39
- #
40
- class Credentials < Google::Auth::Credentials
41
- SCOPE = ["https://www.googleapis.com/auth/cloud-platform"].freeze
42
- PATH_ENV_VARS = ["TRANSLATE_CREDENTIALS",
43
- "TRANSLATE_KEYFILE",
44
- "GOOGLE_CLOUD_CREDENTIALS",
45
- "GOOGLE_CLOUD_KEYFILE",
46
- "GCLOUD_KEYFILE"].freeze
47
- JSON_ENV_VARS = ["TRANSLATE_CREDENTIALS_JSON",
48
- "TRANSLATE_KEYFILE_JSON",
49
- "GOOGLE_CLOUD_CREDENTIALS_JSON",
50
- "GOOGLE_CLOUD_KEYFILE_JSON",
51
- "GCLOUD_KEYFILE_JSON"].freeze
52
- DEFAULT_PATHS = \
53
- ["~/.config/gcloud/application_default_credentials.json"].freeze
54
- end
55
- end
56
- end
57
- end
@@ -1,139 +0,0 @@
1
- # Copyright 2016 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
-
16
- module Google
17
- module Cloud
18
- module Translate
19
- ##
20
- # # Detection
21
- #
22
- # Represents a detect language query result. Returned by
23
- # {Google::Cloud::Translate::Api#detect}.
24
- #
25
- # @see https://cloud.google.com/translation/docs/detecting-language
26
- # Detecting Language
27
- #
28
- # @example
29
- # require "google/cloud/translate"
30
- #
31
- # translate = Google::Cloud::Translate.new
32
- #
33
- # detections = translate.detect "chien", "chat"
34
- #
35
- # detections.size #=> 2
36
- # detections[0].text #=> "chien"
37
- # detections[0].language #=> "fr"
38
- # detections[0].confidence #=> 0.7109375
39
- # detections[1].text #=> "chat"
40
- # detections[1].language #=> "en"
41
- # detections[1].confidence #=> 0.59922177
42
- #
43
- class Detection
44
- ##
45
- # The text upon which the language detection was performed.
46
- #
47
- # @return [String]
48
- attr_reader :text
49
-
50
- ##
51
- # The list of detection results for the given text. The most likely
52
- # language is listed first, and its attributes can be accessed through
53
- # {#language} and {#confidence}.
54
- #
55
- # @return [Array<Detection::Result>]
56
- attr_reader :results
57
-
58
- ##
59
- # @private Create a new object.
60
- def initialize text, results
61
- @text = text
62
- @results = results
63
- end
64
-
65
- ##
66
- # The confidence that the language detection result is correct. The
67
- # closer this value is to 1, the higher the confidence in language
68
- # detection.
69
- #
70
- # @return [Float] a value between 0 and 1
71
- def confidence
72
- return nil if results.empty?
73
- results.first.confidence
74
- end
75
-
76
- ##
77
- # The most likely language that was detected. This is an [ISO
78
- # 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) language
79
- # code.
80
- #
81
- # @return [String] the language code
82
- def language
83
- return nil if results.empty?
84
- results.first.language
85
- end
86
-
87
- ##
88
- # @private New Detection from a ListDetectionsResponse object as
89
- # defined by the Google API Client object.
90
- def self.from_gapi gapi, text
91
- res = text.zip(Array(gapi["detections"])).map do |txt, detections|
92
- results = detections.map { |g| Result.from_gapi g }
93
- new txt, results
94
- end
95
- return res.first if res.size == 1
96
- res
97
- end
98
-
99
- ##
100
- # # Result
101
- #
102
- # Represents an individual result in a
103
- # {Google::Cloud::Translate::Detection} result.
104
- #
105
- class Result
106
- ##
107
- # The confidence that the language detection result is correct. The
108
- # closer this value is to 1, the higher the confidence in language
109
- # detection.
110
- #
111
- # @return [Float] a value between 0 and 1
112
- attr_reader :confidence
113
-
114
- ##
115
- # The language detected. This is an [ISO
116
- # 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
117
- # language code.
118
- #
119
- # @return [String] the language code
120
- attr_reader :language
121
-
122
- ##
123
- # @private Create a new object.
124
- def initialize confidence, language
125
- @confidence = confidence
126
- @language = language
127
- end
128
-
129
- ##
130
- # @private New Detection::Result from a DetectionsResource object as
131
- # defined by the Google API Client object.
132
- def self.from_gapi gapi
133
- new gapi["confidence"], gapi["language"]
134
- end
135
- end
136
- end
137
- end
138
- end
139
- end