@@ -78,7 +78,25 @@ def process_dref_translation(model_name, instance_pk):
7878 return False
7979
8080
81- def _translate_related_objects (instance , visited = None ):
81+ def _translate_related_objects (
82+ instance ,
83+ visited = None ,
84+ auto_translate = True ,
85+ language = "en" ,
86+ ):
87+ """
88+ Sync the relateable translation fields for the given model instance.
89+ This function ensures that the translation fields are updated correctly
90+ based on the current language settings.
91+
92+ Args:
93+ instance: The model instance whose related objects need to be translated.
94+ visited: A set to keep track of visited instances to avoid infinite recursion.
95+ auto_translate: A boolean indicating whether to auto-translate related objects.
96+ language: The language code to set for the original language field.
97+
98+ """
99+
82100 if visited is None :
83101 visited = set ()
84102
@@ -102,15 +120,17 @@ def _translate_related_objects(instance, visited=None):
102120 if not field .many_to_many :
103121 if hasattr (related_value , TRANSLATOR_ORIGINAL_LANGUAGE_FIELD_NAME ):
104122 model_name = get_model_name (type (related_value ))
105- translate_model_fields (model_name , related_value .pk )
106- related_value .translation_module_original_language = "en"
123+ if auto_translate :
124+ translate_model_fields (model_name , related_value .id )
125+ related_value .translation_module_original_language = language
107126 related_value .save (update_fields = ["translation_module_original_language" ])
108- _translate_related_objects (related_value , visited )
127+ _translate_related_objects (related_value , visited , auto_translate , language )
109128 else :
110129 for related_obj in related_value .all ():
111130 if hasattr (related_obj , TRANSLATOR_ORIGINAL_LANGUAGE_FIELD_NAME ):
112131 model_name = get_model_name (type (related_obj ))
113- translate_model_fields (model_name , related_obj .pk )
114- related_obj .translation_module_original_language = "en"
132+ if auto_translate :
133+ translate_model_fields (model_name , related_obj .id )
134+ related_obj .translation_module_original_language = language
115135 related_obj .save (update_fields = ["translation_module_original_language" ])
116- _translate_related_objects (related_obj , visited )
136+ _translate_related_objects (related_obj , visited , auto_translate , language )
0 commit comments