diff --git a/crowdin_api/api_resources/translations/resource.py b/crowdin_api/api_resources/translations/resource.py index 347b10a..020da3c 100644 --- a/crowdin_api/api_resources/translations/resource.py +++ b/crowdin_api/api_resources/translations/resource.py @@ -5,6 +5,7 @@ from crowdin_api.api_resources.translations.types import ( FallbackLanguages, EditPreTranslationScheme, + UploadTranslationRequest, ) from crowdin_api.api_resources.translations.enums import ( CharTransformation, @@ -325,6 +326,7 @@ def upload_translation( importEqSuggestions: Optional[bool] = None, autoApproveImported: Optional[bool] = None, translateHidden: Optional[bool] = None, + addToTm: Optional[bool] = None, ): """ Upload Translations. @@ -332,19 +334,21 @@ def upload_translation( Link to documentation: https://developer.crowdin.com/api/v2/#operation/api.projects.translations.postOnLanguage """ - projectId = projectId or self.get_project_id() + request_data: UploadTranslationRequest = { + "storageId": storageId, + "fileId": fileId, + "importEqSuggestions": importEqSuggestions, + "autoApproveImported": autoApproveImported, + "translateHidden": translateHidden, + "addToTm": addToTm, + } + return self.requester.request( method="post", path=f"projects/{projectId}/translations/{languageId}", - request_data={ - "storageId": storageId, - "fileId": fileId, - "importEqSuggestions": importEqSuggestions, - "autoApproveImported": autoApproveImported, - "translateHidden": translateHidden, - }, + request_data=request_data, ) def download_project_translations( diff --git a/crowdin_api/api_resources/translations/tests/test_translations_resources.py b/crowdin_api/api_resources/translations/tests/test_translations_resources.py index 4838bad..2f35cea 100644 --- a/crowdin_api/api_resources/translations/tests/test_translations_resources.py +++ b/crowdin_api/api_resources/translations/tests/test_translations_resources.py @@ -322,6 +322,7 @@ def test_build_pseudo_project_translation( "importEqSuggestions": None, "autoApproveImported": None, "translateHidden": None, + "addToTm": None, }, ), ( @@ -331,6 +332,7 @@ def test_build_pseudo_project_translation( "importEqSuggestions": False, "autoApproveImported": False, "translateHidden": False, + "addToTm": False, }, { "storageId": 1, @@ -338,6 +340,55 @@ def test_build_pseudo_project_translation( "importEqSuggestions": False, "autoApproveImported": False, "translateHidden": False, + "addToTm": False, + }, + ), + ( + { + "storageId": 1, + "fileId": 2, + "importEqSuggestions": True, + "autoApproveImported": True, + "translateHidden": True, + "addToTm": True, + }, + { + "storageId": 1, + "fileId": 2, + "importEqSuggestions": True, + "autoApproveImported": True, + "translateHidden": True, + "addToTm": True, + }, + ), + ( + { + "storageId": 1, + "fileId": 2, + "addToTm": False, + }, + { + "storageId": 1, + "fileId": 2, + "importEqSuggestions": None, + "autoApproveImported": None, + "translateHidden": None, + "addToTm": False, + }, + ), + ( + { + "storageId": 1, + "fileId": 2, + "addToTm": True, + }, + { + "storageId": 1, + "fileId": 2, + "importEqSuggestions": None, + "autoApproveImported": None, + "translateHidden": None, + "addToTm": True, }, ), ), diff --git a/crowdin_api/api_resources/translations/types.py b/crowdin_api/api_resources/translations/types.py index 32d0182..d42b55a 100644 --- a/crowdin_api/api_resources/translations/types.py +++ b/crowdin_api/api_resources/translations/types.py @@ -1,7 +1,5 @@ -from typing import Iterable - +from typing import Iterable, Optional from crowdin_api.typing import TypedDict - from crowdin_api.api_resources.translations.enums import PreTranslationEditOperation @@ -13,3 +11,12 @@ class EditPreTranslationScheme(TypedDict): op: PreTranslationEditOperation path: str value: str + + +class UploadTranslationRequest(TypedDict): + storageId: int + fileId: int + importEqSuggestions: Optional[bool] + autoApproveImported: Optional[bool] + translateHidden: Optional[bool] + addToTm: Optional[bool]