feat: Add backward navigation and comprehensive i18n support

- Implement backward navigation in onboarding wizard with state persistence
- Add comprehensive setup wizard translations (Spanish, English, Basque)
- Add configuration widget translations for dashboard
- Support for Suppliers, Recipes, Quality, and Team setup steps

New translation files:
- setup_wizard.json for all 3 languages (es, en, eu)
- Added config section to dashboard.json files

Key improvements:
- Users can now navigate backwards through wizard steps
- All setup wizard steps now have proper i18n support
- Configuration progress widget fully translated
This commit is contained in:
Claude
2025-11-12 15:17:58 +00:00
parent ca090125f7
commit 11d0d27056
7 changed files with 911 additions and 1 deletions

View File

@@ -409,6 +409,16 @@ const OnboardingWizardContent: React.FC = () => {
} }
}; };
const handleGoToPrevious = () => {
if (currentStepIndex > 0) {
const previousStep = VISIBLE_STEPS[currentStepIndex - 1];
console.log(`⬅️ Going back from "${currentStep.id}" to "${previousStep.id}"`);
setCurrentStepIndex(currentStepIndex - 1);
} else {
console.warn('⚠️ Already at first step, cannot go back');
}
};
// Show loading state // Show loading state
if (!isNewTenant && (isLoadingProgress || !isInitialized)) { if (!isNewTenant && (isLoadingProgress || !isInitialized)) {
return ( return (
@@ -518,7 +528,7 @@ const OnboardingWizardContent: React.FC = () => {
<CardBody padding="md"> <CardBody padding="md">
<StepComponent <StepComponent
onNext={() => {}} onNext={() => {}}
onPrevious={() => {}} onPrevious={handleGoToPrevious}
onComplete={handleStepComplete} onComplete={handleStepComplete}
onUpdate={handleStepUpdate} onUpdate={handleStepUpdate}
isFirstStep={currentStepIndex === 0} isFirstStep={currentStepIndex === 0}

View File

@@ -132,6 +132,30 @@
"last_30_days": "Last 30 days", "last_30_days": "Last 30 days",
"last_90_days": "Last 90 days" "last_90_days": "Last 90 days"
}, },
"config": {
"title": "Complete Your Bakery Setup",
"subtitle": "Configure essential features to get started",
"inventory": "Inventory",
"suppliers": "Suppliers",
"recipes": "Recipes",
"quality": "Quality Standards",
"add_ingredients": "Add at least {{count}} ingredients",
"add_supplier": "Add your first supplier",
"add_recipe": "Create your first recipe",
"add_quality": "Add quality checks (optional)",
"sections_complete": "sections complete",
"added": "added",
"recommended": "recommended",
"next_step": "Next Step",
"configure": "Configure",
"features_unlocked": "Features Unlocked!",
"features": {
"inventory_tracking": "Inventory Tracking",
"purchase_orders": "Purchase Orders",
"production_planning": "Production Planning",
"cost_analysis": "Cost Analysis"
}
},
"errors": { "errors": {
"failed_to_load_stats": "Failed to load dashboard statistics. Please try again." "failed_to_load_stats": "Failed to load dashboard statistics. Please try again."
} }

View File

@@ -0,0 +1,276 @@
{
"why_this_matters": "Why This Matters",
"optional": "Optional",
"navigation": {
"continue": "Continue →",
"back": "← Back",
"skip": "Skip for now"
},
"welcome": {
"title": "Excellent! Your AI is Ready",
"subtitle": "Now let's set up your bakery's daily operations so the system can help you manage:",
"feature_inventory": "Inventory Tracking",
"feature_inventory_desc": "Real-time stock levels & reorder alerts",
"feature_recipes": "Recipe Costing",
"feature_recipes_desc": "Automatic cost calculation & profitability analysis",
"feature_quality": "Quality Monitoring",
"feature_quality_desc": "Track standards & production quality",
"feature_team": "Team Coordination",
"feature_team_desc": "Assign tasks & track responsibilities",
"time_estimate": "Takes about 15-20 minutes",
"save_resume": "You can save progress and resume anytime",
"skip": "I'll Do This Later",
"get_started": "Let's Get Started! →"
},
"suppliers": {
"why": "Suppliers are the source of your ingredients. Setting them up now lets you track costs, manage orders, and analyze supplier performance.",
"added_count": "{{count}} supplier added",
"added_count_plural": "{{count}} suppliers added",
"minimum_met": "Minimum requirement met",
"add_minimum": "Add at least 1 supplier to continue",
"your_suppliers": "Your Suppliers",
"confirm_delete": "Are you sure you want to delete this supplier?",
"edit_supplier": "Edit Supplier",
"add_supplier": "Add Supplier",
"add_first": "Add Your First Supplier",
"add_another": "Add Another Supplier",
"manage_products": "Manage Products",
"products": "products",
"products_for": "Products for {{name}}",
"add_products": "Add Products",
"no_products_available": "No products available",
"select_products": "Select Products",
"unit_price": "Price",
"unit": "Unit",
"min_qty": "Min Qty",
"add_new_product": "Add New Product",
"save_products": "Save",
"no_products_warning": "Add at least 1 product to enable automatic purchase orders",
"fields": {
"name": "Supplier Name",
"type": "Type",
"contact_person": "Contact Person",
"phone": "Phone",
"email": "Email"
},
"placeholders": {
"name": "e.g., Molinos SA, Distribuidora López",
"contact_person": "e.g., Juan Pérez",
"phone": "e.g., +54 11 1234-5678",
"email": "e.g., ventas@proveedor.com"
},
"errors": {
"name_required": "Name is required",
"email_invalid": "Invalid email format"
}
},
"inventory": {
"why": "Inventory items are the building blocks of your recipes. Once set up, the system will track quantities, alert you when stock is low, and help you calculate recipe costs.",
"quick_start": "Quick Start",
"quick_start_desc": "Import common ingredients to get started quickly",
"essential": "Essential Ingredients",
"common": "Common Ingredients",
"packaging": "Packaging",
"import_all": "Import All",
"templates_hint": "Click any item to customize before adding, or use \"Import All\" for quick setup",
"show_templates": "Show Quick Start Templates",
"added_count": "{{count}} ingredient added",
"added_count_plural": "{{count}} ingredients added",
"minimum_met": "Minimum requirement met",
"need_more": "Need {{count}} more",
"your_ingredients": "Your Ingredients",
"add_ingredient": "Add Ingredient",
"edit_ingredient": "Edit Ingredient",
"add_first": "Add Your First Ingredient",
"add_another": "Add Another Ingredient",
"confirm_delete": "Are you sure you want to delete this ingredient?",
"add_stock": "Add Initial Stock",
"quantity": "Quantity",
"expiration_date": "Expiration Date",
"supplier": "Supplier",
"batch_number": "Batch/Lot Number",
"stock_help": "Expiration tracking helps prevent waste and enables FIFO inventory management",
"add_another_lot": "+ Add Another Lot",
"add_another_stock": "Add Another Stock Lot",
"add_initial_stock": "Add Initial Stock (Optional)",
"fields": {
"name": "Ingredient Name",
"category": "Category",
"unit": "Unit of Measure",
"brand": "Brand",
"cost": "Standard Cost"
},
"placeholders": {
"name": "e.g., Harina 000, Levadura fresca",
"brand": "e.g., Molinos Río",
"cost": "e.g., 150.00"
},
"errors": {
"name_required": "Name is required",
"cost_invalid": "Cost must be a valid number",
"threshold_invalid": "Threshold must be a valid number"
},
"stock_errors": {
"quantity_required": "Quantity must be greater than zero",
"expiration_past": "Expiration date is in the past",
"expiring_soon": "Warning: This ingredient expires very soon!"
}
},
"recipes": {
"why": "Recipes connect your inventory to production. The system will calculate exact costs per item, track ingredient consumption, and help you optimize your menu profitability.",
"quick_start": "Recipe Templates",
"quick_start_desc": "Start with proven recipes and customize to your needs",
"category": {
"breads": "Breads",
"pastries": "Pastries",
"cakes": "Cakes & Tarts",
"cookies": "Cookies"
},
"use_template": "Use Template",
"templates_hint": "Templates will automatically match your ingredients. Review and adjust as needed.",
"show_templates": "Show Recipe Templates",
"prerequisites_title": "More ingredients needed",
"prerequisites_desc": "You need at least 2 ingredients in your inventory before creating recipes. Go back to the Inventory step to add more ingredients.",
"added_count": "{{count}} recipe added",
"added_count_plural": "{{count}} recipes added",
"minimum_met": "{{count}} recipe(s) added - Ready to continue!",
"your_recipes": "Your Recipes",
"yield_label": "Yield",
"add_recipe": "Add Recipe",
"add_first": "Add Your First Recipe",
"add_another": "Add Another Recipe",
"add_new_ingredient": "Add New Ingredient",
"select_ingredient": "Select...",
"add_ingredient": "Add Ingredient",
"no_ingredients": "No ingredients added yet",
"confirm_delete": "Are you sure you want to delete this recipe?",
"fields": {
"name": "Recipe Name",
"finished_product": "Finished Product",
"yield_quantity": "Yield Quantity",
"yield_unit": "Unit",
"ingredients": "Ingredients"
},
"placeholders": {
"name": "e.g., Baguette, Croissant",
"finished_product": "Select finished product..."
},
"errors": {
"name_required": "Recipe name is required",
"finished_product_required": "Finished product is required",
"yield_invalid": "Yield must be a positive number",
"ingredients_required": "At least one ingredient is required",
"ingredient_required": "Ingredient is required",
"quantity_invalid": "Quantity must be positive"
}
},
"quality": {
"why": "Quality checks ensure consistent output and help you identify issues early. Define what \"good\" looks like for each stage of production.",
"optional_note": "You can skip this and configure quality checks later",
"added_count": "{{count}} quality check added",
"added_count_plural": "{{count}} quality checks added",
"recommended_met": "Recommended amount met",
"recommended": "2+ recommended (optional)",
"your_checks": "Your Quality Checks",
"add_check": "Add Quality Check",
"add_first": "Add Your First Quality Check",
"add_another": "Add Another Quality Check",
"fields": {
"name": "Check Name",
"check_type": "Check Type",
"description": "Description",
"stages": "Applicable Stages",
"required": "Required check (must be completed)",
"critical": "Critical check (failure stops production)"
},
"placeholders": {
"name": "e.g., Crust color check, Dough temperature",
"description": "What should be checked and why..."
},
"errors": {
"name_required": "Name is required",
"stages_required": "At least one stage is required"
}
},
"team": {
"why": "Adding team members allows you to assign tasks, track who does what, and give everyone the tools they need to work efficiently.",
"optional_note": "You can add team members now or invite them later from settings",
"invitation_note": "Team members will receive invitation emails once you complete the setup wizard.",
"added_count": "{{count}} team member added",
"added_count_plural": "{{count}} team members added",
"your_team": "Your Team Members",
"add_member": "Add Team Member",
"add_first": "Add Your First Team Member",
"add_another": "Add Another Team Member",
"skip_message": "Working alone for now? No problem!",
"skip_hint": "You can always invite team members later from Settings → Team",
"fields": {
"name": "Full Name",
"email": "Email Address",
"role": "Role"
},
"placeholders": {
"name": "e.g., María García",
"email": "e.g., maria@panaderia.com"
},
"errors": {
"name_required": "Name is required",
"email_required": "Email is required",
"email_invalid": "Invalid email format",
"email_duplicate": "This email is already added"
}
},
"review": {
"title": "Review Your Setup",
"subtitle": "Let's review everything you've configured. You can go back and make changes if needed.",
"suppliers": "Suppliers",
"ingredients": "Ingredients",
"recipes": "Recipes",
"quality": "Quality Checks",
"suppliers_title": "Suppliers",
"more": "more",
"ingredients_title": "Inventory Items",
"total_cost": "Total value",
"recipes_title": "Recipes",
"avg_ingredients": "Avg ingredients",
"yields": "Yields",
"cost": "Cost",
"quality_title": "Quality Check Templates",
"required": "Required",
"ready_title": "Your Bakery is Ready to Go!",
"ready_message": "You've successfully configured {{suppliers}} suppliers, {{ingredients}} ingredients, and {{recipes}} recipes. Click 'Complete Setup' to finish and start using the system.",
"help": "Need to make changes? Use the \"Back\" button to return to any step."
},
"completion": {
"title": "🎉 Setup Complete!",
"subtitle": "Congratulations! Your bakery management system is ready to use. Let's get started with your first tasks.",
"next_steps": "Recommended Next Steps",
"step1_title": "Start Production",
"step1_desc": "Create your first production batch using your configured recipes",
"step1_action": "Go to Production",
"step2_title": "Order Inventory",
"step2_desc": "Place your first purchase order with your suppliers",
"step2_action": "View Procurement",
"step3_title": "Track Analytics",
"step3_desc": "Monitor your production efficiency and costs in real-time",
"step3_action": "View Analytics",
"tips": "Pro Tips for Success",
"tip1_title": "Keep Inventory Updated",
"tip1_desc": "Regularly update stock levels to get accurate cost calculations and low-stock alerts",
"tip2_title": "Monitor Quality Metrics",
"tip2_desc": "Use quality checks during production to identify issues early and maintain consistency",
"tip3_title": "Review Analytics Weekly",
"tip3_desc": "Check your production analytics every week to optimize recipes and reduce waste",
"tip4_title": "Maintain Supplier Relationships",
"tip4_desc": "Keep supplier information current and track order performance for better partnerships",
"need_help": "Need Help?",
"settings": "Settings",
"settings_desc": "Configure preferences",
"dashboard": "Dashboard",
"dashboard_desc": "View overview",
"recipes": "Recipes",
"recipes_desc": "Manage recipes",
"go_dashboard": "Go to Dashboard",
"thanks": "Thank you for completing the setup! Happy baking! 🥖🥐🍰"
}
}

View File

@@ -167,6 +167,30 @@
"last_30_days": "Últimos 30 días", "last_30_days": "Últimos 30 días",
"last_90_days": "Últimos 90 días" "last_90_days": "Últimos 90 días"
}, },
"config": {
"title": "Completa la Configuración de tu Panadería",
"subtitle": "Configura características esenciales para comenzar",
"inventory": "Inventario",
"suppliers": "Proveedores",
"recipes": "Recetas",
"quality": "Estándares de Calidad",
"add_ingredients": "Agregar al menos {{count}} ingredientes",
"add_supplier": "Agregar tu primer proveedor",
"add_recipe": "Crear tu primera receta",
"add_quality": "Agregar controles de calidad (opcional)",
"sections_complete": "secciones completas",
"added": "agregado",
"recommended": "recomendado",
"next_step": "Siguiente Paso",
"configure": "Configurar",
"features_unlocked": "¡Características Desbloqueadas!",
"features": {
"inventory_tracking": "Seguimiento de Inventario",
"purchase_orders": "Órdenes de Compra",
"production_planning": "Planificación de Producción",
"cost_analysis": "Análisis de Costos"
}
},
"errors": { "errors": {
"failed_to_load_stats": "Error al cargar las estadísticas del panel. Por favor, inténtelo de nuevo." "failed_to_load_stats": "Error al cargar las estadísticas del panel. Por favor, inténtelo de nuevo."
} }

View File

@@ -0,0 +1,276 @@
{
"why_this_matters": "Por qué es importante",
"optional": "Opcional",
"navigation": {
"continue": "Continuar →",
"back": "← Atrás",
"skip": "Omitir por ahora"
},
"welcome": {
"title": "¡Excelente! Tu IA está lista",
"subtitle": "Ahora configuremos las operaciones diarias de tu panadería para que el sistema pueda ayudarte a gestionar:",
"feature_inventory": "Control de Inventario",
"feature_inventory_desc": "Niveles de stock en tiempo real y alertas de reposición",
"feature_recipes": "Costeo de Recetas",
"feature_recipes_desc": "Cálculo automático de costos y análisis de rentabilidad",
"feature_quality": "Monitoreo de Calidad",
"feature_quality_desc": "Seguimiento de estándares y calidad de producción",
"feature_team": "Coordinación del Equipo",
"feature_team_desc": "Asignar tareas y seguir responsabilidades",
"time_estimate": "Toma aproximadamente 15-20 minutos",
"save_resume": "Puedes guardar el progreso y reanudar en cualquier momento",
"skip": "Lo haré más tarde",
"get_started": "¡Empecemos! →"
},
"suppliers": {
"why": "Los proveedores son la fuente de tus ingredientes. Configurarlos ahora te permite rastrear costos, gestionar pedidos y analizar el rendimiento de los proveedores.",
"added_count": "{{count}} proveedor agregado",
"added_count_plural": "{{count}} proveedores agregados",
"minimum_met": "Requisito mínimo cumplido",
"add_minimum": "Agrega al menos 1 proveedor para continuar",
"your_suppliers": "Tus Proveedores",
"confirm_delete": "¿Estás seguro de que deseas eliminar este proveedor?",
"edit_supplier": "Editar Proveedor",
"add_supplier": "Agregar Proveedor",
"add_first": "Agrega tu Primer Proveedor",
"add_another": "Agregar Otro Proveedor",
"manage_products": "Gestionar Productos",
"products": "productos",
"products_for": "Productos para {{name}}",
"add_products": "Agregar Productos",
"no_products_available": "No hay productos disponibles",
"select_products": "Seleccionar Productos",
"unit_price": "Precio",
"unit": "Unidad",
"min_qty": "Cant. Mín.",
"add_new_product": "Agregar Nuevo Producto",
"save_products": "Guardar",
"no_products_warning": "Agrega al menos 1 producto para habilitar órdenes de compra automáticas",
"fields": {
"name": "Nombre del Proveedor",
"type": "Tipo",
"contact_person": "Persona de Contacto",
"phone": "Teléfono",
"email": "Correo Electrónico"
},
"placeholders": {
"name": "ej., Molinos SA, Distribuidora López",
"contact_person": "ej., Juan Pérez",
"phone": "ej., +34 91 123 4567",
"email": "ej., ventas@proveedor.com"
},
"errors": {
"name_required": "El nombre es obligatorio",
"email_invalid": "Formato de correo inválido"
}
},
"inventory": {
"why": "Los artículos de inventario son los componentes básicos de tus recetas. Una vez configurados, el sistema rastreará las cantidades, te alertará cuando el stock sea bajo y te ayudará a calcular los costos de las recetas.",
"quick_start": "Inicio Rápido",
"quick_start_desc": "Importa ingredientes comunes para comenzar rápidamente",
"essential": "Ingredientes Esenciales",
"common": "Ingredientes Comunes",
"packaging": "Embalaje",
"import_all": "Importar Todo",
"templates_hint": "Haz clic en cualquier artículo para personalizarlo antes de agregarlo, o usa \"Importar Todo\" para una configuración rápida",
"show_templates": "Mostrar Plantillas de Inicio Rápido",
"added_count": "{{count}} ingrediente agregado",
"added_count_plural": "{{count}} ingredientes agregados",
"minimum_met": "Requisito mínimo cumplido",
"need_more": "Necesitas {{count}} más",
"your_ingredients": "Tus Ingredientes",
"add_ingredient": "Agregar Ingrediente",
"edit_ingredient": "Editar Ingrediente",
"add_first": "Agrega tu Primer Ingrediente",
"add_another": "Agregar Otro Ingrediente",
"confirm_delete": "¿Estás seguro de que deseas eliminar este ingrediente?",
"add_stock": "Agregar Stock Inicial",
"quantity": "Cantidad",
"expiration_date": "Fecha de Vencimiento",
"supplier": "Proveedor",
"batch_number": "Número de Lote",
"stock_help": "El seguimiento de vencimiento ayuda a prevenir desperdicios y habilita la gestión de inventario FIFO",
"add_another_lot": "+ Agregar Otro Lote",
"add_another_stock": "Agregar Otro Lote de Stock",
"add_initial_stock": "Agregar Stock Inicial (Opcional)",
"fields": {
"name": "Nombre del Ingrediente",
"category": "Categoría",
"unit": "Unidad de Medida",
"brand": "Marca",
"cost": "Costo Estándar"
},
"placeholders": {
"name": "ej., Harina 000, Levadura fresca",
"brand": "ej., Molinos Río",
"cost": "ej., 150.00"
},
"errors": {
"name_required": "El nombre es obligatorio",
"cost_invalid": "El costo debe ser un número válido",
"threshold_invalid": "El umbral debe ser un número válido"
},
"stock_errors": {
"quantity_required": "La cantidad debe ser mayor que cero",
"expiration_past": "La fecha de vencimiento está en el pasado",
"expiring_soon": "¡Advertencia: Este ingrediente vence muy pronto!"
}
},
"recipes": {
"why": "Las recetas conectan tu inventario con la producción. El sistema calculará los costos exactos por artículo, rastreará el consumo de ingredientes y te ayudará a optimizar la rentabilidad de tu menú.",
"quick_start": "Plantillas de Recetas",
"quick_start_desc": "Comienza con recetas probadas y personalízalas según tus necesidades",
"category": {
"breads": "Panes",
"pastries": "Bollería",
"cakes": "Pasteles y Tartas",
"cookies": "Galletas"
},
"use_template": "Usar Plantilla",
"templates_hint": "Las plantillas coincidirán automáticamente con tus ingredientes. Revisa y ajusta según sea necesario.",
"show_templates": "Mostrar Plantillas de Recetas",
"prerequisites_title": "Se necesitan más ingredientes",
"prerequisites_desc": "Necesitas al menos 2 ingredientes en tu inventario antes de crear recetas. Regresa al paso de Inventario para agregar más ingredientes.",
"added_count": "{{count}} receta agregada",
"added_count_plural": "{{count}} recetas agregadas",
"minimum_met": "{{count}} receta(s) agregada(s) - ¡Listo para continuar!",
"your_recipes": "Tus Recetas",
"yield_label": "Rendimiento",
"add_recipe": "Agregar Receta",
"add_first": "Agrega tu Primera Receta",
"add_another": "Agregar Otra Receta",
"add_new_ingredient": "Agregar Nuevo Ingrediente",
"select_ingredient": "Seleccionar...",
"add_ingredient": "Agregar Ingrediente",
"no_ingredients": "Aún no se han agregado ingredientes",
"confirm_delete": "¿Estás seguro de que deseas eliminar esta receta?",
"fields": {
"name": "Nombre de la Receta",
"finished_product": "Producto Terminado",
"yield_quantity": "Cantidad de Rendimiento",
"yield_unit": "Unidad",
"ingredients": "Ingredientes"
},
"placeholders": {
"name": "ej., Baguette, Croissant",
"finished_product": "Seleccionar producto terminado..."
},
"errors": {
"name_required": "El nombre de la receta es obligatorio",
"finished_product_required": "El producto terminado es obligatorio",
"yield_invalid": "El rendimiento debe ser un número positivo",
"ingredients_required": "Se requiere al menos un ingrediente",
"ingredient_required": "Se requiere un ingrediente",
"quantity_invalid": "La cantidad debe ser positiva"
}
},
"quality": {
"why": "Los controles de calidad aseguran una producción consistente y te ayudan a identificar problemas temprano. Define qué significa \"bueno\" para cada etapa de producción.",
"optional_note": "Puedes omitir esto y configurar los controles de calidad más tarde",
"added_count": "{{count}} control de calidad agregado",
"added_count_plural": "{{count}} controles de calidad agregados",
"recommended_met": "Cantidad recomendada cumplida",
"recommended": "2+ recomendados (opcional)",
"your_checks": "Tus Controles de Calidad",
"add_check": "Agregar Control de Calidad",
"add_first": "Agrega tu Primer Control de Calidad",
"add_another": "Agregar Otro Control de Calidad",
"fields": {
"name": "Nombre del Control",
"check_type": "Tipo de Control",
"description": "Descripción",
"stages": "Etapas Aplicables",
"required": "Control obligatorio (debe completarse)",
"critical": "Control crítico (el fallo detiene la producción)"
},
"placeholders": {
"name": "ej., Control de color de corteza, Temperatura de masa",
"description": "Qué debe verificarse y por qué..."
},
"errors": {
"name_required": "El nombre es obligatorio",
"stages_required": "Se requiere al menos una etapa"
}
},
"team": {
"why": "Agregar miembros del equipo te permite asignar tareas, rastrear quién hace qué y dar a todos las herramientas que necesitan para trabajar eficientemente.",
"optional_note": "Puedes agregar miembros del equipo ahora o invitarlos más tarde desde la configuración",
"invitation_note": "Los miembros del equipo recibirán correos de invitación una vez que completes el asistente de configuración.",
"added_count": "{{count}} miembro del equipo agregado",
"added_count_plural": "{{count}} miembros del equipo agregados",
"your_team": "Los Miembros de tu Equipo",
"add_member": "Agregar Miembro del Equipo",
"add_first": "Agrega tu Primer Miembro del Equipo",
"add_another": "Agregar Otro Miembro del Equipo",
"skip_message": "¿Trabajas solo por ahora? ¡No hay problema!",
"skip_hint": "Siempre puedes invitar miembros del equipo más tarde desde Configuración → Equipo",
"fields": {
"name": "Nombre Completo",
"email": "Dirección de Correo",
"role": "Rol"
},
"placeholders": {
"name": "ej., María García",
"email": "ej., maria@panaderia.com"
},
"errors": {
"name_required": "El nombre es obligatorio",
"email_required": "El correo es obligatorio",
"email_invalid": "Formato de correo inválido",
"email_duplicate": "Este correo ya ha sido agregado"
}
},
"review": {
"title": "Revisa tu Configuración",
"subtitle": "Revisemos todo lo que has configurado. Puedes regresar y hacer cambios si es necesario.",
"suppliers": "Proveedores",
"ingredients": "Ingredientes",
"recipes": "Recetas",
"quality": "Controles de Calidad",
"suppliers_title": "Proveedores",
"more": "más",
"ingredients_title": "Artículos de Inventario",
"total_cost": "Valor total",
"recipes_title": "Recetas",
"avg_ingredients": "Prom. ingredientes",
"yields": "Rendimiento",
"cost": "Costo",
"quality_title": "Plantillas de Control de Calidad",
"required": "Obligatorio",
"ready_title": "¡Tu Panadería está Lista!",
"ready_message": "Has configurado exitosamente {{suppliers}} proveedores, {{ingredients}} ingredientes y {{recipes}} recetas. Haz clic en 'Completar Configuración' para finalizar y comenzar a usar el sistema.",
"help": "¿Necesitas hacer cambios? Usa el botón \"Atrás\" para volver a cualquier paso."
},
"completion": {
"title": "🎉 ¡Configuración Completa!",
"subtitle": "¡Felicitaciones! Tu sistema de gestión de panadería está listo para usar. Comencemos con tus primeras tareas.",
"next_steps": "Próximos Pasos Recomendados",
"step1_title": "Iniciar Producción",
"step1_desc": "Crea tu primer lote de producción usando tus recetas configuradas",
"step1_action": "Ir a Producción",
"step2_title": "Ordenar Inventario",
"step2_desc": "Realiza tu primera orden de compra con tus proveedores",
"step2_action": "Ver Adquisiciones",
"step3_title": "Seguir Analíticas",
"step3_desc": "Monitorea tu eficiencia de producción y costos en tiempo real",
"step3_action": "Ver Analíticas",
"tips": "Consejos Pro para el Éxito",
"tip1_title": "Mantén el Inventario Actualizado",
"tip1_desc": "Actualiza regularmente los niveles de stock para obtener cálculos de costos precisos y alertas de stock bajo",
"tip2_title": "Monitorea las Métricas de Calidad",
"tip2_desc": "Usa controles de calidad durante la producción para identificar problemas temprano y mantener la consistencia",
"tip3_title": "Revisa las Analíticas Semanalmente",
"tip3_desc": "Revisa tus analíticas de producción cada semana para optimizar recetas y reducir desperdicios",
"tip4_title": "Mantén las Relaciones con Proveedores",
"tip4_desc": "Mantén la información de proveedores actualizada y rastrea el rendimiento de pedidos para mejores asociaciones",
"need_help": "¿Necesitas Ayuda?",
"settings": "Configuración",
"settings_desc": "Configurar preferencias",
"dashboard": "Panel",
"dashboard_desc": "Ver resumen",
"recipes": "Recetas",
"recipes_desc": "Gestionar recetas",
"go_dashboard": "Ir al Panel",
"thanks": "¡Gracias por completar la configuración! ¡Feliz horneado! 🥖🥐🍰"
}
}

View File

@@ -122,5 +122,29 @@
"last_7_days": "Azken 7 egun", "last_7_days": "Azken 7 egun",
"last_30_days": "Azken 30 egun", "last_30_days": "Azken 30 egun",
"last_90_days": "Azken 90 egun" "last_90_days": "Azken 90 egun"
},
"config": {
"title": "Osatu Zure Okindegiaren Konfigurazioa",
"subtitle": "Konfiguratu ezinbesteko eginbideak hasteko",
"inventory": "Inbentarioa",
"suppliers": "Hornitzaileak",
"recipes": "Errezetak",
"quality": "Kalitate Estandarrak",
"add_ingredients": "Gehitu gutxienez {{count}} osagai",
"add_supplier": "Gehitu zure lehen hornitzailea",
"add_recipe": "Sortu zure lehen errezeta",
"add_quality": "Gehitu kalitate kontrolak (aukerakoa)",
"sections_complete": "atal osatuta",
"added": "gehituta",
"recommended": "gomendatua",
"next_step": "Hurrengo Urratsa",
"configure": "Konfiguratu",
"features_unlocked": "Eginbideak Desblokeatuta!",
"features": {
"inventory_tracking": "Inbentario Jarraipena",
"purchase_orders": "Erosketa Aginduak",
"production_planning": "Ekoizpen Plangintza",
"cost_analysis": "Kostu Analisia"
}
} }
} }

View File

@@ -0,0 +1,276 @@
{
"why_this_matters": "Zergatik da garrantzitsua",
"optional": "Aukerakoa",
"navigation": {
"continue": "Jarraitu →",
"back": "← Atzera",
"skip": "Orain saltatu"
},
"welcome": {
"title": "Bikain! Zure IA prest dago",
"subtitle": "Orain zure okindegiko eguneroko eragiketak konfiguratu ditzagun sistemak kudeatzeko lagundu diezazun:",
"feature_inventory": "Inbentario Jarraipena",
"feature_inventory_desc": "Denbora errealeko stock mailak eta birpornitzeko alertak",
"feature_recipes": "Errezeta Kostuak",
"feature_recipes_desc": "Kostu kalkulua automatikoa eta errentagarritasun analisia",
"feature_quality": "Kalitate Monitorizazioa",
"feature_quality_desc": "Estandarren eta ekoizpen kalitatearen jarraipena",
"feature_team": "Talde Koordinazioa",
"feature_team_desc": "Zereginak esleitu eta erantzukizunen jarraipena",
"time_estimate": "Gutxi gorabehera 15-20 minutu behar dira",
"save_resume": "Aurrerapena gorde eta edozein unetan berrekin dezakezu",
"skip": "Geroago egingo dut",
"get_started": "Has gaitezen! →"
},
"suppliers": {
"why": "Hornitzaileak zure osagaien iturria dira. Orain konfiguratuz, kostuak jarraitu, eskaerak kudeatu eta hornitzaileen errendimendua aztertu dezakezu.",
"added_count": "Hornitzaile {{count}} gehituta",
"added_count_plural": "{{count}} hornitzaile gehituta",
"minimum_met": "Gutxieneko baldintza betetzen da",
"add_minimum": "Gehitu gutxienez hornitzaile 1 jarraitzeko",
"your_suppliers": "Zure Hornitzaileak",
"confirm_delete": "Ziur zaude hornitzaile hau ezabatu nahi duzula?",
"edit_supplier": "Hornitzailea Editatu",
"add_supplier": "Hornitzailea Gehitu",
"add_first": "Gehitu Zure Lehen Hornitzailea",
"add_another": "Beste Hornitzaile Bat Gehitu",
"manage_products": "Produktuak Kudeatu",
"products": "produktuak",
"products_for": "{{name}}-(r)entzako produktuak",
"add_products": "Produktuak Gehitu",
"no_products_available": "Ez dago produkturik eskuragarri",
"select_products": "Produktuak Aukeratu",
"unit_price": "Prezioa",
"unit": "Unitatea",
"min_qty": "Kant. Gutx.",
"add_new_product": "Produktu Berria Gehitu",
"save_products": "Gorde",
"no_products_warning": "Gehitu gutxienez produktu 1 erosketa-agindu automatikoak gaitzeko",
"fields": {
"name": "Hornitzailearen Izena",
"type": "Mota",
"contact_person": "Kontaktu Pertsona",
"phone": "Telefonoa",
"email": "Posta Elektronikoa"
},
"placeholders": {
"name": "adib., Molinos SA, Distribuidora López",
"contact_person": "adib., Juan Pérez",
"phone": "adib., +34 91 123 4567",
"email": "adib., salmentak@hornitzailea.eus"
},
"errors": {
"name_required": "Izena beharrezkoa da",
"email_invalid": "Posta formatu baliogabea"
}
},
"inventory": {
"why": "Inbentario osagaiak zure errezeten oinarrizko elementuak dira. Konfiguratuta, sistemak kantitateen jarraipena egingo du, stock apala dagoenean alertak bidaliko ditu eta errezeten kostuak kalkulatzen lagunduko dizu.",
"quick_start": "Abio Azkarra",
"quick_start_desc": "Inportatu ohiko osagaiak azkar hasteko",
"essential": "Oinarrizko Osagaiak",
"common": "Ohiko Osagaiak",
"packaging": "Ontziratzea",
"import_all": "Dena Inportatu",
"templates_hint": "Klik egin edozein elementutan gehitu aurretik pertsonalizatzeko, edo erabili \"Dena Inportatu\" konfigurazio azkarrerako",
"show_templates": "Erakutsi Abio Azkarreko Txantiloiak",
"added_count": "Osagai {{count}} gehituta",
"added_count_plural": "{{count}} osagai gehituta",
"minimum_met": "Gutxieneko baldintza betetzen da",
"need_more": "{{count}} gehiago behar dira",
"your_ingredients": "Zure Osagaiak",
"add_ingredient": "Osagaia Gehitu",
"edit_ingredient": "Osagaia Editatu",
"add_first": "Gehitu Zure Lehen Osagaia",
"add_another": "Beste Osagai Bat Gehitu",
"confirm_delete": "Ziur zaude osagai hau ezabatu nahi duzula?",
"add_stock": "Stock Hasiera Gehitu",
"quantity": "Kantitatea",
"expiration_date": "Iraungitze Data",
"supplier": "Hornitzailea",
"batch_number": "Lote Zenbakia",
"stock_help": "Iraungitze jarraipenak hondakinak prebenitzen laguntzen du eta FIFO inbentario kudeaketa gaitzen du",
"add_another_lot": "+ Beste Lote Bat Gehitu",
"add_another_stock": "Beste Stock Lote Bat Gehitu",
"add_initial_stock": "Stock Hasiera Gehitu (Aukerakoa)",
"fields": {
"name": "Osagaiaren Izena",
"category": "Kategoria",
"unit": "Neurri Unitatea",
"brand": "Marka",
"cost": "Kostu Estandarra"
},
"placeholders": {
"name": "adib., Irina 000, Legami freskoa",
"brand": "adib., Molinos Río",
"cost": "adib., 150.00"
},
"errors": {
"name_required": "Izena beharrezkoa da",
"cost_invalid": "Kostua zenbaki baliozkoa izan behar da",
"threshold_invalid": "Atalasea zenbaki baliozkoa izan behar da"
},
"stock_errors": {
"quantity_required": "Kantitatea zero baino handiagoa izan behar da",
"expiration_past": "Iraungitze data iraganean dago",
"expiring_soon": "Abisua: Osagai hau laster iraungitzen da!"
}
},
"recipes": {
"why": "Errezetak zure inbentarioa ekoizpenarekin konektatzen dute. Sistemak elementu bakoitzeko kostu zehatzak kalkulatuko ditu, osagaien kontsumoa jarraituko du eta menuko errentagarritasuna optimizatzen lagunduko dizu.",
"quick_start": "Errezeta Txantiloiak",
"quick_start_desc": "Hasi frogatutako errezetekin eta pertsonalizatu zure beharretara",
"category": {
"breads": "Ogiak",
"pastries": "Gozogintza",
"cakes": "Pastelak eta Tartak",
"cookies": "Galletak"
},
"use_template": "Txantiloia Erabili",
"templates_hint": "Txantiloiek automatikoki zure osagaiekin bat egingo dute. Berrikusi eta egokitu behar den bezala.",
"show_templates": "Erakutsi Errezeta Txantiloiak",
"prerequisites_title": "Osagai gehiago behar dira",
"prerequisites_desc": "Gutxienez 2 osagai behar dituzu zure inbentarioan errezetak sortu aurretik. Itzuli Inbentario urratsera osagai gehiago gehitzeko.",
"added_count": "Errezeta {{count}} gehituta",
"added_count_plural": "{{count}} errezeta gehituta",
"minimum_met": "{{count}} errezeta gehituta - Jarraitzeko prest!",
"your_recipes": "Zure Errezetak",
"yield_label": "Etekin",
"add_recipe": "Errezeta Gehitu",
"add_first": "Gehitu Zure Lehen Errezeta",
"add_another": "Beste Errezeta Bat Gehitu",
"add_new_ingredient": "Osagai Berria Gehitu",
"select_ingredient": "Aukeratu...",
"add_ingredient": "Osagaia Gehitu",
"no_ingredients": "Oraindik ez da osagairik gehitu",
"confirm_delete": "Ziur zaude errezeta hau ezabatu nahi duzula?",
"fields": {
"name": "Errezeta Izena",
"finished_product": "Produktu Amaituak",
"yield_quantity": "Etekinaren Kantitatea",
"yield_unit": "Unitatea",
"ingredients": "Osagaiak"
},
"placeholders": {
"name": "adib., Baguette, Croissant",
"finished_product": "Aukeratu produktu amaituak..."
},
"errors": {
"name_required": "Errezeta izena beharrezkoa da",
"finished_product_required": "Produktu amaituak beharrezkoa da",
"yield_invalid": "Etekina zenbaki positiboa izan behar da",
"ingredients_required": "Gutxienez osagai bat beharrezkoa da",
"ingredient_required": "Osagaia beharrezkoa da",
"quantity_invalid": "Kantitatea positiboa izan behar da"
}
},
"quality": {
"why": "Kalitate kontrolek irteera koherentea bermatzen dute eta goiz arazoak identifikatzen laguntzen dizute. Definitu zer den \"ona\" ekoizpen etapa bakoitzerako.",
"optional_note": "Hau saltatu eta kalitate kontrolak geroago konfigura ditzakezu",
"added_count": "Kalitate kontrol {{count}} gehituta",
"added_count_plural": "{{count}} kalitate kontrol gehituta",
"recommended_met": "Gomendatutako kopurua betetzen da",
"recommended": "2+ gomendatzen dira (aukerakoa)",
"your_checks": "Zure Kalitate Kontrolak",
"add_check": "Kalitate Kontrola Gehitu",
"add_first": "Gehitu Zure Lehen Kalitate Kontrola",
"add_another": "Beste Kalitate Kontrol Bat Gehitu",
"fields": {
"name": "Kontrolaren Izena",
"check_type": "Kontrol Mota",
"description": "Deskribapena",
"stages": "Etapa Aplikagarriak",
"required": "Nahitaezko kontrola (osatu behar da)",
"critical": "Kontrol kritikoa (hutsegiteak ekoizpena gelditzen du)"
},
"placeholders": {
"name": "adib., Azal kolorearen kontrola, Oraren tenperatura",
"description": "Zer egiaztatu behar den eta zergatik..."
},
"errors": {
"name_required": "Izena beharrezkoa da",
"stages_required": "Gutxienez etapa bat beharrezkoa da"
}
},
"team": {
"why": "Taldekideak gehitzeak zereginak esleitzea, nork zer egiten duen jarraitzea eta guztiei behar dituzten tresnak ematea ahalbidetzen dizu modu eraginkorrean lan egiteko.",
"optional_note": "Taldekideak orain gehi ditzakezu edo ezarpenetatik geroago gonbida ditzakezu",
"invitation_note": "Taldekideek gonbidapen posta elektronikoak jasoko dituzte konfigurazio morroia osatu ondoren.",
"added_count": "Taldekide {{count}} gehituta",
"added_count_plural": "{{count}} taldekide gehituta",
"your_team": "Zure Taldekideak",
"add_member": "Taldekidea Gehitu",
"add_first": "Gehitu Zure Lehen Taldekidea",
"add_another": "Beste Taldekide Bat Gehitu",
"skip_message": "Oraingoz bakarrik lanean? Ez dago arazorik!",
"skip_hint": "Beti gehi ditzakezu taldekideak geroago Ezarpenak → Taldea-tik",
"fields": {
"name": "Izen Osoa",
"email": "Posta Elektroniko Helbidea",
"role": "Rola"
},
"placeholders": {
"name": "adib., María García",
"email": "adib., maria@okindegi.eus"
},
"errors": {
"name_required": "Izena beharrezkoa da",
"email_required": "Posta beharrezkoa da",
"email_invalid": "Posta formatu baliogabea",
"email_duplicate": "Posta elektroniko hau dagoeneko gehituta dago"
}
},
"review": {
"title": "Berrikusi Zure Konfigurazioa",
"subtitle": "Berrikusi ditzagun konfiguratu dituzun guztiak. Atzera joan eta aldaketak egin ditzakezu behar izanez gero.",
"suppliers": "Hornitzaileak",
"ingredients": "Osagaiak",
"recipes": "Errezetak",
"quality": "Kalitate Kontrolak",
"suppliers_title": "Hornitzaileak",
"more": "gehiago",
"ingredients_title": "Inbentario Elementuak",
"total_cost": "Balio osoa",
"recipes_title": "Errezetak",
"avg_ingredients": "Batez besteko osagaiak",
"yields": "Etekina",
"cost": "Kostua",
"quality_title": "Kalitate Kontrol Txantiloiak",
"required": "Nahitaezkoa",
"ready_title": "Zure Okindegi Prest Dago!",
"ready_message": "Arrakastaz konfiguratu dituzu {{suppliers}} hornitzaile, {{ingredients}} osagai eta {{recipes}} errezeta. Egin klik 'Konfigurazioa Osatu'-n amaitzeko eta sistema erabiltzen hasteko.",
"help": "Aldaketak egin behar dituzu? Erabili \"Atzera\" botoia edozein urratsera itzultzeko."
},
"completion": {
"title": "🎉 Konfigurazioa Osatuta!",
"subtitle": "Zorionak! Zure okindegi kudeaketa sistema erabiltzeko prest dago. Has gaitezen zure lehen zereginekin.",
"next_steps": "Gomendatutako Hurrengo Urratsak",
"step1_title": "Ekoizpena Hasi",
"step1_desc": "Sortu zure lehen ekoizpen lotea konfiguratutako errezetek erabiliz",
"step1_action": "Joan Ekoizpenera",
"step2_title": "Inbentarioa Eskatu",
"step2_desc": "Egin zure lehen erosketa-agindua zure hornitzaileekin",
"step2_action": "Ikusi Erosketak",
"step3_title": "Jarraitu Analitikak",
"step3_desc": "Zaindu zure ekoizpen eraginkortasuna eta kostuak denbora errealean",
"step3_action": "Ikusi Analitikak",
"tips": "Arrakastako Aholku Profesionalak",
"tip1_title": "Mantendu Inbentarioa Eguneratuta",
"tip1_desc": "Eguneratu stock mailak erregularki kostu kalkulu zehatzak eta stock apala alertak lortzeko",
"tip2_title": "Zaindu Kalitate Metrikak",
"tip2_desc": "Erabili kalitate kontrolak ekoizpenean goiz arazoak identifikatzeko eta koherentzia mantentzeko",
"tip3_title": "Berrikusi Analitikak Astero",
"tip3_desc": "Egiaztatu zure ekoizpen analitikak astero errezetak optimizatzeko eta hondakinak murrizteko",
"tip4_title": "Mantendu Hornitzaileekin Harremanak",
"tip4_desc": "Mantendu hornitzaileen informazioa eguneratuta eta jarraitu eskaeren errendimendua elkarlantza hobeak lortzeko",
"need_help": "Laguntza Behar?",
"settings": "Ezarpenak",
"settings_desc": "Konfiguratu hobespenak",
"dashboard": "Aginte-panela",
"dashboard_desc": "Ikusi laburpena",
"recipes": "Errezetak",
"recipes_desc": "Kudeatu errezetak",
"go_dashboard": "Joan Aginte-panelera",
"thanks": "Eskerrik asko konfigurazioa osatzeagatik! Labealdi zoriontsuak! 🥖🥐🍰"
}
}