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

1254 lines
48 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": "Optional",
"required": "Required",
"autoGenerated": "Auto-generated",
"leaveEmptyForAutoGeneration": "Leave empty for auto-generation",
"readOnly": "Read-only - Auto-generated",
"willBeGeneratedAutomatically": "Will be generated automatically",
2025-12-25 20:51:03 +01:00
"autoGeneratedOnSave": "Auto-generated on save",
"show": "Show",
"hide": "Hide",
"next": "Next",
"back": "Back",
"complete": "Complete",
"stepOf": "Step {current} of {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": "Show Builder",
"showJson": "Show JSON",
"suggestions": "Quick suggestions",
"keyPlaceholder": "Key",
"valuePlaceholder": "Value",
"remove": "Remove",
"addPair": "Add Parameter",
"emptyState": "No parameters yet. Click 'Add Parameter' to get started."
},
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": "Add Inventory",
"inventoryDetails": "Inventory Item Details",
"fillRequiredInfo": "Fill in the required information to create an inventory item",
2025-11-15 21:21:06 +01:00
"summary": "Summary",
"steps": {
"productType": "Product Type",
"basicInfo": "Basic Information",
2025-11-18 07:17:17 +01:00
"stockConfig": "Stock Configuration",
"initialStock": "Initial Stock"
},
"initialStockDescription": "Add one or more lots to register the initial inventory",
"stockConfig": {
"product": "Product",
"totalQuantity": "Total Quantity",
"totalValue": "Total Value",
"lotsRegistered": "Lots Registered",
"lot": "Lot",
"remove": "Remove",
"quantity": "Quantity",
"unitCost": "Unit Cost ($)",
"lotNumber": "Lot Number",
"expirationDate": "Expiration Date",
"location": "Location",
"lotValue": "Lot value:",
"addInitialLot": "Add Initial Lot",
"addAnotherLot": "Add Another Lot",
"skipMessage": "You can skip this step if you prefer to add the initial stock later"
2025-11-15 21:21:06 +01:00
},
"typeDescriptions": {
"ingredient": "Raw materials and ingredients used in recipes",
"finished_product": "Final products ready for sale or consumption"
},
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": "Name",
"namePlaceholder": "E.g., All-Purpose Flour, Sourdough Bread",
"productType": "Product Type",
"unitOfMeasure": "Unit of Measure",
"sku": "SKU",
"skuPlaceholder": "Leave empty for auto-generation",
"skuTooltip": "Leave empty to auto-generate from backend, or enter custom SKU",
"barcode": "Barcode",
"barcodePlaceholder": "Barcode/UPC/EAN",
"ingredientCategory": "Ingredient Category",
"productCategory": "Product Category",
"brand": "Brand",
"brandPlaceholder": "Brand name",
"description": "Description",
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": "Detailed description of the inventory item",
"averageCost": "Average Cost (€)",
"lastPurchasePrice": "Last Purchase Price (€)",
"standardCost": "Standard Cost (€)",
"sellingPrice": "Selling Price (€)",
"minimumPrice": "Minimum Price (€)",
"lowStockThreshold": "Low Stock Threshold",
"reorderPoint": "Reorder Point",
"reorderQuantity": "Reorder Quantity",
"maxStockLevel": "Max Stock Level",
"leadTimeDays": "Lead Time (days)",
"packageSize": "Package Size",
"packageSizePlaceholder": "E.g., 25kg bag, 12-pack",
"shelfLifeDays": "Shelf Life (days)",
"displayLifeHours": "Display Life (hours)",
"storageTempRange": "Storage Temp Range (°C)",
"storageTempMin": "Min",
"storageTempMax": "Max",
"storageInstructions": "Storage Instructions",
"storageInstructionsPlaceholder": "E.g., Store in cool, dry place away from direct sunlight",
"handlingInstructions": "Handling Instructions",
"handlingInstructionsPlaceholder": "Special handling requirements",
"isPerishable": "Perishable Item",
"preferredSupplierId": "Preferred Supplier ID",
"preferredSupplierIdPlaceholder": "Supplier ID",
"supplierProductCode": "Supplier Product Code",
"supplierProductCodePlaceholder": "Supplier's product code",
"allergenInfo": "Allergen Information",
"allergenInfoPlaceholder": "gluten, milk, eggs",
"nutritionalInfo": "Nutritional Information",
"nutritionalInfoPlaceholder": "calories:250, protein:8g, carbs:45g",
"certifications": "Certifications",
"certificationsPlaceholder": "Organic, Non-GMO, Kosher",
"weight": "Weight (kg)",
"volume": "Volume (L)",
"dimensions": "Dimensions (L×W×H cm)",
"dimensionsPlaceholder": "30×20×15",
"color": "Color",
"colorPlaceholder": "Product color",
"isActive": "Active Item",
"trackByLot": "Track by Lot/Batch",
"trackByExpiry": "Track by Expiry Date",
"allowNegativeStock": "Allow Negative Stock",
"notes": "Notes",
"notesPlaceholder": "Additional notes about this item",
"tags": "Tags",
"tagsPlaceholder": "organic, premium, seasonal",
"customFields": "Custom Fields (JSON)",
"customFieldsPlaceholder": "{\"custom_field\": \"value\"}"
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": "Basic Information",
"advancedOptions": "Advanced Options",
"advancedOptionsDescription": "Optional fields for comprehensive inventory management",
2025-11-15 21:21:06 +01:00
"additionalInformationDescription": "Optional product identifiers",
"additionalDetails": "Additional Details",
"additionalDetailsDescription": "Optional product details",
"advancedStockSettings": "Advanced Stock Settings",
"advancedStockSettingsDescription": "Configure inventory thresholds and reorder points",
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": "Pricing Information",
"inventoryManagement": "Inventory Management",
"productInformation": "Product Information",
"storageAndHandling": "Storage & Handling",
"supplierInformation": "Supplier Information",
"qualityAndCompliance": "Quality & Compliance",
"physicalProperties": "Physical Properties",
"statusAndTracking": "Status & Tracking",
"additionalInformation": "Additional Information"
},
"productTypes": {
"ingredient": "Ingredient",
"finished_product": "Finished Product",
"packaging": "Packaging",
"consumable": "Consumable"
},
"units": {
"select": "Select...",
"kg": "Kilograms (kg)",
"g": "Grams (g)",
"l": "Liters (L)",
"ml": "Milliliters (ml)",
"units": "Units",
"dozen": "Dozen",
"lb": "Pounds (lb)",
"oz": "Ounces (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": "Select...",
"flour": "Flours",
"dairy": "Dairy",
"eggs": "Eggs",
"fats": "Fats & Oils",
"sweeteners": "Sweeteners",
"additives": "Additives",
"fruits": "Fruits",
"nuts": "Nuts & Seeds",
"spices": "Spices",
"leavening": "Leavening Agents"
},
"productCategories": {
"select": "Select...",
"bread": "Bread",
"pastry": "Pastry",
"cake": "Cakes",
"cookies": "Cookies",
"specialty": "Specialty Items"
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": "Add Quality Template",
"templateDetails": "Quality Template Details",
"fillRequiredInfo": "Fill in the required information to create a quality check template",
2025-11-20 19:14:49 +01:00
"selectCheckType": "Select Quality Check Type",
"selectCheckTypeDescription": "Choose the type of quality check you want to create",
"essentialConfiguration": "Essential Configuration",
"essentialConfigurationDescription": "Define the core properties of your quality check template",
"criteriaAndSettings": "Quality Criteria & Settings",
"criteriaAndSettingsDescription": "Configure scoring methods and advanced quality criteria",
"steps": {
"checkType": "Check Type",
"essentialConfiguration": "Configuration",
"criteriaSettings": "Criteria & Settings"
},
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": "Name",
"namePlaceholder": "E.g., Bread Quality Control, Hygiene Inspection",
"checkType": "Check Type",
"weight": "Weight",
"weightTooltip": "Importance weight for scoring (0.0-10.0)",
"templateCode": "Template Code",
"templateCodePlaceholder": "Leave empty for auto-generation",
"templateCodeTooltip": "Leave empty to auto-generate from backend, or enter custom code",
2025-11-20 19:14:49 +01:00
"category": "Category",
"categoryPlaceholder": "E.g., appearance, structure, texture",
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": "Version",
"description": "Description",
"descriptionPlaceholder": "Detailed description of the quality check template",
"applicableStages": "Applicable Stages",
2025-11-20 19:14:49 +01:00
"applicableStagesTooltip": "Select the production stages where this quality check applies",
"applicableStagesHelp": "Leave empty to apply to all stages",
"applicablePlaceholder": "mixing, proofing, baking, cooling",
"instructions": "Instructions",
"instructionsPlaceholder": "Step-by-step instructions for performing this quality check",
"minValue": "Minimum Value",
"maxValue": "Maximum Value",
"targetValue": "Target Value",
"unit": "Unit",
"unitPlaceholder": "E.g., °C, g, cm, %",
"tolerancePercentage": "Tolerance Percentage",
"toleranceTooltip": "Acceptable deviation from target value (0-100%)",
"scoringMethod": "Scoring Method",
"passThreshold": "Pass Threshold (%)",
"passThresholdTooltip": "Minimum score percentage required to pass (0-100%)",
"frequencyDays": "Frequency (days)",
"frequencyDaysTooltip": "How often this check should be performed (in days)",
"frequencyDaysPlaceholder": "Leave empty for batch-based",
"requiredCheck": "Required Check",
"checkPointsJsonArray": "Check Points (JSON Array)",
"checkPointsTooltip": "Array of check points: [{\"name\": \"Visual Check\", \"description\": \"...\", \"weight\": 1.0}]",
"checkPointsPlaceholder": "[{\"name\": \"Visual Inspection\", \"description\": \"Check appearance\", \"expected_value\": \"Golden brown\", \"measurement_type\": \"visual\", \"is_critical\": false, \"weight\": 1.0}]",
"acceptanceCriteria": "Acceptance Criteria",
"acceptanceCriteriaPlaceholder": "E.g., Golden uniform color, fluffy texture, no burns...",
"parametersJson": "Parameters (JSON)",
"parametersTooltip": "Template parameters: {\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"parametersPlaceholder": "{\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"thresholdsJson": "Thresholds (JSON)",
"thresholdsTooltip": "Threshold values: {\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"thresholdsPlaceholder": "{\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"scoringCriteriaJson": "Scoring Criteria (JSON)",
"scoringCriteriaTooltip": "Custom scoring criteria: {\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"scoringCriteriaPlaceholder": "{\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"responsibleRole": "Responsible Role/Person",
"responsibleRolePlaceholder": "E.g., Production Manager, Baker",
"requiredEquipment": "Required Equipment/Tools",
"requiredEquipmentPlaceholder": "E.g., Thermometer, scale, timer",
"specificConditions": "Specific Conditions or Notes",
"specificConditionsPlaceholder": "E.g., Only applicable on humid days, check 30 min after baking...",
"activeTemplate": "Active Template",
"requiresPhotoEvidence": "Requires Photo Evidence",
"criticalControlPoint": "Critical Control Point (CCP)",
"notifyOnFailure": "Notify on Failure"
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": "Visual Inspection",
"measurement": "Measurement",
"temperature": "Temperature",
"weight": "Weight",
"boolean": "Pass/Fail Check",
"timing": "Timing",
"checklist": "Checklist"
},
"checkTypeDescriptions": {
"visual": "Inspect appearance, color, and visual quality characteristics",
"measurement": "Measure specific dimensions, sizes, or quantities",
"temperature": "Monitor and verify temperature readings",
"weight": "Check weight and mass measurements",
"boolean": "Simple yes/no or pass/fail checks",
"timing": "Track time-based quality criteria",
"checklist": "Multi-point checklist verification"
},
"processStages": {
"mixing": "Mixing",
"proofing": "Proofing",
"shaping": "Shaping",
"baking": "Baking",
"cooling": "Cooling",
"packaging": "Packaging",
"finishing": "Finishing"
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": "Basic Information",
2025-11-20 19:14:49 +01:00
"additionalIdentifiers": "Additional Identifiers",
"additionalIdentifiersDescription": "Optional identifiers for organization",
"measurementSpecifications": "Measurement Specifications",
"additionalDetails": "Additional Details",
"additionalDetailsDescription": "Optional detailed instructions",
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": "Scoring Configuration",
"advancedOptions": "Advanced Options",
"advancedOptionsDescription": "Optional fields for comprehensive quality template configuration",
"checkPointsConfiguration": "Check Points Configuration",
"advancedConfiguration": "Advanced Configuration (JSONB)",
"responsibilityRequirements": "Responsibility & Requirements",
"controlSettings": "Control Settings"
},
"scoringMethods": {
"scoringMethod": "Scoring Method",
"weightedAverage": "Weighted Average",
"passFail": "Pass/Fail",
"percentage": "Percentage",
"pointsBased": "Points-based"
},
"advancedFields": {
"checkPointsJsonArray": "Check Points (JSON Array)",
"checkPointsTooltip": "Array of check points: [{\"name\": \"Visual Check\", \"description\": \"...\", \"weight\": 1.0}]",
"checkPointsPlaceholder": "[{\"name\": \"Visual Inspection\", \"description\": \"Check appearance\", \"expected_value\": \"Golden brown\", \"measurement_type\": \"visual\", \"is_critical\": false, \"weight\": 1.0}]",
"acceptanceCriteria": "Acceptance Criteria",
"acceptanceCriteriaPlaceholder": "E.g., Golden uniform color, fluffy texture, no burns...",
"parametersJson": "Parameters (JSON)",
"parametersTooltip": "Template parameters: {\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"parametersPlaceholder": "{\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"thresholdsJson": "Thresholds (JSON)",
"thresholdsTooltip": "Threshold values: {\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"thresholdsPlaceholder": "{\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"scoringCriteriaJson": "Scoring Criteria (JSON)",
"scoringCriteriaTooltip": "Custom scoring criteria: {\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"scoringCriteriaPlaceholder": "{\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"responsibleRole": "Responsible Role/Person",
"responsibleRolePlaceholder": "E.g., Production Manager, Baker",
"requiredEquipment": "Required Equipment/Tools",
"requiredEquipmentPlaceholder": "E.g., Thermometer, scale, timer",
"specificConditions": "Specific Conditions or Notes",
"specificConditionsPlaceholder": "E.g., Only applicable on humid days, check 30 min after baking...",
"passThresholdPercent": "Pass Threshold (%)",
"frequencyDays": "Frequency (days)",
"frequencyPlaceholder": "Leave empty for batch-based",
"requiredCheck": "Required Check",
"activeTemplate": "Active Template",
"requiresPhotoEvidence": "Requires Photo Evidence",
"criticalControlPoint": "Critical Control Point (CCP)",
"notifyOnFailure": "Notify on Failure",
"templateDetailsTitle": "Template Details"
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": "Add Order",
"steps": {
"customerSelection": "Customer Selection",
"orderItems": "Order Items",
"deliveryAndPayment": "Delivery & Payment"
},
"customerSelection": {
"title": "Select or Create Customer",
"subtitle": "Choose an existing customer or create a new one",
"searchPlaceholder": "Search customers...",
"createNew": "Create new customer",
"backToList": "← Back to customer list",
"fields": {
"customerName": "Customer Name",
"customerNamePlaceholder": "E.g., The Mill Restaurant",
"customerType": "Customer Type",
"phone": "Phone",
"phonePlaceholder": "+34 123 456 789",
"email": "Email",
"emailPlaceholder": "contact@restaurant.com"
},
"customerTypes": {
"retail": "Retail",
"wholesale": "Wholesale",
"event": "Event",
"restaurant": "Restaurant"
}
},
"orderItems": {
"title": "Add Products to Order",
"subtitle": "Select products and quantities",
"addItem": "Add Item",
"removeItem": "Remove item",
"fields": {
"product": "Product",
"productPlaceholder": "Select product...",
"quantity": "Quantity",
"unitPrice": "Unit Price (€)",
"customRequirements": "Custom Requirements",
"customRequirementsPlaceholder": "Special instructions...",
"subtotal": "Subtotal"
},
"total": "Total Amount"
},
"deliveryPayment": {
"title": "Delivery & Payment Details",
"subtitle": "Configure delivery, payment, and order details",
"fields": {
"requestedDeliveryDate": "Requested Delivery Date",
"orderNumber": "Order Number",
"orderNumberTooltip": "Automatically generated by backend on order creation (format: ORD-YYYYMMDD-####)",
"status": "Status",
"orderType": "Order Type",
"priority": "Priority"
},
"sections": {
"basicInfo": "Basic Order Information",
"deliveryInfo": "Delivery Details",
"paymentInfo": "Payment Details",
"orderSummary": "Order Summary",
"advancedOptions": "Advanced Options",
"advancedOptionsDescription": "Optional fields for comprehensive order management",
"pricingDetails": "Pricing Details",
"productionScheduling": "Production & Scheduling",
"fulfillmentTracking": "Fulfillment & Tracking",
"sourceChannel": "Source & Channel",
"communicationNotes": "Communication & Notes",
"notifications": "Notifications",
"qualityRequirements": "Quality & Requirements",
"additionalOptions": "Additional Options"
},
"orderTypes": {
"standard": "Standard",
"custom": "Custom",
"bulk": "Bulk",
"urgent": "Urgent"
},
"priorities": {
"low": "Low",
"normal": "Normal",
"high": "High",
"urgent": "Urgent"
},
"statuses": {
"pending": "Pending",
"confirmed": "Confirmed",
"in_production": "In Production",
"ready": "Ready",
"delivered": "Delivered"
},
"deliveryMethods": {
"pickup": "Pickup",
"pickupDesc": "Customer pickup",
"delivery": "Delivery",
"deliveryDesc": "Home delivery",
"shipping": "Shipping",
"shippingDesc": "Courier service"
},
"paymentMethods": {
"cash": "Cash",
"card": "Card",
"bank_transfer": "Bank Transfer",
"invoice": "Invoice",
"account": "Account"
},
"paymentTerms": {
"immediate": "Immediate",
"net_30": "Net 30",
"net_60": "Net 60"
},
"paymentStatuses": {
"pending": "Pending",
"partial": "Partial",
"paid": "Paid",
"overdue": "Overdue"
},
"orderSources": {
"manual": "Manual",
"phone": "Phone",
"email": "Email",
"website": "Website",
"app": "Mobile App"
},
"salesChannels": {
"direct": "Direct",
"wholesale": "Wholesale",
"retail": "Retail",
"online": "Online"
},
"qualityCheckStatuses": {
"not_started": "Not Started",
"pending": "Pending",
"passed": "Passed",
"failed": "Failed"
},
"messages": {
"loadingCustomers": "Loading customers...",
"loadingProducts": "Loading products...",
"errorLoadingCustomers": "Error loading customers",
"errorLoadingProducts": "Error loading products",
"noCustomersFound": "No customers found",
"tryDifferentSearch": "Try a different search term",
"noProductsInOrder": "No products in order",
"clickAddProduct": "Click \"Add Product\" to start",
"newCustomer": "New Customer",
"customer": "Customer",
"products": "Products",
"items": "items",
"total": "Total",
"productNumber": "Product #",
"searchByName": "Search customer by name...",
"selectCustomer": "Select Customer",
"searchForCustomer": "Search for an existing customer or create a new one",
"orderItems": "Order Items",
"addProducts": "Add Products to Order",
"customerLabel": "Customer:",
"productsLabel": "Products:",
"totalLabel": "Total:",
"orderTotal": "Order Total:",
"newCustomerHeader": "New Customer",
"orderProducts": "Order Products",
"addProduct": "Add Product",
"removeItem": "Remove item",
"optionalEmail": "Email (Optional)",
"readOnlyAutoGenerated": "Order Number (Read-only - Auto-generated)",
"willBeGeneratedAutomatically": "Will be generated automatically",
"autoGeneratedOnSave": "Auto-generated on save",
"orderNumberFormat": "format: ORD-YYYYMMDD-####",
"selectProduct": "Select product...",
"deliveryAddress": "Delivery Address",
"deliveryAddressPlaceholder": "Street, number, floor, postal code, city...",
"deliveryContactName": "Delivery Contact Name",
"deliveryContactNamePlaceholder": "Contact person",
"deliveryContactPhone": "Delivery Contact Phone",
"deliveryMethod": "Delivery Method",
"paymentMethod": "Payment Method",
"paymentTerms": "Payment Terms",
"paymentStatus": "Payment Status",
"paymentDueDate": "Payment Due Date",
"discountPercent": "Discount (%)",
"deliveryFee": "Delivery Fee (€)",
"productionStartDate": "Production Start Date",
"productionDueDate": "Production Due Date",
"productionBatchNumber": "Production Batch Number",
"productionBatchNumberPlaceholder": "BATCH-001",
"deliveryTimeWindow": "Delivery Time Window",
"deliveryTimeWindowPlaceholder": "E.g., 9:00 AM - 11:00 AM",
"productionNotes": "Production Notes",
"productionNotesPlaceholder": "Special production requirements or notes",
"shippingTrackingNumber": "Shipping Tracking Number",
"shippingTrackingNumberPlaceholder": "Tracking number",
"shippingCarrier": "Shipping Carrier",
"shippingCarrierPlaceholder": "E.g., DHL, UPS, FedEx",
"pickupLocation": "Pickup Location",
"pickupLocationPlaceholder": "Store location for pickup",
"actualDeliveryDate": "Actual Delivery Date",
"orderSource": "Order Source",
"salesChannel": "Sales Channel",
"salesRepId": "Sales Representative ID",
"salesRepIdPlaceholder": "Sales rep ID or name",
"customerPurchaseOrder": "Customer Purchase Order #",
"customerPurchaseOrderPlaceholder": "Customer's PO number",
"deliveryInstructions": "Delivery Instructions",
"deliveryInstructionsPlaceholder": "Special delivery instructions",
"specialInstructions": "Special Instructions",
"specialInstructionsPlaceholder": "Any special requirements or instructions",
"internalNotes": "Internal Notes",
"internalNotesPlaceholder": "Internal notes (not visible to customer)",
"customerNotes": "Customer Notes",
"customerNotesPlaceholder": "Notes from/for the customer",
"notifyOnStatusChange": "Notify on Status Change",
"notifyOnDelivery": "Notify on Delivery",
"notificationEmail": "Notification Email",
"notificationEmailPlaceholder": "customer@email.com",
"notificationPhone": "Notification Phone",
"qualityCheckRequired": "Quality Check Required",
"qualityCheckStatus": "Quality Check Status",
"packagingInstructions": "Packaging Instructions",
"packagingInstructionsPlaceholder": "Special packaging requirements",
"labelingRequirements": "Labeling Requirements",
"labelingRequirementsPlaceholder": "Custom label requirements",
"recurringOrder": "Recurring Order",
"recurringSchedule": "Recurring Schedule",
"recurringSchedulePlaceholder": "E.g., Weekly on Mondays, Every 2 weeks",
"tags": "Tags",
"tagsPlaceholder": "urgent, vip, wholesale",
"tagsTooltip": "Comma-separated tags for easier search and filtering",
"metadata": "Metadata (JSON)",
"metadataPlaceholder": "{\"custom_field\": \"value\"}",
"metadataTooltip": "Additional custom data in JSON format"
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": "Select Type",
"description": "Choose what you want to add",
"types": {
"inventory": {
"title": "Inventory",
"description": "Add ingredients or products to your inventory"
},
"supplier": {
"title": "Supplier",
"description": "Add a new supplier or vendor"
},
"recipe": {
"title": "Recipe",
"description": "Create a new recipe or formula"
},
"equipment": {
"title": "Equipment",
"description": "Register bakery equipment or machinery"
},
"quality-template": {
"title": "Quality Template",
"description": "Create a quality check template"
},
"customer-order": {
"title": "Customer Order",
"description": "Create a new customer order"
},
"customer": {
"title": "Customer",
"description": "Add a new customer"
},
"team-member": {
"title": "Team Member",
"description": "Add a team member or employee"
},
"sales-entry": {
"title": "Sales Entry",
"description": "Record a sales transaction"
}
}
},
2025-11-18 07:17:17 +01:00
"salesEntry": {
"title": "Sales Record",
"steps": {
"entryMethod": "Entry Method",
"entryMethodDescription": "Choose how to register sales",
"manualEntry": "Enter Data",
"manualEntryDescription": "Record sale details",
"fileUpload": "Upload File",
"fileUploadDescription": "Import sales from file",
"review": "Review",
"reviewDescription": "Confirm data before saving"
},
"entryMethod": {
"title": "How do you want to register sales?",
"subtitle": "Choose the method that best suits your needs",
"manual": {
"title": "Manual Entry",
"description": "Enter one or more sales individually",
"benefits": {
"1": "Ideal for daily totals",
"2": "Detailed control per sale",
"3": "Easy and fast"
}
},
"file": {
"title": "Upload File",
"description": "Import from Excel or CSV",
"recommended": "⭐ Recommended for historical data",
"benefits": {
"1": "Ideal for historical data",
"2": "Bulk upload (hundreds of records)",
"3": "Saves significant time"
}
}
},
"manualEntry": {
"title": "Record Manual Sale",
"subtitle": "Enter sale details",
"fields": {
"saleDate": "Sale Date",
"paymentMethod": "Payment Method",
"notes": "Notes (Optional)",
"notesPlaceholder": "Additional information about this sale..."
},
"products": {
"title": "Products Sold",
"addProduct": "+ Add Product",
"loading": "Loading products...",
"noFinishedProducts": "No finished products available",
"addToInventory": "Add products to inventory first",
"noProductsAdded": "No products added",
"clickToBegin": "Click 'Add Product' to begin",
"selectProduct": "Select product...",
"quantity": "Qty.",
"price": "Price",
"removeProduct": "Remove product",
"total": "Total:"
}
},
"fileUpload": {
"title": "Upload Sales File",
"subtitle": "Import your sales from Excel or CSV",
"downloadTemplate": "Download CSV Template",
"downloading": "Downloading...",
"dragDrop": {
"title": "Drag a file here",
"subtitle": "or click to select",
"button": "Select File",
"supportedFormats": "Supported formats: CSV, Excel (.xlsx, .xls)"
},
"validated": {
"title": "✓ File validated successfully",
"recordsFound": "Records found:",
"validRecords": "Valid records:",
"errors": "Errors:"
},
"validateButton": "Validate File",
"validating": "Validating...",
"importButton": "Import Data",
"importing": "Importing...",
"instructions": {
"title": "The file must contain the columns:",
"columns": "date, product, quantity, unit_price, payment_method"
}
},
"review": {
"title": "Review and Confirm",
"subtitle": "Verify that all information is correct",
"fields": {
"date": "Date:",
"paymentMethod": "Payment Method:",
"products": "Products",
"total": "Total:",
"notes": "Notes:"
},
"imported": {
"title": "✓ File imported successfully",
"recordsImported": "Records imported:",
"recordsFailed": "Records failed:"
}
},
"paymentMethods": {
"cash": "Cash",
"card": "Card",
"mobile": "Mobile Payment",
"transfer": "Transfer",
"other": "Other"
},
"messages": {
"errorObtainingTenantInfo": "Could not obtain tenant information",
"errorLoadingProducts": "Error loading products",
"salesEntryCreatedSuccessfully": "Sales entry created successfully",
"errorCreatingSalesEntry": "Error creating sales entry",
"errorValidatingFile": "Error validating file",
"errorImportingFile": "Error importing file",
"fileValidatedSuccessfully": "File validated successfully",
"fileImportedSuccessfully": "File imported successfully"
}
},
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
"tooltips": {
"averageCost": "Average cost per unit based on purchase history",
"standardCost": "Standard/expected cost per unit for costing calculations",
"lowStockThreshold": "Alert when stock falls below this level",
"reorderPoint": "Trigger reorder when stock reaches this level",
"reorderQuantity": "Standard quantity to order when reordering",
"leadTime": "Time between order placement and delivery",
"displayLife": "Hours product can be displayed before quality degrades",
"allergenInfo": "Comma-separated list: e.g., gluten, milk, eggs, nuts",
"nutritionalInfo": "Key nutrition facts as comma-separated list",
"certifications": "Comma-separated list: e.g., Organic, Non-GMO, Kosher",
"tags": "Comma-separated tags for easier search and filtering",
"customFields": "Additional custom data in JSON format",
"passThreshold": "Minimum score required to pass (0-100)",
"frequencyDays": "How often this check should be performed (leave empty for batch-based)",
"checkPoints": "Array of check points",
"parameters": "Template parameters",
"thresholds": "Threshold values",
"scoringCriteria": "Custom scoring criteria"
2025-12-25 20:51:03 +01:00
},
"purchaseOrder": {
"title": "Add Purchase Order",
"steps": {
"supplierSelection": "Supplier Selection",
"supplierSelectionDescription": "Choose the supplier",
"orderItems": "Order Items",
"orderItemsDescription": "Products to order",
"deliveryDetails": "Delivery Details",
"deliveryDetailsDescription": "Delivery date and notes"
},
"supplierSelection": {
"title": "Select Supplier",
"subtitle": "Choose the supplier for this purchase order",
"searchPlaceholder": "Search supplier by name or code...",
"loading": "Loading suppliers...",
"error": "Error loading suppliers",
"noSuppliersFound": "No suppliers found",
"tryDifferentSearch": "Try a different search term"
},
"orderItems": {
"title": "Order Items",
"subtitle": "Select products to order",
"addItem": "Add Item",
"removeItem": "Remove item",
"noItemsAdded": "No items added yet",
"clickToBegin": "Click 'Add Item' to get started",
"supplier": "Supplier",
"orderTotal": "Order Total",
"fields": {
"ingredient": "Ingredient",
"ingredientPlaceholder": "Select ingredient...",
"quantity": "Quantity",
"unitPrice": "Unit Price (€)",
"subtotal": "Subtotal",
"notes": "Notes",
"notesPlaceholder": "Additional notes for this item..."
},
"loading": "Loading ingredients...",
"noIngredients": "No ingredients available",
"addToInventory": "Add ingredients to inventory first"
},
"deliveryDetails": {
"title": "Delivery Details",
"subtitle": "Configure delivery date and additional notes",
"fields": {
"expectedDeliveryDate": "Expected Delivery Date",
"notes": "Order Notes",
"notesPlaceholder": "Special instructions, delivery requirements, etc.",
"orderNumber": "Order Number",
"orderNumberTooltip": "Will be auto-generated when creating the order",
"status": "Status",
"priority": "Priority"
},
"orderSummary": {
"title": "Order Summary",
"supplier": "Supplier:",
"items": "Items:",
"total": "Total:",
"deliveryDate": "Expected Delivery:"
},
"statuses": {
"draft": "Draft",
"pending": "Pending",
"approved": "Approved",
"ordered": "Ordered",
"received": "Received",
"cancelled": "Cancelled"
},
"priorities": {
"low": "Low",
"normal": "Normal",
"high": "High",
"urgent": "Urgent"
}
},
"messages": {
"errorObtainingTenantInfo": "Could not obtain tenant information",
"errorLoadingSuppliers": "Error loading suppliers",
"errorLoadingIngredients": "Error loading ingredients",
"purchaseOrderCreatedSuccessfully": "Purchase order created successfully",
"errorCreatingPurchaseOrder": "Error creating purchase order",
"selectSupplier": "Please select a supplier",
"addAtLeastOneItem": "Add at least one item to the order"
}
},
"productionBatch": {
"title": "Add Production Batch",
"steps": {
"productRecipe": "Product & Recipe",
"productRecipeDescription": "Select what to produce",
"timing": "Scheduling",
"timingDescription": "Production dates",
"equipmentStaff": "Equipment & Staff",
"equipmentStaffDescription": "Assigned resources",
"additionalDetails": "Additional Details",
"additionalDetailsDescription": "Notes and configuration"
},
"productRecipe": {
"title": "Select Product and Recipe",
"subtitle": "Choose the product to produce and optionally a recipe",
"loading": "Loading information...",
"fields": {
"product": "Product to Produce",
"productPlaceholder": "Select product...",
"recipe": "Recipe to Use (Optional)",
"recipePlaceholder": "No specific recipe",
"quantityToProduce": "Quantity to Produce",
"batchNumber": "Batch Number",
"batchNumberPlaceholder": "BATCH-001"
},
"noProducts": "No products available",
"addToInventory": "Add products to inventory first",
"recipeDetails": {
"title": "Recipe Details",
"yield": "Yield:",
"prepTime": "Prep Time:",
"cookTime": "Cook Time:",
"totalTime": "Total Time:",
"ingredients": "Ingredients:",
"minutes": "min"
}
},
"timing": {
"title": "Production Scheduling",
"subtitle": "Define production start and end dates",
"fields": {
"scheduledStartTime": "Start Date & Time",
"scheduledEndTime": "End Date & Time (Optional)",
"estimatedDuration": "Estimated Duration (minutes)",
"estimatedDurationPlaceholder": "120"
},
"summary": {
"product": "Product:",
"quantity": "Quantity:",
"recipe": "Recipe:",
"startTime": "Start:",
"duration": "Est. Duration:"
}
},
"equipmentStaff": {
"title": "Equipment & Staff",
"subtitle": "Assign resources for this production",
"fields": {
"assignedEquipment": "Assigned Equipment",
"assignedEquipmentPlaceholder": "E.g., Oven #1, Mixer #2",
"assignedStaff": "Assigned Staff",
"assignedStaffPlaceholder": "E.g., John Doe, Jane Smith",
"supervisor": "Supervisor",
"supervisorPlaceholder": "Supervisor name"
}
},
"additionalDetails": {
"title": "Additional Details",
"subtitle": "Optional configuration and notes",
"fields": {
"priority": "Priority",
"status": "Status",
"productionStage": "Production Stage",
"notes": "Production Notes",
"notesPlaceholder": "Special instructions, observations, etc.",
"qualityCheckRequired": "Quality Check Required",
"qualityCheckNotes": "Quality Check Notes",
"qualityCheckNotesPlaceholder": "Specific control points..."
},
"priorities": {
"low": "Low",
"normal": "Normal",
"high": "High",
"urgent": "Urgent"
},
"statuses": {
"scheduled": "Scheduled",
"in_progress": "In Progress",
"completed": "Completed",
"on_hold": "On Hold",
"cancelled": "Cancelled"
},
"stages": {
"mixing": "Mixing",
"proofing": "Proofing",
"shaping": "Shaping",
"baking": "Baking",
"cooling": "Cooling",
"packaging": "Packaging",
"finishing": "Finishing"
},
"summary": {
"title": "Production Batch Summary",
"product": "Product:",
"quantity": "Quantity:",
"recipe": "Recipe:",
"startTime": "Scheduled Start:",
"priority": "Priority:",
"equipment": "Equipment:",
"staff": "Staff:"
}
},
"messages": {
"errorObtainingTenantInfo": "Could not obtain tenant information",
"errorLoadingProducts": "Error loading products",
"errorLoadingRecipes": "Error loading recipes",
"productionBatchCreatedSuccessfully": "Production batch created successfully",
"errorCreatingProductionBatch": "Error creating production batch",
"selectProduct": "Please select a product",
"enterQuantity": "Enter a valid quantity"
},
"validation": {
"selectProduct": "You must select a product",
"startTime": "You must specify the start date and time",
"duration": "Duration must be greater than 0 minutes",
"quantity": "Quantity must be greater than 0",
"endTime": "End date must be after start date"
},
"stepTitles": {
"productRecipe": "Product & Recipe",
"planning": "Scheduling",
"priorityResources": "Priority & Resources",
"review": "Review & Confirm"
},
"review": {
"unspecified": "Not specified",
"noRecipe": "No specific recipe"
},
"productRecipe": {
"fields": {
"productLabel": "Product to Produce *",
"batchNumberAutoPlaceholder": "Will be auto-generated if left empty"
}
},
"equipmentStaff": {
"fields": {
"equipmentExample": "E.g., oven-1, mixer-2",
"staffHelp": "Separate names with commas (E.g., John Doe, Jane Smith)",
"orderId": "Associated order ID",
"forecastId": "Associated forecast ID"
}
},
"additionalDetails": {
"advancedOptions": {
"title": "Advanced Options",
"description": "Additional production information"
}
}
},
2025-12-31 07:32:29 +01:00
"recipe": {
"title": "Add Recipe",
"recipeDetails": "Recipe Details",
"recipeDetailsDescription": "Essential information about your recipe",
"ingredients": "Ingredients",
"subtitle": "Essential information about your recipe",
"advancedOptionsTitle": "Advanced Options",
"advancedOptionsDescription": "Optional fields for detailed recipe management",
"fields": {
"name": "Recipe Name",
"namePlaceholder": "E.g., Traditional Baguette",
"category": "Category",
"finishedProduct": "Finished Product",
"finishedProductTooltip": "The final product this recipe produces. Must be created in inventory first.",
"selectProduct": "Select product...",
"yieldQuantity": "Yield Quantity",
"yieldUnit": "Yield Unit",
"prepTime": "Prep Time (minutes)",
"prepTimePlaceholder": "30",
"cookTime": "Cook Time (minutes)",
"cookTimePlaceholder": "45",
"restTime": "Rest Time (minutes)",
"restTimeTooltip": "Time for rising, cooling, or resting",
"restTimePlaceholder": "60",
"totalTime": "Total Time (minutes)",
"totalTimePlaceholder": "135",
"instructions": "Instructions",
"instructionsPlaceholder": "Step-by-step preparation instructions...",
"recipeCode": "Recipe Code/SKU",
"recipeCodePlaceholder": "RCP-001",
"version": "Version",
"versionPlaceholder": "1.0",
"difficulty": "Difficulty Level (1-5)",
"difficultyTooltip": "1 = Very Easy, 5 = Expert Level",
"servesCount": "Serves Count",
"servesCountPlaceholder": "12",
"batchSizeMultiplier": "Batch Size Multiplier",
"batchSizeMultiplierTooltip": "Default scaling factor for batch production",
"batchSizeMultiplierPlaceholder": "1.0",
"minBatchSize": "Min Batch Size",
"minBatchSizePlaceholder": "1",
"maxBatchSize": "Max Batch Size",
"maxBatchSizePlaceholder": "100",
"optimalTemp": "Optimal Production Temp (°C)",
"optimalTempPlaceholder": "22",
"optimalHumidity": "Optimal Humidity (%)",
"optimalHumidityPlaceholder": "65",
"targetMargin": "Target Margin (%)",
"targetMarginPlaceholder": "50",
"description": "Description",
"descriptionPlaceholder": "Detailed description of the recipe...",
"prepNotes": "Recipe Notes & Tips",
"prepNotesTooltip": "General notes, tips, or context about this recipe (not step-by-step instructions)",
"prepNotesPlaceholder": "E.g., 'Works best in humid conditions', 'Can be prepared a day ahead'...",
"storageInstructions": "Storage Instructions",
"storageInstructionsPlaceholder": "How to store the finished product...",
"allergens": "Allergens",
"allergensPlaceholder": "E.g., gluten, dairy, eggs (comma-separated)",
"dietaryTags": "Dietary Tags",
"dietaryTagsPlaceholder": "E.g., vegan, gluten-free, organic (comma-separated)",
"seasonalItem": "Seasonal Item",
"signatureItem": "Signature Item",
"seasonStartMonth": "Season Start Month",
"seasonStartMonthPlaceholder": "Select month...",
"seasonEndMonth": "Season End Month",
"seasonEndMonthPlaceholder": "Select month..."
},
"categories": {
"bread": "Bread",
"pastries": "Pastries",
"cakes": "Cakes",
"cookies": "Cookies",
"muffins": "Muffins",
"sandwiches": "Sandwiches",
"seasonal": "Seasonal",
"other": "Other"
},
"units": {
"units": "Units",
"pieces": "Pieces",
"kg": "Kilograms (kg)",
"g": "Grams (g)",
"loaves": "Loaves",
"dozen": "Dozen"
},
"steps": {
"recipeDetails": "Recipe Details",
"recipeDetailsDescription": "Name, category, yield",
"ingredients": "Ingredients",
"ingredientsDescription": "Recipe ingredients"
},
"messages": {
"errorObtainingTenantInfo": "Could not obtain tenant information",
"recipeCreatedSuccessfully": "Recipe created successfully",
"errorCreatingRecipe": "Error creating recipe"
}
},
2025-12-30 20:51:03 +01:00
"equipment": {
"title": "Add Equipment",
"equipmentDetails": "Equipment Details",
"subtitle": "Bakery Equipment",
"fields": {
"name": "Equipment Name",
"namePlaceholder": "E.g., Main Production Oven",
"type": "Equipment Type",
"model": "Model",
"modelPlaceholder": "E.g., Rational SCC 101",
"location": "Location",
"locationPlaceholder": "E.g., Main kitchen",
"status": "Status",
"installDate": "Install Date"
},
"types": {
"oven": "Oven",
"mixer": "Mixer",
"proofer": "Proofer",
"freezer": "Freezer",
"packaging": "Packaging",
"other": "Other"
},
"steps": {
"equipmentDetails": "Equipment Details",
"equipmentDetailsDescription": "Type, model, location"
},
"messages": {
"errorGettingTenant": "Could not get tenant information",
"noBrand": "No brand",
"successCreate": "Equipment created successfully",
"errorCreate": "Error creating equipment"
}
},
2025-12-25 20:51:03 +01:00
"purchaseOrder": {
"orderItems": {
"titleHeader": "Products to Purchase",
"addProduct": "Add Product",
"clickToBeginProduct": "Click 'Add Product' to get started",
"units": {
"kg": "Kilograms",
"g": "Grams",
"l": "Liters",
"ml": "Milliliters",
"units": "Units",
"boxes": "Boxes",
"bags": "Bags"
}
},
"deliveryDetails": {
"titleHeader": "Order Details",
"subtitleHeader": "Configure delivery date and priority",
"fields": {
"instructionsPlaceholder": "Special instructions for the supplier..."
},
"priorities": {
"critical": "Critical"
},
"advancedOptions": {
"title": "Advanced Options",
"description": "Additional financial information"
}
},
"validation": {
"selectSupplier": "You must select a supplier",
"addProduct": "You must add at least one product",
"invalidItems": "All products must have ingredient, quantity greater than 0 and price greater than 0",
"deliveryDate": "You must specify a delivery date"
},
"stepTitles": {
"selectSupplier": "Select Supplier",
"addProducts": "Add Products",
"orderDetails": "Order Details",
"reviewConfirm": "Review & Confirm"
},
"review": {
"unspecified": "Not specified",
"noName": "Product without name"
}
},
"itemTypeSelector": {
2025-12-28 22:29:27 +01:00
"title": "Select Type",
"description": "Choose what you want to add",
"search": {
"placeholder": "Search by name or category...",
"noResults": "No results found",
"resultSingular": "result",
"resultPlural": "results"
},
2025-12-25 20:51:03 +01:00
"categories": {
"all": "All",
"daily": "Daily",
"common": "Common",
"setup": "Setup"
},
"badges": {
"mostCommon": "⭐ Most Common",
"daily": "Daily",
"common": "Common",
"setup": "Setup"
2025-12-28 22:29:27 +01:00
},
"items": {
"inventory": {
"title": "Inventory",
"subtitle": "Add ingredients or products to your inventory",
"keywords": ["stock", "ingredients", "products", "warehouse"]
},
"supplier": {
"title": "Supplier",
"subtitle": "Add a new supplier or vendor",
"keywords": ["vendor", "purchases", "supplies"]
},
"recipe": {
"title": "Recipe",
"subtitle": "Create a new recipe or formula",
"keywords": ["formula", "preparation", "ingredients"]
},
"equipment": {
"title": "Equipment",
"subtitle": "Register bakery equipment or machinery",
"keywords": ["oven", "mixer", "equipment", "machine"]
},
"quality-template": {
"title": "Quality Template",
"subtitle": "Create a quality control template",
"keywords": ["control", "quality", "inspection", "verification"]
},
"customer-order": {
"title": "Customer Order",
"subtitle": "Create a new customer order",
"keywords": ["order", "customer", "sale"]
},
"customer": {
"title": "Customer",
"subtitle": "Add a new customer",
"keywords": ["customer", "buyer", "contact"]
},
"team-member": {
"title": "Team Member",
"subtitle": "Add a team member or employee",
"keywords": ["employee", "worker", "staff"]
},
"sales-entry": {
"title": "Sales Entry",
"subtitle": "Record a sales transaction",
"keywords": ["sale", "cash", "revenue", "transaction"]
},
"purchase-order": {
"title": "Purchase Order",
"subtitle": "Create a purchase order to supplier",
"keywords": ["purchase", "order", "supplier"]
},
"production-batch": {
"title": "Production Batch",
"subtitle": "Create a new production batch",
"keywords": ["production", "batch", "manufacturing"]
}
2025-12-25 20:51:03 +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
}
}