import funciones_comunes import pandas as pd import os import re import logging from manejoArchivos import select_file def configurar_logger(ruta_log): os.makedirs(".\\data", exist_ok=True) logger = logging.getLogger('.\\data\\importacion_logger') logger.setLevel(logging.INFO) fh = logging.FileHandler(ruta_log, encoding='utf-8') fh.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s - %(message)s') fh.setFormatter(formatter) logger.addHandler(fh) return logger def revertir_transformaciones(texto, digitos, secciones): # Revertir <> a [[digits]] for digito in digitos: texto = texto.replace('<>', digito, 1) # Revertir <#> a <...> usando las secciones originales for seccion in secciones: texto = texto.replace('<#>', f'<{seccion}>', 1) return texto def importar_traduccion(archivo_maestro, archivo_traduccion, target_lang_code, nivel_afinidad_minimo): if not os.path.exists(archivo_maestro): print("El archivo maestro no existe.") return master_col = target_lang_code translated_col = f"{target_lang_code} Translated" affinity_col = f"{target_lang_code} Affinity" df_maestro = pd.read_excel(archivo_maestro) df_traduccion = pd.read_excel(archivo_traduccion) # Configurar el logger directorio = os.path.dirname(archivo_maestro) nombre_log = os.path.join(directorio, 'importacion_traduccion.log') logger = configurar_logger(nombre_log) # Iterar sobre las filas del archivo de traducción para actualizar el maestro for index, fila in df_traduccion.iterrows(): clave = fila[df_maestro.columns[0]] if clave in df_maestro[df_maestro.columns[0]].values: # Comprobar afinidad y valores no nulos/vacíos if fila[affinity_col] >= nivel_afinidad_minimo and pd.notnull(fila[translated_col]) and fila[translated_col] != "": valor_traducido = fila[translated_col] valor_original = df_maestro.loc[df_maestro[df_maestro.columns[0]] == clave, master_col].values[0] if str(valor_original) != str(valor_traducido): df_maestro.loc[df_maestro[df_maestro.columns[0]] == clave, master_col] = valor_traducido logger.info(f'Fila {index}, Columna {translated_col}: "{valor_original}" actualizado a "{valor_traducido}"') # Guardar el archivo maestro actualizado funciones_comunes.save_dataframe_with_retries(df_maestro,output_path=archivo_maestro) print(f"Traducciones importadas y archivo maestro actualizado: {archivo_maestro}. Detalles de los cambios en {nombre_log}") if __name__ == "__main__": archivo_maestro = ".\\data\\1_hmi_master_translates.xlsx" archivo_traduccion = ".\\data\\3_master_export2translate_translated.xlsx" nivel_afinidad_minimo = input("Introduce el nivel minimo de afinidad para importar (presiona Enter para usar el valor por defecto 0.5): ") nivel_afinidad_minimo = float(nivel_afinidad_minimo) if nivel_afinidad_minimo else 0.5 funciones_comunes.mostrar_idiomas() seleccion_idioma = int(input("Introduce el número del idioma de destino: ")) if seleccion_idioma not in funciones_comunes.IDIOMAS: print("Selección inválida.") else: target_lang, target_lang_code = funciones_comunes.IDIOMAS[seleccion_idioma] importar_traduccion(archivo_maestro, archivo_traduccion, target_lang_code, nivel_afinidad_minimo )