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

1056 lines
44 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": "Aukerakoa",
"required": "Beharrezkoa",
"autoGenerated": "Automatikoki sortu",
"leaveEmptyForAutoGeneration": "Utzi hutsik automatikoki sortzeko",
"readOnly": "Irakurtzeko soilik - Automatikoki sortua",
"willBeGeneratedAutomatically": "Automatikoki sortuko da",
"autoGeneratedOnSave": "Automatikoki sortua gordetzean"
},
2025-11-20 19:14:49 +01:00
"keyValueEditor": {
"showBuilder": "Eraikitzailea Erakutsi",
"showJson": "JSON Erakutsi",
"suggestions": "Iradokizun azkarrak",
"keyPlaceholder": "Gakoa",
"valuePlaceholder": "Balioa",
"remove": "Kendu",
"addPair": "Parametroa Gehitu",
"emptyState": "Oraindik ez dago parametrorik. Egin klik 'Parametroa Gehitu'-n hasteko."
},
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": "Inbentarioa Gehitu",
"inventoryDetails": "Inbentario Elementuaren Xehetasunak",
"fillRequiredInfo": "Bete beharrezko informazioa inbentario elementu bat sortzeko",
2025-11-15 21:21:06 +01:00
"summary": "Laburpena",
"steps": {
"productType": "Produktu Mota",
"basicInfo": "Oinarrizko Informazioa",
2025-11-18 07:17:17 +01:00
"stockConfig": "Stock Konfigurazioa",
"initialStock": "Hasierako Stock-a"
},
"initialStockDescription": "Gehitu lote bat edo gehiago hasierako inventarioa erregistratzeko",
"stockConfig": {
"product": "Produktua",
"totalQuantity": "Kantitate Osoa",
"totalValue": "Balio Osoa",
"lotsRegistered": "Erregistratutako Loteak",
"lot": "Lotea",
"remove": "Kendu",
"quantity": "Kantitatea",
"unitCost": "Unitate Kostua ($)",
"lotNumber": "Lote Zenbakia",
"expirationDate": "Iraungitze Data",
"location": "Kokapena",
"lotValue": "Lotearen balioa:",
"addInitialLot": "Gehitu Hasierako Lotea",
"addAnotherLot": "Gehitu Beste Lote Bat",
"skipMessage": "Urrats hau saltatu dezakezu hasierako stock-a geroago gehitzea nahiago baduzu"
2025-11-15 21:21:06 +01:00
},
"typeDescriptions": {
"ingredient": "Errezetetan erabiltzen diren lehengaiak eta osagaiak",
"finished_product": "Salmentarako edo kontsumorako prest dauden produktu finalak"
},
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": "Izena",
"namePlaceholder": "Adib: Erabilera Anitzeko Irina, Masa Zaharreko Ogia",
"productType": "Produktu Mota",
"unitOfMeasure": "Neurri Unitatea",
"sku": "SKU",
"skuPlaceholder": "Utzi hutsik automatikoki sortzeko",
"skuTooltip": "Utzi hutsik backend-etik automatikoki sortzeko, edo sartu SKU pertsonalizatua",
"barcode": "Barra Kodea",
"barcodePlaceholder": "Barra Kodea/UPC/EAN",
"ingredientCategory": "Osagai Kategoria",
"productCategory": "Produktu Kategoria",
"brand": "Marka",
"brandPlaceholder": "Marka izena",
"description": "Deskribapena",
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": "Inbentario elementuaren deskribapen zehatza",
"averageCost": "Batez Besteko Kostua (€)",
"lastPurchasePrice": "Azken Erosketa Prezioa (€)",
"standardCost": "Kostu Estandarra (€)",
"sellingPrice": "Salmenta Prezioa (€)",
"minimumPrice": "Gutxieneko Prezioa (€)",
"lowStockThreshold": "Stock Baxuko Atalasea",
"reorderPoint": "Berriro Eskatzeko Puntua",
"reorderQuantity": "Berriro Eskatzeko Kantitatea",
"maxStockLevel": "Gehienezko Stock Maila",
"leadTimeDays": "Entrega Denbora (egunak)",
"packageSize": "Pakete Tamaina",
"packageSizePlaceholder": "Adib: 25kg zorroa, 12ko paketea",
"shelfLifeDays": "Bizi Iraupena (egunak)",
"displayLifeHours": "Erakusketaren Iraupena (orduak)",
"storageTempRange": "Biltegiratze Tenperatura Eremua (°C)",
"storageTempMin": "Gutx",
"storageTempMax": "Geh",
"storageInstructions": "Biltegiratze Jarraibideak",
"storageInstructionsPlaceholder": "Adib: Gorde leku fresko eta lehorrean eguzki-argitik urrun",
"handlingInstructions": "Maneiatzeko Jarraibideak",
"handlingInstructionsPlaceholder": "Maneiatzeko eskakizun bereziak",
"isPerishable": "Elementu Hondagarria",
"preferredSupplierId": "Hornitzaile Hobetsiko ID",
"preferredSupplierIdPlaceholder": "Hornitzailearen ID",
"supplierProductCode": "Hornitzailearen Produktu Kodea",
"supplierProductCodePlaceholder": "Hornitzailearen produktu kodea",
"allergenInfo": "Alergenoen Informazioa",
"allergenInfoPlaceholder": "glutena, esnea, arrautzak",
"nutritionalInfo": "Nutrizio Informazioa",
"nutritionalInfoPlaceholder": "kaloriak:250, proteina:8g, karbohidratoak:45g",
"certifications": "Ziurtagiriak",
"certificationsPlaceholder": "Organikoa, GMO gabea, Kosher",
"weight": "Pisua (kg)",
"volume": "Bolumena (L)",
"dimensions": "Dimentsioak (L×Z×A cm)",
"dimensionsPlaceholder": "30×20×15",
"color": "Kolorea",
"colorPlaceholder": "Produktuaren kolorea",
"isActive": "Elementu Aktiboa",
"trackByLot": "Lote/Batch-ren arabera jarraitu",
"trackByExpiry": "Iraungitze Dataren arabera jarraitu",
"allowNegativeStock": "Stock Negatiboa Baimendu",
"notes": "Oharrak",
"notesPlaceholder": "Elementu honi buruzko ohar gehigarriak",
"tags": "Etiketak",
"tagsPlaceholder": "organikoa, premium, denborakoa",
"customFields": "Eremu Pertsonalizatuak (JSON)",
"customFieldsPlaceholder": "{\"eremu_pertsonalizatua\": \"balioa\"}"
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": "Oinarrizko Informazioa",
"advancedOptions": "Aukera Aurreratuak",
"advancedOptionsDescription": "Inbentario kudeaketa osoa egiteko eremu aukerazkoak",
2025-11-15 21:21:06 +01:00
"additionalInformationDescription": "Produktu identifikatzaile aukerazkoak",
"additionalDetails": "Xehetasun Gehigarriak",
"additionalDetailsDescription": "Produktuaren xehetasun aukerazkoak",
"advancedStockSettings": "Stock Ezarpen Aurreratuak",
"advancedStockSettingsDescription": "Konfiguratu inbentario atalaseak eta berriro eskatzeko puntuak",
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": "Prezioen Informazioa",
"inventoryManagement": "Inbentario Kudeaketa",
"productInformation": "Produktuaren Informazioa",
"storageAndHandling": "Biltegiratze eta Maneiua",
"supplierInformation": "Hornitzailearen Informazioa",
"qualityAndCompliance": "Kalitatea eta Betetze",
"physicalProperties": "Propietate Fisikoak",
"statusAndTracking": "Egoera eta Jarraipena",
"additionalInformation": "Informazio Gehigarria"
},
"productTypes": {
"ingredient": "Osagaia",
"finished_product": "Produktu Amaitua",
"packaging": "Ontziratzea",
"consumable": "Kontsumitzeko"
},
"units": {
"select": "Hautatu...",
"kg": "Kilogramoak (kg)",
"g": "Gramoak (g)",
"l": "Litroak (L)",
"ml": "Mililitroak (ml)",
"units": "Unitateak",
"dozen": "Dozena",
"lb": "Libratok (lb)",
"oz": "Ontzak (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": "Hautatu...",
"flour": "Irinak",
"dairy": "Esnekiak",
"eggs": "Arrautzak",
"fats": "Gantzak eta Olioak",
"sweeteners": "Gozo-gailuak",
"additives": "Gehigarriak",
"fruits": "Frutak",
"nuts": "Fruitu Lehorrak eta Haziak",
"spices": "Espezia",
"leavening": "Altxatzeko Agenteak"
},
"productCategories": {
"select": "Hautatu...",
"bread": "Ogia",
"pastry": "Gozogintzak",
"cake": "Tartak",
"cookies": "Galetak",
"specialty": "Elementu Bereziak"
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": "Kalitate Txantiloia Gehitu",
"templateDetails": "Kalitate Txantiloiaren Xehetasunak",
"fillRequiredInfo": "Bete beharrezko informazioa kalitate kontrol txantiloi bat sortzeko",
2025-11-20 19:14:49 +01:00
"selectCheckType": "Kalitate Kontrol Mota Hautatu",
"selectCheckTypeDescription": "Hautatu sortu nahi duzun kalitate kontrol mota",
"essentialConfiguration": "Oinarrizko Konfigurazioa",
"essentialConfigurationDescription": "Zehaztu zure kalitate kontrol txantiloiaren oinarrizko ezaugarriak",
"criteriaAndSettings": "Kalitate Irizpideak eta Ezarpenak",
"criteriaAndSettingsDescription": "Konfiguratu puntuazio metodoak eta kalitate irizpide aurreratuak",
"steps": {
"checkType": "Kontrol Mota",
"essentialConfiguration": "Konfigurazioa",
"criteriaSettings": "Irizpideak eta Ezarpenak"
},
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": "Izena",
"namePlaceholder": "Adib: Ogiaren Kalitate Kontrola, Higiene Ikuskatzea",
"checkType": "Egiaztapen Mota",
"weight": "Pisua",
"weightTooltip": "Puntuaziorako garrantzi pisua (0.0-10.0)",
"templateCode": "Txantiloi Kodea",
"templateCodePlaceholder": "Utzi hutsik automatikoki sortzeko",
"templateCodeTooltip": "Utzi hutsik backend-etik automatikoki sortzeko, edo sartu kode pertsonalizatua",
2025-11-20 19:14:49 +01:00
"category": "Kategoria",
"categoryPlaceholder": "Adib: itxura, egitura, ehundura",
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": "Bertsioa",
"description": "Deskribapena",
"descriptionPlaceholder": "Kalitate kontrol txantiloiaren deskribapen zehatza",
"applicableStages": "Aplikagarriak Diren Faseak",
2025-11-20 19:14:49 +01:00
"applicableStagesTooltip": "Hautatu kalitate kontrol hau aplikatzen den ekoizpen faseak",
"applicableStagesHelp": "Utzi hutsik fase guztietan aplikatzeko",
"applicablePlaceholder": "nahasketa, hartzidura, labea, hozte",
"instructions": "Jarraibideak",
"instructionsPlaceholder": "Kalitate kontrol hau egiteko urrats-urratseko jarraibideak",
"minValue": "Balio Minimoa",
"maxValue": "Balio Maximoa",
"targetValue": "Helburu Balioa",
"unit": "Unitatea",
"unitPlaceholder": "Adib: °C, g, cm, %",
"tolerancePercentage": "Tolerantzia Ehunekoa",
"toleranceTooltip": "Helburu baliotik onartutako desbideratzea (0-100%)",
"scoringMethod": "Puntuazio Metodoa",
"passThreshold": "Gainditzeko Atalasea (%)",
"passThresholdTooltip": "Gaindit zeko beharrezko gutxieneko puntuazio ehunekoa (0-100%)",
"frequencyDays": "Maiztasuna (egunak)",
"frequencyDaysTooltip": "Kontrol hau zenbat denboratan egin behar den (egunetan)",
"frequencyDaysPlaceholder": "Utzi hutsik lote oinarritua izateko",
"requiredCheck": "Beharrezko Egiaztapena",
"checkPointsJsonArray": "Kontrol Puntuak (JSON Array)",
"checkPointsTooltip": "Kontrol puntuen array-a: [{\"name\": \"Ikusizko Kontrola\", \"description\": \"...\", \"weight\": 1.0}]",
"checkPointsPlaceholder": "[{\"name\": \"Ikusizko Ikuskatzea\", \"description\": \"Itxura egiaztatu\", \"expected_value\": \"Urre marroia\", \"measurement_type\": \"visual\", \"is_critical\": false, \"weight\": 1.0}]",
"acceptanceCriteria": "Onarpenerako Irizpideak",
"acceptanceCriteriaPlaceholder": "Adib: Kolore urre uniformea, ehundura puzgatua, erreadurak gabe...",
"parametersJson": "Parametroak (JSON)",
"parametersTooltip": "Txantiloiaren parametroak: {\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"parametersPlaceholder": "{\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"thresholdsJson": "Atalaseak (JSON)",
"thresholdsTooltip": "Atalase balioak: {\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"thresholdsPlaceholder": "{\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"scoringCriteriaJson": "Puntuazio Irizpideak (JSON)",
"scoringCriteriaTooltip": "Puntuazio irizpide pertsonalizatuak: {\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"scoringCriteriaPlaceholder": "{\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"responsibleRole": "Arduradunaren Rola/Pertsona",
"responsibleRolePlaceholder": "Adib: Ekoizpen Kudeatzailea, Okindegilea",
"requiredEquipment": "Beharrezko Ekipamendua/Tresnak",
"requiredEquipmentPlaceholder": "Adib: Termometroa, balantza, kronometroa",
"specificConditions": "Baldintza Espezifikoak edo Oharrak",
"specificConditionsPlaceholder": "Adib: Egun hezetan soilik aplikagarria, labean 30 minutu geroago egiaztatu...",
"activeTemplate": "Txantiloi Aktiboa",
"requiresPhotoEvidence": "Argazki Frogak Behar Ditu",
"criticalControlPoint": "Kontrol Puntu Kritikoa (KPK)",
"notifyOnFailure": "Jakinarazi Hutsegitean"
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": "Ikusizko Ikuskatzea",
"measurement": "Neurketa",
"temperature": "Tenperatura",
"weight": "Pisua",
"boolean": "Gainditu/Huts Egin Kontrola",
"timing": "Denboratzea",
"checklist": "Egiaztapen Zerrenda"
},
"checkTypeDescriptions": {
"visual": "Itxura, kolorea eta kalitate ezaugarri bisualak ikuskatu",
"measurement": "Dimentsio, tamaina edo kopuru zehatzak neurtu",
"temperature": "Tenperatura irakurketak kontrolatu eta egiaztatu",
"weight": "Pisu eta masa neurketak egiaztatu",
"boolean": "Bai/ez edo gainditu/huts egin kontrol sinpleak",
"timing": "Denboran oinarritutako kalitate irizpideak jarraitu",
"checklist": "Puntu anitzeko egiaztapen zerrenda egiaztapena"
},
"processStages": {
"mixing": "Nahasketa",
"proofing": "Hartzidura",
"shaping": "Moldatzea",
"baking": "Labea",
"cooling": "Hoztea",
"packaging": "Ontziratzea",
"finishing": "Amaiera"
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": "Oinarrizko Informazioa",
2025-11-20 19:14:49 +01:00
"additionalIdentifiers": "Identifikatzaile Gehigarriak",
"additionalIdentifiersDescription": "Antolakuntza rako identifikatzaile aukerazkoak",
"measurementSpecifications": "Neurketa Zehaztapenak",
"additionalDetails": "Xehetasun Gehigarriak",
"additionalDetailsDescription": "Jarraibide zehatz aukerazkoak",
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": "Puntuazio Konfigurazioa",
"advancedOptions": "Aukera Aurreratuak",
"advancedOptionsDescription": "Kalitate txantiloi konfigurazio osoa egiteko eremu aukerazkoak",
"checkPointsConfiguration": "Kontrol Puntuen Konfigurazioa",
"advancedConfiguration": "Konfigurazio Aurreratua (JSONB)",
"responsibilityRequirements": "Erantzukizuna eta Eskakizunak",
"controlSettings": "Kontrol Ezarpenak"
},
"scoringMethods": {
"scoringMethod": "Puntuazio Metodoa",
"weightedAverage": "Batez Besteko Haztatua",
"passFail": "Gainditu/Huts egin",
"percentage": "Ehunekoa",
"pointsBased": "Puntuetan Oinarrituta"
},
"advancedFields": {
"checkPointsJsonArray": "Kontrol Puntuak (JSON Array)",
"checkPointsTooltip": "Kontrol puntuen array-a: [{\"name\": \"Ikusizko Kontrola\", \"description\": \"...\", \"weight\": 1.0}]",
"checkPointsPlaceholder": "[{\"name\": \"Ikusizko Ikuskatzea\", \"description\": \"Itxura egiaztatu\", \"expected_value\": \"Urre marroia\", \"measurement_type\": \"visual\", \"is_critical\": false, \"weight\": 1.0}]",
"acceptanceCriteria": "Onarpenerako Irizpideak",
"acceptanceCriteriaPlaceholder": "Adib: Kolore urre uniformea, ehundura puzgatua, erreadurak gabe...",
"parametersJson": "Parametroak (JSON)",
"parametersTooltip": "Txantiloiaren parametroak: {\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"parametersPlaceholder": "{\"temp_min\": 75, \"temp_max\": 85, \"humidity\": 65}",
"thresholdsJson": "Atalaseak (JSON)",
"thresholdsTooltip": "Atalase balioak: {\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"thresholdsPlaceholder": "{\"critical\": 90, \"warning\": 70, \"acceptable\": 50}",
"scoringCriteriaJson": "Puntuazio Irizpideak (JSON)",
"scoringCriteriaTooltip": "Puntuazio irizpide pertsonalizatuak: {\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"scoringCriteriaPlaceholder": "{\"appearance\": 30, \"texture\": 30, \"taste\": 40}",
"responsibleRole": "Arduradunaren Rola/Pertsona",
"responsibleRolePlaceholder": "Adib: Ekoizpen Kudeatzailea, Okindegilea",
"requiredEquipment": "Beharrezko Ekipamendua/Tresnak",
"requiredEquipmentPlaceholder": "Adib: Termometroa, balantza, kronometroa",
"specificConditions": "Baldintza Espezifikoak edo Oharrak",
"specificConditionsPlaceholder": "Adib: Egun hezetan soilik aplikagarria, labean 30 minutu geroago egiaztatu...",
"passThresholdPercent": "Gainditzeko Atalasea (%)",
"frequencyDays": "Maiztasuna (egunak)",
"frequencyPlaceholder": "Utzi hutsik lote oinarritua izateko",
"requiredCheck": "Beharrezko Egiaztapena",
"activeTemplate": "Txantiloi Aktiboa",
"requiresPhotoEvidence": "Argazki Frogak Behar Ditu",
"criticalControlPoint": "Kontrol Puntu Kritikoa (KPK)",
"notifyOnFailure": "Jakinarazi Hutsegitean",
"templateDetailsTitle": "Txantiloiaren Xehetasunak"
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": "Eskaera Gehitu",
"steps": {
"customerSelection": "Bezeroaren Hautaketa",
"orderItems": "Eskaeraren Elementuak",
"deliveryAndPayment": "Bidalketa eta Ordainketa"
},
"customerSelection": {
"title": "Bezeroa Hautatu edo Sortu",
"subtitle": "Aukeratu lehendik dagoen bezero bat edo sortu berri bat",
"searchPlaceholder": "Bilatu bezeroak...",
"createNew": "Sortu bezero berria",
"backToList": "← Itzuli bezeroen zerrendara",
"fields": {
"customerName": "Bezeroaren Izena",
"customerNamePlaceholder": "Adib: Errota Jatetxea",
"customerType": "Bezero Mota",
"phone": "Telefonoa",
"phonePlaceholder": "+34 123 456 789",
"email": "Posta Elektronikoa",
"emailPlaceholder": "kontaktua@jatetxea.com"
},
"customerTypes": {
"retail": "Txikizkako Salmentaketa",
"wholesale": "Handizkakoa",
"event": "Ekitaldia",
"restaurant": "Jatetxea"
}
},
"orderItems": {
"title": "Gehitu Produktuak Eskaerara",
"subtitle": "Hautatu produktuak eta kantitateak",
"addItem": "Gehitu Elementua",
"removeItem": "Kendu elementua",
"fields": {
"product": "Produktua",
"productPlaceholder": "Hautatu produktua...",
"quantity": "Kantitatea",
"unitPrice": "Unitate Prezioa (€)",
"customRequirements": "Eskakizun Pertsonalizatuak",
"customRequirementsPlaceholder": "Jarraibide bereziak...",
"subtotal": "Azpitotala"
},
"total": "Guztira Kopurua"
},
"deliveryPayment": {
"title": "Bidalketa eta Ordainketaren Xehetasunak",
"subtitle": "Konfiguratu bidalketa, ordainketa eta eskaeraren xehetasunak",
"fields": {
"requestedDeliveryDate": "Eskatutako Bidalketa Data",
"orderNumber": "Eskaera Zenbakia",
"orderNumberTooltip": "Backend-eak automatikoki sortua eskaera sortzean (formatua: ORD-UUUUHHEE-####)",
"status": "Egoera",
"orderType": "Eskaera Mota",
"priority": "Lehentasuna"
},
"sections": {
"basicInfo": "Eskaeraren Oinarrizko Informazioa",
"deliveryInfo": "Bidalketa Xehetasunak",
"paymentInfo": "Ordainketa Xehetasunak",
"orderSummary": "Eskaeraren Laburpena",
"advancedOptions": "Aukera Aurreratuak",
"advancedOptionsDescription": "Eskaera kudeaketa osoa egiteko eremu aukerazkoak",
"pricingDetails": "Prezioen Xehetasunak",
"productionScheduling": "Ekoizpena eta Programazioa",
"fulfillmentTracking": "Betetze eta Jarraipena",
"sourceChannel": "Jatorria eta Kanala",
"communicationNotes": "Komunikazioa eta Oharrak",
"notifications": "Jakinarazpenak",
"qualityRequirements": "Kalitatea eta Eskakizunak",
"additionalOptions": "Aukera Gehigarriak"
},
"orderTypes": {
"standard": "Estandarra",
"custom": "Pertsonalizatua",
"bulk": "Granel",
"urgent": "Urgentea"
},
"priorities": {
"low": "Baxua",
"normal": "Normala",
"high": "Altua",
"urgent": "Urgentea"
},
"statuses": {
"pending": "Zain",
"confirmed": "Baieztaturik",
"in_production": "Ekoizpenean",
"ready": "Prest",
"delivered": "Entregatua"
},
"deliveryMethods": {
"pickup": "Biltzea",
"pickupDesc": "Bezeroaren biltzea",
"delivery": "Entrega",
"deliveryDesc": "Etxera entrega",
"shipping": "Bidalketa",
"shippingDesc": "Mezularitza zerbitzua"
},
"paymentMethods": {
"cash": "Dirua",
"card": "Txartela",
"bank_transfer": "Banku Transferentzia",
"invoice": "Faktura",
"account": "Kontua"
},
"paymentTerms": {
"immediate": "Berehalakoa",
"net_30": "Garbia 30",
"net_60": "Garbia 60"
},
"paymentStatuses": {
"pending": "Zain",
"partial": "Partziala",
"paid": "Ordaindua",
"overdue": "Atzeratua"
},
"orderSources": {
"manual": "Eskuzkoa",
"phone": "Telefonoa",
"email": "Posta Elektronikoa",
"website": "Webgunea",
"app": "Mugikorrerako Aplikazioa"
},
"salesChannels": {
"direct": "Zuzena",
"wholesale": "Handizkakoa",
"retail": "Txikizkakoa",
"online": "Lineako"
},
"qualityCheckStatuses": {
"not_started": "Hasi Gabe",
"pending": "Zain",
"passed": "Gainditu",
"failed": "Huts Egin"
},
"messages": {
"loadingCustomers": "Bezeroak kargatzen...",
"loadingProducts": "Produktuak kargatzen...",
"errorLoadingCustomers": "Errorea bezeroak kargatzean",
"errorLoadingProducts": "Errorea produktuak kargatzean",
"noCustomersFound": "Ez da bezerorik aurkitu",
"tryDifferentSearch": "Saiatu bilaketa-termino desberdin batekin",
"noProductsInOrder": "Ez dago produkturik eskaera honetan",
"clickAddProduct": "Sakatu \"Gehitu Produktua\" hasteko",
"newCustomer": "Bezero Berria",
"customer": "Bezeroa",
"products": "Produktuak",
"items": "elementuak",
"total": "Guztira",
"productNumber": "Produktua #",
"searchByName": "Bilatu bezeroa izenaren arabera...",
"selectCustomer": "Hautatu Bezeroa",
"searchForCustomer": "Bilatu lehendik dagoen bezero bat edo sortu berri bat",
"orderItems": "Eskaeraren Elementuak",
"addProducts": "Gehitu Produktuak Eskaerara",
"customerLabel": "Bezeroa:",
"productsLabel": "Produktuak:",
"totalLabel": "Guztira:",
"orderTotal": "Eskaeraren Guztira:",
"newCustomerHeader": "Bezero Berria",
"orderProducts": "Eskaeraren Produktuak",
"addProduct": "Gehitu Produktua",
"removeItem": "Kendu elementua",
"optionalEmail": "Posta Elektronikoa (Aukerakoa)",
"readOnlyAutoGenerated": "Eskaera Zenbakia (Irakurtzeko soilik - Automatikoki sortua)",
"willBeGeneratedAutomatically": "Automatikoki sortuko da",
"autoGeneratedOnSave": "Automatikoki sortua gordetzean",
"orderNumberFormat": "formatua: ORD-UUUUHHEE-####",
"selectProduct": "Hautatu produktua...",
"deliveryAddress": "Bidalketa Helbidea",
"deliveryAddressPlaceholder": "Kalea, zenbakia, pisua, posta kodea, hiria...",
"deliveryContactName": "Bidalketarako Kontaktu Izena",
"deliveryContactNamePlaceholder": "Kontaktu pertsona",
"deliveryContactPhone": "Bidalketarako Kontaktu Telefonoa",
"deliveryMethod": "Bidalketa Metodoa",
"paymentMethod": "Ordainketa Metodoa",
"paymentTerms": "Ordainketa Baldintzak",
"paymentStatus": "Ordainketa Egoera",
"paymentDueDate": "Ordainketa Muga Data",
"discountPercent": "Deskontua (%)",
"deliveryFee": "Bidalketa Tarifa (€)",
"productionStartDate": "Ekoizpen Hasiera Data",
"productionDueDate": "Ekoizpen Muga Data",
"productionBatchNumber": "Ekoizpen Lote Zenbakia",
"productionBatchNumberPlaceholder": "LOTE-001",
"deliveryTimeWindow": "Bidalketa Denbora Tartea",
"deliveryTimeWindowPlaceholder": "Adib: 9:00 AM - 11:00 AM",
"productionNotes": "Ekoizpen Oharrak",
"productionNotesPlaceholder": "Ekoizpenerako eskakizun bereziak edo oharrak",
"shippingTrackingNumber": "Bidalketa Jarraipena Zenbakia",
"shippingTrackingNumberPlaceholder": "Jarraipena zenbakia",
"shippingCarrier": "Bidalketa Enpresa",
"shippingCarrierPlaceholder": "Adib: DHL, UPS, FedEx",
"pickupLocation": "Biltzeko Kokapena",
"pickupLocationPlaceholder": "Denda kokapena biltzeko",
"actualDeliveryDate": "Benetako Bidalketa Data",
"orderSource": "Eskaeraren Jatorria",
"salesChannel": "Salmenta Kanala",
"salesRepId": "Salmenta Ordezkariararen IDa",
"salesRepIdPlaceholder": "Salmenta ordezkariararen IDa edo izena",
"customerPurchaseOrder": "Bezeroaren Erosketa Eskaera #",
"customerPurchaseOrderPlaceholder": "Bezeroaren EE zenbakia",
"deliveryInstructions": "Bidalketa Jarraibideak",
"deliveryInstructionsPlaceholder": "Bidalketa jarraibide bereziak",
"specialInstructions": "Jarraibide Bereziak",
"specialInstructionsPlaceholder": "Edozein eskakizun edo jarraibide berezi",
"internalNotes": "Barneko Oharrak",
"internalNotesPlaceholder": "Barneko oharrak (bezeroari ikusten ez zaio)",
"customerNotes": "Bezeroaren Oharrak",
"customerNotesPlaceholder": "-tik/-rako oharrak bezeroa",
"notifyOnStatusChange": "Jakinarazi Egoera Aldatzean",
"notifyOnDelivery": "Jakinarazi Entregatzean",
"notificationEmail": "Jakinarazpen Posta Elektronikoa",
"notificationEmailPlaceholder": "bezeroa@posta.com",
"notificationPhone": "Jakinarazpen Telefonoa",
"qualityCheckRequired": "Kalitate Kontrola Beharrezkoa",
"qualityCheckStatus": "Kalitate Kontrolaren Egoera",
"packagingInstructions": "Ontziratzeko Jarraibideak",
"packagingInstructionsPlaceholder": "Ontziratzeko eskakizun bereziak",
"labelingRequirements": "Etiketatzeko Eskakizunak",
"labelingRequirementsPlaceholder": "Etiketa eskakizun pertsonalizatuak",
"recurringOrder": "Eskaera Errepikakorria",
"recurringSchedule": "Errepikapen Egutegia",
"recurringSchedulePlaceholder": "Adib: Astero astelehenetan, 2 astero",
"tags": "Etiketak",
"tagsPlaceholder": "urgentea, vip, handizkakoa",
"tagsTooltip": "Komaz bereizitako etiketak bilaketa eta iragazketa errazteko",
"metadata": "Metadatuak (JSON)",
"metadataPlaceholder": "{\"eremu_pertsonalizatua\": \"balioa\"}",
"metadataTooltip": "Datu pertsonalizatu gehigarriak JSON formatuan"
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": "Hautatu Mota",
"description": "Aukeratu zer gehitu nahi duzun",
"types": {
"inventory": {
"title": "Inbentarioa",
"description": "Gehitu osagaiak edo produktuak zure inbentariora"
},
"supplier": {
"title": "Hornitzailea",
"description": "Gehitu hornitzaile edo saltzaile berri bat"
},
"recipe": {
"title": "Errezeta",
"description": "Sortu errezeta edo formula berri bat"
},
"equipment": {
"title": "Ekipamendua",
"description": "Erregistratu okindegiaren ekipamendua edo makina"
},
"quality-template": {
"title": "Kalitate Txantiloia",
"description": "Sortu kalitate kontrol txantiloi bat"
},
"customer-order": {
"title": "Bezeroaren Eskaera",
"description": "Sortu bezero eskaera berri bat"
},
"customer": {
"title": "Bezeroa",
"description": "Gehitu bezero berri bat"
},
"team-member": {
"title": "Taldeko Kidea",
"description": "Gehitu taldeko kide edo langile bat"
},
"sales-entry": {
"title": "Salmenta Erregistroa",
"description": "Erregistratu salmenta transakzio bat"
}
}
},
2025-11-18 07:17:17 +01:00
"salesEntry": {
"title": "Salmenta Erregistroa",
"steps": {
"entryMethod": "Sarrera Metodoa",
"entryMethodDescription": "Aukeratu salmentak erregistratzeko modua",
"manualEntry": "Datuak Sartu",
"manualEntryDescription": "Erregistratu salmenta xehetasunak",
"fileUpload": "Fitxategia Kargatu",
"fileUploadDescription": "Inportatu salmentak fitxategitik",
"review": "Berrikusi",
"reviewDescription": "Berretsi datuak gorde aurretik"
},
"entryMethod": {
"title": "Nola nahi dituzu salmentak erregistratu?",
"subtitle": "Aukeratu zure beharrei hobekien egokitzen zaion metodoa",
"manual": {
"title": "Eskuzko Sarrera",
"description": "Sartu salmenta bat edo gehiago banaka",
"benefits": {
"1": "Egokia eguneko totaletarako",
"2": "Kontrol zehatza salmenta bakoitzeko",
"3": "Erraza eta azkarra"
}
},
"file": {
"title": "Fitxategia Kargatu",
"description": "Inportatu Excel edo CSV-tik",
"recommended": "⭐ Gomendatua datu historikoentzat",
"benefits": {
"1": "Egokia datu historikoentzat",
"2": "Karga masiboa (ehunka erregistro)",
"3": "Denbora asko aurrezten du"
}
}
},
"manualEntry": {
"title": "Erregistratu Eskuzko Salmenta",
"subtitle": "Sartu salmenta xehetasunak",
"fields": {
"saleDate": "Salmenta Data",
"paymentMethod": "Ordainketa Metodoa",
"notes": "Oharrak (Aukerakoa)",
"notesPlaceholder": "Informazio gehigarria salmenta honi buruz..."
},
"products": {
"title": "Saldutako Produktuak",
"addProduct": "+ Gehitu Produktua",
"loading": "Produktuak kargatzen...",
"noFinishedProducts": "Ez dago produktu amaiturik eskuragarri",
"addToInventory": "Gehitu produktuak inventariora lehenik",
"noProductsAdded": "Ez da produkturik gehitu",
"clickToBegin": "Egin klik 'Gehitu Produktua'-n hasteko",
"selectProduct": "Hautatu produktua...",
"quantity": "Kant.",
"price": "Prezioa",
"removeProduct": "Kendu produktua",
"total": "Guztira:"
}
},
"fileUpload": {
"title": "Kargatu Salmenta Fitxategia",
"subtitle": "Inportatu zure salmentak Excel edo CSV-tik",
"downloadTemplate": "Deskargatu CSV Txantiloia",
"downloading": "Deskargatzen...",
"dragDrop": {
"title": "Arrastatu fitxategi bat hona",
"subtitle": "edo egin klik hautatzeko",
"button": "Hautatu Fitxategia",
"supportedFormats": "Onartutako formatuak: CSV, Excel (.xlsx, .xls)"
},
"validated": {
"title": "✓ Fitxategia ondo baliozkotuta",
"recordsFound": "Aurkitutako erregistroak:",
"validRecords": "Erregistro baliozkoak:",
"errors": "Erroreak:"
},
"validateButton": "Baliozkotu Fitxategia",
"validating": "Baliozkotzean...",
"importButton": "Inportatu Datuak",
"importing": "Inportatzen...",
"instructions": {
"title": "Fitxategiak zutabe hauek eduki behar ditu:",
"columns": "data, produktua, kantitatea, unitate_prezioa, ordainketa_metodoa"
}
},
"review": {
"title": "Berrikusi eta Berretsi",
"subtitle": "Egiaztatu informazio guztia zuzena dela",
"fields": {
"date": "Data:",
"paymentMethod": "Ordainketa Metodoa:",
"products": "Produktuak",
"total": "Guztira:",
"notes": "Oharrak:"
},
"imported": {
"title": "✓ Fitxategia ondo inportatu da",
"recordsImported": "Inportatutako erregistroak:",
"recordsFailed": "Huts egin duten erregistroak:"
}
},
"paymentMethods": {
"cash": "Dirua",
"card": "Txartela",
"mobile": "Mugikorreko Ordainketa",
"transfer": "Transferentzia",
"other": "Bestelakoa"
},
"messages": {
"errorObtainingTenantInfo": "Ezin izan da tenant informazioa lortu",
"errorLoadingProducts": "Errorea produktuak kargatzean",
"salesEntryCreatedSuccessfully": "Salmenta erregistroa ondo sortu da",
"errorCreatingSalesEntry": "Errorea salmenta erregistroa sortzean",
"errorValidatingFile": "Errorea fitxategia baliozkotzean",
"errorImportingFile": "Errorea fitxategia inportatzen",
"fileValidatedSuccessfully": "Fitxategia ondo baliozkotu da",
"fileImportedSuccessfully": "Fitxategia ondo inportatu da"
}
},
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": "Batez besteko kostua unitateko erosketa historikoan oinarrituta",
"standardCost": "Kostu estandarra/espero unitateko kostu kalkuluetarako",
"lowStockThreshold": "Alerta stock maila honen azpitik erortzen denean",
"reorderPoint": "Aktibatu berriro eskaera stock maila honetara heltzen denean",
"reorderQuantity": "Estandar kantitatea berriro eskatzean",
"leadTime": "Eskaera egin eta entregaren arteko denbora",
"displayLife": "Produktua erakusgarri egon daitekeen orduak kalitatea degradatu aurretik",
"allergenInfo": "Komaz bereizitako zerrenda: adib: glutena, esnea, arrautzak, fruitu lehorrak",
"nutritionalInfo": "Nutrizio datu nagusiak komaz bereizitako zerrenda gisa",
"certifications": "Komaz bereizitako zerrenda: adib: Organikoa, GMO gabea, Kosher",
"tags": "Komaz bereizitako etiketak bilaketa eta iragazketa errazteko",
"customFields": "Datu pertsonalizatu gehigarriak JSON formatuan",
"passThreshold": "Onesteko behar den gutxieneko puntuazioa (0-100)",
"frequencyDays": "Zenbat maiztasunekin egin behar den egiaztapen hau (utzi hutsik lote oinarritua izateko)",
"checkPoints": "Egiaztapen puntuen matrizea",
"parameters": "Txantiloi parametroak",
"thresholds": "Atalase balioak",
"scoringCriteria": "Puntuazio irizpide pertsonalizatuak"
2025-12-25 20:51:03 +01:00
},
"purchaseOrder": {
"title": "Erosketa Eskaera Gehitu",
"steps": {
"supplierSelection": "Hornitzailearen Hautaketa",
"supplierSelectionDescription": "Aukeratu hornitzailea",
"orderItems": "Eskaeraren Elementuak",
"orderItemsDescription": "Eskatu beharreko produktuak",
"deliveryDetails": "Entregaren Xehetasunak",
"deliveryDetailsDescription": "Entrega data eta oharrak"
},
"supplierSelection": {
"title": "Hornitzailea Hautatu",
"subtitle": "Aukeratu erosketa eskaera honetarako hornitzailea",
"searchPlaceholder": "Bilatu hornitzailea izenaren edo kodearen arabera...",
"loading": "Hornitzaileak kargatzen...",
"error": "Errorea hornitzaileak kargatzean",
"noSuppliersFound": "Ez da hornitzailerik aurkitu",
"tryDifferentSearch": "Saiatu bilaketa-termino desberdin batekin"
},
"orderItems": {
"title": "Eskaeraren Elementuak",
"subtitle": "Hautatu eskatu beharreko produktuak",
"addItem": "Gehitu Elementua",
"removeItem": "Kendu elementua",
"noItemsAdded": "Ez da elementurik gehitu oraindik",
"clickToBegin": "Sakatu 'Gehitu Elementua' hasteko",
"supplier": "Hornitzailea",
"orderTotal": "Eskaeraren Guztira",
"fields": {
"ingredient": "Osagaia",
"ingredientPlaceholder": "Hautatu osagaia...",
"quantity": "Kantitatea",
"unitPrice": "Unitate Prezioa (€)",
"subtotal": "Azpitotala",
"notes": "Oharrak",
"notesPlaceholder": "Elementu honetarako ohar gehigarriak..."
},
"loading": "Osagaiak kargatzen...",
"noIngredients": "Ez dago osagairik eskuragarri",
"addToInventory": "Gehitu osagaiak inventariora lehenik"
},
"deliveryDetails": {
"title": "Entregaren Xehetasunak",
"subtitle": "Konfiguratu entrega data eta ohar gehigarriak",
"fields": {
"expectedDeliveryDate": "Espero den Entrega Data",
"notes": "Eskaeraren Oharrak",
"notesPlaceholder": "Jarraibide bereziak, entrega eskakizunak, etab.",
"orderNumber": "Eskaera Zenbakia",
"orderNumberTooltip": "Automatikoki sortuko da eskaera sortzean",
"status": "Egoera",
"priority": "Lehentasuna"
},
"orderSummary": {
"title": "Eskaeraren Laburpena",
"supplier": "Hornitzailea:",
"items": "Elementuak:",
"total": "Guztira:",
"deliveryDate": "Espero den Entrega:"
},
"statuses": {
"draft": "Zirriborroa",
"pending": "Zain",
"approved": "Onartuta",
"ordered": "Eskatuta",
"received": "Jasota",
"cancelled": "Bertan behera utzita"
},
"priorities": {
"low": "Baxua",
"normal": "Normala",
"high": "Altua",
"urgent": "Urgentea"
}
},
"messages": {
"errorObtainingTenantInfo": "Ezin izan da tenant informazioa lortu",
"errorLoadingSuppliers": "Errorea hornitzaileak kargatzean",
"errorLoadingIngredients": "Errorea osagaiak kargatzean",
"purchaseOrderCreatedSuccessfully": "Erosketa eskaera ondo sortu da",
"errorCreatingPurchaseOrder": "Errorea erosketa eskaera sortzean",
"selectSupplier": "Mesedez hautatu hornitzaile bat",
"addAtLeastOneItem": "Gehitu gutxienez elementu bat eskaerara"
}
},
"productionBatch": {
"title": "Ekoizpen Lotea Gehitu",
"steps": {
"productRecipe": "Produktua eta Errezeta",
"productRecipeDescription": "Hautatu zer ekoitzi",
"timing": "Programazioa",
"timingDescription": "Ekoizpen datak",
"equipmentStaff": "Ekipamendua eta Langileak",
"equipmentStaffDescription": "Esleitutako baliabideak",
"additionalDetails": "Xehetasun Gehigarriak",
"additionalDetailsDescription": "Oharrak eta konfigurazioa"
},
"productRecipe": {
"title": "Produktua eta Errezeta Hautatu",
"subtitle": "Aukeratu ekoitzi beharreko produktua eta aukeran errezeta bat",
"loading": "Informazioa kargatzen...",
"fields": {
"product": "Ekoitzi Beharreko Produktua",
"productPlaceholder": "Hautatu produktua...",
"recipe": "Erabili Beharreko Errezeta (Aukerakoa)",
"recipePlaceholder": "Errezeta zehatzik gabe",
"quantityToProduce": "Ekoitzi Beharreko Kantitatea",
"batchNumber": "Lote Zenbakia",
"batchNumberPlaceholder": "LOTE-001"
},
"noProducts": "Ez dago produkturik eskuragarri",
"addToInventory": "Gehitu produktuak inventariora lehenik",
"recipeDetails": {
"title": "Errezeta Xehetasunak",
"yield": "Etekin:",
"prepTime": "Prestaketa Denbora:",
"cookTime": "Sukaldaritza Denbora:",
"totalTime": "Denbora Guztira:",
"ingredients": "Osagaiak:",
"minutes": "min"
}
},
"timing": {
"title": "Ekoizpen Programazioa",
"subtitle": "Zehaztu ekoizpenaren hasiera eta amaiera datak",
"fields": {
"scheduledStartTime": "Hasiera Data eta Ordua",
"scheduledEndTime": "Amaiera Data eta Ordua (Aukerakoa)",
"estimatedDuration": "Iraupena Estimatua (minutuak)",
"estimatedDurationPlaceholder": "120"
},
"summary": {
"product": "Produktua:",
"quantity": "Kantitatea:",
"recipe": "Errezeta:",
"startTime": "Hasiera:",
"duration": "Iraupena Est.:"
}
},
"equipmentStaff": {
"title": "Ekipamendua eta Langileak",
"subtitle": "Esleitu baliabideak ekoizpen honetarako",
"fields": {
"assignedEquipment": "Esleitutako Ekipamendua",
"assignedEquipmentPlaceholder": "Adib: Labea #1, Nahasmaila #2",
"assignedStaff": "Esleitutako Langileak",
"assignedStaffPlaceholder": "Adib: Jon Gartziak, Maria Lopez",
"supervisor": "Gainbegiratzailea",
"supervisorPlaceholder": "Gainbegiratzailearen izena"
}
},
"additionalDetails": {
"title": "Xehetasun Gehigarriak",
"subtitle": "Konfigurazio aukerakoa eta oharrak",
"fields": {
"priority": "Lehentasuna",
"status": "Egoera",
"productionStage": "Ekoizpen Fasea",
"notes": "Ekoizpen Oharrak",
"notesPlaceholder": "Jarraibide bereziak, behaketak, etab.",
"qualityCheckRequired": "Kalitate Kontrola Beharrezkoa",
"qualityCheckNotes": "Kalitate Kontrolaren Oharrak",
"qualityCheckNotesPlaceholder": "Kontrol puntu espezifikoak..."
},
"priorities": {
"low": "Baxua",
"normal": "Normala",
"high": "Altua",
"urgent": "Urgentea"
},
"statuses": {
"scheduled": "Programatua",
"in_progress": "Abian",
"completed": "Osatua",
"on_hold": "Zain",
"cancelled": "Bertan behera utzita"
},
"stages": {
"mixing": "Nahasketa",
"proofing": "Hartzidura",
"shaping": "Moldatzea",
"baking": "Labea",
"cooling": "Hoztea",
"packaging": "Ontziratzea",
"finishing": "Amaiera"
},
"summary": {
"title": "Ekoizpen Lotearen Laburpena",
"product": "Produktua:",
"quantity": "Kantitatea:",
"recipe": "Errezeta:",
"startTime": "Programatutako Hasiera:",
"priority": "Lehentasuna:",
"equipment": "Ekipamendua:",
"staff": "Langileak:"
}
},
"messages": {
"errorObtainingTenantInfo": "Ezin izan da tenant informazioa lortu",
"errorLoadingProducts": "Errorea produktuak kargatzean",
"errorLoadingRecipes": "Errorea errezetak kargatzean",
"productionBatchCreatedSuccessfully": "Ekoizpen lotea ondo sortu da",
"errorCreatingProductionBatch": "Errorea ekoizpen lotea sortzean",
"selectProduct": "Mesedez hautatu produktu bat",
"enterQuantity": "Sartu kantitate baliozkoa"
},
"validation": {
"selectProduct": "Produktu bat hautatu behar duzu",
"startTime": "Hasiera data eta ordua zehaztu behar duzu",
"duration": "Iraupena 0 minutu baino handiagoa izan behar da",
"quantity": "Kantitatea 0 baino handiagoa izan behar da",
"endTime": "Amaiera data hasiera data baino geroagokoa izan behar da"
},
"stepTitles": {
"productRecipe": "Produktua eta Errezeta",
"planning": "Programazioa",
"priorityResources": "Lehentasuna eta Baliabideak",
"review": "Berrikusi eta Berretsi"
},
"review": {
"unspecified": "Zehaztu gabe",
"noRecipe": "Errezeta zehatzik gabe"
},
"productRecipe": {
"fields": {
"productLabel": "Ekoitzi Beharreko Produktua *",
"batchNumberAutoPlaceholder": "Automatikoki sortuko da hutsik uzten bada"
}
},
"equipmentStaff": {
"fields": {
"equipmentExample": "Adib: oven-1, mixer-2",
"staffHelp": "Bereizi izenak komaz (Adib: Jon Gartziak, Maria Lopez)",
"orderId": "Lotutako eskaeraren IDa",
"forecastId": "Lotutako aurreikuspenaren IDa"
}
},
"additionalDetails": {
"advancedOptions": {
"title": "Aukera Aurreratuak",
"description": "Ekoizpen informazio gehigarria"
}
}
},
"purchaseOrder": {
"orderItems": {
"titleHeader": "Erosteko Produktuak",
"addProduct": "Gehitu Produktua",
"clickToBeginProduct": "Sakatu 'Gehitu Produktua' hasteko",
"units": {
"kg": "Kilogramoak",
"g": "Gramoak",
"l": "Litroak",
"ml": "Mililitroak",
"units": "Unitateak",
"boxes": "Kutxak",
"bags": "Poltsak"
}
},
"deliveryDetails": {
"titleHeader": "Eskaeraren Xehetasunak",
"subtitleHeader": "Konfiguratu entrega data eta lehentasuna",
"fields": {
"instructionsPlaceholder": "Hornitzailearentzako jarraibide bereziak..."
},
"priorities": {
"critical": "Kritikoa"
},
"advancedOptions": {
"title": "Aukera Aurreratuak",
"description": "Finantza informazio gehigarria"
}
},
"validation": {
"selectSupplier": "Hornitzaile bat hautatu behar duzu",
"addProduct": "Gutxienez produktu bat gehitu behar duzu",
"invalidItems": "Produktu guztiek osagaia, 0 baino kantitate handiagoa eta 0 baino prezio handiagoa eduki behar dute",
"deliveryDate": "Entrega data bat zehaztu behar duzu"
},
"stepTitles": {
"selectSupplier": "Hornitzailea Hautatu",
"addProducts": "Gehitu Produktuak",
"orderDetails": "Eskaeraren Xehetasunak",
"reviewConfirm": "Berrikusi eta Berretsi"
},
"review": {
"unspecified": "Zehaztu gabe",
"noName": "Izenik gabeko produktua"
}
},
"itemTypeSelector": {
"searchPlaceholder": "Bilatu izenaren edo kategoriaren arabera...",
"noResults": "Ez da emaitzarik aurkitu",
"resultSingular": "emaitza",
"resultPlural": "emaitzak",
"categories": {
"all": "Guztiak",
"daily": "Egunerokoa",
"common": "Arrunta",
"setup": "Konfigurazioa"
},
"badges": {
"mostCommon": "⭐ Arrunten",
"daily": "Egunerokoa",
"common": "Arrunta",
"setup": "Konfigurazioa"
}
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
}
}