Files
Autoparts-DB/pos/services/translations.py
consultoria-as 4cc2c66208 feat(pos): add plate lookup (#8), 326 translations (#12), bulk image import (#11)
- Plate lookup: new plate_vehicles table (v1.7 migration), plate_lookup
  service with Mexican plate validation, GET/POST endpoints on catalog_bp,
  plate search UI in catalog vehicle selector
- Translations: extend PART_TRANSLATIONS from ~80 to 326 entries covering
  brake, engine, fuel, cooling, electrical, drivetrain, suspension, steering,
  exhaust, A/C, lighting, body, interior, fluids, and category translations
- Bulk images: image_scraper service with download+resize+placeholder
  generation, bulk-images and auto-image endpoints on inventory_bp

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 04:17:55 +00:00

394 lines
14 KiB
Python

# /home/Autopartes/pos/services/translations.py
"""Spanish translations for TecDoc catalog part names and categories.
Uses a dictionary of common English→Spanish auto part translations.
Falls back to the original name if no match is found.
"""
PART_TRANSLATIONS = {
# ─── Brake System ───
'Brake Pad Set': 'Juego de Balatas',
'Brake Pad': 'Balata',
'Brake Disc': 'Disco de Freno',
'Brake Rotor': 'Disco de Freno',
'Shock Absorber': 'Amortiguador',
'Brake Caliper': 'Caliper de Freno',
'Brake Drum': 'Tambor de Freno',
'Brake Hose': 'Manguera de Freno',
'Brake Line': 'Línea de Freno',
'Brake Shoe': 'Zapata de Freno',
'Master Cylinder': 'Cilindro Maestro',
'Wheel Cylinder': 'Cilindro de Rueda',
'Brake Booster': 'Booster de Freno',
'ABS Sensor': 'Sensor de ABS',
'ABS Module': 'Módulo de ABS',
'Brake Fluid': 'Líquido de Frenos',
'Parking Brake': 'Freno de Mano',
'Parking Brake Cable': 'Cable de Freno de Mano',
'Brake Pedal': 'Pedal de Freno',
# ─── Engine ───
'Piston': 'Pistón',
'Piston Ring': 'Anillos de Pistón',
'Gasket': 'Junta/Empaque',
'Head Gasket': 'Junta de Cabeza',
'Valve Cover Gasket': 'Junta de Tapa de Válvulas',
'Oil Pan Gasket': 'Junta de Cárter',
'Intake Manifold Gasket': 'Junta de Múltiple de Admisión',
'Exhaust Manifold Gasket': 'Junta de Múltiple de Escape',
'Valve': 'Válvula',
'Valve Spring': 'Resorte de Válvula',
'Valve Stem Seal': 'Sello de Válvula',
'Camshaft': 'Árbol de Levas',
'Crankshaft': 'Cigüeñal',
'Connecting Rod': 'Biela',
'Engine Mount': 'Soporte de Motor',
'Flywheel': 'Volante de Motor',
'Timing Belt': 'Banda de Distribución',
'Timing Chain': 'Cadena de Distribución',
'Timing Cover': 'Tapa de Distribución',
'Rocker Arm': 'Balancín',
'Push Rod': 'Varilla de Empuje',
'Turbocharger': 'Turbocompresor',
'Supercharger': 'Supercargador',
'Intake Manifold': 'Múltiple de Admisión',
'Exhaust Manifold': 'Múltiple de Escape',
'Oil Pump': 'Bomba de Aceite',
'Oil Pan': 'Cárter',
'Oil Cooler': 'Enfriador de Aceite',
'Oil Pressure Switch': 'Bulbo de Aceite',
'Cylinder Head': 'Cabeza de Cilindro',
'Engine Block': 'Bloque de Motor',
'Harmonic Balancer': 'Polea de Cigüeñal',
'EGR Valve': 'Válvula EGR',
'PCV Valve': 'Válvula PCV',
'Vacuum Pump': 'Bomba de Vacío',
# ─── Filters ───
'Oil Filter': 'Filtro de Aceite',
'Air Filter': 'Filtro de Aire',
'Fuel Filter': 'Filtro de Gasolina',
'Cabin Air Filter': 'Filtro de Cabina',
'Transmission Filter': 'Filtro de Transmisión',
'Hydraulic Filter': 'Filtro Hidráulico',
# ─── Ignition ───
'Spark Plug': 'Bujía',
'Ignition Coil': 'Bobina de Encendido',
'Glow Plug': 'Bujía de Precalentamiento',
'Distributor Cap': 'Tapa de Distribuidor',
'Distributor Rotor': 'Rotor de Distribuidor',
'Ignition Wire': 'Cable de Bujía',
'Ignition Module': 'Módulo de Encendido',
'Knock Sensor': 'Sensor de Detonación',
'Crankshaft Position Sensor': 'Sensor de Posición del Cigüeñal',
'Camshaft Position Sensor': 'Sensor de Posición del Árbol de Levas',
# ─── Fuel System ───
'Fuel Pump': 'Bomba de Gasolina',
'Fuel Injector': 'Inyector de Gasolina',
'Injector': 'Inyector',
'Throttle Body': 'Cuerpo de Aceleración',
'Mass Air Flow Sensor': 'Sensor MAF',
'Oxygen Sensor': 'Sensor de Oxígeno',
'Fuel Tank': 'Tanque de Gasolina',
'Fuel Pressure Regulator': 'Regulador de Presión de Combustible',
'Fuel Rail': 'Riel de Inyectores',
'Carburetor': 'Carburador',
'Fuel Sending Unit': 'Flotador de Gasolina',
'Accelerator Pedal': 'Pedal de Acelerador',
'Throttle Position Sensor': 'Sensor TPS',
'MAP Sensor': 'Sensor MAP',
# ─── Cooling System ───
'Radiator': 'Radiador',
'Water Pump': 'Bomba de Agua',
'Thermostat': 'Termostato',
'Coolant': 'Anticongelante',
'Coolant Temperature Sensor': 'Sensor de Temperatura',
'Radiator Fan': 'Ventilador de Radiador',
'Fan Motor': 'Motor de Ventilador de Radiador',
'Radiator Hose': 'Manguera de Radiador',
'Coolant Reservoir': 'Depósito de Anticongelante',
'Fan Clutch': 'Clutch de Ventilador',
'Thermostat Housing': 'Carcasa de Termostato',
'Water Outlet': 'Toma de Agua',
# ─── Electrical ───
'Alternator': 'Alternador',
'Starter Motor': 'Motor de Arranque',
'Battery': 'Batería',
'Battery Cable': 'Cable de Batería',
'Battery Terminal': 'Terminal de Batería',
'Voltage Regulator': 'Regulador de Voltaje',
'Sensor': 'Sensor',
'Switch': 'Interruptor',
'Relay': 'Relevador',
'Fuse': 'Fusible',
'Fuse Box': 'Caja de Fusibles',
'Bulb': 'Foco',
'Horn': 'Claxon',
'Antenna': 'Antena',
'Wiring Harness': 'Arnés de Cables',
'Solenoid': 'Solenoide',
'Ignition Switch': 'Switch de Encendido',
'Headlight Switch': 'Switch de Faros',
'Turn Signal Switch': 'Switch de Direccionales',
'Window Switch': 'Switch de Ventanilla',
'Blower Motor Resistor': 'Resistencia de Ventilador',
'Speed Sensor': 'Sensor de Velocidad',
# ─── Belts & Pulleys ───
'V-Belt': 'Banda Serpentina',
'Serpentine Belt': 'Banda Serpentina',
'Tensioner': 'Tensor',
'Belt Tensioner': 'Tensor de Banda',
'Idler Pulley': 'Polea Loca',
'Belt': 'Banda',
'Chain': 'Cadena',
'Pulley': 'Polea',
# ─── Clutch & Transmission ───
'Clutch Kit': 'Kit de Embrague',
'Clutch Disc': 'Disco de Embrague',
'Clutch Pressure Plate': 'Plato de Presión',
'Clutch Release Bearing': 'Collarín',
'Clutch Master Cylinder': 'Cilindro Maestro de Embrague',
'Clutch Slave Cylinder': 'Cilindro Esclavo de Embrague',
'Clutch Cable': 'Cable de Embrague',
'Clutch Pedal': 'Pedal de Clutch',
'Transmission Mount': 'Soporte de Transmisión',
'Transfer Case': 'Caja de Transferencia',
'Gear Shift': 'Palanca de Velocidades',
'Shift Cable': 'Cable de Palanca',
'Transmission Fluid': 'Aceite de Transmisión',
'Torque Converter': 'Convertidor de Par',
'Synchronizer Ring': 'Anillo Sincronizador',
# ─── Drivetrain ───
'Wheel Hub': 'Maza de Rueda',
'Axle Shaft': 'Flecha/Semieje',
'Drive Shaft': 'Flecha Cardán',
'U-Joint': 'Cruceta',
'CV Joint': 'Junta Homocinética',
'CV Boot': 'Guardapolvo Homocinético',
'Differential': 'Diferencial',
'Wheel Bearing': 'Balero de Rueda',
'Wheel Stud': 'Birlo de Rueda',
'Lug Nut': 'Tuerca de Rueda',
'Axle Nut': 'Tuerca de Flecha',
'Bearing': 'Balero/Rodamiento',
'Seal': 'Sello/Retén',
'Bushing': 'Buje',
'Mount': 'Soporte',
# ─── Suspension ───
'Control Arm': 'Brazo de Suspensión',
'Strut': 'Puntal',
'Strut Mount': 'Base de Amortiguador',
'Spring': 'Resorte',
'Coil Spring': 'Resorte Helicoidal',
'Leaf Spring': 'Ballesta',
'Stabilizer Bar': 'Barra Estabilizadora',
'Stabilizer Link': 'Bieleta Estabilizadora',
'Sway Bar Link': 'Bieleta Estabilizadora',
'Trailing Arm': 'Brazo Trasero',
'Torsion Bar': 'Barra de Torsión',
'Shock Mount': 'Base de Amortiguador',
'Bump Stop': 'Tope de Amortiguador',
'Air Spring': 'Bolsa de Aire de Suspensión',
'Panhard Rod': 'Barra Panhard',
# ─── Steering ───
'Power Steering Pump': 'Bomba de Dirección Hidráulica',
'Rack and Pinion': 'Cremallera de Dirección',
'Tie Rod End': 'Terminal de Dirección',
'Tie Rod': 'Barra de Dirección',
'Ball Joint': 'Rótula',
'Steering Wheel': 'Volante',
'Steering Column': 'Columna de Dirección',
'Power Steering Hose': 'Manguera de Dirección',
'Power Steering Fluid': 'Aceite de Dirección',
'Pitman Arm': 'Brazo Pitman',
'Idler Arm': 'Brazo Loco',
'Center Link': 'Barra Central de Dirección',
'Drag Link': 'Barra de Acoplamiento',
'Steering Knuckle': 'Muñón de Dirección',
'King Pin': 'Perno Rey',
# ─── Exhaust ───
'Muffler': 'Mofle',
'Exhaust Pipe': 'Tubo de Escape',
'Catalytic Converter': 'Catalizador',
'Exhaust Gasket': 'Junta de Escape',
'Exhaust Clamp': 'Abrazadera de Escape',
'Resonator': 'Resonador',
'Flex Pipe': 'Tubo Flexible de Escape',
'O2 Sensor': 'Sensor de Oxígeno',
'Exhaust Tip': 'Punta de Escape',
# ─── A/C & Heating ───
'A/C Compressor': 'Compresor de Aire Acondicionado',
'Condenser': 'Condensador',
'Evaporator': 'Evaporador',
'Heater Core': 'Radiador de Calefacción',
'Blower Motor': 'Motor de Ventilador',
'A/C Hose': 'Manguera de Aire Acondicionado',
'Expansion Valve': 'Válvula de Expansión',
'A/C Accumulator': 'Acumulador de A/C',
'A/C Receiver Drier': 'Filtro Deshidratador',
'A/C Clutch': 'Clutch de Compresor',
'Heater Valve': 'Válvula de Calefacción',
'Heater Hose': 'Manguera de Calefacción',
# ─── Lighting ───
'Headlight': 'Faro Delantero',
'Headlight Assembly': 'Faro Delantero Completo',
'Tail Light': 'Calavera Trasera',
'Tail Light Assembly': 'Calavera Trasera Completa',
'Fog Light': 'Faro de Niebla',
'Turn Signal': 'Direccional',
'Turn Signal Light': 'Luz Direccional',
'Side Marker': 'Luz Lateral',
'Reverse Light': 'Luz de Reversa',
'Third Brake Light': 'Tercera Luz de Freno',
'License Plate Light': 'Luz de Placa',
'Interior Light': 'Luz Interior',
'Dome Light': 'Luz de Techo',
'DRL Light': 'Luz Diurna',
'LED Module': 'Módulo LED',
'Ballast': 'Balastro',
'HID Bulb': 'Foco HID',
# ─── Body & Exterior ───
'Bumper': 'Defensa',
'Front Bumper': 'Defensa Delantera',
'Rear Bumper': 'Defensa Trasera',
'Fender': 'Salpicadera',
'Grille': 'Parrilla',
'Hood': 'Cofre',
'Trunk Lid': 'Tapa de Cajuela',
'Door': 'Puerta',
'Door Handle': 'Manija de Puerta',
'Door Hinge': 'Bisagra de Puerta',
'Door Lock': 'Cerradura',
'Door Lock Actuator': 'Actuador de Cerradura',
'Trunk Latch': 'Cerradura de Cajuela',
'Hood Latch': 'Cerradura de Cofre',
'Windshield': 'Parabrisas',
'Rear Window': 'Medallón Trasero',
'Door Glass': 'Cristal de Puerta',
'Quarter Panel': 'Panel Trasero',
'Rocker Panel': 'Estribo',
'Mud Flap': 'Loderas',
'Splash Guard': 'Guardabarros',
'Molding': 'Moldura',
'Emblem': 'Emblema',
'Body Clip': 'Grapa de Carrocería',
'Weather Strip': 'Empaque de Puerta',
# ─── Glass & Mirrors ───
'Mirror': 'Espejo',
'Side Mirror': 'Espejo Lateral',
'Rear View Mirror': 'Espejo Retrovisor',
'Mirror Glass': 'Luna de Espejo',
'Window Regulator': 'Elevador de Cristal',
'Window Motor': 'Motor de Elevador',
'Windshield Wiper Motor': 'Motor de Limpiaparabrisas',
'Wiper Blade': 'Pluma Limpiaparabrisas',
'Wiper Arm': 'Brazo de Limpiaparabrisas',
'Wiper Linkage': 'Varillaje de Limpiaparabrisas',
'Washer Pump': 'Bomba de Limpiaparabrisas',
'Washer Reservoir': 'Depósito de Limpiaparabrisas',
# ─── Interior & Safety ───
'Seat Belt': 'Cinturón de Seguridad',
'Air Bag': 'Bolsa de Aire',
'Clock Spring': 'Espiral de Reloj',
'Dashboard': 'Tablero',
'Instrument Cluster': 'Cuadro de Instrumentos',
'Glove Box': 'Guantera',
'Sun Visor': 'Visera',
'Headliner': 'Cielo de Techo',
'Floor Mat': 'Tapete',
'Seat Cover': 'Funda de Asiento',
'Carpet': 'Alfombra',
'Center Console': 'Consola Central',
'Cup Holder': 'Portavasos',
# ─── Hoses & General ───
'Hose': 'Manguera',
'Hose Clamp': 'Abrazadera de Manguera',
'Pump': 'Bomba',
# ─── Fluids & Chemicals ───
'Engine Oil': 'Aceite de Motor',
'Power Steering Fluid': 'Aceite de Dirección',
'Brake Cleaner': 'Limpiador de Frenos',
'Antifreeze': 'Anticongelante',
'Windshield Washer Fluid': 'Líquido Limpiaparabrisas',
'Grease': 'Grasa',
'Thread Locker': 'Fijador de Roscas',
'Silicone': 'Silicón',
'Adhesive': 'Adhesivo',
'Sealant': 'Sellador',
'Refrigerant': 'Refrigerante',
# ─── Categories ───
'Braking System': 'Sistema de Frenos',
'Engine': 'Motor',
'Suspension/Damping': 'Suspensión',
'Electrics': 'Eléctrico',
'Cooling System': 'Sistema de Enfriamiento',
'Exhaust System': 'Sistema de Escape',
'Fuel Mixture Formation': 'Sistema de Combustible',
'Steering': 'Dirección',
'Filters': 'Filtros',
'Belt Drive': 'Bandas y Poleas',
'Spark/Glow Ignition': 'Encendido',
'Heating/Ventilation': 'Calefacción/Ventilación',
'Maintenance Service Parts': 'Partes de Mantenimiento',
'Axle Drive': 'Transmisión/Ejes',
'Body': 'Carrocería',
'Axle Mounting/ Steering/ Wheels': 'Suspensión/Dirección/Ruedas',
'Transmission': 'Transmisión',
'Air Conditioning': 'Aire Acondicionado',
'Interior': 'Interior',
'Exterior': 'Exterior',
'Lighting': 'Iluminación',
'Wipers': 'Limpiaparabrisas',
'Accessories': 'Accesorios',
'Tools': 'Herramientas',
'Chemicals': 'Químicos/Líquidos',
'Hardware': 'Tornillería',
'Clutch/Parts': 'Embrague/Partes',
'Wheel Suspension': 'Suspensión de Rueda',
'Gaskets/Seals': 'Juntas/Sellos',
'Fuel Supply System': 'Sistema de Suministro de Combustible',
'Air Supply': 'Suministro de Aire',
'Comfort Systems': 'Sistemas de Confort',
'Communication Systems': 'Sistemas de Comunicación',
'Locking System': 'Sistema de Cierre',
'Windscreen Cleaning': 'Limpieza de Parabrisas',
'Universal Parts': 'Partes Universales',
'Oils/Fluids': 'Aceites/Líquidos',
'Tyres': 'Neumáticos/Llantas',
'Wheels': 'Rines',
}
def translate_part_name(name):
"""Translate a part name from English to Spanish. Uses partial matching."""
if not name:
return name
name_upper = name.upper()
for en, es in PART_TRANSLATIONS.items():
if en.upper() in name_upper:
return name.replace(en, es).replace(en.lower(), es.lower()).replace(en.upper(), es.upper())
return name
def translate_category(name):
"""Translate a category name."""
return PART_TRANSLATIONS.get(name, name)