Files
bakery-ia/frontend/src/locales/es/wizards.json

295 lines
12 KiB
JSON
Raw Normal View History

feat: Add comprehensive i18n support for wizards (en/es/eu) INTERNATIONALIZATION: Implemented full multi-language support for wizard components in English, Spanish, and Basque (Euskara). IMPLEMENTATION DETAILS: **New Translation Files Created:** 1. frontend/src/locales/en/wizards.json - English translations 2. frontend/src/locales/es/wizards.json - Spanish translations 3. frontend/src/locales/eu/wizards.json - Basque translations **Translation Coverage:** - Common wizard strings (optional, required, auto-generated, etc.) - Inventory Wizard (all fields, sections, tooltips) - Quality Template Wizard (all fields, check types, sections) - Customer Order Wizard (all 3 steps, fields, customer types) - Item Type Selector (all 9 item types with descriptions) - Comprehensive tooltips for all complex fields **Total Translation Keys:** ~200+ keys per language **Structure:** ``` wizards: common: {optional, required, autoGenerated, ...} inventory: {title, fields, sections, productTypes, units, ...} qualityTemplate: {title, fields, checkTypes, sections, ...} customerOrder: {title, steps, customerSelection, orderItems, ...} itemTypeSelector: {title, types, ...} tooltips: {averageCost, lowStockThreshold, allergenInfo, ...} ``` **Integration:** - Updated frontend/src/locales/index.ts to register 'wizards' namespace - Added imports for wizardsEs, wizardsEn, wizardsEu - Registered in resources for all three languages - Added 'wizards' to namespaces array **Documentation:** Created comprehensive implementation guide: - WIZARD_I18N_IMPLEMENTATION_GUIDE.md - Complete usage examples for all wizard types - Migration patterns for existing components - Best practices and testing guidelines - Step-by-step implementation checklist **Usage Pattern:** ```typescript import { useTranslation } from 'react-i18next'; const MyWizard = () => { const { t } = useTranslation('wizards'); return ( <div> <h2>{t('inventory.title')}</h2> <label>{t('inventory.fields.name')}</label> <input placeholder={t('inventory.fields.namePlaceholder')} /> </div> ); }; ``` **Translation Quality:** - English: Native professional translations - Spanish: Professional translations with bakery-specific terminology - Basque: Professional Euskara translations maintaining formal tone **Benefits:** ✅ Full multi-language support (en/es/eu) ✅ Consistent terminology across all wizards ✅ Easy maintenance - all strings in JSON ✅ Type-safe with i18next TypeScript support ✅ Scalable - easy to add new languages ✅ Works with existing language switcher ✅ Comprehensive coverage of all wizard fields ✅ Professional translations for bakery domain **Next Steps:** Individual wizard components need to be updated to use these translations following the patterns documented in WIZARD_I18N_IMPLEMENTATION_GUIDE.md This establishes the foundation for complete multilingual wizard support. Components can be migrated incrementally using the provided examples.
2025-11-10 12:28:03 +00:00
{
"common": {
"optional": "Opcional",
"required": "Requerido",
"autoGenerated": "Auto-generado",
"leaveEmptyForAutoGeneration": "Dejar vacío para auto-generar",
"readOnly": "Solo lectura - Auto-generado",
"willBeGeneratedAutomatically": "Se generará automáticamente",
"autoGeneratedOnSave": "Auto-generado al guardar"
},
"inventory": {
"title": "Agregar Inventario",
"inventoryDetails": "Detalles del Artículo de Inventario",
"fillRequiredInfo": "Complete la información requerida para crear un artículo de inventario",
"fields": {
"name": "Nombre",
"namePlaceholder": "Ej: Harina de Uso General, Pan de Masa Madre",
"productType": "Tipo de Producto",
"unitOfMeasure": "Unidad de Medida",
"sku": "SKU",
"skuPlaceholder": "Dejar vacío para auto-generar",
"skuTooltip": "Dejar vacío para auto-generar desde el backend, o introducir SKU personalizado",
"barcode": "Código de Barras",
"barcodePlaceholder": "Código de Barras/UPC/EAN",
"ingredientCategory": "Categoría de Ingrediente",
"productCategory": "Categoría de Producto",
"brand": "Marca",
"brandPlaceholder": "Nombre de marca",
"description": "Descripción",
feat: Complete InventoryWizard i18n translation with extended field support Add comprehensive translation keys for all inventory wizard fields and complete the InventoryWizard component translation from English/Spanish/Basque. Translation additions (en/es/eu): - Extended inventory.fields with 48 new field labels and placeholders: * Pricing fields (averageCost, standardCost, sellingPrice, minimumPrice) * Inventory management fields (lowStockThreshold, reorderPoint, etc.) * Product info fields (packageSize, shelfLifeDays, displayLifeHours, etc.) * Storage fields (storageInstructions, handlingInstructions, isPerishable) * Supplier fields (preferredSupplierId, supplierProductCode) * Quality fields (allergenInfo, nutritionalInfo, certifications) * Physical properties (weight, volume, dimensions, color) * Status tracking (isActive, trackByLot, trackByExpiry, allowNegativeStock) * Additional fields (notes, tags, customFields) - Added ingredientCategories with 10 options (flour, dairy, eggs, fats, etc.) - Added productCategories with 5 options (bread, pastry, cake, cookies, specialty) InventoryWizard implementation: - Translated all section headers (11 sections) - Translated all field labels (58 fields) - Translated all placeholder texts (35 placeholders) - Translated all tooltips using tooltips namespace (11 tooltips) - Translated ingredient and product category options (15 total) - Translated wizard step title Result: Fully internationalized InventoryWizard with complete en/es/eu support covering all required fields, advanced options, and dynamic category selection.
2025-11-10 13:06:04 +00:00
"descriptionPlaceholder": "Descripción detallada del artículo de inventario",
"averageCost": "Coste Promedio (€)",
"lastPurchasePrice": "Último Precio de Compra (€)",
"standardCost": "Coste Estándar (€)",
"sellingPrice": "Precio de Venta (€)",
"minimumPrice": "Precio Mínimo (€)",
"lowStockThreshold": "Umbral de Stock Bajo",
"reorderPoint": "Punto de Reorden",
"reorderQuantity": "Cantidad de Reorden",
"maxStockLevel": "Nivel Máximo de Stock",
"leadTimeDays": "Tiempo de Entrega (días)",
"packageSize": "Tamaño del Paquete",
"packageSizePlaceholder": "Ej: bolsa de 25kg, paquete de 12",
"shelfLifeDays": "Vida Útil (días)",
"displayLifeHours": "Vida de Exhibición (horas)",
"storageTempRange": "Rango de Temperatura de Almacenamiento (°C)",
"storageTempMin": "Mín",
"storageTempMax": "Máx",
"storageInstructions": "Instrucciones de Almacenamiento",
"storageInstructionsPlaceholder": "Ej: Almacenar en lugar fresco y seco alejado de la luz directa del sol",
"handlingInstructions": "Instrucciones de Manejo",
"handlingInstructionsPlaceholder": "Requisitos especiales de manejo",
"isPerishable": "Artículo Perecedero",
"preferredSupplierId": "ID de Proveedor Preferido",
"preferredSupplierIdPlaceholder": "ID del Proveedor",
"supplierProductCode": "Código de Producto del Proveedor",
"supplierProductCodePlaceholder": "Código del producto del proveedor",
"allergenInfo": "Información de Alérgenos",
"allergenInfoPlaceholder": "gluten, leche, huevos",
"nutritionalInfo": "Información Nutricional",
"nutritionalInfoPlaceholder": "calorías:250, proteína:8g, carbohidratos:45g",
"certifications": "Certificaciones",
"certificationsPlaceholder": "Orgánico, Sin OGM, Kosher",
"weight": "Peso (kg)",
"volume": "Volumen (L)",
"dimensions": "Dimensiones (L×A×A cm)",
"dimensionsPlaceholder": "30×20×15",
"color": "Color",
"colorPlaceholder": "Color del producto",
"isActive": "Artículo Activo",
"trackByLot": "Rastrear por Lote/Batch",
"trackByExpiry": "Rastrear por Fecha de Vencimiento",
"allowNegativeStock": "Permitir Stock Negativo",
"notes": "Notas",
"notesPlaceholder": "Notas adicionales sobre este artículo",
"tags": "Etiquetas",
"tagsPlaceholder": "orgánico, premium, estacional",
"customFields": "Campos Personalizados (JSON)",
"customFieldsPlaceholder": "{\"campo_personalizado\": \"valor\"}"
feat: Add comprehensive i18n support for wizards (en/es/eu) INTERNATIONALIZATION: Implemented full multi-language support for wizard components in English, Spanish, and Basque (Euskara). IMPLEMENTATION DETAILS: **New Translation Files Created:** 1. frontend/src/locales/en/wizards.json - English translations 2. frontend/src/locales/es/wizards.json - Spanish translations 3. frontend/src/locales/eu/wizards.json - Basque translations **Translation Coverage:** - Common wizard strings (optional, required, auto-generated, etc.) - Inventory Wizard (all fields, sections, tooltips) - Quality Template Wizard (all fields, check types, sections) - Customer Order Wizard (all 3 steps, fields, customer types) - Item Type Selector (all 9 item types with descriptions) - Comprehensive tooltips for all complex fields **Total Translation Keys:** ~200+ keys per language **Structure:** ``` wizards: common: {optional, required, autoGenerated, ...} inventory: {title, fields, sections, productTypes, units, ...} qualityTemplate: {title, fields, checkTypes, sections, ...} customerOrder: {title, steps, customerSelection, orderItems, ...} itemTypeSelector: {title, types, ...} tooltips: {averageCost, lowStockThreshold, allergenInfo, ...} ``` **Integration:** - Updated frontend/src/locales/index.ts to register 'wizards' namespace - Added imports for wizardsEs, wizardsEn, wizardsEu - Registered in resources for all three languages - Added 'wizards' to namespaces array **Documentation:** Created comprehensive implementation guide: - WIZARD_I18N_IMPLEMENTATION_GUIDE.md - Complete usage examples for all wizard types - Migration patterns for existing components - Best practices and testing guidelines - Step-by-step implementation checklist **Usage Pattern:** ```typescript import { useTranslation } from 'react-i18next'; const MyWizard = () => { const { t } = useTranslation('wizards'); return ( <div> <h2>{t('inventory.title')}</h2> <label>{t('inventory.fields.name')}</label> <input placeholder={t('inventory.fields.namePlaceholder')} /> </div> ); }; ``` **Translation Quality:** - English: Native professional translations - Spanish: Professional translations with bakery-specific terminology - Basque: Professional Euskara translations maintaining formal tone **Benefits:** ✅ Full multi-language support (en/es/eu) ✅ Consistent terminology across all wizards ✅ Easy maintenance - all strings in JSON ✅ Type-safe with i18next TypeScript support ✅ Scalable - easy to add new languages ✅ Works with existing language switcher ✅ Comprehensive coverage of all wizard fields ✅ Professional translations for bakery domain **Next Steps:** Individual wizard components need to be updated to use these translations following the patterns documented in WIZARD_I18N_IMPLEMENTATION_GUIDE.md This establishes the foundation for complete multilingual wizard support. Components can be migrated incrementally using the provided examples.
2025-11-10 12:28:03 +00:00
},
"sections": {
"basicInformation": "Información Básica",
"advancedOptions": "Opciones Avanzadas",
"advancedOptionsDescription": "Campos opcionales para gestión completa de inventario",
"pricingInformation": "Información de Precios",
"inventoryManagement": "Gestión de Inventario",
"productInformation": "Información del Producto",
"storageAndHandling": "Almacenamiento y Manejo",
"supplierInformation": "Información del Proveedor",
"qualityAndCompliance": "Calidad y Cumplimiento",
"physicalProperties": "Propiedades Físicas",
"statusAndTracking": "Estado y Seguimiento",
"additionalInformation": "Información Adicional"
},
"productTypes": {
"ingredient": "Ingrediente",
"finished_product": "Producto Terminado",
"packaging": "Empaquetado",
"consumable": "Consumible"
},
"units": {
"select": "Seleccionar...",
"kg": "Kilogramos (kg)",
"g": "Gramos (g)",
"l": "Litros (L)",
"ml": "Mililitros (ml)",
"units": "Unidades",
"dozen": "Docena",
"lb": "Libras (lb)",
"oz": "Onzas (oz)"
feat: Complete InventoryWizard i18n translation with extended field support Add comprehensive translation keys for all inventory wizard fields and complete the InventoryWizard component translation from English/Spanish/Basque. Translation additions (en/es/eu): - Extended inventory.fields with 48 new field labels and placeholders: * Pricing fields (averageCost, standardCost, sellingPrice, minimumPrice) * Inventory management fields (lowStockThreshold, reorderPoint, etc.) * Product info fields (packageSize, shelfLifeDays, displayLifeHours, etc.) * Storage fields (storageInstructions, handlingInstructions, isPerishable) * Supplier fields (preferredSupplierId, supplierProductCode) * Quality fields (allergenInfo, nutritionalInfo, certifications) * Physical properties (weight, volume, dimensions, color) * Status tracking (isActive, trackByLot, trackByExpiry, allowNegativeStock) * Additional fields (notes, tags, customFields) - Added ingredientCategories with 10 options (flour, dairy, eggs, fats, etc.) - Added productCategories with 5 options (bread, pastry, cake, cookies, specialty) InventoryWizard implementation: - Translated all section headers (11 sections) - Translated all field labels (58 fields) - Translated all placeholder texts (35 placeholders) - Translated all tooltips using tooltips namespace (11 tooltips) - Translated ingredient and product category options (15 total) - Translated wizard step title Result: Fully internationalized InventoryWizard with complete en/es/eu support covering all required fields, advanced options, and dynamic category selection.
2025-11-10 13:06:04 +00:00
},
"ingredientCategories": {
"select": "Seleccionar...",
"flour": "Harinas",
"dairy": "Lácteos",
"eggs": "Huevos",
"fats": "Grasas y Aceites",
"sweeteners": "Endulzantes",
"additives": "Aditivos",
"fruits": "Frutas",
"nuts": "Nueces y Semillas",
"spices": "Especias",
"leavening": "Agentes Leudantes"
},
"productCategories": {
"select": "Seleccionar...",
"bread": "Pan",
"pastry": "Pastelería",
"cake": "Tortas",
"cookies": "Galletas",
"specialty": "Artículos Especiales"
feat: Add comprehensive i18n support for wizards (en/es/eu) INTERNATIONALIZATION: Implemented full multi-language support for wizard components in English, Spanish, and Basque (Euskara). IMPLEMENTATION DETAILS: **New Translation Files Created:** 1. frontend/src/locales/en/wizards.json - English translations 2. frontend/src/locales/es/wizards.json - Spanish translations 3. frontend/src/locales/eu/wizards.json - Basque translations **Translation Coverage:** - Common wizard strings (optional, required, auto-generated, etc.) - Inventory Wizard (all fields, sections, tooltips) - Quality Template Wizard (all fields, check types, sections) - Customer Order Wizard (all 3 steps, fields, customer types) - Item Type Selector (all 9 item types with descriptions) - Comprehensive tooltips for all complex fields **Total Translation Keys:** ~200+ keys per language **Structure:** ``` wizards: common: {optional, required, autoGenerated, ...} inventory: {title, fields, sections, productTypes, units, ...} qualityTemplate: {title, fields, checkTypes, sections, ...} customerOrder: {title, steps, customerSelection, orderItems, ...} itemTypeSelector: {title, types, ...} tooltips: {averageCost, lowStockThreshold, allergenInfo, ...} ``` **Integration:** - Updated frontend/src/locales/index.ts to register 'wizards' namespace - Added imports for wizardsEs, wizardsEn, wizardsEu - Registered in resources for all three languages - Added 'wizards' to namespaces array **Documentation:** Created comprehensive implementation guide: - WIZARD_I18N_IMPLEMENTATION_GUIDE.md - Complete usage examples for all wizard types - Migration patterns for existing components - Best practices and testing guidelines - Step-by-step implementation checklist **Usage Pattern:** ```typescript import { useTranslation } from 'react-i18next'; const MyWizard = () => { const { t } = useTranslation('wizards'); return ( <div> <h2>{t('inventory.title')}</h2> <label>{t('inventory.fields.name')}</label> <input placeholder={t('inventory.fields.namePlaceholder')} /> </div> ); }; ``` **Translation Quality:** - English: Native professional translations - Spanish: Professional translations with bakery-specific terminology - Basque: Professional Euskara translations maintaining formal tone **Benefits:** ✅ Full multi-language support (en/es/eu) ✅ Consistent terminology across all wizards ✅ Easy maintenance - all strings in JSON ✅ Type-safe with i18next TypeScript support ✅ Scalable - easy to add new languages ✅ Works with existing language switcher ✅ Comprehensive coverage of all wizard fields ✅ Professional translations for bakery domain **Next Steps:** Individual wizard components need to be updated to use these translations following the patterns documented in WIZARD_I18N_IMPLEMENTATION_GUIDE.md This establishes the foundation for complete multilingual wizard support. Components can be migrated incrementally using the provided examples.
2025-11-10 12:28:03 +00:00
}
},
"qualityTemplate": {
"title": "Agregar Plantilla de Calidad",
"templateDetails": "Detalles de la Plantilla de Calidad",
"fillRequiredInfo": "Complete la información requerida para crear una plantilla de control de calidad",
"fields": {
"name": "Nombre",
"namePlaceholder": "Ej: Control de Calidad del Pan, Inspección de Higiene",
"checkType": "Tipo de Verificación",
"weight": "Peso",
"weightTooltip": "Peso de importancia para la puntuación (0.0-10.0)",
"templateCode": "Código de Plantilla",
"templateCodePlaceholder": "Dejar vacío para auto-generar",
"templateCodeTooltip": "Dejar vacío para auto-generar desde el backend, o introducir código personalizado",
"version": "Versión",
"description": "Descripción",
"descriptionPlaceholder": "Descripción detallada de la plantilla de control de calidad",
"applicableStages": "Etapas Aplicables",
"applicableStagesTooltip": "Lista separada por comas de etapas de producción: ej: amasado, fermentación, horneado, enfriamiento",
"applicablePlaceholder": "amasado, fermentación, horneado, enfriamiento"
},
"checkTypes": {
"product_quality": "Calidad del Producto",
"process_hygiene": "Higiene del Proceso",
"equipment": "Equipamiento",
"safety": "Seguridad",
"cleaning": "Limpieza",
"temperature": "Control de Temperatura",
"documentation": "Documentación"
},
"sections": {
"basicInformation": "Información Básica",
"scoringConfiguration": "Configuración de Puntuación",
"advancedOptions": "Opciones Avanzadas",
"advancedOptionsDescription": "Campos opcionales para configuración completa de plantilla de calidad"
}
},
"customerOrder": {
"title": "Agregar Pedido",
"steps": {
"customerSelection": "Selección de Cliente",
"orderItems": "Artículos del Pedido",
"deliveryAndPayment": "Entrega y Pago"
},
"customerSelection": {
"title": "Seleccionar o Crear Cliente",
"subtitle": "Elija un cliente existente o cree uno nuevo",
"searchPlaceholder": "Buscar clientes...",
"createNew": "Crear nuevo cliente",
"backToList": "← Volver a la lista de clientes",
"fields": {
"customerName": "Nombre del Cliente",
"customerNamePlaceholder": "Ej: Restaurante El Molino",
"customerType": "Tipo de Cliente",
"phone": "Teléfono",
"phonePlaceholder": "+34 123 456 789",
"email": "Correo Electrónico",
"emailPlaceholder": "contacto@restaurante.com"
},
"customerTypes": {
"retail": "Minorista",
"wholesale": "Mayorista",
"event": "Evento",
"restaurant": "Restaurante"
}
},
"orderItems": {
"title": "Agregar Productos al Pedido",
"subtitle": "Seleccione productos y cantidades",
"addItem": "Agregar Artículo",
"removeItem": "Eliminar artículo",
"fields": {
"product": "Producto",
"productPlaceholder": "Seleccionar producto...",
"quantity": "Cantidad",
"unitPrice": "Precio Unitario (€)",
"customRequirements": "Requisitos Personalizados",
"customRequirementsPlaceholder": "Instrucciones especiales...",
"subtotal": "Subtotal"
},
"total": "Cantidad Total"
},
"deliveryPayment": {
"title": "Detalles de Entrega y Pago",
"subtitle": "Configurar entrega, pago y detalles del pedido",
"fields": {
"requestedDeliveryDate": "Fecha de Entrega Solicitada",
"orderNumber": "Número de Pedido",
"orderNumberTooltip": "Generado automáticamente por el backend al crear el pedido (formato: ORD-AAAAMMDD-####)",
"status": "Estado",
"orderType": "Tipo de Pedido",
"priority": "Prioridad"
},
"sections": {
"basicInfo": "Información Básica del Pedido",
"deliveryInfo": "Información de Entrega",
"paymentInfo": "Información de Pago"
}
}
},
"itemTypeSelector": {
"title": "Seleccionar Tipo",
"description": "Elige qué deseas agregar",
"types": {
"inventory": {
"title": "Inventario",
"description": "Agregar ingredientes o productos a tu inventario"
},
"supplier": {
"title": "Proveedor",
"description": "Agregar un nuevo proveedor o vendedor"
},
"recipe": {
"title": "Receta",
"description": "Crear una nueva receta o fórmula"
},
"equipment": {
"title": "Equipo",
"description": "Registrar equipo o maquinaria de panadería"
},
"quality-template": {
"title": "Plantilla de Calidad",
"description": "Crear una plantilla de control de calidad"
},
"customer-order": {
"title": "Pedido de Cliente",
"description": "Crear un nuevo pedido de cliente"
},
"customer": {
"title": "Cliente",
"description": "Agregar un nuevo cliente"
},
"team-member": {
"title": "Miembro del Equipo",
"description": "Agregar un miembro del equipo o empleado"
},
"sales-entry": {
"title": "Registro de Ventas",
"description": "Registrar una transacción de venta"
}
}
},
"tooltips": {
"averageCost": "Costo promedio por unidad basado en historial de compras",
"standardCost": "Costo estándar/esperado por unidad para cálculos de costos",
"lowStockThreshold": "Alertar cuando el stock caiga por debajo de este nivel",
"reorderPoint": "Activar reorden cuando el stock alcance este nivel",
"reorderQuantity": "Cantidad estándar a ordenar al reordenar",
"leadTime": "Tiempo entre la colocación del pedido y la entrega",
"displayLife": "Horas que el producto puede ser exhibido antes de que la calidad se degrade",
"allergenInfo": "Lista separada por comas: ej: gluten, leche, huevos, nueces",
"nutritionalInfo": "Datos nutricionales clave como lista separada por comas",
"certifications": "Lista separada por comas: ej: Orgánico, No GMO, Kosher",
"tags": "Etiquetas separadas por comas para facilitar búsqueda y filtrado",
"customFields": "Datos personalizados adicionales en formato JSON",
"passThreshold": "Puntuación mínima requerida para aprobar (0-100)",
"frequencyDays": "Con qué frecuencia debe realizarse esta verificación (dejar vacío para basado en lotes)",
"checkPoints": "Matriz de puntos de verificación",
"parameters": "Parámetros de plantilla",
"thresholds": "Valores de umbral",
"scoringCriteria": "Criterios de puntuación personalizados"
}
}