google-cloud-translate 2.3.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +5 -8
  3. data/AUTHENTICATION.md +67 -81
  4. data/LICENSE.md +201 -0
  5. data/MIGRATING.md +302 -0
  6. data/README.md +139 -0
  7. data/lib/google-cloud-translate.rb +5 -146
  8. data/lib/google/cloud/translate.rb +79 -178
  9. data/lib/google/cloud/translate/helpers.rb +107 -0
  10. data/lib/google/cloud/translate/version.rb +6 -2
  11. metadata +38 -138
  12. data/CHANGELOG.md +0 -164
  13. data/CODE_OF_CONDUCT.md +0 -40
  14. data/CONTRIBUTING.md +0 -188
  15. data/LICENSE +0 -201
  16. data/OVERVIEW.md +0 -390
  17. data/TROUBLESHOOTING.md +0 -37
  18. data/lib/google/cloud/translate/v2.rb +0 -169
  19. data/lib/google/cloud/translate/v2/api.rb +0 -255
  20. data/lib/google/cloud/translate/v2/credentials.rb +0 -58
  21. data/lib/google/cloud/translate/v2/detection.rb +0 -132
  22. data/lib/google/cloud/translate/v2/language.rb +0 -68
  23. data/lib/google/cloud/translate/v2/service.rb +0 -209
  24. data/lib/google/cloud/translate/v2/translation.rb +0 -120
  25. data/lib/google/cloud/translate/v3.rb +0 -144
  26. data/lib/google/cloud/translate/v3/credentials.rb +0 -42
  27. data/lib/google/cloud/translate/v3/doc/google/cloud/translate/v3/translation_service.rb +0 -663
  28. data/lib/google/cloud/translate/v3/doc/google/longrunning/operations.rb +0 -51
  29. data/lib/google/cloud/translate/v3/doc/google/protobuf/any.rb +0 -131
  30. data/lib/google/cloud/translate/v3/doc/google/protobuf/timestamp.rb +0 -113
  31. data/lib/google/cloud/translate/v3/doc/google/rpc/status.rb +0 -39
  32. data/lib/google/cloud/translate/v3/translation_service_client.rb +0 -930
  33. data/lib/google/cloud/translate/v3/translation_service_client_config.json +0 -66
  34. data/lib/google/cloud/translate/v3/translation_service_pb.rb +0 -226
  35. data/lib/google/cloud/translate/v3/translation_service_services_pb.rb +0 -68
data/CODE_OF_CONDUCT.md DELETED
@@ -1,40 +0,0 @@
1
- # Contributor Code of Conduct
2
-
3
- As contributors and maintainers of this project, and in the interest of
4
- fostering an open and welcoming community, we pledge to respect all people who
5
- contribute through reporting issues, posting feature requests, updating
6
- documentation, submitting pull requests or patches, and other activities.
7
-
8
- We are committed to making participation in this project a harassment-free
9
- experience for everyone, regardless of level of experience, gender, gender
10
- identity and expression, sexual orientation, disability, personal appearance,
11
- body size, race, ethnicity, age, religion, or nationality.
12
-
13
- Examples of unacceptable behavior by participants include:
14
-
15
- * The use of sexualized language or imagery
16
- * Personal attacks
17
- * Trolling or insulting/derogatory comments
18
- * Public or private harassment
19
- * Publishing other's private information, such as physical or electronic
20
- addresses, without explicit permission
21
- * Other unethical or unprofessional conduct.
22
-
23
- Project maintainers have the right and responsibility to remove, edit, or reject
24
- comments, commits, code, wiki edits, issues, and other contributions that are
25
- not aligned to this Code of Conduct. By adopting this Code of Conduct, project
26
- maintainers commit themselves to fairly and consistently applying these
27
- principles to every aspect of managing this project. Project maintainers who do
28
- not follow or enforce the Code of Conduct may be permanently removed from the
29
- project team.
30
-
31
- This code of conduct applies both within project spaces and in public spaces
32
- when an individual is representing the project or its community.
33
-
34
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
35
- reported by opening an issue or contacting one or more of the project
36
- maintainers.
37
-
38
- This Code of Conduct is adapted from the [Contributor
39
- Covenant](http://contributor-covenant.org), version 1.2.0, available at
40
- [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
data/CONTRIBUTING.md DELETED
@@ -1,188 +0,0 @@
1
- # Contributing to Google Cloud Translation
2
-
3
- 1. **Sign one of the contributor license agreements below.**
4
- 2. Fork the repo, develop and test your code changes.
5
- 3. Send a pull request.
6
-
7
- ## Contributor License Agreements
8
-
9
- Before we can accept your pull requests you'll need to sign a Contributor
10
- License Agreement (CLA):
11
-
12
- - **If you are an individual writing original source code** and **you own the
13
- intellectual property**, then you'll need to sign an [individual
14
- CLA](https://developers.google.com/open-source/cla/individual).
15
- - **If you work for a company that wants to allow you to contribute your work**,
16
- then you'll need to sign a [corporate
17
- CLA](https://developers.google.com/open-source/cla/corporate).
18
-
19
- You can sign these electronically (just scroll to the bottom). After that, we'll
20
- be able to accept your pull requests.
21
-
22
- ## Setup
23
-
24
- In order to use the google-cloud-translate console and run the project's tests,
25
- there is a small amount of setup:
26
-
27
- 1. Install Ruby. google-cloud-translate requires Ruby 2.4+. You may choose to
28
- manage your Ruby and gem installations with [RVM](https://rvm.io/),
29
- [rbenv](https://github.com/rbenv/rbenv), or
30
- [chruby](https://github.com/postmodern/chruby).
31
-
32
- 2. Install [Bundler](http://bundler.io/).
33
-
34
- ```sh
35
- $ gem install bundler
36
- ```
37
-
38
- 3. Install the top-level project dependencies.
39
-
40
- ```sh
41
- $ bundle install
42
- ```
43
-
44
- 4. Install the Translation dependencies.
45
-
46
- ```sh
47
- $ cd google-cloud-translate/
48
- $ bundle exec rake bundleupdate
49
- ```
50
-
51
- ## Console
52
-
53
- In order to run code interactively, you can automatically load
54
- google-cloud-translate and its dependencies in IRB. This requires that your
55
- developer environment has already been configured by following the steps
56
- described in the {file:AUTHENTICATION.md Authentication Guide}. An IRB console
57
- can be created with:
58
-
59
- ```sh
60
- $ cd google-cloud-translate/
61
- $ bundle exec rake console
62
- ```
63
-
64
- ## Translation Tests
65
-
66
- Tests are very important part of google-cloud-translate. All contributions
67
- should include tests that ensure the contributed code behaves as expected.
68
-
69
- To run the unit tests, documentation tests, and code style checks together for a
70
- package:
71
-
72
- ``` sh
73
- $ cd google-cloud-translate/
74
- $ bundle exec rake ci
75
- ```
76
-
77
- To run the command above, plus all acceptance tests, use `rake ci:acceptance` or
78
- its handy alias, `rake ci:a`.
79
-
80
- ### Translation Unit Tests
81
-
82
-
83
- The project uses the [minitest](https://github.com/seattlerb/minitest) library,
84
- including [specs](https://github.com/seattlerb/minitest#specs),
85
- [mocks](https://github.com/seattlerb/minitest#mocks) and
86
- [minitest-autotest](https://github.com/seattlerb/minitest-autotest).
87
-
88
- To run the Translation unit tests:
89
-
90
- ``` sh
91
- $ cd google-cloud-translate/
92
- $ bundle exec rake test
93
- ```
94
-
95
- ### Translation Documentation Tests
96
-
97
- The project tests the code examples in the gem's
98
- [YARD](https://github.com/lsegal/yard)-based documentation.
99
-
100
- The example testing functions in a way that is very similar to unit testing, and
101
- in fact the library providing it,
102
- [yard-doctest](https://github.com/p0deje/yard-doctest), is based on the
103
- project's unit test library, [minitest](https://github.com/seattlerb/minitest).
104
-
105
- To run the Translation documentation tests:
106
-
107
- ``` sh
108
- $ cd google-cloud-translate/
109
- $ bundle exec rake doctest
110
- ```
111
-
112
- If you add, remove or modify documentation examples when working on a pull
113
- request, you may need to update the setup for the tests. The stubs and mocks
114
- required to run the tests are located in `support/doctest_helper.rb`. Please
115
- note that much of the setup is matched by the title of the
116
- [`@example`](http://www.rubydoc.info/gems/yard/file/docs/Tags.md#example) tag.
117
- If you alter an example's title, you may encounter breaking tests.
118
-
119
- ### Translation Acceptance Tests
120
-
121
- The Translation acceptance tests interact with the live service API. Follow the
122
- instructions in the {file:AUTHENTICATION.md Authentication guide} for enabling
123
- the Translation API. Occasionally, some API features may not yet be generally
124
- available, making it difficult for some contributors to successfully run the
125
- entire acceptance test suite. However, please ensure that you do successfully
126
- run acceptance tests for any code areas covered by your pull request.
127
-
128
- To run the acceptance tests, first create and configure a project in the Google
129
- Developers Console, as described in the {file:AUTHENTICATION.md Authentication
130
- guide}. Be sure to download the JSON KEY file. Make note of the PROJECT_ID and
131
- the KEYFILE location on your system.
132
-
133
- Before you can run the Translation acceptance tests, you must first create indexes
134
- used in the tests.
135
-
136
- #### Running the Translation acceptance tests
137
-
138
- To run the Translation acceptance tests:
139
-
140
- ``` sh
141
- $ cd google-cloud-translate/
142
- $ bundle exec rake acceptance[\\{my-project-id},\\{/path/to/keyfile.json}]
143
- ```
144
-
145
- Or, if you prefer you can store the values in the `GCLOUD_TEST_PROJECT` and
146
- `GCLOUD_TEST_KEYFILE` environment variables:
147
-
148
- ``` sh
149
- $ cd google-cloud-translate/
150
- $ export GCLOUD_TEST_PROJECT=\\{my-project-id}
151
- $ export GCLOUD_TEST_KEYFILE=\\{/path/to/keyfile.json}
152
- $ bundle exec rake acceptance
153
- ```
154
-
155
- If you want to use a different project and credentials for acceptance tests, you
156
- can use the more specific `TRANSLATE_TEST_PROJECT` and `TRANSLATE_TEST_KEYFILE`
157
- environment variables:
158
-
159
- ``` sh
160
- $ cd google-cloud-translate/
161
- $ export TRANSLATE_TEST_PROJECT=\\{my-project-id}
162
- $ export TRANSLATE_TEST_KEYFILE=\\{/path/to/keyfile.json}
163
- $ bundle exec rake acceptance
164
- ```
165
-
166
- ## Coding Style
167
-
168
- Please follow the established coding style in the library. The style is is
169
- largely based on [The Ruby Style
170
- Guide](https://github.com/bbatsov/ruby-style-guide) with a few exceptions based
171
- on seattle-style:
172
-
173
- * Avoid parenthesis when possible, including in method definitions.
174
- * Always use double quotes strings. ([Option
175
- B](https://github.com/bbatsov/ruby-style-guide#strings))
176
-
177
- You can check your code against these rules by running Rubocop like so:
178
-
179
- ```sh
180
- $ cd google-cloud-translate/
181
- $ bundle exec rake rubocop
182
- ```
183
-
184
- ## Code of Conduct
185
-
186
- Please note that this project is released with a Contributor Code of Conduct. By
187
- participating in this project you agree to abide by its terms. See
188
- {file:CODE_OF_CONDUCT.md Code of Conduct} for more information.
data/LICENSE DELETED
@@ -1,201 +0,0 @@
1
- Apache License
2
- Version 2.0, January 2004
3
- https://www.apache.org/licenses/
4
-
5
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
-
7
- 1. Definitions.
8
-
9
- "License" shall mean the terms and conditions for use, reproduction,
10
- and distribution as defined by Sections 1 through 9 of this document.
11
-
12
- "Licensor" shall mean the copyright owner or entity authorized by
13
- the copyright owner that is granting the License.
14
-
15
- "Legal Entity" shall mean the union of the acting entity and all
16
- other entities that control, are controlled by, or are under common
17
- control with that entity. For the purposes of this definition,
18
- "control" means (i) the power, direct or indirect, to cause the
19
- direction or management of such entity, whether by contract or
20
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
- outstanding shares, or (iii) beneficial ownership of such entity.
22
-
23
- "You" (or "Your") shall mean an individual or Legal Entity
24
- exercising permissions granted by this License.
25
-
26
- "Source" form shall mean the preferred form for making modifications,
27
- including but not limited to software source code, documentation
28
- source, and configuration files.
29
-
30
- "Object" form shall mean any form resulting from mechanical
31
- transformation or translation of a Source form, including but
32
- not limited to compiled object code, generated documentation,
33
- and conversions to other media types.
34
-
35
- "Work" shall mean the work of authorship, whether in Source or
36
- Object form, made available under the License, as indicated by a
37
- copyright notice that is included in or attached to the work
38
- (an example is provided in the Appendix below).
39
-
40
- "Derivative Works" shall mean any work, whether in Source or Object
41
- form, that is based on (or derived from) the Work and for which the
42
- editorial revisions, annotations, elaborations, or other modifications
43
- represent, as a whole, an original work of authorship. For the purposes
44
- of this License, Derivative Works shall not include works that remain
45
- separable from, or merely link (or bind by name) to the interfaces of,
46
- the Work and Derivative Works thereof.
47
-
48
- "Contribution" shall mean any work of authorship, including
49
- the original version of the Work and any modifications or additions
50
- to that Work or Derivative Works thereof, that is intentionally
51
- submitted to Licensor for inclusion in the Work by the copyright owner
52
- or by an individual or Legal Entity authorized to submit on behalf of
53
- the copyright owner. For the purposes of this definition, "submitted"
54
- means any form of electronic, verbal, or written communication sent
55
- to the Licensor or its representatives, including but not limited to
56
- communication on electronic mailing lists, source code control systems,
57
- and issue tracking systems that are managed by, or on behalf of, the
58
- Licensor for the purpose of discussing and improving the Work, but
59
- excluding communication that is conspicuously marked or otherwise
60
- designated in writing by the copyright owner as "Not a Contribution."
61
-
62
- "Contributor" shall mean Licensor and any individual or Legal Entity
63
- on behalf of whom a Contribution has been received by Licensor and
64
- subsequently incorporated within the Work.
65
-
66
- 2. Grant of Copyright License. Subject to the terms and conditions of
67
- this License, each Contributor hereby grants to You a perpetual,
68
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
- copyright license to reproduce, prepare Derivative Works of,
70
- publicly display, publicly perform, sublicense, and distribute the
71
- Work and such Derivative Works in Source or Object form.
72
-
73
- 3. Grant of Patent License. Subject to the terms and conditions of
74
- this License, each Contributor hereby grants to You a perpetual,
75
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
- (except as stated in this section) patent license to make, have made,
77
- use, offer to sell, sell, import, and otherwise transfer the Work,
78
- where such license applies only to those patent claims licensable
79
- by such Contributor that are necessarily infringed by their
80
- Contribution(s) alone or by combination of their Contribution(s)
81
- with the Work to which such Contribution(s) was submitted. If You
82
- institute patent litigation against any entity (including a
83
- cross-claim or counterclaim in a lawsuit) alleging that the Work
84
- or a Contribution incorporated within the Work constitutes direct
85
- or contributory patent infringement, then any patent licenses
86
- granted to You under this License for that Work shall terminate
87
- as of the date such litigation is filed.
88
-
89
- 4. Redistribution. You may reproduce and distribute copies of the
90
- Work or Derivative Works thereof in any medium, with or without
91
- modifications, and in Source or Object form, provided that You
92
- meet the following conditions:
93
-
94
- (a) You must give any other recipients of the Work or
95
- Derivative Works a copy of this License; and
96
-
97
- (b) You must cause any modified files to carry prominent notices
98
- stating that You changed the files; and
99
-
100
- (c) You must retain, in the Source form of any Derivative Works
101
- that You distribute, all copyright, patent, trademark, and
102
- attribution notices from the Source form of the Work,
103
- excluding those notices that do not pertain to any part of
104
- the Derivative Works; and
105
-
106
- (d) If the Work includes a "NOTICE" text file as part of its
107
- distribution, then any Derivative Works that You distribute must
108
- include a readable copy of the attribution notices contained
109
- within such NOTICE file, excluding those notices that do not
110
- pertain to any part of the Derivative Works, in at least one
111
- of the following places: within a NOTICE text file distributed
112
- as part of the Derivative Works; within the Source form or
113
- documentation, if provided along with the Derivative Works; or,
114
- within a display generated by the Derivative Works, if and
115
- wherever such third-party notices normally appear. The contents
116
- of the NOTICE file are for informational purposes only and
117
- do not modify the License. You may add Your own attribution
118
- notices within Derivative Works that You distribute, alongside
119
- or as an addendum to the NOTICE text from the Work, provided
120
- that such additional attribution notices cannot be construed
121
- as modifying the License.
122
-
123
- You may add Your own copyright statement to Your modifications and
124
- may provide additional or different license terms and conditions
125
- for use, reproduction, or distribution of Your modifications, or
126
- for any such Derivative Works as a whole, provided Your use,
127
- reproduction, and distribution of the Work otherwise complies with
128
- the conditions stated in this License.
129
-
130
- 5. Submission of Contributions. Unless You explicitly state otherwise,
131
- any Contribution intentionally submitted for inclusion in the Work
132
- by You to the Licensor shall be under the terms and conditions of
133
- this License, without any additional terms or conditions.
134
- Notwithstanding the above, nothing herein shall supersede or modify
135
- the terms of any separate license agreement you may have executed
136
- with Licensor regarding such Contributions.
137
-
138
- 6. Trademarks. This License does not grant permission to use the trade
139
- names, trademarks, service marks, or product names of the Licensor,
140
- except as required for reasonable and customary use in describing the
141
- origin of the Work and reproducing the content of the NOTICE file.
142
-
143
- 7. Disclaimer of Warranty. Unless required by applicable law or
144
- agreed to in writing, Licensor provides the Work (and each
145
- Contributor provides its Contributions) on an "AS IS" BASIS,
146
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
- implied, including, without limitation, any warranties or conditions
148
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
- PARTICULAR PURPOSE. You are solely responsible for determining the
150
- appropriateness of using or redistributing the Work and assume any
151
- risks associated with Your exercise of permissions under this License.
152
-
153
- 8. Limitation of Liability. In no event and under no legal theory,
154
- whether in tort (including negligence), contract, or otherwise,
155
- unless required by applicable law (such as deliberate and grossly
156
- negligent acts) or agreed to in writing, shall any Contributor be
157
- liable to You for damages, including any direct, indirect, special,
158
- incidental, or consequential damages of any character arising as a
159
- result of this License or out of the use or inability to use the
160
- Work (including but not limited to damages for loss of goodwill,
161
- work stoppage, computer failure or malfunction, or any and all
162
- other commercial damages or losses), even if such Contributor
163
- has been advised of the possibility of such damages.
164
-
165
- 9. Accepting Warranty or Additional Liability. While redistributing
166
- the Work or Derivative Works thereof, You may choose to offer,
167
- and charge a fee for, acceptance of support, warranty, indemnity,
168
- or other liability obligations and/or rights consistent with this
169
- License. However, in accepting such obligations, You may act only
170
- on Your own behalf and on Your sole responsibility, not on behalf
171
- of any other Contributor, and only if You agree to indemnify,
172
- defend, and hold each Contributor harmless for any liability
173
- incurred by, or claims asserted against, such Contributor by reason
174
- of your accepting any such warranty or additional liability.
175
-
176
- END OF TERMS AND CONDITIONS
177
-
178
- APPENDIX: How to apply the Apache License to your work.
179
-
180
- To apply the Apache License to your work, attach the following
181
- boilerplate notice, with the fields enclosed by brackets "[]"
182
- replaced with your own identifying information. (Don't include
183
- the brackets!) The text should be enclosed in the appropriate
184
- comment syntax for the file format. We also recommend that a
185
- file or class name and description of purpose be included on the
186
- same "printed page" as the copyright notice for easier
187
- identification within third-party archives.
188
-
189
- Copyright [yyyy] [name of copyright owner]
190
-
191
- Licensed under the Apache License, Version 2.0 (the "License");
192
- you may not use this file except in compliance with the License.
193
- You may obtain a copy of the License at
194
-
195
- https://www.apache.org/licenses/LICENSE-2.0
196
-
197
- Unless required by applicable law or agreed to in writing, software
198
- distributed under the License is distributed on an "AS IS" BASIS,
199
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
- See the License for the specific language governing permissions and
201
- limitations under the License.
data/OVERVIEW.md DELETED
@@ -1,390 +0,0 @@
1
- # Google Cloud Translation API
2
-
3
- [Google Cloud Translation API](https://cloud.google.com/translation/)
4
- provides a simple, programmatic interface for translating an arbitrary
5
- string into any supported language. It is highly responsive, so websites
6
- and applications can integrate with Translation API for fast, dynamic
7
- translation of source text. Language detection is also available in cases
8
- where the source language is unknown.
9
-
10
- Translation API supports more than one hundred different languages, from
11
- Afrikaans to Zulu. Used in combination, this enables translation between
12
- thousands of language pairs. Also, you can send in HTML and receive HTML
13
- with translated text back. You don't need to extract your source text or
14
- reassemble the translated content.
15
-
16
- The google-cloud-translate 2.0 gem contains a generated v3 client and a legacy hand-written v2 client.
17
- To use the legacy v2 client, call {Google::Cloud::Translate.new} and specify `version: :v2`.
18
- See [Migrating to Translation v3](https://cloud.google.com/translate/docs/migrate-to-v3) for details regarding differences between v2 and v3.
19
-
20
- ## Authenticating
21
-
22
- Like other Cloud Platform services, Google Cloud Translation API supports
23
- authentication using a project ID and OAuth 2.0 credentials. In addition,
24
- it supports authentication using a public API access key. (If both the API
25
- key and the project and OAuth 2.0 credentials are provided, the API key
26
- will be used.) Instructions and configuration options are covered in the
27
- {file:AUTHENTICATION.md Authentication Guide}.
28
-
29
- ## Using the v3 client
30
-
31
- The Cloud Translation API v3 includes several new features and updates:
32
-
33
- * Glossaries - Create a custom dictionary to correctly and consistently translate terms that are customer-specific.
34
- * Batch requests - Make an asynchronous request to translate large amounts of text.
35
- * AutoML models - Cloud Translation adds support for translating text with custom models that you create using AutoML Translation.
36
- * Labels - The Cloud Translation API supports adding user-defined labels (key-value pairs) to requests.
37
-
38
- ### Translating texts
39
-
40
- Cloud Translation v3 introduces support for translating text using custom AutoML Translation models, and for creating glossaries to ensure that the Cloud Translation API translates a customer's domain-specific terminology correctly.
41
-
42
- Performing a default translation:
43
-
44
- ```ruby
45
- require "google/cloud/translate"
46
-
47
- client = Google::Cloud::Translate.new
48
-
49
- project_id = "my-project-id"
50
- location_id = "us-central1"
51
-
52
- # The content to translate in string format
53
- contents = ["Hello, world!"]
54
- # Required. The BCP-47 language code to use for translation.
55
- target_language = "fr"
56
- parent = client.class.location_path project_id, location_id
57
-
58
- response = client.translate_text contents, target_language, parent
59
-
60
- # Display the translation for each input text provided
61
- response.translations.each do |translation|
62
- puts "Translated text: #{translation.translated_text}"
63
- end
64
- ```
65
-
66
- To use AutoML custom models you enable the [AutoML API](automl.googleapis.com) for your project before translating as follows:
67
-
68
- ```ruby
69
- require "google/cloud/translate"
70
-
71
- client = Google::Cloud::Translate.new
72
-
73
- project_id = "my-project-id"
74
- location_id = "us-central1"
75
- model_id = "my-automl-model-id"
76
-
77
- # The `model` type requested for this translation.
78
- model = "projects/#{project_id}/locations/#{location_id}/models/#{model_id}"
79
- # The content to translate in string format
80
- contents = ["Hello, world!"]
81
- # Required. The BCP-47 language code to use for translation.
82
- target_language = "fr"
83
- # Optional. The BCP-47 language code of the input text.
84
- source_language = "en"
85
- # Optional. Can be "text/plain" or "text/html".
86
- mime_type = "text/plain"
87
- parent = client.class.location_path project_id, location_id
88
-
89
- response = client.translate_text contents, target_language, parent,
90
- source_language_code: source_language, model: model, mime_type: mime_type
91
-
92
- # Display the translation for each input text provided
93
- response.translations.each do |translation|
94
- puts "Translated text: #{translation.translated_text}"
95
- end
96
- ```
97
-
98
- To use a glossary you need to create a Google Cloud Storage bucket and grant your service account access to it before translating as follows:
99
-
100
- ```ruby
101
- require "google/cloud/translate"
102
-
103
- client = Google::Cloud::Translate.new
104
-
105
- project_id = "my-project-id"
106
- location_id = "us-central1"
107
- glossary_id = "my-glossary-id"
108
-
109
- # The content to translate in string format
110
- contents = ["Hello, world!"]
111
- # Required. The BCP-47 language code to use for translation.
112
- target_language = "fr"
113
- # Optional. The BCP-47 language code of the input text.
114
- source_language = "en"
115
- glossary_config = {
116
- # Specifies the glossary used for this translation.
117
- glossary: client.class.glossary_path(project_id, location_id, glossary_id)
118
- }
119
- # Optional. Can be "text/plain" or "text/html".
120
- mime_type = "text/plain"
121
- parent = client.class.location_path project_id, location_id
122
-
123
- response = client.translate_text contents, target_language, parent,
124
- source_language_code: source_language, glossary_config: glossary_config, mime_type: mime_type
125
-
126
- # Display the translation for each input text provided
127
- response.translations.each do |translation|
128
- puts "Translated text: #{translation.translated_text}"
129
- end
130
- ```
131
-
132
- ### Batch translating texts
133
-
134
- Batch translation allows you to translate large amounts of text (with a limit of 1,000 files per batch), and to up to 10 different target languages.
135
- Batch translation also supports AutoML models and glossaries.
136
- To make batch requests you need to create a Google Cloud Storage bucket and grant your service account access to it before translating as follows:
137
-
138
- ```ruby
139
- require "google/cloud/translate"
140
-
141
- client = Google::Cloud::Translate.new
142
-
143
- input_uri = "gs://cloud-samples-data/text.txt"
144
- output_uri = "gs://my-bucket-id/path_to_store_results/"
145
- project_id = "my-project-id"
146
- location_id = "us-central1"
147
- source_lang = "en"
148
- target_lang = "ja"
149
-
150
- input_config = {
151
- gcs_source: {
152
- input_uri: input_uri
153
- },
154
- # Optional. Can be "text/plain" or "text/html".
155
- mime_type: "text/plain"
156
- }
157
- output_config = {
158
- gcs_destination: {
159
- output_uri_prefix: output_uri
160
- }
161
- }
162
- parent = client.class.location_path project_id, location_id
163
-
164
- operation = client.batch_translate_text \
165
- parent, source_lang, [target_lang], [input_config], output_config
166
-
167
- # Wait until the long running operation is done
168
- operation.wait_until_done!
169
-
170
- response = operation.response
171
-
172
- puts "Total Characters: #{response.total_characters}"
173
- puts "Translated Characters: #{response.translated_characters}"
174
- ```
175
-
176
- ### Detecting languages
177
-
178
- You can detect the language of a text string:
179
-
180
- ```ruby
181
- require "google/cloud/translate"
182
-
183
- client = Google::Cloud::Translate.new
184
-
185
- project_id = "my-project-id"
186
- location_id = "us-central1"
187
- # The text string for performing language detection
188
- content = "Hello, world!"
189
- # Optional. Can be "text/plain" or "text/html".
190
- mime_type = "text/plain"
191
-
192
- parent = client.class.location_path project_id, location_id
193
-
194
- response = client.detect_language parent, content: content, mime_type: mime_type
195
-
196
- # Display list of detected languages sorted by detection confidence.
197
- # The most probable language is first.
198
- response.languages.each do |language|
199
- # The language detected
200
- puts "Language Code: #{language.language_code}"
201
- # Confidence of detection result for this language
202
- puts "Confidence: #{language.confidence}"
203
- end
204
- ```
205
-
206
- ### Listing supported languages
207
-
208
- You can discover the [supported languages](https://cloud.google.com/translate/docs/languages) of the v3 API:
209
-
210
- ```ruby
211
- require "google/cloud/translate"
212
-
213
- client = Google::Cloud::Translate.new
214
-
215
- project_id = "my-project-id"
216
- location_id = "us-central1"
217
-
218
- parent = client.class.location_path project_id, location_id
219
-
220
- response = client.get_supported_languages parent
221
-
222
- # List language codes of supported languages
223
- response.languages.each do |language|
224
- puts "Language Code: #{language.language_code}"
225
- end
226
- ```
227
-
228
- ## Using the legacy v2 client
229
-
230
- ### Translating texts
231
-
232
- Translating text from one language to another is easy (and extremely
233
- fast.) The only required arguments to
234
- {Google::Cloud::Translate::V2::Api#translate} are a string and the [ISO
235
- 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) code of the
236
- language to which you wish to translate.
237
-
238
- ```ruby
239
- require "google/cloud/translate"
240
-
241
- translate = Google::Cloud::Translate.new version: :v2
242
-
243
- translation = translate.translate "Hello world!", to: "la"
244
-
245
- puts translation #=> Salve mundi!
246
-
247
- translation.from #=> "en"
248
- translation.origin #=> "Hello world!"
249
- translation.to #=> "la"
250
- translation.text #=> "Salve mundi!"
251
- ```
252
-
253
- You may want to use the `from` option to specify the language of the
254
- source text, as the following example illustrates. (Single words do not
255
- give Translation API much to work with.)
256
-
257
- ```ruby
258
- require "google/cloud/translate"
259
-
260
- translate = Google::Cloud::Translate.new version: :v2
261
-
262
- translation = translate.translate "chat", to: "en"
263
-
264
- translation.detected? #=> true
265
- translation.from #=> "en"
266
- translation.text #=> "chat"
267
-
268
- translation = translate.translate "chat", from: "fr", to: "en"
269
-
270
- translation.detected? #=> false
271
- translation.from #=> "fr"
272
- translation.text #=> "cat"
273
- ```
274
-
275
- You can pass multiple texts to {Google::Cloud::Translate::V2::Api#translate}.
276
-
277
- ```ruby
278
- require "google/cloud/translate"
279
-
280
- translate = Google::Cloud::Translate.new version: :v2
281
-
282
- translations = translate.translate "chien", "chat", from: "fr", to: "en"
283
-
284
- translations.size #=> 2
285
- translations[0].origin #=> "chien"
286
- translations[0].text #=> "dog"
287
- translations[1].origin #=> "chat"
288
- translations[1].text #=> "cat"
289
- ```
290
-
291
- By default, any HTML in your source text will be preserved.
292
-
293
- ```ruby
294
- require "google/cloud/translate"
295
-
296
- translate = Google::Cloud::Translate.new version: :v2
297
-
298
- translation = translate.translate "<strong>Hello</strong> world!",
299
- to: :la
300
- translation.text #=> "<strong>Salve</strong> mundi!"
301
- ```
302
-
303
- ### Detecting languages
304
-
305
- You can use {Google::Cloud::Translate::V2::Api#detect} to see which language
306
- the Translation API ranks as the most likely source language for a text.
307
- The `confidence` score is a float value between `0` and `1`.
308
-
309
- ```ruby
310
- require "google/cloud/translate"
311
-
312
- translate = Google::Cloud::Translate.new version: :v2
313
-
314
- detection = translate.detect "chat"
315
-
316
- detection.text #=> "chat"
317
- detection.language #=> "en"
318
- detection.confidence #=> 0.59922177
319
- ```
320
-
321
- You can pass multiple texts to {Google::Cloud::Translate::V2::Api#detect}.
322
-
323
- ```ruby
324
- require "google/cloud/translate"
325
-
326
- translate = Google::Cloud::Translate.new version: :v2
327
-
328
- detections = translate.detect "chien", "chat"
329
-
330
- detections.size #=> 2
331
- detections[0].text #=> "chien"
332
- detections[0].language #=> "fr"
333
- detections[0].confidence #=> 0.7109375
334
- detections[1].text #=> "chat"
335
- detections[1].language #=> "en"
336
- detections[1].confidence #=> 0.59922177
337
- ```
338
-
339
- ### Listing supported languages
340
-
341
- Translation API adds new languages frequently. You can use
342
- {Google::Cloud::Translate::V2::Api#languages} to query the list of supported
343
- languages.
344
-
345
- ```ruby
346
- require "google/cloud/translate"
347
-
348
- translate = Google::Cloud::Translate.new version: :v2
349
-
350
- languages = translate.languages
351
-
352
- languages.size #=> 104
353
- languages[0].code #=> "af"
354
- languages[0].name #=> nil
355
- ```
356
-
357
- To receive the names of the supported languages, as well as their [ISO
358
- 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) codes,
359
- provide the code for the language in which you wish to receive the names.
360
-
361
- ```ruby
362
- require "google/cloud/translate"
363
-
364
- translate = Google::Cloud::Translate.new version: :v2
365
-
366
- languages = translate.languages "en"
367
-
368
- languages.size #=> 104
369
- languages[0].code #=> "af"
370
- languages[0].name #=> "Afrikaans"
371
- ```
372
-
373
- ### Configuring retries and timeout
374
-
375
- You can configure how many times API requests may be automatically
376
- retried. When an API request fails, the response will be inspected to see
377
- if the request meets criteria indicating that it may succeed on retry,
378
- such as `500` and `503` status codes or a specific internal error code
379
- such as `rateLimitExceeded`. If it meets the criteria, the request will be
380
- retried after a delay. If another error occurs, the delay will be
381
- increased before a subsequent attempt, until the `retries` limit is
382
- reached.
383
-
384
- You can also set the request `timeout` value in seconds.
385
-
386
- ```ruby
387
- require "google/cloud/translate"
388
-
389
- translate = Google::Cloud::Translate.new version: :v2, retries: 10, timeout: 120
390
- ```