Jelajahi Sumber

refactor: update column translation to handle dynamic column indices and headers

mrh (aider) 1 tahun lalu
induk
melakukan
348fcbf47a
1 mengubah file dengan 20 tambahan dan 11 penghapusan
  1. 20 11
      mylib/new_col_translate.py

+ 20 - 11
mylib/new_col_translate.py

@@ -31,6 +31,7 @@ def read_csv_with_header(file_path: str, encoding: str = 'cp936') -> List[List[s
 
 def translate_columns_data(
     data: List[List[str]],
+    header: List[str],
     column_indices: List[int],
     start_row: int = 1,
     end_row: Optional[int] = None,
@@ -45,26 +46,33 @@ def translate_columns_data(
     
     logger.info(f"开始翻译 {start_row} 到 {end_row} 行的数据")
     
-    # 为每个列插入空
+    # 按顺序处理每一
     for i, col_index in enumerate(column_indices):
+        # 计算当前列的实际索引(考虑之前插入的列)
+        current_col_index = col_index + i
+        
+        # 插入新列
         for row in data:
-            row.insert(col_index + i + 1, '')
-    
-    # 逐个列翻译
-    for col_index in column_indices:
+            row.insert(current_col_index + 1, '')
+        
+        # 更新表头
+        header.insert(current_col_index + 1, f"{header[current_col_index]}_translated")
+        
         # 提取要翻译的文本
-        texts_to_translate = [row[col_index] for row in rows_to_translate]
-        logger.debug(f"待翻译文本示例(列 {col_index}):{texts_to_translate[:3]}")
+        texts_to_translate = [row[current_col_index] for row in rows_to_translate]
+        logger.debug(f"待翻译文本示例(列 {current_col_index}):{texts_to_translate[:3]}")
         
         # 批量翻译
         translated_texts = translator._batch_translate(texts_to_translate)
         
         # 将翻译结果插入新列
-        for i, row in enumerate(rows_to_translate):
-            row[col_index + 1] = translated_texts[i]
+        for j, row in enumerate(rows_to_translate):
+            row[current_col_index + 1] = translated_texts[j]
+        
+        logger.info(f"列 {current_col_index} 翻译完成")
     
     logger.info("所有列翻译完成")
-    return data
+    return data, header
 
 def save_csv(
     data: List[List[str]],
@@ -104,8 +112,9 @@ def process_csv(
         header, data = read_csv_with_header(input_file, encoding=encoding)
         
         # 翻译指定列
-        data = translate_columns_data(
+        data, header = translate_columns_data(
             data,
+            header,
             column_indices,
             start_row,
             end_row,