Skip to content

Commit af566ed

Browse files
committed
Add an option to AiTranslate only a specific list of text units
1 parent 968e289 commit af566ed

File tree

5 files changed

+27
-5
lines changed

5 files changed

+27
-5
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ 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 = "The list of TmTextUnitIds to translate")
62+
List<Long> textUnitIds;
63+
5864
@Parameter(
5965
names = {"--use-batch"},
6066
arity = 1,
@@ -87,7 +93,7 @@ public void execute() throws CommandException {
8793
ProtoAiTranslateResponse protoAiTranslateResponse =
8894
repositoryAiTranslateClient.translateRepository(
8995
new RepositoryAiTranslateClient.ProtoAiTranslateRequest(
90-
repositoryParam, locales, sourceTextMaxCount, useBatch));
96+
repositoryParam, locales, sourceTextMaxCount, textUnitIds, useBatch));
9197

9298
PollableTask pollableTask = protoAiTranslateResponse.pollableTask();
9399
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: 15 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,10 @@ public void aiTranslateNoBatch(AiTranslateInput aiTranslateInput) {
161162
.flatMap(
162163
rl ->
163164
asyncProcessLocale(
164-
rl, aiTranslateInput.sourceTextMaxCountPerLocale(), openAIClientPool),
165+
rl,
166+
aiTranslateInput.sourceTextMaxCountPerLocale(),
167+
aiTranslateInput.tmTextUnitIds(),
168+
openAIClientPool),
165169
10)
166170
.then()
167171
.doOnTerminate(
@@ -174,6 +178,7 @@ public void aiTranslateNoBatch(AiTranslateInput aiTranslateInput) {
174178
Mono<Void> asyncProcessLocale(
175179
RepositoryLocale repositoryLocale,
176180
int sourceTextMaxCountPerLocale,
181+
List<Long> tmTextUnitIds,
177182
OpenAIClientPool openAIClientPool) {
178183

179184
Repository repository = repositoryLocale.getRepository();
@@ -187,7 +192,15 @@ Mono<Void> asyncProcessLocale(
187192
textUnitSearcherParameters.setRepositoryIds(repository.getId());
188193
textUnitSearcherParameters.setStatusFilter(StatusFilter.FOR_TRANSLATION);
189194
textUnitSearcherParameters.setLocaleId(repositoryLocale.getLocale().getId());
190-
textUnitSearcherParameters.setLimit(sourceTextMaxCountPerLocale);
195+
if (tmTextUnitIds != null) {
196+
logger.debug(
197+
"Using tmTextUnitIds: {} for ai translate repository: {}",
198+
tmTextUnitIds,
199+
repository.getName());
200+
textUnitSearcherParameters.setTmTextUnitIds(tmTextUnitIds);
201+
} else {
202+
textUnitSearcherParameters.setLimit(sourceTextMaxCountPerLocale);
203+
}
191204

192205
List<TextUnitDTO> textUnitDTOS = textUnitSearcher.search(textUnitSearcherParameters);
193206

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)