| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- from odoo import api, SUPERUSER_ID
- def migrate(cr, version):
- env = api.Environment(cr, SUPERUSER_ID, {})
-
- # Load translations for affected modules
- modules_translations = {
- 'account': {'en_US': 'Invoicing', 'es_ES': 'Invoicing'},
- 'account_accountant': {'en_US': 'Invoicing', 'es_ES': 'Facturación / Contabilidad'},
- 'accountant': {'en_US': 'Accounting', 'es_ES': 'Accounting'},
- 'ai': {'en_US': 'AI', 'es_ES': 'AI'},
- 'ai_app': {'en_US': 'AI', 'es_ES': 'AI'},
- 'analytic': {'en_US': 'Analytic Accounting', 'es_ES': 'Contabilidad analítica'},
- 'analytic_enterprise': {'en_US': 'Analytic Accounting Enterprise', 'es_ES': 'Contabilidad analítica empresarial'},
- 'appointment': {'en_US': 'Appointments', 'es_ES': 'Citas'},
- 'approvals': {'en_US': 'Approvals', 'es_ES': 'Aprobaciones'},
- 'barcodes': {'en_US': 'Barcode', 'es_ES': 'Barcode'},
- 'base': {'en_US': 'Base', 'es_ES': 'Base'},
- 'board': {'en_US': 'Dashboards', 'es_ES': 'Tableros'},
- 'bus': {'en_US': 'IM Bus', 'es_ES': 'Bus IM'},
- 'calendar': {'en_US': 'Calendar', 'es_ES': 'Calendario'},
- 'certificate': {'en_US': 'Certificate', 'es_ES': 'Certificado'},
- 'cloud_storage': {'en_US': 'Cloud Storage', 'es_ES': 'Almacenamiento en la nube'},
- 'contacts': {'en_US': 'Contacts', 'es_ES': 'Contacts'},
- 'crm': {'en_US': 'CRM', 'es_ES': 'CRM'},
- 'databases': {'en_US': 'Databases', 'es_ES': 'Databases'},
- 'delivery': {'en_US': 'Delivery Costs', 'es_ES': 'Gastos de envío'},
- 'digest': {'en_US': 'KPI Digests', 'es_ES': 'Resúmenes de KPI'},
- 'documents': {'en_US': 'Documents', 'es_ES': 'Documentos'},
- 'equity': {'en_US': 'Equity', 'es_ES': 'Equity'},
- 'esg': {'en_US': 'ESG', 'es_ES': 'ESG'},
- 'event': {'en_US': 'Events Organization', 'es_ES': 'Organización de eventos'},
- 'fleet': {'en_US': 'Fleet', 'es_ES': 'Flota'},
- 'frontdesk': {'en_US': 'Frontdesk', 'es_ES': 'Recepción'},
- 'gamification': {'en_US': 'Gamification', 'es_ES': 'Ludificación'},
- 'helpdesk': {'en_US': 'Helpdesk', 'es_ES': 'Servicio de asistencia'},
- 'hr': {'en_US': 'Employees', 'es_ES': 'Employees'},
- 'hr_attendance': {'en_US': 'Attendances', 'es_ES': 'Asistencias'},
- 'hr_contract': {'en_US': 'Employee Contracts', 'es_ES': 'Contratos de los empleados'},
- 'hr_expense': {'en_US': 'Expenses', 'es_ES': 'Gastos'},
- 'hr_holidays': {'en_US': 'Time Off', 'es_ES': 'Ausencias'},
- 'hr_payroll': {'en_US': 'Payroll', 'es_ES': 'Nómina'},
- 'hr_recruitment': {'en_US': 'Recruitment', 'es_ES': 'Reclutamiento'},
- 'hr_timesheet': {'en_US': 'Task Logs', 'es_ES': 'Registros de tareas'},
- 'im_livechat': {'en_US': 'Live Chat', 'es_ES': 'Chat en directo'},
- 'industry_fsm': {'en_US': 'Field Service', 'es_ES': 'Servicio de campo'},
- 'iot': {'en_US': 'Internet of Things', 'es_ES': 'Internet de las cosas'},
- 'knowledge': {'en_US': 'Knowledge', 'es_ES': 'Información'},
- 'link_tracker': {'en_US': 'Link Tracker', 'es_ES': 'Link Tracker'},
- 'loyalty': {'en_US': 'Coupons & Loyalty', 'es_ES': 'Cupones y fidelidad'},
- 'lunch': {'en_US': 'Lunch', 'es_ES': 'Comida'},
- 'mail': {'en_US': 'Discuss', 'es_ES': 'Conversaciones'},
- 'maintenance': {'en_US': 'Maintenance', 'es_ES': 'Mantenimiento'},
- 'marketing_automation': {'en_US': 'Marketing Automation', 'es_ES': 'Automatización de marketing'},
- 'mass_mailing': {'en_US': 'Email Marketing', 'es_ES': 'Marketing por correo electrónico'},
- 'membership': {'en_US': 'Members', 'es_ES': 'Miembros'},
- 'mrp': {'en_US': 'Manufacturing', 'es_ES': 'Manufacturing'},
- 'onboarding': {'en_US': 'Onboarding Toolbox', 'es_ES': 'Caja de herramientas para la incorporación'},
- 'partnership': {'en_US': 'Partnership / Membership', 'es_ES': 'Partnership / Membership'},
- 'payment': {'en_US': 'Payment Engine', 'es_ES': 'Motor de pago'},
- 'phone_validation': {'en_US': 'Phone Numbers Validation', 'es_ES': 'Validación de números de teléfono'},
- 'planning': {'en_US': 'Planning', 'es_ES': 'Planificación'},
- 'point_of_sale': {'en_US': 'Point of Sale', 'es_ES': 'Punto de venta'},
- 'portal': {'en_US': 'Customer Portal', 'es_ES': 'Customer Portal'},
- 'preventa': {'en_US': 'Preventa', 'es_ES': 'Preventa'},
- 'privacy_lookup': {'en_US': 'Privacy', 'es_ES': 'Privacidad'},
- 'product': {'en_US': 'Products & Pricelists', 'es_ES': 'Productos y listas de precios'},
- 'project': {'en_US': 'Project', 'es_ES': 'Proyecto'},
- 'purchase': {'en_US': 'Purchase', 'es_ES': 'Purchase'},
- 'quality': {'en_US': 'Quality Base', 'es_ES': 'Base de calidad '},
- 'quality_control': {'en_US': 'Quality', 'es_ES': 'Calidad'},
- 'rating': {'en_US': 'Customer Rating', 'es_ES': 'Valoración del cliente'},
- 'repair': {'en_US': 'Repairs', 'es_ES': 'Reparaciones'},
- 'resource': {'en_US': 'Resource', 'es_ES': 'Recurso'},
- 'room': {'en_US': 'Meeting Rooms', 'es_ES': 'Sala de reuniones'},
- 'rpc': {'en_US': 'RPC endpoints', 'es_ES': 'RPC endpoints'},
- 'sale': {'en_US': 'Sales', 'es_ES': 'Sales'},
- 'sale_management': {'en_US': 'Sales', 'es_ES': 'Sales'},
- 'sales_team': {'en_US': 'Sales Teams', 'es_ES': 'Sales Teams'},
- 'sign': {'en_US': 'Sign', 'es_ES': 'Firma electrónica'},
- 'sms': {'en_US': 'SMS gateway', 'es_ES': 'Puerta de enlace SMS'},
- 'snailmail': {'en_US': 'Snail Mail', 'es_ES': 'Correo postal'},
- 'social': {'en_US': 'Social Marketing', 'es_ES': 'Marketing social'},
- 'spreadsheet': {'en_US': 'Spreadsheet', 'es_ES': 'Spreadsheet'},
- 'stock': {'en_US': 'Inventory', 'es_ES': 'Inventory'},
- 'stock_account': {'en_US': 'WMS Accounting', 'es_ES': 'Contabilidad del SGA'},
- 'survey': {'en_US': 'Surveys', 'es_ES': 'Surveys'},
- 'timer': {'en_US': 'Timer', 'es_ES': 'Temporizador'},
- 'timesheet_grid': {'en_US': 'Timesheets', 'es_ES': 'Partes de horas'},
- 'transifex': {'en_US': 'Transifex integration', 'es_ES': 'Integración en Transifex'},
- 'uom': {'en_US': 'Units of measure', 'es_ES': 'Unidades de medida'},
- 'utm': {'en_US': 'UTM Trackers', 'es_ES': 'Rastreadores UTM'},
- 'voip': {'en_US': 'VoIP', 'es_ES': 'VoIP'},
- 'web': {'en_US': 'Web', 'es_ES': 'Web'},
- 'web_cohort': {'en_US': 'Cohort View', 'es_ES': 'Vista de cohorte'},
- 'web_editor': {'en_US': 'Web Editor', 'es_ES': 'Editor web'},
- 'web_enterprise': {'en_US': 'Web Enterprise', 'es_ES': 'Web de Enterprise'},
- 'web_gantt': {'en_US': 'Web Gantt', 'es_ES': 'Diagrama Gantt web'},
- 'web_grid': {'en_US': 'Grid View', 'es_ES': 'Vista de cuadrícula'},
- 'web_hierarchy': {'en_US': 'Web Hierarchy', 'es_ES': 'Jerarquía web'},
- 'web_map': {'en_US': 'Map View', 'es_ES': 'Vista del mapa'},
- 'web_mobile': {'en_US': 'Mobile', 'es_ES': 'Mobile'},
- 'web_studio': {'en_US': 'Studio', 'es_ES': 'Studio'},
- 'web_tour': {'en_US': 'Tours', 'es_ES': 'Recorridos'},
- 'web_unsplash': {'en_US': 'Unsplash Image Library', 'es_ES': 'Biblioteca de imágenes de Unsplash'},
- 'website': {'en_US': 'Website', 'es_ES': 'Website'},
- 'whatsapp': {'en_US': 'WhatsApp Messaging', 'es_ES': 'Mensajes de WhatsApp'},
- 'worksheet': {'en_US': 'Worksheet', 'es_ES': 'Hoja de trabajo'},
- }
-
- # Ensure Spanish language is installed
- es_lang = env['res.lang'].search([('code', '=', 'es_ES')], limit=1)
- if not es_lang:
- env['res.lang']._activate_lang('es_ES')
-
- # Get all affected modules
- affected_modules = env['helpdesk.affected.module'].search([])
-
- for module in affected_modules:
- if module.code in modules_translations:
- translations = modules_translations[module.code]
- # Set English name first (base language) - this ensures en_US is set
- module.with_context(lang='en_US').write({'name': translations['en_US']})
- # Update Spanish translation using write with context
- if 'es_ES' in translations and translations['es_ES']:
- # Use write with context to set translation
- module.with_context(lang='es_ES').write({'name': translations['es_ES']})
|