Skip to content

Commit a654a1c

Browse files
feat: Pre-Translation Report endpoint support (#320)
1 parent 8d54d00 commit a654a1c

5 files changed

Lines changed: 99 additions & 1 deletion

File tree

src/main/java/com/crowdin/client/translations/TranslationsApi.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import com.crowdin.client.translations.model.UploadTranslationsStringsRequest;
2626
import com.crowdin.client.translations.model.UploadTranslationsStringsResponse;
2727
import com.crowdin.client.translations.model.UploadTranslationsStringsResponseObject;
28+
import com.crowdin.client.translations.model.PreTranslationReportResponse;
29+
import com.crowdin.client.translations.model.PreTranslationReportResponseObject;
2830

2931
import java.util.Collections;
3032
import java.util.HashMap;
@@ -288,4 +290,24 @@ public ResponseObject<PreTranslation> editPreTranslation(Long projectId, String
288290
);
289291
return ResponseObject.of(preTranslationResponseObject.getData());
290292
}
293+
294+
/**
295+
* Pre-Translation Report
296+
*
297+
* @param projectId project identifier
298+
* @param preTranslationId pre-translation identifier
299+
* @return pre-translation report data
300+
* @see <ul>
301+
* <li><a href="https://developer.crowdin.com/api/v2/#tag/Translations/operation/api.projects.pre-translations.report.getReport" target="_blank"><b>API Documentation</b></a></li>
302+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#tag/Translations/operation/api.projects.pre-translations.report.getReport" target="_blank"><b>Enterprise API Documentation</b></a></li>
303+
* </ul>
304+
*/
305+
public ResponseObject<PreTranslationReportResponse> getPreTranslationReport(Long projectId, String preTranslationId) throws HttpException, HttpBadRequestException {
306+
PreTranslationReportResponseObject response = this.httpClient.get(
307+
this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report",
308+
new HttpRequestConfig(),
309+
PreTranslationReportResponseObject.class
310+
);
311+
return ResponseObject.of(response.getData());
312+
}
291313
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
import java.util.List;
5+
import java.util.Map;
6+
import com.crowdin.client.translationstatus.model.Category;
7+
8+
9+
@Data
10+
public class PreTranslationReportResponse {
11+
12+
private List<TargetLanguage> languages;
13+
private Method preTranslateType;
14+
15+
@Data
16+
public static class TargetLanguage {
17+
private String id;
18+
private List<File> files;
19+
private Map<String, Integer> skipped;
20+
private List<Category> skippedQaCheckCategories;
21+
}
22+
23+
@Data
24+
public static class File {
25+
private Long id;
26+
private Statistics statistics;
27+
}
28+
29+
@Data
30+
public static class Statistics {
31+
private Integer phrases;
32+
private Integer words;
33+
}
34+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
import com.crowdin.client.translations.model.PreTranslationReportResponse;
5+
6+
@Data
7+
public class PreTranslationReportResponseObject {
8+
private PreTranslationReportResponse data;
9+
}

src/test/java/com/crowdin/client/translations/TranslationsApiTest.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import com.crowdin.client.translations.model.UploadTranslationsResponse;
2626
import com.crowdin.client.translations.model.UploadTranslationsStringsRequest;
2727
import com.crowdin.client.translations.model.UploadTranslationsStringsResponse;
28+
import com.crowdin.client.translations.model.PreTranslationReportResponse;
29+
2830
import org.apache.http.client.methods.HttpDelete;
2931
import org.apache.http.client.methods.HttpGet;
3032
import org.apache.http.client.methods.HttpPatch;
@@ -69,7 +71,8 @@ public List<RequestMock> getMocks() {
6971
RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds/" + buildId, HttpDelete.METHOD_NAME),
7072
RequestMock.build(String.format("%s/projects/%d/translations/exports", this.url, projectId), HttpPost.METHOD_NAME, "api/translations/exportProjectTranslationRequest.json", "api/translations/exportProjectTranslationResponse.json"),
7173
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations", HttpGet.METHOD_NAME, "api/translations/listPreTranslations.json"),
72-
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpPatch.METHOD_NAME, "api/translations/editPreTranslationRequest.json", "api/translations/editPreTranslationResponse.json")
74+
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpPatch.METHOD_NAME, "api/translations/editPreTranslationRequest.json", "api/translations/editPreTranslationResponse.json"),
75+
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report", HttpGet.METHOD_NAME, "api/translations/preTranslationReportResponse.json")
7376
);
7477
}
7578

@@ -266,4 +269,16 @@ public void editPreTranslationTest() {
266269
assertEquals(language, preTranslationResponseObject.getData().getAttributes().getLanguageIds().get(0));
267270
assertEquals(fileId, preTranslationResponseObject.getData().getAttributes().getFileIds().get(0));
268271
}
272+
273+
@Test
274+
public void getPreTranslationReportTest() {
275+
ResponseObject<PreTranslationReportResponse> response = this.getTranslationsApi().getPreTranslationReport(projectId, preTranslationId);
276+
PreTranslationReportResponse report = response.getData();
277+
assertNotNull(report);
278+
assertEquals(Method.AI, report.getPreTranslateType());
279+
PreTranslationReportResponse.TargetLanguage lang = report.getLanguages().get(0);
280+
assertEquals(language, lang.getId());
281+
PreTranslationReportResponse.File file = lang.getFiles().get(0);
282+
assertEquals(fileId, file.getId());
283+
}
269284
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"data": {
3+
"languages": [
4+
{
5+
"id": "uk",
6+
"files": [
7+
{
8+
"id": "2",
9+
"statistics": { "phrases": 6, "words": 13 }
10+
}
11+
],
12+
"skipped": { "ai_error": 6 },
13+
"skippedQaCheckCategories": ["spellcheck"]
14+
}
15+
],
16+
"preTranslateType": "ai"
17+
}
18+
}

0 commit comments

Comments
 (0)