diff --git a/__pycache__/x6_update_from_master.cpython-310.pyc b/__pycache__/x6_update_from_master.cpython-310.pyc index bdd55f8..d51343b 100644 Binary files a/__pycache__/x6_update_from_master.cpython-310.pyc and b/__pycache__/x6_update_from_master.cpython-310.pyc differ diff --git a/translation_config.json b/translation_config.json index 2cf5701..5f3b3c0 100644 --- a/translation_config.json +++ b/translation_config.json @@ -1,12 +1,12 @@ { "codigo_tipo_PLC": "siemens", "codigo_columna_maestra": "it-IT", - "codigo_idioma_seleccionado": "es-ES", + "codigo_idioma_seleccionado": "tr-TR", "codigo_idioma_secundario": "en-GB", - "work_dir": "C:/Trabajo/VM/38 - 93998 - Sipa - PortoRico/Reporte/Language", + "work_dir": "C:/Trabajo/VM/TIA.Example.Test/Report/94057", "master_name": "1_hmi_master_translates_siemens.xlsx", - "translate_name": "2_master_export2translate_siemens_es-ES.xlsx", - "auto_translate_name": "3_master_export2translate_translated_siemens_es-ES.xlsx", + "translate_name": "2_master_export2translate_siemens_tr-TR.xlsx", + "auto_translate_name": "3_master_export2translate_translated_siemens_tr-TR.xlsx", "nivel_afinidad_minimo": 0.5, "traducir_todo": false } \ No newline at end of file diff --git a/x6_update_from_master.py b/x6_update_from_master.py index 363b48d..4344ba0 100644 --- a/x6_update_from_master.py +++ b/x6_update_from_master.py @@ -40,49 +40,71 @@ def update_from_master(config: TranslationConfig, archivo_to_update): for index, fila in df_to_update.iterrows(): valor_original = fila[col_clave] + + # Si el valor original está vacío, mantener vacío en el destino + if pd.isna(valor_original) or str(valor_original).strip() == "": + if pd.notna(fila[config.codigo_idioma_seleccionado]) and str(fila[config.codigo_idioma_seleccionado]).strip() != "": + df_changes.at[index, "Original_Value"] = fila[config.codigo_idioma_seleccionado] + df_to_update.at[index, config.codigo_idioma_seleccionado] = "" + df_changes.at[index, config.codigo_idioma_seleccionado] = "" + celdas_modificadas.append(index) + logger.info(f"Actualizado a vacío: Fila {index}") + progress_bar.increment() + continue + clave = fc.compactar_celda_clave(config.codigo_tipo_PLC, valor_original) - - if not pd.isna(clave) and clave in df_maestro[col_clave].values: + if clave in df_maestro[col_clave].values: indice_maestro = df_maestro.index[df_maestro[col_clave] == clave].tolist()[0] - valor_traducido_compacto = df_maestro.loc[indice_maestro, master_col] + valor_maestro = df_maestro.loc[indice_maestro, master_col] - if pd.isna(valor_traducido_compacto): - continue - - valor_traducido = fc.decompactar_celda_traducida( - config.codigo_tipo_PLC, - celda_original=valor_original, - celda_traducida=valor_traducido_compacto - ) - - if not pd.isna(valor_traducido) and fila[config.codigo_idioma_seleccionado] != valor_traducido: - okToSave, Error = fc.verificar_celda_traducida( - config.codigo_tipo_PLC, clave, valor_traducido_compacto - ) - if okToSave: - # Store original value in changes DataFrame + # Si el valor en el maestro está vacío, mantener vacío en el destino + if pd.isna(valor_maestro) or str(valor_maestro).strip() == "": + if pd.notna(fila[config.codigo_idioma_seleccionado]) and str(fila[config.codigo_idioma_seleccionado]).strip() != "": df_changes.at[index, "Original_Value"] = fila[config.codigo_idioma_seleccionado] - - # Update both DataFrames - df_to_update.at[index, config.codigo_idioma_seleccionado] = valor_traducido - df_changes.at[index, config.codigo_idioma_seleccionado] = valor_traducido - + df_to_update.at[index, config.codigo_idioma_seleccionado] = "" + df_changes.at[index, config.codigo_idioma_seleccionado] = "" celdas_modificadas.append(index) - logger.info(f"Actualizado: Fila {index} : Clave: {clave}") + logger.info(f"Actualizado a vacío: Fila {index} : Clave: {clave}") + else: + valor_traducido = fc.decompactar_celda_traducida( + config.codigo_tipo_PLC, + celda_original=valor_original, + celda_traducida=valor_maestro + ) + + if not pd.isna(valor_traducido) and fila[config.codigo_idioma_seleccionado] != valor_traducido: + okToSave, Error = fc.verificar_celda_traducida( + config.codigo_tipo_PLC, clave, valor_maestro + ) + if okToSave: + # Store original value in changes DataFrame + df_changes.at[index, "Original_Value"] = fila[config.codigo_idioma_seleccionado] + + # Update both DataFrames + df_to_update.at[index, config.codigo_idioma_seleccionado] = valor_traducido + df_changes.at[index, config.codigo_idioma_seleccionado] = valor_traducido + + celdas_modificadas.append(index) + logger.info(f"Actualizado: Fila {index} : Clave: {clave}") progress_bar.increment() progress_bar.finish() + # [Rest of the code for saving files remains the same...] # Save updated file with formatting nombre, extension = os.path.splitext(archivo_to_update) nuevo_nombre = f"{nombre}_import{extension}" with pd.ExcelWriter(nuevo_nombre, engine='openpyxl') as writer: - df_to_update.to_excel(writer, sheet_name="User Texts", index=False) + # Save with default sheet name first + df_to_update.to_excel(writer, index=False) workbook = writer.book - worksheet = writer.sheets["User Texts"] + # Get the active sheet + worksheet = workbook.active + # Rename it to "User Texts" + worksheet.title = "User Texts" # Format columns from openpyxl.utils import get_column_letter @@ -110,10 +132,14 @@ def update_from_master(config: TranslationConfig, archivo_to_update): changes_nombre = f"{nombre}_changes{extension}" if len(celdas_modificadas) > 0: with pd.ExcelWriter(changes_nombre, engine="openpyxl") as writer: + # Save with default sheet name first df_changes.to_excel(writer, index=False) workbook = writer.book - worksheet = writer.sheets["User Texts"] + # Get the active sheet + worksheet = workbook.active + # Rename it to "User Texts" + worksheet.title = "User Texts" light_blue = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid")