Skip to content

Commit 3cf651a

Browse files
committed
feat: new translation import api
1 parent d81fe0b commit 3cf651a

11 files changed

+300
-22
lines changed

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

Lines changed: 90 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,7 @@
55
import com.crowdin.client.core.http.exceptions.HttpBadRequestException;
66
import com.crowdin.client.core.http.exceptions.HttpException;
77
import com.crowdin.client.core.model.*;
8-
import com.crowdin.client.translations.model.ApplyPreTranslationRequest;
9-
import com.crowdin.client.translations.model.ApplyPreTranslationStringsBasedRequest;
10-
import com.crowdin.client.translations.model.BuildProjectDirectoryTranslationRequest;
11-
import com.crowdin.client.translations.model.BuildProjectFileTranslationRequest;
12-
import com.crowdin.client.translations.model.BuildProjectTranslationRequest;
13-
import com.crowdin.client.translations.model.ExportProjectTranslationRequest;
14-
import com.crowdin.client.translations.model.PreTranslation;
15-
import com.crowdin.client.translations.model.PreTranslationResponseList;
16-
import com.crowdin.client.translations.model.PreTranslationResponseObject;
17-
import com.crowdin.client.translations.model.PreTranslationStatus;
18-
import com.crowdin.client.translations.model.PreTranslationStatusResponseObject;
19-
import com.crowdin.client.translations.model.ProjectBuild;
20-
import com.crowdin.client.translations.model.ProjectBuildResponseList;
21-
import com.crowdin.client.translations.model.ProjectBuildResponseObject;
22-
import com.crowdin.client.translations.model.UploadTranslationsRequest;
23-
import com.crowdin.client.translations.model.UploadTranslationsResponse;
24-
import com.crowdin.client.translations.model.UploadTranslationsResponseObject;
25-
import com.crowdin.client.translations.model.UploadTranslationsStringsRequest;
26-
import com.crowdin.client.translations.model.UploadTranslationsStringsResponse;
27-
import com.crowdin.client.translations.model.UploadTranslationsStringsResponseObject;
28-
import com.crowdin.client.translations.model.PreTranslationReportResponse;
29-
import com.crowdin.client.translations.model.PreTranslationReportResponseObject;
8+
import com.crowdin.client.translations.model.*;
309

3110
import java.util.Collections;
3211
import java.util.HashMap;
@@ -158,6 +137,8 @@ public ResponseObject<ProjectBuild> buildProjectTranslation(Long projectId, Buil
158137
}
159138

160139
/**
140+
* @deprecated
141+
*
161142
* @param projectId project identifier
162143
* @param languageId language identifier
163144
* @param request request body
@@ -177,6 +158,9 @@ public ResponseObject<UploadTranslationsResponse> uploadTranslations(Long projec
177158
return ResponseObject.of(projectBuildResponseObject.getData());
178159
}
179160

161+
/**
162+
* @deprecated
163+
*/
180164
public ResponseObject<UploadTranslationsStringsResponse> uploadTranslationStringsBased(Long projectId, String languageId, UploadTranslationsStringsRequest request) throws HttpException, HttpBadRequestException {
181165
UploadTranslationsStringsResponseObject projectBuildResponseObject = this.httpClient.post(
182166
this.url + "/projects/" + projectId + "/translations/" + languageId,
@@ -310,4 +294,88 @@ public ResponseObject<PreTranslationReportResponse> getPreTranslationReport(Long
310294
);
311295
return ResponseObject.of(response.getData());
312296
}
297+
298+
/**
299+
* @param projectId project identifier
300+
* @param request request body
301+
* @return import translations
302+
* @see <ul>
303+
* <li><a href="https://support.crowdin.com/developer/api/v2/#tag/Translations/operation/api.projects.translations.imports" target="_blank"><b>API Documentation</b></a></li>
304+
* <li><a href="https://support.crowdin.com/developer/enterprise/api/v2/#tag/Translations/operation/api.projects.translations.enterprise.imports" target="_blank"><b>Enterprise API Documentation</b></a></li>
305+
* </ul>
306+
*/
307+
public ResponseObject<ImportTranslationsStatus> importTranslations(Long projectId, ImportTranslationsRequest request) throws HttpException, HttpBadRequestException {
308+
ImportTranslationsStatusResponseObject resp = this.httpClient.post(this.url + "/projects/" + projectId + "/translations/imports", request, new HttpRequestConfig(), ImportTranslationsStatusResponseObject.class);
309+
return ResponseObject.of(resp.getData());
310+
}
311+
312+
/**
313+
* @param projectId project identifier
314+
* @param request request body
315+
* @return import translations
316+
* @see <ul>
317+
* <li><a href="https://support.crowdin.com/developer/api/v2/string-based/#tag/Translations/operation/api.projects.translations.imports" target="_blank"><b>API Documentation</b></a></li>
318+
* <li><a href="https://support.crowdin.com/developer/enterprise/api/v2/string-based/#tag/Translations/operation/api.projects.translations.enterprise.imports" target="_blank"><b>Enterprise API Documentation</b></a></li>
319+
* </ul>
320+
*/
321+
public ResponseObject<ImportTranslationsStringsBasedStatus> importTranslations(Long projectId, ImportTranslationsStringsBasedRequest request) throws HttpException, HttpBadRequestException {
322+
ImportTranslationsStringsBasedStatusResponseObject resp = this.httpClient.post(this.url + "/projects/" + projectId + "/translations/imports", request, new HttpRequestConfig(), ImportTranslationsStringsBasedStatusResponseObject.class);
323+
return ResponseObject.of(resp.getData());
324+
}
325+
326+
/**
327+
* @param projectId project identifier
328+
* @param importId import identifier
329+
* @return import translations
330+
* @see <ul>
331+
* <li><a href="https://support.crowdin.com/developer/api/v2/#tag/Translations/operation/api.projects.translations.imports.get" target="_blank"><b>API Documentation</b></a></li>
332+
* <li><a href="https://support.crowdin.com/developer/enterprise/api/v2/#tag/Translations/operation/api.projects.translations.enterprise.imports.get" target="_blank"><b>Enterprise API Documentation</b></a></li>
333+
* </ul>
334+
*/
335+
public ResponseObject<ImportTranslationsStatus> importTranslationsStatus(Long projectId, String importId) throws HttpException, HttpBadRequestException {
336+
ImportTranslationsStatusResponseObject resp = this.httpClient.get(this.url + "/projects/" + projectId + "/translations/imports/" + importId, new HttpRequestConfig(), ImportTranslationsStatusResponseObject.class);
337+
return ResponseObject.of(resp.getData());
338+
}
339+
340+
/**
341+
* @param projectId project identifier
342+
* @param importId import identifier
343+
* @return import translations
344+
* @see <ul>
345+
* <li><a href="https://support.crowdin.com/developer/api/v2/string-based/#tag/Translations/operation/api.projects.translations.imports.get" target="_blank"><b>API Documentation</b></a></li>
346+
* <li><a href="https://support.crowdin.com/developer/enterprise/api/v2/string-based/#tag/Translations/operation/api.projects.translations.enterprise.imports.get" target="_blank"><b>Enterprise API Documentation</b></a></li>
347+
* </ul>
348+
*/
349+
public ResponseObject<ImportTranslationsStringsBasedStatus> importTranslationsStringsBasedStatus(Long projectId, String importId) throws HttpException, HttpBadRequestException {
350+
ImportTranslationsStringsBasedStatusResponseObject resp = this.httpClient.get(this.url + "/projects/" + projectId + "/translations/imports/" + importId, new HttpRequestConfig(), ImportTranslationsStringsBasedStatusResponseObject.class);
351+
return ResponseObject.of(resp.getData());
352+
}
353+
354+
/**
355+
* @param projectId project identifier
356+
* @param importId import identifier
357+
* @return import translations
358+
* @see <ul>
359+
* <li><a href="https://support.crowdin.com/developer/api/v2/#tag/Translations/operation/api.projects.translations.imports.report.get" target="_blank"><b>API Documentation</b></a></li>
360+
* <li><a href="https://support.crowdin.com/developer/enterprise/api/v2/#tag/Translations/operation/api.projects.translations.imports.report.get" target="_blank"><b>Enterprise API Documentation</b></a></li>
361+
* </ul>
362+
*/
363+
public ResponseObject<ImportTranslationsReportResponse> importTranslationsReport(Long projectId, String importId) throws HttpException, HttpBadRequestException {
364+
ImportTranslationsReportResponseObject resp = this.httpClient.get(this.url + "/projects/" + projectId + "/translations/imports/" + importId + "/report", new HttpRequestConfig(), ImportTranslationsReportResponseObject.class);
365+
return ResponseObject.of(resp.getData());
366+
}
367+
368+
/**
369+
* @param projectId project identifier
370+
* @param importId import identifier
371+
* @return import translations
372+
* @see <ul>
373+
* <li><a href="https://support.crowdin.com/developer/api/v2/string-based/#tag/Translations/operation/api.projects.translations.imports.report.get" target="_blank"><b>API Documentation</b></a></li>
374+
* <li><a href="https://support.crowdin.com/developer/enterprise/api/v2/string-based/#tag/Translations/operation/api.projects.translations.imports.report.get" target="_blank"><b>Enterprise API Documentation</b></a></li>
375+
* </ul>
376+
*/
377+
public ResponseObject<ImportTranslationsStringsBasedReportResponse> importTranslationsStringsBasedReport(Long projectId, String importId) throws HttpException, HttpBadRequestException {
378+
ImportTranslationsStringsBasedReportResponseObject resp = this.httpClient.get(this.url + "/projects/" + projectId + "/translations/imports/" + importId + "/report", new HttpRequestConfig(), ImportTranslationsStringsBasedReportResponseObject.class);
379+
return ResponseObject.of(resp.getData());
380+
}
313381
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import com.crowdin.client.core.http.impl.json.EmptyArrayToNullDeserializer;
4+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
5+
import lombok.Data;
6+
7+
import java.util.List;
8+
import java.util.Map;
9+
10+
11+
@Data
12+
public class ImportTranslationsReportResponse {
13+
14+
private List<TargetLanguage> languages;
15+
16+
@Data
17+
public static class TargetLanguage {
18+
private String id;
19+
private List<File> files;
20+
@JsonDeserialize(using = EmptyArrayToNullDeserializer.class)
21+
private Map<String, Integer> skipped;
22+
@JsonDeserialize(using = EmptyArrayToNullDeserializer.class)
23+
private Map<String, Integer> skippedQaCheckCategories;
24+
}
25+
26+
@Data
27+
public static class File {
28+
private Long id;
29+
private Statistics statistics;
30+
}
31+
32+
@Data
33+
public static class Statistics {
34+
private Integer phrases;
35+
private Integer words;
36+
}
37+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class ImportTranslationsReportResponseObject {
7+
private ImportTranslationsReportResponse data;
8+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
5+
import java.util.List;
6+
7+
@Data
8+
public class ImportTranslationsRequest {
9+
10+
private Long storageId;
11+
private List<String> languageIds;
12+
private Long fileId;
13+
private Boolean importEqSuggestions;
14+
private Boolean autoApproveImported;
15+
private Boolean translateHidden;
16+
private Boolean addToTm;
17+
18+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
5+
import java.util.Date;
6+
import java.util.List;
7+
8+
@Data
9+
public class ImportTranslationsStatus {
10+
11+
private String identifier;
12+
private String status;
13+
private Integer progress;
14+
private Attributes attributes;
15+
private Date createdAt;
16+
private Date updatedAt;
17+
private String startedAt;
18+
private String finishedAt;
19+
20+
@Data
21+
public static class Attributes {
22+
private Long storageId;
23+
private Long fileId;
24+
private Boolean importEqSuggestions;
25+
private Boolean autoApproveImported;
26+
private Boolean translateHidden;
27+
private Boolean addToTm;
28+
private List<String> languageIds;
29+
}
30+
}
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+
5+
@Data
6+
public class ImportTranslationsStatusResponseObject {
7+
8+
private ImportTranslationsStatus data;
9+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import com.crowdin.client.core.http.impl.json.EmptyArrayToNullDeserializer;
4+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
5+
import lombok.Data;
6+
7+
import java.util.List;
8+
import java.util.Map;
9+
10+
11+
@Data
12+
public class ImportTranslationsStringsBasedReportResponse {
13+
14+
private List<TargetLanguage> languages;
15+
16+
@Data
17+
public static class TargetLanguage {
18+
private String id;
19+
private List<Branch> branches;
20+
@JsonDeserialize(using = EmptyArrayToNullDeserializer.class)
21+
private Map<String, Integer> skipped;
22+
@JsonDeserialize(using = EmptyArrayToNullDeserializer.class)
23+
private Map<String, Integer> skippedQaCheckCategories;
24+
}
25+
26+
@Data
27+
public static class Branch {
28+
private Long id;
29+
private Statistics statistics;
30+
}
31+
32+
@Data
33+
public static class Statistics {
34+
private Integer phrases;
35+
private Integer words;
36+
}
37+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class ImportTranslationsStringsBasedReportResponseObject {
7+
private ImportTranslationsStringsBasedReportResponse data;
8+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
5+
import java.util.List;
6+
import java.util.Map;
7+
8+
@Data
9+
public class ImportTranslationsStringsBasedRequest {
10+
11+
private Long storageId;
12+
private List<String> languageIds;
13+
private Long branchId;
14+
private Boolean importEqSuggestions;
15+
private Boolean autoApproveImported;
16+
private Boolean translateHidden;
17+
private Boolean addToTm;
18+
private ImportTranslationsStringsBasedOptions importOptions;
19+
20+
@Data
21+
public static class ImportTranslationsStringsBasedOptions {
22+
private Map<String, Integer> scheme;
23+
}
24+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
5+
import java.util.Date;
6+
import java.util.List;
7+
8+
@Data
9+
public class ImportTranslationsStringsBasedStatus {
10+
11+
private String identifier;
12+
private String status;
13+
private Integer progress;
14+
private Attributes attributes;
15+
private Date createdAt;
16+
private Date updatedAt;
17+
private String startedAt;
18+
private String finishedAt;
19+
20+
@Data
21+
public static class Attributes {
22+
private Long storageId;
23+
private Long branchId;
24+
private Boolean importEqSuggestions;
25+
private Boolean autoApproveImported;
26+
private Boolean translateHidden;
27+
private Boolean addToTm;
28+
private List<String> languageIds;
29+
}
30+
}

0 commit comments

Comments
 (0)