lukecurtin32 commited on
Commit
d84920c
·
verified ·
1 Parent(s): defc845

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -411
app.py CHANGED
@@ -17,47 +17,7 @@ custom_glossary = {
17
  "BIM (Building Information Modeling)": "BIM (Modelado de Información de Construcción)",
18
  "Retainage": "Retención",
19
  "Precast Concrete": "Hormigón Prefabricado",
20
- "Greenfield Project": "Proyecto Greenfield",
21
- "Brownfield Project": "Proyecto Brownfield",
22
- "Constructability Review": "Revisión de Constructibilidad",
23
- "Value Engineering": "Ingeniería de Valor",
24
- "Design-Build": "Diseño-Construcción",
25
- "Cost Estimation": "Estimación de Costos",
26
- "Erosion and Sediment Control (ESC)": "Control de Erosión y Sedimentos (ESC)",
27
- "OSHA Compliance": "Cumplimiento con OSHA",
28
- "Project Closeout": "Cierre del Proyecto",
29
- "Integrated Project Delivery (IPD)": "Entrega Integrada de Proyectos (IPD)",
30
- "Prefabrication": "Prefabricación",
31
- "HVAC (Heating, Ventilation, Air Conditioning)": "HVAC (Calefacción, Ventilación y Aire Acondicionado)",
32
- "Sustainability": "Sostenibilidad",
33
- "RFP (Request for Proposal)": "RFP (Solicitud de Propuesta)",
34
- "Safety Data Sheet (SDS)": "Hoja de Datos de Seguridad (SDS)",
35
- "Load-Bearing Wall": "Muro de Carga",
36
- "Foundation Types": "Tipos de Cimientos",
37
- "Seismic Retrofitting": "Refuerzo Sísmico",
38
- "Fireproofing": "Protección contra Incendios",
39
- "Commissioning": "Puesta en Servicio",
40
- "Facade": "Fachada",
41
- "Thermal Insulation": "Aislamiento Térmico",
42
- "Waterproofing": "Impermeabilización",
43
- "Zoning": "Zonificación",
44
- "EPC (Engineering, Procurement, Construction)": "EPC (Ingeniería, Adquisición y Construcción)",
45
- "Project Milestone": "Hito del Proyecto",
46
- "Subcontractor": "Subcontratista",
47
- "Quality Assurance (QA)": "Aseguramiento de Calidad (QA)",
48
- "Quality Control (QC)": "Control de Calidad (QC)",
49
- "Baseline Schedule": "Cronograma Base",
50
- "Material Takeoff": "Lista de Materiales",
51
- "Lifecycle Costs": "Costos de Ciclo de Vida",
52
- "Building Envelope": "Envolvente del Edificio",
53
- "MEP (Mechanical, Electrical, Plumbing)": "MEP (Mecánica, Eléctrica, Fontanería)",
54
- "As-Built Drawings": "Planos Tal Como Construidos",
55
- "Hazardous Waste Management": "Gestión de Residuos Peligrosos",
56
- "Indoor Air Quality (IAQ)": "Calidad del Aire Interior (IAQ)",
57
- "Renewable Energy Systems": "Sistemas de Energía Renovable",
58
- "Temporary Works": "Obras Temporales",
59
- "Construction Waste Diversion": "Desviación de Residuos de Construcción"
60
- "Aggregate": "Áridos",
61
  "Allowance": "Asignación",
62
  "Apprenticeship": "Aprendizaje",
63
  "Backfilling": "Relleno",
@@ -130,395 +90,50 @@ custom_glossary = {
130
  "Plaster": "Yeso",
131
  "Plumbing Fixtures": "Accesorios de Plomería",
132
  "Post-Tension Slab": "Losa Postensada",
133
- "Prefabricated Components": "Componentes Prefabricados"
134
- "Acoustics": "Acústica",
135
- "Adhesive": "Adhesivo",
136
- "Air Barrier": "Barrera de Aire",
137
- "Anchor Bolt": "Perno de Anclaje",
138
- "Apron": "Delantal",
139
- "Arc Welding": "Soldadura por Arco",
140
- "Asphalt": "Asfalto",
141
- "Attic": "Ático",
142
- "Auger": "Barrena",
143
- "Backhoe": "Retroexcavadora",
144
- "Balustrade": "Balaustrada",
145
- "Bargeboard": "Tablero Lateral",
146
- "Baseboard": "Rodapié",
147
- "Batt Insulation": "Aislamiento en Paneles",
148
- "Bay Window": "Ventana en Saledizo",
149
- "Beam Pocket": "Hueco para Viga",
150
- "Bench Mark": "Punto de Referencia",
151
- "Bevel": "Bisel",
152
- "Bituminous": "Bituminoso",
153
- "Blanket Insulation": "Aislamiento en Manta",
154
- "Block Wall": "Muro de Bloques",
155
- "Bond Beam": "Viga de Amarre",
156
- "Box Culvert": "Alcantarilla en Cajón",
157
- "Brick Veneer": "Revestimiento de Ladrillo",
158
- "Bridging": "Arriostramiento",
159
- "Bulkhead": "Mamparo",
160
- "Butt Joint": "Unión a Tope",
161
- "Cantilever Beam": "Viga en Voladizo",
162
- "Cap Sheet": "Lámina de Cubierta",
163
- "Cast-In-Place Concrete": "Hormigón In Situ",
164
- "Cellular Concrete": "Hormigón Celular",
165
- "Chamfer": "Chaflán",
166
- "Civil Engineering": "Ingeniería Civil",
167
- "Clapboard": "Entablado",
168
- "Clear Story": "Claristorio",
169
- "Cold Joint": "Junta Fría",
170
- "Collar Beam": "Viga de Collarín",
171
- "Column": "Columna",
172
- "Compressive Strength": "Resistencia a la Compresión",
173
- "Conduit": "Conducto",
174
- "Concrete Saw": "Sierra para Hormigón",
175
- "Construction Joints": "Juntas de Construcción",
176
- "Continuous Beam": "Viga Continua",
177
- "Control Joint": "Junta de Control",
178
- "Corner Bead": "Esquina Metálica",
179
- "Corrosion Resistance": "Resistencia a la Corrosión",
180
- "Coupling": "Acoplamiento",
181
- "Crawl Space": "Espacio Rastrero",
182
- "Curtain Drain": "Drenaje Cortina",
183
- "Decking": "Entablado",
184
- "Deformation": "Deformación",
185
- "Design Load": "Carga de Diseño",
186
- "Diaphragm": "Diafragma",
187
- "Dielectric": "Dieléctrico",
188
- "Dimensional Lumber": "Madera Dimensional",
189
- "Direct Load Path": "Ruta de Carga Directa",
190
- "Door Jamb": "Jamba de Puerta",
191
- "Double Glazing": "Doble Acristalamiento",
192
- "Downspout": "Bajante",
193
- "Drainage Basin": "Cuenca de Drenaje",
194
- "Duct Tape": "Cinta Adhesiva",
195
- "Dust Control": "Control de Polvo",
196
- "Eave": "Alero",
197
- "Efflorescence": "Eflorescencia",
198
- "Elastomeric Coating": "Recubrimiento Elastomérico",
199
- "Electric Panel": "Tablero Eléctrico",
200
- "Elevation View": "Vista en Elevación",
201
- "Embankment": "Terraplén",
202
- "Emulsion": "Emulsión",
203
- "Energy-Efficient Windows": "Ventanas Eficientes Energéticamente",
204
- "Epoxy Adhesive": "Adhesivo Epóxico",
205
- "Expansion Anchor": "Anclaje de Expansión",
206
- "False Ceiling": "Techo Falso",
207
- "Fascia": "Friso",
208
- "Field Stone": "Piedra del Campo",
209
- "Fire Door": "Puerta Cortafuegos",
210
- "Fire Protection System": "Sistema de Protección Contra Incendios",
211
- "Fire Resistance": "Resistencia al Fuego",
212
- "Fire Sprinkler": "Rociador de Incendios",
213
- "Flashing": "Chapa Protectora",
214
- "Float Finish": "Acabado Flotante",
215
- "Footing Drain": "Drenaje de Cimiento",
216
- "Friction Pile": "Pilote de Fricción",
217
- "Frost Protection": "Protección Contra Heladas",
218
- "Furring": "Falso Pared",
219
- "Galvanized Steel": "Acero Galvanizado",
220
- "Gasket": "Junta",
221
- "GFCI Outlet": "Tomacorriente GFCI",
222
- "Girders": "Vigas Maestras",
223
- "Glazing": "Acristalamiento",
224
- "Gutter": "Canalón",
225
- "Gypsum Board": "Tablero de Yeso",
226
- "Hard Hat": "Casco de Seguridad",
227
- "Heat Recovery Ventilator": "Ventilador Recuperador de Calor",
228
- "Heel Block": "Bloque de Talón",
229
- "High-Strength Steel": "Acero de Alta Resistencia",
230
- "Hoist": "Polipasto",
231
- "Hollow Core Slab": "Losa de Núcleo Hueco",
232
- "HVAC System": "Sistema HVAC",
233
- "Hydraulic Cement": "Cemento Hidráulico",
234
- "Impact Test": "Prueba de Impacto",
235
- "Industrial Fan": "Ventilador Industrial",
236
- "Insulation Blanket": "Manta de Aislamiento",
237
- "Jack Stud": "Pie
238
- ""Lintel": "Dintel",
239
- "Load Factor": "Factor de Carga",
240
- "Load-Bearing Structure": "Estructura Portante",
241
- "Manhole": "Pozo de Registro",
242
- "Mansard Roof": "Techo Mansarda",
243
- "Mason’s Line": "Línea de Albañil",
244
- "Masonry Anchors": "Anclajes de Albañilería",
245
- "Metal Stud": "Montante Metálico",
246
- "Metric System": "Sistema Métrico",
247
- "Moisture Meter": "Medidor de Humedad",
248
- "Mortar Joints": "Juntas de Mortero",
249
- "Mullion": "Montante",
250
- "Nail Gun": "Pistola de Clavos",
251
- "Noise Barrier": "Barrera Antirruido",
252
- "Nominal Size": "Tamaño Nominal",
253
- "Non-Combustible Material": "Material No Combustible",
254
- "Occupancy Load": "Carga de Ocupación",
255
- "Open Web Steel Joist": "Vigueta de Acero de Alma Abierta",
256
- "OSHA Regulations": "Normativas de OSHA",
257
- "Overhead Door": "Puerta Basculante",
258
- "Paint Primer": "Imprimante",
259
- "Parapet Wall": "Muro de Pretil",
260
- "Particle Board": "Tablero de Partículas",
261
- "Pavement Marking": "Señalización Vial",
262
- "Paving Stone": "Adoquín",
263
- "Perforated Metal": "Metal Perforado",
264
- "Permanent Load": "Carga Permanente",
265
- "PEX Plumbing": "Tubería PEX",
266
- "Pier Cap": "Cabezal de Pilote",
267
- "Pilaster": "Pilastra",
268
- "Pin Connection": "Conexión Articulada",
269
- "Plenum Space": "Espacio Plenum",
270
- "Ply": "Lámina",
271
- "Plumbing Vent": "Ventilación de Plomería",
272
- "Pneumatic Tools": "Herramientas Neumáticas",
273
- "Polyethylene": "Polietileno",
274
- "Polymer Concrete": "Hormigón Polimérico",
275
- "Prefabricated Steel Building": "Edificio de Acero Prefabricado",
276
- "Pressure Treated Wood": "Madera Tratada a Presión",
277
- "Pre-Tensioned Concrete": "Hormigón Pretensado",
278
- "Process Piping": "Tuberías de Proceso",
279
- "Profile Level": "Nivel de Perfil",
280
- "Project Management Plan": "Plan de Gestión de Proyecto",
281
- "Propane Torch": "Soplete de Propano",
282
- "Purlin": "Correa",
283
- "Quarry Tile": "Azulejo de Cantera",
284
- "Radiant Barrier": "Barrera Radiante",
285
- "Radiant Heating": "Calefacción Radiante",
286
- "Rafter": "Viga del Tejado",
287
- "Rain Screen": "Pantalla de Lluvia",
288
- "Reinforcement Bar (Rebar)": "Barra de Refuerzo",
289
- "Retaining Wall": "Muro de Contención",
290
- "Ridge Beam": "Viga del Caballete",
291
- "Ridge Vent": "Ventilación del Caballete",
292
- "Riprap": "Escollera",
293
- "Roof Deck": "Cubierta de Techo",
294
- "Roof Truss": "Cercha de Techo",
295
- "Roofing Felt": "Tela Asfáltica",
296
- "Roofing Nail": "Clavo para Techos",
297
- "Roofline": "Línea del Techo",
298
  "Safety Harness": "Arnés de Seguridad",
299
- "Sanding": "Lijado",
300
  "Scaffolding": "Andamios",
301
- "Screw Anchor": "Anclaje de Tornillo",
302
- "Screed": "Regla",
303
- "Sealant": "Sellador",
304
- "Seismic Design": "Diseño Sísmico",
305
- "Sewer Line": "Línea de Alcantarillado",
306
- "Shear Wall": "Muro de Cortante",
307
- "Shed Roof": "Techo de Un Agua",
308
- "Shingles": "Tejas",
309
- "Shop Drawings": "Planos de Taller",
310
- "Shoreline Protection": "Protección de la Línea de Costa",
311
- "Sill": "Alféizar",
312
- "Slab Foundation": "Cimentación de Losa",
313
- "Sliding Door": "Puerta Corrediza",
314
- "Slip Form": "Encofrado Deslizante",
315
- "Slump Test": "Prueba de Asentamiento",
316
- "Soil Compaction": "Compactación del Suelo",
317
- "Solid Waste Management": "Gestión de Residuos Sólidos",
318
- "Spandrel Beam": "Viga de Antepecho",
319
- "Splash Block": "Bloque de Salpicaduras",
320
- "Spray Foam Insulation": "Aislamiento de Espuma en Spray",
321
- "Stair Riser": "Contrahuella de Escalera",
322
- "Stair Tread": "Huella de Escalera",
323
- "Steel Girder": "Viga de Acero",
324
- "Stormwater Management": "Gestión de Aguas Pluviales",
325
  "Structural Integrity": "Integridad Estructural",
326
  "Structural Steel": "Acero Estructural",
327
- "Subfloor": "Subsuelo",
328
- "Suspended Ceiling": "Techo Suspendido",
329
- "Tempered Glass": "Vidrio Templado",
330
  "Temporary Fence": "Cerca Temporal",
331
- "Terrazzo Flooring": "Piso de Terrazo",
332
- "Thermal Bridge": "Puente Térmico",
333
- "Tie Rod": "Tirante",
334
- "Timber Beam": "Viga de Madera",
335
- "Toggle Bolt": "Perno de Palanca"
336
- "Acoustics": "Acústica",
337
- "Adhesive": "Adhesivo",
338
- "Air Barrier": "Barrera de Aire",
339
- "Anchor Bolt": "Perno de Anclaje",
340
- "Apron": "Delantal",
341
- "Arc Welding": "Soldadura por Arco",
342
- "Asphalt": "Asfalto",
343
- "Attic": "Ático",
344
- "Auger": "Barrena",
345
- "Backhoe": "Retroexcavadora",
346
- "Balustrade": "Balaustrada",
347
- "Bargeboard": "Tablero Lateral",
348
- "Baseboard": "Rodapié",
349
- "Batt Insulation": "Aislamiento en Paneles",
350
- "Bay Window": "Ventana en Saledizo",
351
- "Beam Pocket": "Hueco para Viga",
352
- "Bench Mark": "Punto de Referencia",
353
- "Bevel": "Bisel",
354
- "Bituminous": "Bituminoso",
355
- "Blanket Insulation": "Aislamiento en Manta",
356
- "Block Wall": "Muro de Bloques",
357
- "Bond Beam": "Viga de Amarre",
358
- "Box Culvert": "Alcantarilla en Cajón",
359
- "Brick Veneer": "Revestimiento de Ladrillo",
360
- "Bridging": "Arriostramiento",
361
- "Bulkhead": "Mamparo",
362
- "Butt Joint": "Unión a Tope",
363
- "Cantilever Beam": "Viga en Voladizo",
364
- "Cap Sheet": "Lámina de Cubierta",
365
- "Cast-In-Place Concrete": "Hormigón In Situ",
366
- "Cellular Concrete": "Hormigón Celular",
367
- "Chamfer": "Chaflán",
368
- "Civil Engineering": "Ingeniería Civil",
369
- "Clapboard": "Entablado",
370
- "Clear Story": "Claristorio",
371
- "Cold Joint": "Junta Fría",
372
- "Collar Beam": "Viga de Collarín",
373
- "Column": "Columna",
374
- "Compressive Strength": "Resistencia a la Compresión",
375
- "Conduit": "Conducto",
376
- "Concrete Saw": "Sierra para Hormigón",
377
- "Construction Joints": "Juntas de Construcción",
378
- "Continuous Beam": "Viga Continua",
379
- "Control Joint": "Junta de Control",
380
- "Corner Bead": "Esquina Metálica",
381
- "Corrosion Resistance": "Resistencia a la Corrosión",
382
- "Coupling": "Acoplamiento",
383
- "Crawl Space": "Espacio Rastrero",
384
- "Curtain Drain": "Drenaje Cortina",
385
- "Decking": "Entablado",
386
- "Deformation": "Deformación",
387
- "Design Load": "Carga de Diseño",
388
- "Diaphragm": "Diafragma",
389
- "Dielectric": "Dieléctrico",
390
- "Dimensional Lumber": "Madera Dimensional",
391
- "Direct Load Path": "Ruta de Carga Directa",
392
- "Door Jamb": "Jamba de Puerta",
393
- "Double Glazing": "Doble Acristalamiento",
394
- "Downspout": "Bajante",
395
- "Drainage Basin": "Cuenca de Drenaje",
396
- "Duct Tape": "Cinta Adhesiva",
397
- "Dust Control": "Control de Polvo",
398
- "Eave": "Alero",
399
- "Efflorescence": "Eflorescencia",
400
- "Elastomeric Coating": "Recubrimiento Elastomérico",
401
- "Electric Panel": "Tablero Eléctrico",
402
- "Elevation View": "Vista en Elevación",
403
- "Embankment": "Terraplén",
404
- "Emulsion": "Emulsión",
405
- "Energy-Efficient Windows": "Ventanas Eficientes Energéticamente",
406
- "Epoxy Adhesive": "Adhesivo Epóxico",
407
- "Expansion Anchor": "Anclaje de Expansión",
408
- "False Ceiling": "Techo Falso",
409
- "Fascia": "Friso",
410
- "Field Stone": "Piedra del Campo",
411
- "Fire Door": "Puerta Cortafuegos",
412
- "Fire Protection System": "Sistema de Protección Contra Incendios",
413
- "Fire Resistance": "Resistencia al Fuego",
414
- "Fire Sprinkler": "Rociador de Incendios",
415
- "Flashing": "Chapa Protectora",
416
- "Float Finish": "Acabado Flotante",
417
- "Footing Drain": "Drenaje de Cimiento",
418
- "Friction Pile": "Pilote de Fricción",
419
- "Frost Protection": "Protección Contra Heladas",
420
- "Furring": "Falso Pared",
421
- "Galvanized Steel": "Acero Galvanizado",
422
- "Gasket": "Junta",
423
- "GFCI Outlet": "Tomacorriente GFCI",
424
- "Girders": "Vigas Maestras",
425
- "Glazing": "Acristalamiento",
426
- "Gutter": "Canalón",
427
- "Gypsum Board": "Tablero de Yeso",
428
- "Hard Hat": "Casco de Seguridad",
429
- "Heat Recovery Ventilator": "Ventilador Recuperador de Calor",
430
- "Heel Block": "Bloque de Talón",
431
- "High-Strength Steel": "Acero de Alta Resistencia",
432
- "Hoist": "Polipasto",
433
- "Hollow Core Slab": "Losa de Núcleo Hueco",
434
- "HVAC System": "Sistema HVAC",
435
- "Hydraulic Cement": "Cemento Hidráulico",
436
- "Impact Test": "Prueba de Impacto",
437
- "Industrial Fan": "Ventilador Industrial",
438
- "Insulation Blanket": "Manta de Aislamiento",
439
- "Jack Stud": "Pie Derecho",
440
- "Joint Compound": "Compuesto para Juntas",
441
- "Joist Hanger": "Colgador de Vigueta",
442
- "Kerf": "Ranura",
443
- "Kicker Plate": "Placa de Apoyo",
444
- "Abrasion Resistance": "Resistencia a la Abrasión",
445
- "Abrasive": "Abrasivo",
446
- "Absorption Rate": "Tasa de Absorción",
447
- "Access Ladder": "Escalera de Acceso",
448
- "Acoustic Ceiling Tile": "Baldosa Acústica para Techo",
449
- "Acoustic Insulation": "Aislamiento Acústico",
450
- "Acrylic Sealant": "Sellador Acrílico",
451
- "Adhesion Primer": "Imprimante de Adhesión",
452
- "Adhesive Mortar": "Mortero Adhesivo",
453
- "Aggregate Base": "Base de Áridos",
454
- "Aggregate Interlock": "Bloqueo de Áridos",
455
- "Aggregate Size": "Tamaño del Árido",
456
- "Air Compressor": "Compresor de Aire",
457
- "Air Duct": "Conducto de Aire",
458
- "Air Handling Unit (AHU)": "Unidad de Manejo de Aire (UMA)",
459
- "Air Quality Control": "Control de Calidad del Aire",
460
- "Air Spacer": "Separador de Aire",
461
- "Air Vent": "Ventilación de Aire",
462
- "Airborne Noise": "Ruido Aéreo",
463
- "Allowable Load": "Carga Permitida",
464
- "All-Weather Construction": "Construcción Todo Clima",
465
- "Anchor Bolt Sleeves": "Manguitos para Pernos de Anclaje",
466
- "Anchor Plate": "Placa de Anclaje",
467
- "Anchor Strap": "Correa de Anclaje",
468
- "Angle Brace": "Refuerzo Angular",
469
- "Angle of Repose": "Ángulo de Reposo",
470
- "Anodized Finish": "Acabado Anodizado",
471
- "Anti-Vibration Mounts": "Monturas Antivibración",
472
- "Architectural Concrete": "Hormigón Arquitectónico",
473
- "Architectural Finishes": "Acabados Arquitectónicos",
474
- "Asphalt Binder": "Ligante Asfáltico",
475
- "Asphalt Milling": "Fresado de Asfalto",
476
- "Asphalt Overlay": "Revestimiento de Asfalto",
477
- "Asphalt Paver": "Pavimentadora de Asfalto",
478
- "Attenuation Wall": "Muro Atenuador",
479
- "Axial Load": "Carga Axial",
480
- "Backup Wall": "Muro de Respaldo",
481
- "Ballast Stone": "Piedra Balasto",
482
- "Balloon Framing": "Estructura Tipo Globo",
483
- "Bar Chair": "Separador de Barra",
484
- "Bar Grating": "Rejilla de Barras",
485
- "Base Coat": "Capa Base",
486
- "Base Flashing": "Contrachapa de Base",
487
- "Base Layer": "Capa Base",
488
- "Base Plate": "Placa Base",
489
- "Basement Wall": "Muro de Sótano",
490
- "Beam Clamps": "Abrazaderas para Vigas",
491
- "Bearing Capacity": "Capacidad Portante",
492
- "Bearing Pad": "Almohadilla de Apoyo",
493
- "Bearing Plate": "Placa de Apoyo",
494
- "Belt Conveyor": "Transportador de Banda",
495
- "Bent Cap": "Cabezal de Pilote",
496
- "Bitumen": "Betún",
497
- "Blast Furnace Slag Cement": "Cemento de Esc
498
  def preprocess_text(text, glossary):
499
- # Sort terms by length to handle longer terms first
500
  sorted_terms = sorted(glossary.keys(), key=len, reverse=True)
501
  for term in sorted_terms:
502
- # Use a unique placeholder to avoid conflicts
503
  placeholder = f"[[{term}]]"
504
- # Use regex to replace whole words only
505
  text = re.sub(rf'\b{re.escape(term)}\b', placeholder, text)
506
  return text
507
 
 
508
  def postprocess_text(text, glossary):
509
  for term, translation in glossary.items():
510
  placeholder = f"[[{term}]]"
511
  text = text.replace(placeholder, translation)
512
  return text
513
 
 
514
  def translate_text(text):
515
- # Preprocess the text to replace glossary terms with placeholders
516
- preprocessed_text = preprocess_text(text, custom_glossary)
517
- # Translate the preprocessed text
518
- translated = translator(preprocessed_text)[0]['translation_text']
519
- # Postprocess the translated text to replace placeholders with actual terms
520
- final_translation = postprocess_text(translated, custom_glossary)
521
- return final_translation
 
 
 
522
 
523
  # Create the Gradio interface
524
  iface = gr.Interface(
 
17
  "BIM (Building Information Modeling)": "BIM (Modelado de Información de Construcción)",
18
  "Retainage": "Retención",
19
  "Precast Concrete": "Hormigón Prefabricado",
20
+ "Aggregate": "Áridos",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  "Allowance": "Asignación",
22
  "Apprenticeship": "Aprendizaje",
23
  "Backfilling": "Relleno",
 
90
  "Plaster": "Yeso",
91
  "Plumbing Fixtures": "Accesorios de Plomería",
92
  "Post-Tension Slab": "Losa Postensada",
93
+ "Prefabricated Components": "Componentes Prefabricados",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  "Safety Harness": "Arnés de Seguridad",
 
95
  "Scaffolding": "Andamios",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  "Structural Integrity": "Integridad Estructural",
97
  "Structural Steel": "Acero Estructural",
 
 
 
98
  "Temporary Fence": "Cerca Temporal",
99
+ "Zoning Ordinance": "Ordenanza de Zonificación",
100
+ "Thermal Insulation": "Aislamiento Térmico",
101
+ "Sealant": "Sellador",
102
+ "Retaining Wall": "Muro de Contención",
103
+ "Screw Anchor": "Anclaje de Tornillo",
104
+ "Rain Screen": "Pantalla de Lluvia",
105
+ "Finishing": "Acabado",
106
+ "Facade Treatment": "Tratamiento de Fachada",
107
+ "Fireproofing": "Protección contra Incendios",
108
+ }
109
+
110
+ # Preprocess text to replace glossary terms with placeholders
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  def preprocess_text(text, glossary):
 
112
  sorted_terms = sorted(glossary.keys(), key=len, reverse=True)
113
  for term in sorted_terms:
 
114
  placeholder = f"[[{term}]]"
 
115
  text = re.sub(rf'\b{re.escape(term)}\b', placeholder, text)
116
  return text
117
 
118
+ # Postprocess text to replace placeholders with glossary terms
119
  def postprocess_text(text, glossary):
120
  for term, translation in glossary.items():
121
  placeholder = f"[[{term}]]"
122
  text = text.replace(placeholder, translation)
123
  return text
124
 
125
+ # Translate text
126
  def translate_text(text):
127
+ try:
128
+ # Preprocess the text
129
+ preprocessed_text = preprocess_text(text, custom_glossary)
130
+ # Translate the preprocessed text
131
+ translated = translator(preprocessed_text)[0]['translation_text']
132
+ # Postprocess the text
133
+ final_translation = postprocess_text(translated, custom_glossary)
134
+ return final_translation
135
+ except Exception as e:
136
+ return f"An error occurred: {e}"
137
 
138
  # Create the Gradio interface
139
  iface = gr.Interface(