Skip to content

Commit 5b47da8

Browse files
committed
Add an option to AiTranslate only a specific list of text units
1 parent 719ec38 commit 5b47da8

File tree

5 files changed

+22
-5
lines changed

5 files changed

+22
-5
lines changed

cli/src/main/java/com/box/l10n/mojito/cli/command/RepositoryAiTranslationCommand.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@ public class RepositoryAiTranslationCommand extends Command {
5555
+ "sending too many strings to MT)")
5656
int sourceTextMaxCount = 100;
5757

58+
@Parameter(
59+
names = {"--text-unit-ids"},
60+
arity = 1,
61+
description =
62+
"The list of TmTextUnitIds to translate")
63+
List<Long> textUnitIds;
64+
5865
@Parameter(
5966
names = {"--use-batch"},
6067
arity = 1,
@@ -87,7 +94,7 @@ public void execute() throws CommandException {
8794
ProtoAiTranslateResponse protoAiTranslateResponse =
8895
repositoryAiTranslateClient.translateRepository(
8996
new RepositoryAiTranslateClient.ProtoAiTranslateRequest(
90-
repositoryParam, locales, sourceTextMaxCount, useBatch));
97+
repositoryParam, locales, sourceTextMaxCount, textUnitIds, useBatch));
9198

9299
PollableTask pollableTask = protoAiTranslateResponse.pollableTask();
93100
commandHelper.waitForPollableTask(pollableTask.getId());

restclient/src/main/java/com/box/l10n/mojito/rest/client/RepositoryAiTranslateClient.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public record ProtoAiTranslateRequest(
3232
String repositoryName,
3333
List<String> targetBcp47tags,
3434
int sourceTextMaxCountPerLocale,
35+
List<Long> tmTextUnitIds,
3536
boolean useBatch) {}
3637

3738
public record ProtoAiTranslateResponse(PollableTask pollableTask) {}

webapp/src/main/java/com/box/l10n/mojito/rest/textunit/AiTranslateWS.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public ProtoAiTranslateResponse aiTranslate(
4343
protoAiTranslateRequest.repositoryName(),
4444
protoAiTranslateRequest.targetBcp47tags(),
4545
protoAiTranslateRequest.sourceTextMaxCountPerLocale(),
46+
protoAiTranslateRequest.tmTextUnitIds(),
4647
protoAiTranslateRequest.useBatch()));
4748

4849
return new ProtoAiTranslateResponse(pollableFuture.getPollableTask());
@@ -53,6 +54,7 @@ public record ProtoAiTranslateRequest(
5354
List<String> targetBcp47tags,
5455
int sourceTextMaxCountPerLocale,
5556
boolean useBatch,
57+
List<Long> tmTextUnitIds,
5658
boolean allLocales) {}
5759

5860
public record ProtoAiTranslateResponse(PollableTask pollableTask) {}

webapp/src/main/java/com/box/l10n/mojito/service/oaitranslate/AiTranslateService.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ public record AiTranslateInput(
126126
String repositoryName,
127127
List<String> targetBcp47tags,
128128
int sourceTextMaxCountPerLocale,
129+
List<Long> tmTextUnitIds,
129130
boolean useBatch) {}
130131

131132
public PollableFuture<Void> aiTranslateAsync(AiTranslateInput aiTranslateInput) {
@@ -161,7 +162,7 @@ public void aiTranslateNoBatch(AiTranslateInput aiTranslateInput) {
161162
.flatMap(
162163
rl ->
163164
asyncProcessLocale(
164-
rl, aiTranslateInput.sourceTextMaxCountPerLocale(), openAIClientPool),
165+
rl, aiTranslateInput.sourceTextMaxCountPerLocale(), aiTranslateInput.tmTextUnitIds(), openAIClientPool),
165166
10)
166167
.then()
167168
.doOnTerminate(
@@ -174,6 +175,7 @@ public void aiTranslateNoBatch(AiTranslateInput aiTranslateInput) {
174175
Mono<Void> asyncProcessLocale(
175176
RepositoryLocale repositoryLocale,
176177
int sourceTextMaxCountPerLocale,
178+
List<Long> tmTextUnitIds,
177179
OpenAIClientPool openAIClientPool) {
178180

179181
Repository repository = repositoryLocale.getRepository();
@@ -187,7 +189,12 @@ Mono<Void> asyncProcessLocale(
187189
textUnitSearcherParameters.setRepositoryIds(repository.getId());
188190
textUnitSearcherParameters.setStatusFilter(StatusFilter.FOR_TRANSLATION);
189191
textUnitSearcherParameters.setLocaleId(repositoryLocale.getLocale().getId());
190-
textUnitSearcherParameters.setLimit(sourceTextMaxCountPerLocale);
192+
if (tmTextUnitIds != null) {
193+
logger.debug("Using tmTextUnitIds: {} for ai translate repository: {}", tmTextUnitIds, repository.getName());
194+
textUnitSearcherParameters.setTmTextUnitIds(tmTextUnitIds);
195+
} else {
196+
textUnitSearcherParameters.setLimit(sourceTextMaxCountPerLocale);
197+
}
191198

192199
List<TextUnitDTO> textUnitDTOS = textUnitSearcher.search(textUnitSearcherParameters);
193200

webapp/src/test/java/com/box/l10n/mojito/service/oaitranslate/AiTranslateServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void aiTranslateBatch() throws ExecutionException, InterruptedException {
3333
aiTranslateService
3434
.aiTranslateAsync(
3535
new AiTranslateService.AiTranslateInput(
36-
tmTestData.repository.getName(), null, 100, true))
36+
tmTestData.repository.getName(), null, 100, null, true))
3737
.get();
3838
}
3939

@@ -47,7 +47,7 @@ public void aiTranslateNoBatch()
4747
aiTranslateService
4848
.aiTranslateAsync(
4949
new AiTranslateService.AiTranslateInput(
50-
tmTestData.repository.getName(), null, 100, false))
50+
tmTestData.repository.getName(), null, 100, null, false))
5151
.get();
5252
}
5353
}

0 commit comments

Comments
 (0)