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

226 lines
8.3 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",
"autoGeneratedOnSave": "Auto-generated on save"
},
"inventory": {
"title": "Add Inventory",
"inventoryDetails": "Inventory Item Details",
"fillRequiredInfo": "Fill in the required information to create an inventory item",
"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",
"descriptionPlaceholder": "Detailed description of the inventory item"
},
"sections": {
"basicInformation": "Basic Information",
"advancedOptions": "Advanced Options",
"advancedOptionsDescription": "Optional fields for comprehensive inventory management",
"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)"
}
},
"qualityTemplate": {
"title": "Add Quality Template",
"templateDetails": "Quality Template Details",
"fillRequiredInfo": "Fill in the required information to create a quality check template",
"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",
"version": "Version",
"description": "Description",
"descriptionPlaceholder": "Detailed description of the quality check template",
"applicableStages": "Applicable Stages",
"applicableStagesTooltip": "Comma-separated list of production stages: e.g., mixing, proofing, baking, cooling",
"applicablePlaceholder": "mixing, proofing, baking, cooling"
},
"checkTypes": {
"product_quality": "Product Quality",
"process_hygiene": "Process Hygiene",
"equipment": "Equipment",
"safety": "Safety",
"cleaning": "Cleaning",
"temperature": "Temperature Control",
"documentation": "Documentation"
},
"sections": {
"basicInformation": "Basic Information",
"scoringConfiguration": "Scoring Configuration",
"advancedOptions": "Advanced Options",
"advancedOptionsDescription": "Optional fields for comprehensive quality template configuration"
}
},
"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 Info",
"deliveryInfo": "Delivery Information",
"paymentInfo": "Payment Information"
}
}
},
"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"
}
}
},
"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"
}
}