Skip to content

Commit a596225

Browse files
committed
Add support for the model option
1 parent b6dc7e9 commit a596225

5 files changed

Lines changed: 43 additions & 6 deletions

File tree

google-cloud-translate/src/main/java/com/google/cloud/translate/Translate.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,19 @@ public static TranslateOption sourceLanguage(String sourceLanguage) {
8181
public static TranslateOption targetLanguage(String targetLanguage) {
8282
return new TranslateOption(TranslateRpc.Option.TARGET_LANGUAGE, targetLanguage);
8383
}
84+
85+
/**
86+
* Sets the language translation model. You can use this parameter to take advantage of Neural
87+
* Machine Translation. Possible values are {@code base} and {@code nmt}. Google Translate could
88+
* use a different model to translate your text, use {@link Translation#getModel()} to know
89+
* which model was used for translation. Please notice that you must be whitelisted to use this
90+
* parameter.
91+
*
92+
* @param model the language translation model
93+
*/
94+
public static TranslateOption model(String model) {
95+
return new TranslateOption(TranslateRpc.Option.MODEL, model);
96+
}
8497
}
8598

8699
/**

google-cloud-translate/src/main/java/com/google/cloud/translate/Translation.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.google.common.base.MoreObjects;
2222

2323
import java.io.Serializable;
24+
import java.util.List;
2425
import java.util.Objects;
2526

2627
/**
@@ -43,10 +44,12 @@ public Translation apply(TranslationsResource translationPb) {
4344

4445
private final String translatedText;
4546
private final String sourceLanguage;
47+
private final String model;
4648

47-
private Translation(String translatedText, String sourceLanguage) {
49+
private Translation(String translatedText, String sourceLanguage, String model) {
4850
this.translatedText = translatedText;
4951
this.sourceLanguage = sourceLanguage;
52+
this.model = model;
5053
}
5154

5255
/**
@@ -81,6 +84,18 @@ public String getSourceLanguage() {
8184
return sourceLanguage;
8285
}
8386

87+
/**
88+
* Returns the translation model used to translate the text. This value is only available if
89+
* {@link Translate.TranslateOption#model(String)} was passed to
90+
* {@link Translate#translate(List, Translate.TranslateOption...)}.
91+
*
92+
* <p>Please notice that {@link Translate.TranslateOption#model(String)} is only available to
93+
* whitelisted users.
94+
*/
95+
public String getModel() {
96+
return model;
97+
}
98+
8499
@Override
85100
public String toString() {
86101
return MoreObjects.toStringHelper(this)
@@ -108,7 +123,8 @@ public final boolean equals(Object obj) {
108123
}
109124

110125
static Translation fromPb(TranslationsResource translationPb) {
126+
// todo remove get("model") as soon as REST apiary supports model
111127
return new Translation(translationPb.getTranslatedText(),
112-
translationPb.getDetectedSourceLanguage());
128+
translationPb.getDetectedSourceLanguage(), (String) translationPb.get("model"));
113129
}
114130
}

google-cloud-translate/src/main/java/com/google/cloud/translate/spi/DefaultTranslateRpc.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.cloud.translate.spi;
1818

19+
import static com.google.cloud.translate.spi.TranslateRpc.Option.MODEL;
1920
import static com.google.cloud.translate.spi.TranslateRpc.Option.SOURCE_LANGUAGE;
2021
import static com.google.cloud.translate.spi.TranslateRpc.Option.TARGET_LANGUAGE;
2122
import static com.google.common.base.MoreObjects.firstNonNull;
@@ -118,13 +119,17 @@ public List<LanguagesResource> listSupportedLanguages(Map<Option, ?> optionMap)
118119
public List<TranslationsResource> translate(List<String> texts, Map<Option, ?> optionMap) {
119120
try {
120121
final String sourceLanguage = SOURCE_LANGUAGE.getString(optionMap);
122+
String model = MODEL.getString(optionMap);
121123
ImmutableMap.Builder<String, Object> contentBuilder = ImmutableMap.builder();
122124
contentBuilder.put("target",
123125
firstNonNull(TARGET_LANGUAGE.getString(optionMap), options.getTargetLanguage()));
124126
contentBuilder.put("q", texts);
125127
if (sourceLanguage != null) {
126128
contentBuilder.put("source", sourceLanguage);
127129
}
130+
if (model != null) {
131+
contentBuilder.put("model", model);
132+
}
128133
HttpRequest httpRequest = translate.getRequestFactory()
129134
.buildPostRequest(buildTargetUrl(""),
130135
new JsonHttpContent(translate.getJsonFactory(), contentBuilder.build()))

google-cloud-translate/src/main/java/com/google/cloud/translate/spi/TranslateRpc.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public interface TranslateRpc {
2727

2828
enum Option {
2929
SOURCE_LANGUAGE("source"),
30-
TARGET_LANGUAGE("target");
30+
TARGET_LANGUAGE("target"),
31+
MODEL("model");
3132

3233
private final String value;
3334

google-cloud-translate/src/test/java/com/google/cloud/translate/TranslateImplTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,11 @@ public class TranslateImplTest {
8686
TranslateOption.targetLanguage("en");
8787
private static final TranslateOption SOURCE_LANGUAGE_OPTION =
8888
TranslateOption.sourceLanguage("de");
89+
private static final TranslateOption MODEL_OPTION = TranslateOption.model("nmt");
8990
private static final Map<TranslateRpc.Option, ?> TRANSLATE_OPTIONS = ImmutableMap.of(
9091
TranslateRpc.Option.TARGET_LANGUAGE, TARGET_LANGUAGE_OPTION.getValue(),
91-
TranslateRpc.Option.SOURCE_LANGUAGE, SOURCE_LANGUAGE_OPTION.getValue());
92+
TranslateRpc.Option.SOURCE_LANGUAGE, SOURCE_LANGUAGE_OPTION.getValue(),
93+
TranslateRpc.Option.MODEL, "nmt");
9294

9395
private TranslateOptions options;
9496
private TranslateRpcFactory rpcFactoryMock;
@@ -285,7 +287,7 @@ public void testTranslateWithOptions() {
285287
EasyMock.replay(translateRpcMock);
286288
initializeService();
287289
assertEquals(TRANSLATION2,
288-
translate.translate(text, TARGET_LANGUAGE_OPTION, SOURCE_LANGUAGE_OPTION));
290+
translate.translate(text, TARGET_LANGUAGE_OPTION, SOURCE_LANGUAGE_OPTION, MODEL_OPTION));
289291
}
290292

291293
@Test
@@ -309,7 +311,7 @@ public void testTranslateListWithOptions() {
309311
EasyMock.replay(translateRpcMock);
310312
initializeService();
311313
assertEquals(ImmutableList.of(TRANSLATION2),
312-
translate.translate(texts, TARGET_LANGUAGE_OPTION, SOURCE_LANGUAGE_OPTION));
314+
translate.translate(texts, TARGET_LANGUAGE_OPTION, SOURCE_LANGUAGE_OPTION, MODEL_OPTION));
313315
}
314316

315317
@Test

0 commit comments

Comments
 (0)