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

1159 lines
49 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",
2025-11-18 07:17:17 +01:00
"autoGeneratedOnSave": "Auto-generado al guardar",
"show": "Mostrar",
"hide": "Ocultar",
"next": "Siguiente",
"back": "Atrás",
"complete": "Completar",
2025-12-17 13:03:52 +01:00
"stepOf": "Paso {current} de {total}"
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
},
2025-11-20 19:14:49 +01:00
"keyValueEditor": {
"showBuilder": "Mostrar Constructor",
"showJson": "Mostrar JSON",
"suggestions": "Sugerencias rápidas",
"keyPlaceholder": "Clave",
"valuePlaceholder": "Valor",
"remove": "Eliminar",
"addPair": "Agregar Parámetro",
"emptyState": "No hay parámetros aún. Haz clic en 'Agregar Parámetro' para comenzar."
},
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
"inventory": {
"title": "Agregar Inventario",
"inventoryDetails": "Detalles del Artículo de Inventario",
"fillRequiredInfo": "Complete la información requerida para crear un artículo de inventario",
2025-11-15 21:21:06 +01:00
"summary": "Resumen",
"steps": {
"productType": "Tipo de Producto",
"basicInfo": "Información Básica",
2025-11-18 07:17:17 +01:00
"stockConfig": "Configuración de Stock",
"initialStock": "Stock Inicial"
},
"initialStockDescription": "Agrega uno o más lotes para registrar el inventario inicial",
"stockConfig": {
"product": "Producto",
"totalQuantity": "Cantidad Total",
"totalValue": "Valor Total",
"lotsRegistered": "Lotes Registrados",
"lot": "Lote",
"remove": "Eliminar",
"quantity": "Cantidad",
"unitCost": "Costo Unitario ($)",
"lotNumber": "Número de Lote",
"expirationDate": "Fecha de Expiración",
"location": "Ubicación",
"lotValue": "Valor del lote:",
"addInitialLot": "Agregar Lote Inicial",
"addAnotherLot": "Agregar Otro Lote",
"skipMessage": "Puedes saltar este paso si prefieres agregar el stock inicial más tarde"
2025-11-15 21:21:06 +01:00
},
"typeDescriptions": {
"ingredient": "Materias primas e ingredientes utilizados en recetas",
"finished_product": "Productos finales listos para venta o consumo"
},
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
"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",
2025-11-15 21:21:06 +01:00
"additionalInformationDescription": "Identificadores de producto opcionales",
"additionalDetails": "Detalles Adicionales",
"additionalDetailsDescription": "Detalles opcionales del producto",
"advancedStockSettings": "Configuración Avanzada de Stock",
"advancedStockSettingsDescription": "Configurar umbrales de inventario y puntos de reorden",
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
"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",
2025-11-20 19:14:49 +01:00
"selectCheckType": "Seleccionar Tipo de Control de Calidad",
"selectCheckTypeDescription": "Elija el tipo de control de calidad que desea crear",
"essentialConfiguration": "Configuración Esencial",
"essentialConfigurationDescription": "Defina las propiedades principales de su plantilla de control de calidad",
"criteriaAndSettings": "Criterios y Configuración de Calidad",
"criteriaAndSettingsDescription": "Configure los métodos de puntuación y criterios avanzados de calidad",
"steps": {
"checkType": "Tipo de Control",
"essentialConfiguration": "Configuración",
"criteriaSettings": "Criterios y Ajustes"
},
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
"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",
2025-11-20 19:14:49 +01:00
"category": "Categoría",
"categoryPlaceholder": "Ej: apariencia, estructura, textura",
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
"version": "Versión",
"description": "Descripción",
"descriptionPlaceholder": "Descripción detallada de la plantilla de control de calidad",
"applicableStages": "Etapas Aplicables",
2025-11-20 19:14:49 +01:00
"applicableStagesTooltip": "Seleccione las etapas de producción donde se aplica este control de calidad",
"applicableStagesHelp": "Dejar vacío para aplicar a todas las etapas",
"applicablePlaceholder": "amasado, fermentación, horneado, enfriamiento",
"instructions": "Instrucciones",
"instructionsPlaceholder": "Instrucciones paso a paso para realizar este control de calidad",
"minValue": "Valor Mínimo",
"maxValue": "Valor Máximo",
"targetValue": "Valor Objetivo",
"unit": "Unidad",
"unitPlaceholder": "Ej: °C, g, cm, %",
"tolerancePercentage": "Porcentaje de Tolerancia",
"toleranceTooltip": "Desviación aceptable del valor objetivo (0-100%)",
"scoringMethod": "Método de Puntuación",
"passThreshold": "Umbral de Aprobación (%)",
"passThresholdTooltip": "Porcentaje de puntuación mínimo requerido para aprobar (0-100%)",
"frequencyDays": "Frecuencia (días)",
"frequencyDaysTooltip": "Con qué frecuencia debe realizarse este control (en días)",
"frequencyDaysPlaceholder": "Dejar vacío para basado en lotes",
"requiredCheck": "Verificación Requerida",
"checkPointsJsonArray": "Puntos de Control (Array JSON)",
"checkPointsTooltip": "Array de puntos de control: [{\"name\": \"Control Visual\", \"description\": \"...\", \"weight\": 1.0}]",
"checkPointsPlaceholder": "[{\"name\": \"Inspección Visual\", \"description\": \"Verificar apariencia\", \"expected_value\": \"Marrón dorado\", \"measurement_type\": \"visual\", \"is_critical\": false, \"weight\": 1.0}]",
"acceptanceCriteria": "Criterios de Aceptación",
"acceptanceCriteriaPlaceholder": "Ej: Color dorado uniforme, textura esponjosa, sin quemaduras...",
"parametersJson": "Parámetros (JSON)",
"parametersTooltip": "Parámetros de plantilla: {\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"parametersPlaceholder": "{\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"thresholdsJson": "Umbrales (JSON)",
"thresholdsTooltip": "Valores de umbral: {\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"thresholdsPlaceholder": "{\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"scoringCriteriaJson": "Criterios de Puntuación (JSON)",
"scoringCriteriaTooltip": "Criterios de puntuación personalizados: {\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"scoringCriteriaPlaceholder": "{\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"responsibleRole": "Rol/Persona Responsable",
"responsibleRolePlaceholder": "Ej: Gerente de Producción, Panadero",
"requiredEquipment": "Equipos/Herramientas Requeridas",
"requiredEquipmentPlaceholder": "Ej: Termómetro, báscula, temporizador",
"specificConditions": "Condiciones o Notas Específicas",
"specificConditionsPlaceholder": "Ej: Solo aplicable en días húmedos, verificar 30 min después de hornear...",
"activeTemplate": "Plantilla Activa",
"requiresPhotoEvidence": "Requiere Evidencia Fotográfica",
"criticalControlPoint": "Punto Crítico de Control (PCC)",
"notifyOnFailure": "Notificar en Falla"
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
},
"checkTypes": {
2025-11-20 19:14:49 +01:00
"visual": "Inspección Visual",
"measurement": "Medición",
"temperature": "Temperatura",
"weight": "Peso",
"boolean": "Control Aprobado/Reprobado",
"timing": "Temporización",
"checklist": "Lista de Verificación"
},
"checkTypeDescriptions": {
"visual": "Inspeccionar apariencia, color y características visuales de calidad",
"measurement": "Medir dimensiones, tamaños o cantidades específicas",
"temperature": "Monitorear y verificar lecturas de temperatura",
"weight": "Verificar mediciones de peso y masa",
"boolean": "Controles simples de sí/no o aprobado/reprobado",
"timing": "Rastrear criterios de calidad basados en tiempo",
"checklist": "Verificación de lista de puntos múltiples"
},
"processStages": {
"mixing": "Amasado",
"proofing": "Fermentación",
"shaping": "Formado",
"baking": "Horneado",
"cooling": "Enfriamiento",
"packaging": "Empaquetado",
"finishing": "Acabado"
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",
2025-11-20 19:14:49 +01:00
"additionalIdentifiers": "Identificadores Adicionales",
"additionalIdentifiersDescription": "Identificadores opcionales para organización",
"measurementSpecifications": "Especificaciones de Medición",
"additionalDetails": "Detalles Adicionales",
"additionalDetailsDescription": "Instrucciones detalladas opcionales",
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
"scoringConfiguration": "Configuración de Puntuación",
"advancedOptions": "Opciones Avanzadas",
"advancedOptionsDescription": "Campos opcionales para configuración completa de plantilla de calidad",
"checkPointsConfiguration": "Configuración de Puntos de Control",
"advancedConfiguration": "Configuración Avanzada (JSONB)",
"responsibilityRequirements": "Responsabilidad y Requisitos",
"controlSettings": "Configuración de Control"
},
"scoringMethods": {
"scoringMethod": "Método de Puntuación",
"weightedAverage": "Promedio Ponderado",
"passFail": "Aprobar/Reprobar",
"percentage": "Porcentaje",
"pointsBased": "Basado en Puntos"
},
"advancedFields": {
"checkPointsJsonArray": "Puntos de Control (Array JSON)",
"checkPointsTooltip": "Array de puntos de control: [{\"name\": \"Control Visual\", \"description\": \"...\", \"weight\": 1.0}]",
"checkPointsPlaceholder": "[{\"name\": \"Inspección Visual\", \"description\": \"Verificar apariencia\", \"expected_value\": \"Marrón dorado\", \"measurement_type\": \"visual\", \"is_critical\": false, \"weight\": 1.0}]",
"acceptanceCriteria": "Criterios de Aceptación",
"acceptanceCriteriaPlaceholder": "Ej: Color dorado uniforme, textura esponjosa, sin quemaduras...",
"parametersJson": "Parámetros (JSON)",
"parametersTooltip": "Parámetros de plantilla: {\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"parametersPlaceholder": "{\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"thresholdsJson": "Umbrales (JSON)",
"thresholdsTooltip": "Valores de umbral: {\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"thresholdsPlaceholder": "{\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"scoringCriteriaJson": "Criterios de Puntuación (JSON)",
"scoringCriteriaTooltip": "Criterios de puntuación personalizados: {\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"scoringCriteriaPlaceholder": "{\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"responsibleRole": "Rol/Persona Responsable",
"responsibleRolePlaceholder": "Ej: Gerente de Producción, Panadero",
"requiredEquipment": "Equipos/Herramientas Requeridas",
"requiredEquipmentPlaceholder": "Ej: Termómetro, báscula, temporizador",
"specificConditions": "Condiciones o Notas Específicas",
"specificConditionsPlaceholder": "Ej: Solo aplicable en días húmedos, verificar 30 min después de hornear...",
"passThresholdPercent": "Umbral de Aprobación (%)",
"frequencyDays": "Frecuencia (días)",
"frequencyPlaceholder": "Dejar vacío para basado en lotes",
"requiredCheck": "Verificación Requerida",
"activeTemplate": "Plantilla Activa",
"requiresPhotoEvidence": "Requiere Evidencia Fotográfica",
"criticalControlPoint": "Punto Crítico de Control (PCC)",
"notifyOnFailure": "Notificar en Falla",
"templateDetailsTitle": "Detalles de Plantilla"
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
}
},
"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",
2025-11-18 07:17:17 +01:00
"customer": "Cliente",
"orderProducts": "Productos del Pedido",
"productNumber": "Producto #{{number}}",
"product": "Producto",
"productPlaceholder": "Seleccionar producto...",
"selectProduct": "Seleccionar producto...",
"quantity": "Cantidad",
"unitPrice": "Precio Unitario (€)",
"specialRequirements": "Requisitos Personalizados",
"specialRequirementsPlaceholder": "Instrucciones especiales...",
"customRequirements": "Requisitos Personalizados",
"customRequirementsPlaceholder": "Instrucciones especiales...",
"subtotal": "Subtotal",
"total": "Cantidad Total",
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
"fields": {
"product": "Producto",
"productPlaceholder": "Seleccionar producto...",
"quantity": "Cantidad",
"unitPrice": "Precio Unitario (€)",
"customRequirements": "Requisitos Personalizados",
"customRequirementsPlaceholder": "Instrucciones especiales...",
"subtotal": "Subtotal"
2025-11-18 07:17:17 +01:00
}
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
},
"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": "Detalles de Entrega",
"paymentInfo": "Detalles de Pago",
"orderSummary": "Resumen del Pedido",
"advancedOptions": "Opciones Avanzadas",
"advancedOptionsDescription": "Campos opcionales para gestión completa de pedidos",
"pricingDetails": "Detalles de Precios",
"productionScheduling": "Producción y Programación",
"fulfillmentTracking": "Cumplimiento y Seguimiento",
"sourceChannel": "Origen y Canal",
"communicationNotes": "Comunicación y Notas",
"notifications": "Notificaciones",
"qualityRequirements": "Calidad y Requisitos",
"additionalOptions": "Opciones Adicionales"
},
"orderTypes": {
"standard": "Estándar",
"custom": "Personalizado",
"bulk": "A Granel",
"urgent": "Urgente"
},
"priorities": {
"low": "Baja",
"normal": "Normal",
"high": "Alta",
"urgent": "Urgente"
},
"statuses": {
"pending": "Pendiente",
"confirmed": "Confirmado",
"in_production": "En Producción",
"ready": "Listo",
"delivered": "Entregado"
},
"deliveryMethods": {
"pickup": "Recogida",
"pickupDesc": "Recogida del cliente",
"delivery": "Entrega",
"deliveryDesc": "Entrega a domicilio",
"shipping": "Envío",
"shippingDesc": "Servicio de mensajería"
},
"paymentMethods": {
"cash": "Efectivo",
"card": "Tarjeta",
"bank_transfer": "Transferencia Bancaria",
"invoice": "Factura",
"account": "Cuenta"
},
"paymentTerms": {
"immediate": "Inmediato",
"net_30": "Neto 30",
"net_60": "Neto 60"
},
"paymentStatuses": {
"pending": "Pendiente",
"partial": "Parcial",
"paid": "Pagado",
"overdue": "Vencido"
},
"orderSources": {
"manual": "Manual",
"phone": "Teléfono",
"email": "Correo Electrónico",
"website": "Sitio Web",
"app": "Aplicación Móvil"
},
"salesChannels": {
"direct": "Directo",
"wholesale": "Mayorista",
"retail": "Minorista",
"online": "En Línea"
},
"qualityCheckStatuses": {
"not_started": "No Iniciado",
"pending": "Pendiente",
"passed": "Aprobado",
"failed": "Reprobado"
},
"messages": {
"loadingCustomers": "Cargando clientes...",
"loadingProducts": "Cargando productos...",
"errorLoadingCustomers": "Error al cargar clientes",
"errorLoadingProducts": "Error al cargar productos",
"noCustomersFound": "No se encontraron clientes",
"tryDifferentSearch": "Intenta con un término de búsqueda diferente",
"noProductsInOrder": "No hay productos en el pedido",
"clickAddProduct": "Haz clic en \"Agregar Producto\" para comenzar",
"newCustomer": "Nuevo Cliente",
"customer": "Cliente",
"products": "Productos",
"items": "artículos",
"total": "Total",
"productNumber": "Producto #",
"searchByName": "Buscar cliente por nombre...",
"selectCustomer": "Seleccionar Cliente",
"searchForCustomer": "Buscar un cliente existente o crear uno nuevo",
"orderItems": "Artículos del Pedido",
"addProducts": "Agregar Productos al Pedido",
"customerLabel": "Cliente:",
"productsLabel": "Productos:",
"totalLabel": "Total:",
"orderTotal": "Total del Pedido:",
"newCustomerHeader": "Nuevo Cliente",
"orderProducts": "Productos del Pedido",
"addProduct": "Agregar Producto",
"removeItem": "Eliminar artículo",
"optionalEmail": "Correo Electrónico (Opcional)",
"readOnlyAutoGenerated": "Número de Pedido (Solo lectura - Auto-generado)",
"willBeGeneratedAutomatically": "Se generará automáticamente",
"autoGeneratedOnSave": "Auto-generado al guardar",
"orderNumberFormat": "formato: ORD-AAAAMMDD-####",
"selectProduct": "Seleccionar producto...",
"deliveryAddress": "Dirección de Entrega",
"deliveryAddressPlaceholder": "Calle, número, piso, código postal, ciudad...",
"deliveryContactName": "Nombre de Contacto para Entrega",
"deliveryContactNamePlaceholder": "Persona de contacto",
"deliveryContactPhone": "Teléfono de Contacto para Entrega",
"deliveryMethod": "Método de Entrega",
"paymentMethod": "Método de Pago",
"paymentTerms": "Términos de Pago",
"paymentStatus": "Estado de Pago",
"paymentDueDate": "Fecha de Vencimiento del Pago",
"discountPercent": "Descuento (%)",
"deliveryFee": "Tarifa de Entrega (€)",
"productionStartDate": "Fecha de Inicio de Producción",
"productionDueDate": "Fecha de Vencimiento de Producción",
"productionBatchNumber": "Número de Lote de Producción",
"productionBatchNumberPlaceholder": "LOTE-001",
"deliveryTimeWindow": "Ventana de Tiempo de Entrega",
"deliveryTimeWindowPlaceholder": "Ej: 9:00 AM - 11:00 AM",
"productionNotes": "Notas de Producción",
"productionNotesPlaceholder": "Requisitos especiales de producción o notas",
"shippingTrackingNumber": "Número de Seguimiento de Envío",
"shippingTrackingNumberPlaceholder": "Número de seguimiento",
"shippingCarrier": "Transportista de Envío",
"shippingCarrierPlaceholder": "Ej: DHL, UPS, FedEx",
"pickupLocation": "Ubicación de Recogida",
"pickupLocationPlaceholder": "Ubicación de tienda para recogida",
"actualDeliveryDate": "Fecha Real de Entrega",
"orderSource": "Origen del Pedido",
"salesChannel": "Canal de Ventas",
"salesRepId": "ID del Representante de Ventas",
"salesRepIdPlaceholder": "ID o nombre del representante de ventas",
"customerPurchaseOrder": "Orden de Compra del Cliente #",
"customerPurchaseOrderPlaceholder": "Número de OC del cliente",
"deliveryInstructions": "Instrucciones de Entrega",
"deliveryInstructionsPlaceholder": "Instrucciones especiales de entrega",
"specialInstructions": "Instrucciones Especiales",
"specialInstructionsPlaceholder": "Cualquier requisito o instrucción especial",
"internalNotes": "Notas Internas",
"internalNotesPlaceholder": "Notas internas (no visibles para el cliente)",
"customerNotes": "Notas del Cliente",
"customerNotesPlaceholder": "Notas de/para el cliente",
"notifyOnStatusChange": "Notificar en Cambio de Estado",
"notifyOnDelivery": "Notificar en Entrega",
"notificationEmail": "Correo de Notificación",
"notificationEmailPlaceholder": "cliente@correo.com",
"notificationPhone": "Teléfono de Notificación",
"qualityCheckRequired": "Control de Calidad Requerido",
"qualityCheckStatus": "Estado del Control de Calidad",
"packagingInstructions": "Instrucciones de Empaquetado",
"packagingInstructionsPlaceholder": "Requisitos especiales de empaquetado",
"labelingRequirements": "Requisitos de Etiquetado",
"labelingRequirementsPlaceholder": "Requisitos de etiqueta personalizados",
"recurringOrder": "Pedido Recurrente",
"recurringSchedule": "Programa Recurrente",
"recurringSchedulePlaceholder": "Ej: Semanalmente los lunes, Cada 2 semanas",
"tags": "Etiquetas",
"tagsPlaceholder": "urgente, vip, mayorista",
"tagsTooltip": "Etiquetas separadas por comas para búsqueda y filtrado más fácil",
"metadata": "Metadatos (JSON)",
"metadataPlaceholder": "{\"campo_personalizado\": \"valor\"}",
"metadataTooltip": "Datos personalizados adicionales en formato JSON"
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
}
}
},
"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": {
2025-11-18 07:17:17 +01:00
"title": "Maquinaria",
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
"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"
2025-11-18 07:17:17 +01:00
},
"supplier": {
"title": "Agregar Proveedor",
"supplierDetails": "Detalles del Proveedor",
"subtitle": "Información esencial del proveedor",
"advancedOptionsTitle": "Opciones Avanzadas",
"advancedOptionsDescription": "Información adicional del proveedor y detalles comerciales",
"fields": {
"name": "Nombre del Proveedor",
"namePlaceholder": "Ej: Premium Flour Suppliers Ltd.",
"supplierCode": "Código de Proveedor",
"supplierCodePlaceholder": "SUP-001",
"supplierType": "Tipo de Proveedor",
"supplierTypeTooltip": "Categoría de productos/servicios que proporciona este proveedor",
"status": "Estado",
"paymentTerms": "Términos de Pago",
"currency": "Moneda",
"currencyPlaceholder": "EUR",
"leadTime": "Tiempo de Entrega Estándar (días)",
"leadTimeTooltip": "Tiempo típico de entrega desde el pedido hasta la entrega",
"contactPerson": "Persona de Contacto",
"contactPersonPlaceholder": "Nombre del contacto",
"email": "Correo Electrónico",
"emailPlaceholder": "contacto@proveedor.com",
"phone": "Teléfono",
"phonePlaceholder": "+1 234 567 8900",
"mobile": "Móvil",
"mobilePlaceholder": "+1 234 567 8900",
"taxId": "Identificación Fiscal",
"taxIdPlaceholder": "NIF/CIF",
"registrationNumber": "Número de Registro",
"registrationNumberPlaceholder": "Número de registro mercantil",
"website": "Sitio Web",
"websitePlaceholder": "https://www.proveedor.com",
"addressLine1": "Dirección - Línea 1",
"addressLine1Placeholder": "Dirección de calle",
"addressLine2": "Dirección - Línea 2",
"addressLine2Placeholder": "Suite, edificio, etc.",
"city": "Ciudad",
"cityPlaceholder": "Ciudad",
"state": "Estado/Provincia",
"statePlaceholder": "Estado",
"postalCode": "Código Postal",
"postalCodePlaceholder": "Código postal",
"country": "País",
"countryPlaceholder": "País",
"creditLimit": "Límite de Crédito",
"creditLimitPlaceholder": "10000.00",
"minOrderAmount": "Cantidad Mínima de Pedido",
"minOrderAmountPlaceholder": "100.00",
"deliveryArea": "Área de Entrega",
"deliveryAreaPlaceholder": "Ej: Área Metropolitana de Madrid",
"certifications": "Certificaciones",
"certificationsPlaceholder": "Ej: ISO 9001, HACCP, Orgánico (separado por comas)",
"specializations": "Especializaciones",
"specializationsPlaceholder": "Ej: Harinas orgánicas, Productos sin gluten (separado por comas)",
"notes": "Notas",
"notesPlaceholder": "Notas adicionales sobre este proveedor...",
"preferredSupplier": "Proveedor Preferido",
"autoApproveOrders": "Auto-aprobar Pedidos"
},
"supplierTypes": {
"ingredients": "Ingredientes",
"packaging": "Embalaje",
"equipment": "Equipo",
"services": "Servicios",
"utilities": "Servicios Públicos",
"multi": "Múltiple"
},
"statuses": {
"active": "Activo",
"inactive": "Inactivo",
"pending_approval": "Pendiente de Aprobación",
"suspended": "Suspendido",
"blacklisted": "En Lista Negra"
},
"paymentTerms": {
"cod": "Contra Reembolso",
"net_15": "Neto 15",
"net_30": "Neto 30",
"net_45": "Neto 45",
"net_60": "Neto 60",
"prepaid": "Prepago",
"credit_terms": "Términos de Crédito"
},
"steps": {
"supplierDetails": "Detalles del Proveedor",
"supplierDetailsDescription": "Información esencial del proveedor"
},
"messages": {
"errorObtainingTenantInfo": "No se pudo obtener información del tenant",
"supplierCreatedSuccessfully": "Proveedor creado exitosamente",
"errorCreatingSupplier": "Error al crear el proveedor"
}
},
"recipe": {
"title": "Agregar Receta",
"recipeDetails": "Detalles de la Receta",
"recipeDetailsDescription": "Información esencial sobre tu receta",
"ingredients": "Ingredientes",
"subtitle": "Información esencial sobre tu receta",
"advancedOptionsTitle": "Opciones Avanzadas",
"advancedOptionsDescription": "Campos opcionales para gestión detallada de recetas",
"fields": {
"name": "Nombre de la Receta",
"namePlaceholder": "Ej: Baguette Tradicional",
"category": "Categoría",
"finishedProduct": "Producto Terminado",
"finishedProductTooltip": "El producto final que produce esta receta. Debe crearse primero en el inventario.",
"selectProduct": "Seleccionar producto...",
"yieldQuantity": "Cantidad de Rendimiento",
"yieldUnit": "Unidad de Rendimiento",
"prepTime": "Tiempo de Preparación (minutos)",
"prepTimePlaceholder": "30",
"cookTime": "Tiempo de Cocción (minutos)",
"cookTimePlaceholder": "45",
"restTime": "Tiempo de Reposo (minutos)",
"restTimeTooltip": "Tiempo para levar, enfriar o reposar",
"restTimePlaceholder": "60",
"totalTime": "Tiempo Total (minutos)",
"totalTimePlaceholder": "135",
"instructions": "Instrucciones",
"instructionsPlaceholder": "Instrucciones de preparación paso a paso...",
"recipeCode": "Código/SKU de Receta",
"recipeCodePlaceholder": "RCP-001",
"version": "Versión",
"versionPlaceholder": "1.0",
"difficulty": "Nivel de Dificultad (1-5)",
"difficultyTooltip": "1 = Muy Fácil, 5 = Nivel Experto",
"servesCount": "Número de Porciones",
"servesCountPlaceholder": "12",
"batchSizeMultiplier": "Multiplicador de Tamaño de Lote",
"batchSizeMultiplierTooltip": "Factor de escalado predeterminado para producción en lote",
"batchSizeMultiplierPlaceholder": "1.0",
"minBatchSize": "Tamaño Mínimo de Lote",
"minBatchSizePlaceholder": "1",
"maxBatchSize": "Tamaño Máximo de Lote",
"maxBatchSizePlaceholder": "100",
"optimalTemp": "Temperatura Óptima de Producción (°C)",
"optimalTempPlaceholder": "22",
"optimalHumidity": "Humedad Óptima (%)",
"optimalHumidityPlaceholder": "65",
"targetMargin": "Margen Objetivo (%)",
"targetMarginPlaceholder": "50",
"description": "Descripción",
"descriptionPlaceholder": "Descripción detallada de la receta...",
"prepNotes": "Notas de Preparación",
"prepNotesPlaceholder": "Consejos y notas para la preparación...",
"storageInstructions": "Instrucciones de Almacenamiento",
"storageInstructionsPlaceholder": "Cómo almacenar el producto terminado...",
"allergens": "Alérgenos",
"allergensPlaceholder": "Ej: gluten, lácteos, huevos (separado por comas)",
"dietaryTags": "Etiquetas Dietéticas",
"dietaryTagsPlaceholder": "Ej: vegano, sin gluten, orgánico (separado por comas)",
"seasonalItem": "Artículo Estacional",
"signatureItem": "Artículo Insignia",
"seasonStartMonth": "Mes de Inicio de Temporada",
"seasonStartMonthPlaceholder": "Seleccionar mes...",
"seasonEndMonth": "Mes de Fin de Temporada",
"seasonEndMonthPlaceholder": "Seleccionar mes..."
},
"categories": {
"bread": "Pan",
"pastries": "Pastelería",
"cakes": "Pasteles",
"cookies": "Galletas",
"muffins": "Muffins",
"sandwiches": "Sándwiches",
"seasonal": "Estacional",
"other": "Otro"
},
"units": {
"units": "Unidades",
"pieces": "Piezas",
"kg": "Kilogramos (kg)",
"g": "Gramos (g)",
"l": "Litros (l)",
"ml": "Mililitros (ml)",
"cups": "Tazas",
"tablespoons": "Cucharadas",
"teaspoons": "Cucharaditas"
},
"ingredients": {
"title": "Ingredientes",
"noIngredientsAdded": "No se agregaron ingredientes",
"clickToBegin": "Haz clic en \"Agregar Ingrediente\" para comenzar",
"ingredient": "Ingrediente",
"ingredientPlaceholder": "Seleccionar...",
"quantity": "Cantidad",
"unit": "Unidad",
"notes": "Notas",
"notesPlaceholder": "Opcional",
"removeIngredient": "Eliminar ingrediente",
"addIngredient": "Agregar Ingrediente"
},
"qualityTemplates": {
"title": "Plantillas de Calidad (Opcional)",
"subtitle": "Selecciona plantillas de control de calidad para aplicar a esta receta",
"errorLoading": "Error al cargar plantillas de calidad",
"loading": "Cargando plantillas...",
"noTemplates": "No hay plantillas de calidad disponibles",
"createFromWizard": "Puedes crear plantillas desde el asistente principal",
"required": "Requerido",
"type": "Tipo:",
"everyXDays": "Cada X días",
"templatesSelected": "plantilla(s) seleccionada(s)"
},
"steps": {
"recipeDetails": "Detalles de la Receta",
"recipeDetailsDescription": "Nombre, categoría, rendimiento",
"ingredients": "Ingredientes",
"ingredientsDescription": "Selección y cantidades",
"qualityTemplates": "Plantillas de Calidad",
"qualityTemplatesDescription": "Controles de calidad aplicables"
},
"messages": {
"errorGettingTenant": "No se pudo obtener información del tenant",
"creatingRecipe": "Creando receta...",
"createRecipe": "Crear Receta",
"successCreate": "Receta creada exitosamente",
"errorCreate": "Error al crear la receta"
}
},
"customer": {
"title": "Agregar Cliente",
"customerDetails": "Detalles del Cliente",
"subtitle": "Información esencial del cliente",
"advancedOptionsTitle": "Opciones Avanzadas",
"advancedOptionsDescription": "Información adicional del cliente y términos comerciales",
"tooltips": {
"customerCode": "Identificador único para este cliente. Auto-generado pero editable."
},
"fields": {
"name": "Nombre del Cliente",
"namePlaceholder": "Ej: Restaurante El Molino",
"customerCode": "Código de Cliente",
"customerCodePlaceholder": "CUST-001",
"customerType": "Tipo de Cliente",
"email": "Correo Electrónico",
"emailPlaceholder": "contacto@empresa.com",
"phone": "Teléfono",
"phonePlaceholder": "+1 234 567 8900",
"country": "País",
"countryPlaceholder": "US",
"businessName": "Nombre Comercial",
"businessNamePlaceholder": "Nombre legal del negocio",
"addressLine1": "Dirección - Línea 1",
"addressLine1Placeholder": "Dirección de calle",
"addressLine2": "Dirección - Línea 2",
"addressLine2Placeholder": "Apartamento, suite, etc.",
"city": "Ciudad",
"cityPlaceholder": "Ciudad",
"state": "Estado/Provincia",
"statePlaceholder": "Estado",
"postalCode": "Código Postal",
"postalCodePlaceholder": "12345",
"taxId": "Identificación Fiscal",
"taxIdPlaceholder": "Número de identificación fiscal",
"businessLicense": "Licencia Comercial",
"businessLicensePlaceholder": "Número de licencia comercial",
"paymentTerms": "Términos de Pago",
"creditLimit": "Límite de Crédito (€)",
"creditLimitPlaceholder": "5000.00",
"discountPercentage": "Porcentaje de Descuento (%)",
"discountPercentagePlaceholder": "10",
"customerSegment": "Segmento de Cliente",
"priorityLevel": "Nivel de Prioridad",
"preferredDeliveryMethod": "Método de Entrega Preferido",
"specialInstructions": "Instrucciones Especiales",
"specialInstructionsPlaceholder": "Notas o instrucciones especiales para este cliente..."
},
"customerTypes": {
"individual": "Individual",
"business": "Empresa",
"central_bakery": "Panadería Central"
},
"paymentTerms": {
"immediate": "Inmediato",
"net_30": "Neto 30",
"net_60": "Neto 60"
},
"segments": {
"vip": "VIP",
"regular": "Regular",
"wholesale": "Mayorista"
},
"priorities": {
"high": "Alta",
"normal": "Normal",
"low": "Baja"
},
"deliveryMethods": {
"delivery": "Entrega a Domicilio",
"pickup": "Recogida",
"shipping": "Envío"
},
"steps": {
"customerDetails": "Detalles del Cliente",
"customerDetailsDescription": "Información de contacto y negocio"
},
"messages": {
"errorObtainingTenantInfo": "No se pudo obtener información del tenant",
"customerCreatedSuccessfully": "Cliente creado exitosamente",
"errorCreatingCustomer": "Error al crear el cliente"
}
},
"equipment": {
"title": "Agregar Maquinaria",
"equipmentDetails": "Detalles de la Maquinaria",
"subtitle": "Equipo de Panadería",
"fields": {
"type": "Tipo de Equipo",
"brand": "Marca/Modelo",
"brandPlaceholder": "Ej: Rational SCC 101",
"model": "Modelo",
"location": "Ubicación",
"locationPlaceholder": "Ej: Cocina principal",
"status": "Estado",
"purchaseDate": "Fecha de Compra"
},
"equipmentTypes": {
"oven": "Horno",
"mixer": "Amasadora",
"proofer": "Fermentadora",
"refrigerator": "Refrigerador",
"other": "Otro"
},
"steps": {
"equipmentDetails": "Detalles del Equipo",
"equipmentDetailsDescription": "Tipo, modelo, ubicación"
},
"messages": {
"errorGettingTenant": "No se pudo obtener información del tenant",
"noBrand": "Sin marca",
"successCreate": "Equipo creado exitosamente",
"errorCreate": "Error al crear el equipo"
}
},
"teamMember": {
"title": "Agregar Miembro del Equipo",
"memberDetails": "Miembro del Equipo",
"roleAndPermissions": "Rol y Permisos",
"specificPermissions": "Permisos Específicos",
"subtitle": "Miembro del Equipo",
"permissionsTitle": "Rol y Permisos",
"steps": {
"memberDetails": "Datos Personales",
"memberDetailsDescription": "Nombre, contacto, posición",
"roleAndPermissions": "Rol y Permisos",
"roleAndPermissionsDescription": "Accesos al sistema"
},
"fields": {
"fullName": "Nombre Completo",
"fullNamePlaceholder": "Ej: Juan García",
"email": "Correo Electrónico",
"emailPlaceholder": "juan@panaderia.com",
"phone": "Teléfono",
"phonePlaceholder": "+34 123 456 789",
"position": "Posición",
"employmentType": "Tipo de Empleo",
"systemRole": "Rol del Sistema",
"specificPermissions": "Permisos Específicos"
},
"positions": {
"baker": "Panadero",
"pastryChef": "Pastelero",
"manager": "Gerente",
"sales": "Ventas",
"delivery": "Repartidor"
},
"employmentTypes": {
"fullTime": "Tiempo Completo",
"partTime": "Medio Tiempo",
"contractor": "Contratista"
},
"roles": {
"admin": "Administrador",
"manager": "Gerente",
"staff": "Personal",
"viewOnly": "Solo Lectura"
},
"permissions": {
"canManageInventory": "Gestionar Inventario",
"canViewRecipes": "Ver Recetas",
"canCreateOrders": "Crear Pedidos",
"canViewFinancial": "Ver Datos Financieros"
},
"messages": {
"errorGettingTenant": "No se pudo obtener información del tenant",
"successCreate": "Miembro del equipo agregado exitosamente",
"errorCreate": "Error al crear el miembro del equipo"
}
},
"salesEntry": {
"title": "Registro de Ventas",
"steps": {
"entryMethod": "Método de Entrada",
"entryMethodDescription": "Elige cómo registrar las ventas",
"manualEntry": "Ingresar Datos",
"manualEntryDescription": "Registra los detalles de la venta",
"fileUpload": "Cargar Archivo",
"fileUploadDescription": "Importa ventas desde archivo",
"review": "Revisar",
"reviewDescription": "Confirma los datos antes de guardar"
},
"entryMethod": {
"title": "¿Cómo deseas registrar las ventas?",
"subtitle": "Elige el método que mejor se adapte a tus necesidades",
"manual": {
"title": "Entrada Manual",
"description": "Ingresa una o varias ventas de forma individual",
"benefits": {
"1": "Ideal para totales diarios",
"2": "Control detallado por venta",
"3": "Fácil y rápido"
}
},
"file": {
"title": "Cargar Archivo",
"description": "Importa desde Excel o CSV",
"recommended": "⭐ Recomendado para históricos",
"benefits": {
"1": "Ideal para datos históricos",
"2": "Carga masiva (cientos de registros)",
"3": "Ahorra tiempo significativo"
}
}
},
"manualEntry": {
"title": "Registrar Venta Manual",
"subtitle": "Ingresa los detalles de la venta",
"fields": {
"saleDate": "Fecha de Venta",
"paymentMethod": "Método de Pago",
"notes": "Notas (Opcional)",
"notesPlaceholder": "Información adicional sobre esta venta..."
},
"products": {
"title": "Productos Vendidos",
"addProduct": "+ Agregar Producto",
"loading": "Cargando productos...",
"noFinishedProducts": "No hay productos terminados disponibles",
"addToInventory": "Agrega productos al inventario primero",
"noProductsAdded": "No hay productos agregados",
"clickToBegin": "Haz clic en 'Agregar Producto' para comenzar",
"selectProduct": "Seleccionar producto...",
"quantity": "Cant.",
"price": "Precio",
"removeProduct": "Eliminar producto",
"total": "Total:"
}
},
"fileUpload": {
"title": "Cargar Archivo de Ventas",
"subtitle": "Importa tus ventas desde Excel o CSV",
"downloadTemplate": "Descargar Plantilla CSV",
"downloading": "Descargando...",
"dragDrop": {
"title": "Arrastra un archivo aquí",
"subtitle": "o haz clic para seleccionar",
"button": "Seleccionar Archivo",
"supportedFormats": "Formatos soportados: CSV, Excel (.xlsx, .xls)"
},
"validated": {
"title": "✓ Archivo validado correctamente",
"recordsFound": "Registros encontrados:",
"validRecords": "Registros válidos:",
"errors": "Errores:"
},
"validateButton": "Validar Archivo",
"validating": "Validando...",
"importButton": "Importar Datos",
"importing": "Importando...",
"instructions": {
"title": "El archivo debe contener las columnas:",
"columns": "fecha, producto, cantidad, precio_unitario, método_pago"
}
},
"review": {
"title": "Revisar y Confirmar",
"subtitle": "Verifica que toda la información sea correcta",
"fields": {
"date": "Fecha:",
"paymentMethod": "Método de Pago:",
"products": "Productos",
"total": "Total:",
"notes": "Notas:"
},
"imported": {
"title": "✓ Archivo importado correctamente",
"recordsImported": "Registros importados:",
"recordsFailed": "Registros fallidos:"
}
},
"paymentMethods": {
"cash": "Efectivo",
"card": "Tarjeta",
"mobile": "Pago Móvil",
"transfer": "Transferencia",
"other": "Otro"
},
"messages": {
"errorObtainingTenantInfo": "No se pudo obtener información del tenant",
"errorLoadingProducts": "Error al cargar productos",
"salesEntryCreatedSuccessfully": "Entrada de ventas creada exitosamente",
"errorCreatingSalesEntry": "Error al crear la entrada de ventas",
"errorValidatingFile": "Error al validar el archivo",
"errorImportingFile": "Error al importar el archivo",
"fileValidatedSuccessfully": "Archivo validado exitosamente",
"fileImportedSuccessfully": "Archivo importado exitosamente"
}
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
}
}