Funciona con AllenBradley

This commit is contained in:
Miguel 2024-09-20 14:30:33 +02:00
parent c037c001fc
commit db0d5026b0
12 changed files with 12319 additions and 17 deletions

View File

@ -5,6 +5,97 @@ idioma_var = Spanish
idioma_var2 = English_US idioma_var2 = English_US
[TextContent] [TextContent]
output_text = output_text = Ejecutando x1_importar_to_master.run()
Se han agregado 929 nuevas filas al archivo maestro.
Ejecutando x2_master_export2translate.run()
Archivo guardado exitosamente.
Archivo exportado para traducción: .\data\2_master_export2translate_allenbradley.xlsx
Ejecutando x3_llm_auto_translate.run()
Número total de textos a traducir: 621
Traduciendo : celdas desde: 0 a :20.
Traduciendo : celdas desde: 20 a :40.
Traduciendo : celdas desde: 40 a :60.
Traduciendo : celdas desde: 60 a :80.
Traduciendo : celdas desde: 80 a :100.
Traduciendo : celdas desde: 100 a :120.
Traduciendo : celdas desde: 120 a :140.
Traduciendo : celdas desde: 140 a :160.
Traduciendo : celdas desde: 160 a :180.
Traduciendo : celdas desde: 180 a :200.
Traduciendo : celdas desde: 200 a :220.
Traduciendo : celdas desde: 220 a :240.
Traduciendo : celdas desde: 240 a :260.
Error en el intento 1 de traducción de celdas desde 240 a 260: La cantidad de traducciones recibidas no coincide con la cantidad de textos enviados.. Reintentando...
Traduciendo : celdas desde: 260 a :280.
Traduciendo : celdas desde: 280 a :300.
Traduciendo : celdas desde: 300 a :320.
Traduciendo : celdas desde: 320 a :340.
Traduciendo : celdas desde: 340 a :360.
Traduciendo : celdas desde: 360 a :380.
Traduciendo : celdas desde: 380 a :400.
Traduciendo : celdas desde: 400 a :420.
Traduciendo : celdas desde: 420 a :440.
Traduciendo : celdas desde: 440 a :460.
Traduciendo : celdas desde: 460 a :480.
Traduciendo : celdas desde: 480 a :500.
Traduciendo : celdas desde: 500 a :520.
Traduciendo : celdas desde: 520 a :540.
Traduciendo : celdas desde: 540 a :560.
Traduciendo : celdas desde: 560 a :580.
Traduciendo : celdas desde: 580 a :600.
Traduciendo : celdas desde: 600 a :620.
Traduciendo : celdas desde: 620 a :621.
Afinidad: celdas desde: 0 a :20.
Error en el intento 1 de Afinidad de celdas desde 0 a 20: La cantidad de afinidades recibidas no coincide con la cantidad de textos enviados.. Reintentando...
Error en todos los intentos de Afinidad de celdas desde 0 a 20: La cantidad de afinidades recibidas no coincide con la cantidad de textos enviados.
Afinidad: celdas desde: 20 a :40.
Afinidad: celdas desde: 40 a :60.
Afinidad: celdas desde: 60 a :80.
Afinidad: celdas desde: 80 a :100.
Error en el intento 1 de Afinidad de celdas desde 80 a 100: La cantidad de afinidades recibidas no coincide con la cantidad de textos enviados.. Reintentando...
Error en todos los intentos de Afinidad de celdas desde 80 a 100: La cantidad de afinidades recibidas no coincide con la cantidad de textos enviados.
Afinidad: celdas desde: 100 a :120.
Afinidad: celdas desde: 120 a :140.
Error en el intento 1 de Afinidad de celdas desde 120 a 140: La cantidad de afinidades recibidas no coincide con la cantidad de textos enviados.. Reintentando...
Error en todos los intentos de Afinidad de celdas desde 120 a 140: La cantidad de afinidades recibidas no coincide con la cantidad de textos enviados.
Afinidad: celdas desde: 140 a :160.
Afinidad: celdas desde: 160 a :180.
Afinidad: celdas desde: 180 a :200.
Afinidad: celdas desde: 200 a :220.
Afinidad: celdas desde: 220 a :240.
Afinidad: celdas desde: 240 a :260.
Afinidad: celdas desde: 260 a :280.
Afinidad: celdas desde: 280 a :300.
Afinidad: celdas desde: 300 a :320.
Afinidad: celdas desde: 320 a :340.
Afinidad: celdas desde: 340 a :360.
Afinidad: celdas desde: 360 a :380.
Error en el intento 1 de Afinidad de celdas desde 360 a 380: La cantidad de afinidades recibidas no coincide con la cantidad de textos enviados.. Reintentando...
Error en todos los intentos de Afinidad de celdas desde 360 a 380: La cantidad de afinidades recibidas no coincide con la cantidad de textos enviados.
Afinidad: celdas desde: 380 a :400.
Afinidad: celdas desde: 400 a :420.
Afinidad: celdas desde: 420 a :440.
Afinidad: celdas desde: 440 a :460.
Afinidad: celdas desde: 460 a :480.
Afinidad: celdas desde: 480 a :500.
Afinidad: celdas desde: 500 a :520.
Afinidad: celdas desde: 520 a :540.
Afinidad: celdas desde: 540 a :560.
Afinidad: celdas desde: 560 a :580.
Afinidad: celdas desde: 580 a :600.
Afinidad: celdas desde: 600 a :620.
Afinidad: celdas desde: 620 a :621.
Archivo guardado exitosamente.
Archivo traducido guardado en: .\data\3_master_export2translate_translated_allenbradley.xlsx
Ejecutando x4_integrate_translates_to_master.run()
Archivo guardado exitosamente.
Traducciones importadas y archivo maestro actualizado: .\data\1_hmi_master_translates_allenbradley.xlsx.
Ejecutando x5_complete_empty_cells_master.run()
Archivo guardado exitosamente.
Traducciones importadas y archivo maestro actualizado: .\data\1_hmi_master_translates_allenbradley.xlsx.
Ejecutando x6_update_from_master.run()
Archivo guardado exitosamente.
Se han actualizado las filas en C:/Trabajo/VM/31 - 9.3953 - Omega - Mexico - (ABradley)/Reporte/HMI/HMI_93953_25.xlsx desde el archivo maestro.

Binary file not shown.

Binary file not shown.

View File

@ -174,6 +174,19 @@ def verificar_celda_traducida(tipo_PLC, celda_clave, celda_traducida):
else : else :
return verificar_celda_traducida_ab(celda_clave, celda_traducida) return verificar_celda_traducida_ab(celda_clave, celda_traducida)
def texto_requiere_traduccion(tipo_PLC, texto, logger):
if tipo_PLC == "siemens" :
return texto_requiere_traduccion_siemens(texto, logger)
else :
return texto_requiere_traduccion_ab(texto, logger)
def texto_con_campos_especiales(tipo_PLC, texto):
if tipo_PLC == "siemens" :
return texto_con_campos_especiales_siemens(texto)
else :
return texto_con_campos_especiales_ab(texto)
# SIEMENS # SIEMENS
# #
@ -194,6 +207,25 @@ def compactar_celda_clave_siemens(celda_original):
return re.sub(r"<(.*?)>|\d+", reemplazar, str(celda_original)) return re.sub(r"<(.*?)>|\d+", reemplazar, str(celda_original))
# SIEMENS
def texto_requiere_traduccion_siemens(texto, logger):
palabras = re.findall(r"\b\w{4,}\b", texto)
campos_especiales = re.findall(r"<.*?>", texto)
requiere_traduccion = len(palabras) > 0 or len(campos_especiales) != len(
re.findall(r"<#>", texto)
)
logger.debug(
f"Decisión de traducción para texto '{texto}': {'' if requiere_traduccion else 'No'} (palabras > 3 letras: {len(palabras) > 0}, solo campos especiales: {len(campos_especiales) == len(re.findall(r'<#>', texto))})"
)
return requiere_traduccion
# SIEMENS
def texto_con_campos_especiales_siemens(texto):
campos_especiales = len(re.findall(r"<#>", texto) )
return campos_especiales > 0
# SIEMENS # SIEMENS
# #
# Transforma: "A[[digits]]/[[digits]]/[[digits]] Air - M<field ref="[[digits]]" /> - Necessaria Manutenzione Filtro" -> # Transforma: "A[[digits]]/[[digits]]/[[digits]] Air - M<field ref="[[digits]]" /> - Necessaria Manutenzione Filtro" ->
@ -273,6 +305,26 @@ def verificar_celda_traducida_siemens(celda_clave, celda_traducida):
text_error += f" - Tags en clave: {tags_clave}, Tags en traducida: {tags_traducida}" text_error += f" - Tags en clave: {tags_clave}, Tags en traducida: {tags_traducida}"
return False, text_error return False, text_error
# ALLEN BRADLEY
def texto_requiere_traduccion_ab(texto, logger):
palabras = re.findall(r"\b\w{4,}\b", texto)
campos_especiales = re.findall(r"/\*.*?\*/", texto)
total_palabras_largas = len(palabras) > 0
total_campos_especiales = len(campos_especiales)
total_campos_marcados = len(re.findall(r"/\*#\*/", texto))
solo_campos_especiales = total_campos_especiales == total_campos_marcados
requiere_traduccion = total_palabras_largas or not solo_campos_especiales
logger.debug(
f"Decisión de traducción para texto '{texto}': {'' if requiere_traduccion else 'No'} "
f"(palabras > 3 letras: {total_palabras_largas}, "
f"solo campos especiales: {solo_campos_especiales})"
)
return requiere_traduccion
# ALLEN BRADLEY # ALLEN BRADLEY
# Transforma: "A271/47/6 Air - M/*field ref="0" */ - Necessaria Manutenzione Filtro" -> # Transforma: "A271/47/6 Air - M/*field ref="0" */ - Necessaria Manutenzione Filtro" ->
# "A[[digits]]/[[digits]]/[[digits]] Air - M/*field ref="[[digits]]" */ - Necessaria Manutenzione Filtro" # "A[[digits]]/[[digits]]/[[digits]] Air - M/*field ref="[[digits]]" */ - Necessaria Manutenzione Filtro"
@ -368,6 +420,14 @@ def verificar_celda_traducida_ab(celda_clave, celda_traducida):
return False, text_error return False, text_error
#
# ALLEN BRADLEY
#
def texto_con_campos_especiales_ab(texto):
campos_especiales = len(re.findall(r"/\*#\*/", texto))
return campos_especiales > 0
if __name__ == "__main__": if __name__ == "__main__":
# SIEMENS # SIEMENS
print("****************** SIEMENS ***************************") print("****************** SIEMENS ***************************")

File diff suppressed because it is too large Load Diff

View File

@ -66,18 +66,6 @@ def translate_batch_ollama(texts, source_lang, target_lang):
return translations return translations
def texto_requiere_traduccion(texto):
palabras = re.findall(r"\b\w{4,}\b", texto)
campos_especiales = re.findall(r"<.*?>", texto)
requiere_traduccion = len(palabras) > 0 or len(campos_especiales) != len(
re.findall(r"<#>", texto)
)
logger.debug(
f"Decisión de traducción para texto '{texto}': {'' if requiere_traduccion else 'No'} (palabras > 3 letras: {len(palabras) > 0}, solo campos especiales: {len(campos_especiales) == len(re.findall(r'<#>', texto))})"
)
return requiere_traduccion
def translate_batch_openai(texts_dict, source_lang, target_lang): def translate_batch_openai(texts_dict, source_lang, target_lang):
system_prompt = read_system_prompt() system_prompt = read_system_prompt()
texts_list = list(texts_dict.values()) texts_list = list(texts_dict.values())
@ -222,7 +210,7 @@ def main(tipo_PLC, codigo_columna_maestra, file_path, target_lang_code, target_l
texts_to_translate = {} texts_to_translate = {}
for _, row in df.iterrows(): for index, row in df.iterrows():
celda_clave = str(row[source_col]) celda_clave = str(row[source_col])
source_translated_text = ( source_translated_text = (
str(row[source_translated_col]) str(row[source_translated_col])
@ -232,15 +220,15 @@ def main(tipo_PLC, codigo_columna_maestra, file_path, target_lang_code, target_l
celda_clave_compactada = fc.compactar_celda_traducida(tipo_PLC, celda_clave) celda_clave_compactada = fc.compactar_celda_traducida(tipo_PLC, celda_clave)
if traducir_todo: if traducir_todo:
if texto_requiere_traduccion(celda_clave_compactada): if fc.texto_requiere_traduccion(tipo_PLC, celda_clave_compactada, logger):
df[row,source_translated_col] = '' # Necesita ser traducida. En esta iteracion o en la siguiente. df.at[index, source_translated_col] = '' # Necesita ser traducida.
texts_to_translate[celda_clave] = celda_clave_compactada texts_to_translate[celda_clave] = celda_clave_compactada
else: else:
if ( if (
pd.isna(row[source_translated_col]) pd.isna(row[source_translated_col])
or source_translated_text.strip() == "" or source_translated_text.strip() == ""
): ):
if texto_requiere_traduccion(celda_clave_compactada): if fc.texto_requiere_traduccion(tipo_PLC, celda_clave_compactada, logger) or fc.texto_con_campos_especiales(tipo_PLC, celda_clave_compactada):
texts_to_translate[celda_clave] = celda_clave_compactada texts_to_translate[celda_clave] = celda_clave_compactada
num_texts = len(texts_to_translate) num_texts = len(texts_to_translate)