1414 SplitSentences ,
1515 StyleRuleInfo ,
1616 TextResult ,
17+ TranslationMemoryInfo ,
1718 Usage ,
1819)
1920from . import http_client , util
@@ -264,6 +265,8 @@ def _check_language_and_formality(
264265 str , GlossaryInfo , MultilingualGlossaryInfo , None
265266 ] = None ,
266267 style_rule : Union [str , StyleRuleInfo , None ] = None ,
268+ translation_memory : Union [str , TranslationMemoryInfo , None ] = None ,
269+ translation_memory_threshold : Optional [int ] = None ,
267270 ) -> dict :
268271 # target_lang and source_lang are case insensitive
269272 target_lang = str (target_lang ).upper ()
@@ -304,7 +307,7 @@ def _check_language_and_formality(
304307
305308 self ._check_valid_languages (source_lang , target_lang )
306309
307- request_data = {"target_lang" : target_lang }
310+ request_data : dict = {"target_lang" : target_lang }
308311 if source_lang is not None :
309312 request_data ["source_lang" ] = source_lang
310313 if formality is not None :
@@ -319,6 +322,25 @@ def _check_language_and_formality(
319322 request_data ["style_id" ] = style_rule .style_id
320323 elif style_rule is not None :
321324 request_data ["style_id" ] = style_rule
325+ if isinstance (translation_memory , TranslationMemoryInfo ):
326+ request_data ["translation_memory_id" ] = (
327+ translation_memory .translation_memory_id
328+ )
329+ elif translation_memory is not None :
330+ request_data ["translation_memory_id" ] = translation_memory
331+ if translation_memory_threshold is not None :
332+ if translation_memory is None :
333+ raise ValueError (
334+ "translation_memory_threshold requires"
335+ " translation_memory"
336+ )
337+ if not (0 <= translation_memory_threshold <= 100 ):
338+ raise ValueError (
339+ "translation_memory_threshold must be between 0 and 100"
340+ )
341+ request_data ["translation_memory_threshold" ] = (
342+ translation_memory_threshold
343+ )
322344 return request_data
323345
324346 def _create_glossary (
@@ -383,6 +405,8 @@ def translate_text(
383405 ignore_tags : Union [str , List [str ], None ] = None ,
384406 model_type : Union [str , ModelType , None ] = None ,
385407 style_rule : Union [str , StyleRuleInfo , None ] = None ,
408+ translation_memory : Union [str , TranslationMemoryInfo , None ] = None ,
409+ translation_memory_threshold : Optional [int ] = None ,
386410 custom_instructions : Optional [List [str ]] = None ,
387411 extra_body_parameters : Optional [dict ] = None ,
388412 ) -> Union [TextResult , List [TextResult ]]:
@@ -413,6 +437,11 @@ def translate_text(
413437 translation. Must match specified source_lang and target_lang.
414438 :param style_rule: (Optional) style rule or style rule ID to use for
415439 translation.
440+ :param translation_memory: (Optional) translation memory or translation
441+ memory ID to use for translation.
442+ :param translation_memory_threshold: (Optional) minimum matching
443+ percentage for fuzzy matches from the translation memory (0-100).
444+ Recommended minimum is 75%.
416445 :param tag_handling: (Optional) Type of tags to parse before
417446 translation, only "xml" and "html" are currently available.
418447 :param tag_handling_version: (Optional) Version of tag handling
@@ -456,7 +485,13 @@ def translate_text(
456485 )
457486
458487 request_data = self ._check_language_and_formality (
459- source_lang , target_lang , formality , glossary , style_rule
488+ source_lang ,
489+ target_lang ,
490+ formality ,
491+ glossary ,
492+ style_rule ,
493+ translation_memory ,
494+ translation_memory_threshold ,
460495 )
461496 request_data ["text" ] = text
462497
@@ -478,11 +513,6 @@ def translate_text(
478513 request_data ["outline_detection" ] = bool (outline_detection )
479514 if model_type is not None :
480515 request_data ["model_type" ] = str (model_type )
481- if style_rule is not None :
482- if isinstance (style_rule , StyleRuleInfo ):
483- request_data ["style_id" ] = style_rule .style_id
484- else :
485- request_data ["style_id" ] = style_rule
486516
487517 def join_tags (tag_argument : Union [str , Iterable [str ]]) -> List [str ]:
488518 if isinstance (tag_argument , str ):
0 commit comments