2024-07-31 11:54:44 -03:00
|
|
|
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
|
|
|
|
|
2024-07-31 12:05:00 -03:00
|
|
|
master_col = target_lang_code
|
|
|
|
translated_col = f"{target_lang_code} Translated"
|
2024-07-31 11:54:44 -03:00
|
|
|
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
|
2024-07-31 12:05:00 -03:00
|
|
|
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]
|
2024-07-31 11:54:44 -03:00
|
|
|
|
2024-07-31 13:33:59 -03:00
|
|
|
if str(valor_original) != str(valor_traducido):
|
2024-07-31 12:05:00 -03:00
|
|
|
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}"')
|
2024-07-31 11:54:44 -03:00
|
|
|
|
|
|
|
# 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"
|
|
|
|
|
2024-07-31 13:33:59 -03:00
|
|
|
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
|
|
|
|
|
2024-07-31 11:54:44 -03:00
|
|
|
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 )
|