Improve the frontend modals

This commit is contained in:
Urtzi Alfaro
2025-10-27 16:33:26 +01:00
parent 61376b7a9f
commit 858d985c92
143 changed files with 9289 additions and 2306 deletions

View File

@@ -22,7 +22,18 @@
"safety_stock_percentage": "Safety Stock (%)",
"workflow": "Approval Workflow",
"approval_reminder_hours": "Approval Reminder (hours)",
"critical_escalation_hours": "Critical Escalation (hours)"
"critical_escalation_hours": "Critical Escalation (hours)",
"smart_procurement": "Smart Procurement Calculation",
"use_reorder_rules": "Use reorder rules (point & quantity)",
"use_reorder_rules_desc": "Respect reorder point and reorder quantity configured in ingredients",
"economic_rounding": "Economic rounding",
"economic_rounding_desc": "Round quantities to economic multiples (reorder quantity or supplier minimum)",
"respect_storage_limits": "Respect storage limits",
"respect_storage_limits_desc": "Limit orders to configured maximum stock level",
"use_supplier_minimums": "Use supplier minimums",
"use_supplier_minimums_desc": "Respect supplier minimum order quantity and minimum order amount",
"optimize_price_tiers": "Optimize price tiers",
"optimize_price_tiers_desc": "Adjust quantities to capture volume discounts when beneficial"
},
"inventory": {
"title": "Inventory Management",

View File

@@ -189,7 +189,9 @@
"name": "Name",
"contact_person": "Contact Person",
"email": "Email",
"email_placeholder": "email@example.com",
"phone": "Phone",
"phone_placeholder": "+34 XXX XXX XXX",
"city": "City",
"country": "Country",
"address": "Address",

View File

@@ -10,7 +10,9 @@
"customer_satisfaction": "Customer Satisfaction",
"inventory_turnover": "Inventory Turnover",
"daily_profit": "Daily Profit",
"products_sold": "Products Sold"
"products_sold": "Products Sold",
"waste_reduction": "Waste Reduction",
"monthly_savings": "Monthly Savings"
},
"trends": {
"vs_yesterday": "% vs yesterday",
@@ -112,7 +114,14 @@
"action_required": "Action required",
"manage_organizations": "Manage your organizations",
"setup_new_business": "Set up a new business from scratch",
"active_organizations": "Active Organizations"
"active_organizations": "Active Organizations",
"excellent_progress": "Excellent progress!",
"keep_improving": "Keep improving",
"from_sustainability": "From sustainability",
"all_caught_up": "All caught up!",
"stock_healthy": "Stock healthy",
"same_as_yesterday": "Same as yesterday",
"less_than_yesterday": "less than yesterday"
},
"time_periods": {
"today": "Today",
@@ -122,5 +131,8 @@
"last_7_days": "Last 7 days",
"last_30_days": "Last 30 days",
"last_90_days": "Last 90 days"
},
"errors": {
"failed_to_load_stats": "Failed to load dashboard statistics. Please try again."
}
}

View File

@@ -61,6 +61,9 @@
"labels": {
"total_equipment": "Total Equipment",
"operational": "Operational",
"warning": "Warning",
"maintenance_required": "Maintenance Required",
"down": "Down",
"avg_efficiency": "Average Efficiency",
"active_alerts": "Active Alerts",
"maintenance_due": "Maintenance Due",
@@ -110,4 +113,4 @@
"warning": "Warning",
"info": "Information"
}
}
}

View File

@@ -1,49 +1,118 @@
{
"product_type": {
"raw_material": "Raw Material",
"intermediate": "Intermediate Product",
"finished_product": "Finished Product",
"packaging": "Packaging"
"title": "Inventory Management",
"subtitle": "Manage stock, costs, batches and ingredient alerts",
"fields": {
"name": "Name",
"sku": "SKU Code",
"barcode": "Barcode",
"brand": "Brand",
"category": "Category",
"current_stock": "Current Stock",
"min_stock": "Minimum Stock",
"max_stock": "Maximum Stock",
"unit": "Unit",
"cost": "Cost",
"price": "Price",
"supplier": "Supplier",
"last_restocked": "Last Restocked",
"expiration_date": "Expiration Date",
"batch_number": "Batch Number",
"lot_number": "Lot Number",
"supplier_batch_ref": "Supplier Ref.",
"location": "Location",
"description": "Description",
"notes": "Notes",
"package_size": "Package Size",
"average_cost": "Average Cost",
"standard_cost": "Standard Cost",
"unit_cost": "Unit Cost",
"low_stock_threshold": "Low Stock Threshold",
"reorder_point": "Reorder Point",
"reorder_quantity": "Reorder Quantity",
"max_stock_level": "Maximum Stock",
"shelf_life_days": "Shelf Life Days",
"is_perishable": "Is Perishable?",
"costs_and_pricing": "Costs and Pricing",
"reserved_quantity": "Reserved Quantity",
"available_quantity": "Available Quantity",
"received_date": "Received Date",
"best_before_date": "Best Before",
"warehouse_zone": "Warehouse Zone",
"shelf_position": "Shelf Position",
"quality_status": "Quality Status",
"storage_instructions": "Storage Instructions",
"transformation_reference": "Transformation Reference",
"original_expiration_date": "Original Expiration",
"transformation_date": "Transformation Date",
"final_expiration_date": "Final Expiration"
},
"production_stage": {
"raw": "Raw",
"in_process": "In Process",
"finished": "Finished",
"packaged": "Packaged"
"sections": {
"purchase_costs": "Purchase Costs",
"stock_management": "Stock Management"
},
"unit_of_measure": {
"kg": "Kilograms",
"g": "Grams",
"l": "Liters",
"ml": "Milliliters",
"pieces": "Pieces",
"units": "Units",
"portions": "Portions"
"help": {
"standard_cost": "Target cost for budgeting and variance analysis",
"average_cost": "Automatically calculated from weighted average of purchases"
},
"ingredient_category": {
"flour": "Flour",
"dairy": "Dairy",
"eggs": "Eggs",
"fats": "Fats",
"sugar": "Sugar",
"yeast": "Yeast",
"spices": "Spices",
"other": "Other"
},
"product_category": {
"bread": "Bread",
"pastry": "Pastry",
"cake": "Cake",
"cookie": "Cookie",
"salted": "Salted",
"other": "Other"
},
"stock_movement_type": {
"purchase": "Purchase",
"production": "Production",
"sale": "Sale",
"adjustment": "Adjustment",
"waste": "Waste",
"transfer": "Transfer"
"enums": {
"product_type": {
"ingredient": "Ingredient",
"finished_product": "Finished Product"
},
"production_stage": {
"raw_ingredient": "Raw Ingredient",
"par_baked": "Par-Baked",
"fully_baked": "Fully Baked",
"prepared_dough": "Prepared Dough",
"frozen_product": "Frozen Product"
},
"unit_of_measure": {
"kg": "Kilograms",
"g": "Grams",
"l": "Liters",
"ml": "Milliliters",
"units": "Units",
"pcs": "Pieces",
"pkg": "Packages",
"bags": "Bags",
"boxes": "Boxes"
},
"ingredient_category": {
"flour": "Flour",
"yeast": "Yeast",
"dairy": "Dairy",
"eggs": "Eggs",
"sugar": "Sugar",
"fats": "Fats",
"salt": "Salt",
"spices": "Spices",
"additives": "Additives",
"packaging": "Packaging",
"cleaning": "Cleaning",
"other": "Other"
},
"product_category": {
"bread": "Bread",
"croissants": "Croissants",
"pastries": "Pastries",
"cakes": "Cakes",
"cookies": "Cookies",
"muffins": "Muffins",
"sandwiches": "Sandwiches",
"seasonal": "Seasonal",
"beverages": "Beverages",
"other_products": "Other Products"
},
"stock_movement_type": {
"PURCHASE": "Purchase",
"PRODUCTION_USE": "Production Use",
"TRANSFORMATION": "Transformation",
"ADJUSTMENT": "Adjustment",
"WASTE": "Waste",
"TRANSFER": "Transfer",
"RETURN": "Return",
"INITIAL_STOCK": "Initial Stock",
"OTHER": "Other"
}
}
}

View File

@@ -81,24 +81,85 @@
"currency": "Currency",
"created_date": "Created Date",
"updated_date": "Last Updated",
"notes": "Notes"
"notes": "Notes",
"tax_id": "Tax/VAT ID",
"registration_number": "Business Registration",
"mobile": "Mobile Phone",
"website": "Website",
"address_line1": "Address Line 1",
"address_line2": "Address Line 2",
"state_province": "State/Province",
"postal_code": "Postal Code",
"delivery_area": "Delivery Area"
},
"sections": {
"contact_info": "Contact Information",
"address_info": "Address Information",
"commercial_info": "Commercial Information",
"additional_info": "Additional Information",
"performance": "Performance and Statistics",
"notes": "Notes"
},
"placeholders": {
"name": "Supplier name",
"contact_person": "Contact person name",
"supplier_code": "Unique code",
"notes": "Notes about the supplier"
"supplier_code": "e.g., SUP-001",
"notes": "Notes about the supplier",
"tax_id": "e.g., ESB12345678",
"registration_number": "Business registration number",
"mobile": "+34 XXX XXX XXX",
"website": "https://example.com",
"address_line1": "Street address",
"address_line2": "Apartment, suite, etc. (optional)",
"state_province": "State or Province",
"postal_code": "Postal/ZIP code",
"delivery_area": "Delivery coverage area"
},
"currencies": {
"EUR": "Euro (€)",
"USD": "US Dollar ($)",
"GBP": "British Pound (£)"
},
"descriptions": {
"supplier_type": "Select the type of products or services this supplier offers",
"payment_terms": "Payment terms agreed with the supplier",
"quality_rating": "1 to 5 star rating based on product quality",
"delivery_rating": "1 to 5 star rating based on delivery punctuality and condition"
},
"actions": {
"approve": "Approve Supplier",
"reject": "Reject Supplier",
"delete": "Delete Supplier"
},
"confirm": {
"approve": "Are you sure you want to approve this supplier? This will activate the supplier for use.",
"reject": "Are you sure you want to reject this supplier? This action can be undone later."
},
"delete": {
"title": "Delete Supplier",
"subtitle": "How would you like to delete {name}?",
"supplier_name": "Supplier",
"soft_delete": "Mark as Inactive",
"hard_delete": "Permanently Delete",
"soft_explanation": "Marks the supplier as inactive. Can be reactivated later. All data is preserved.",
"hard_explanation": "Permanently deletes all supplier data including price lists, quality reviews, and performance metrics.",
"confirm_soft_title": "Confirm Mark as Inactive",
"confirm_hard_title": "Confirm Permanent Deletion",
"soft_description": "This will mark the supplier as inactive. The supplier can be reactivated later and all data will be preserved.",
"hard_description": "This will permanently delete all supplier data. This action cannot be undone.",
"warning_irreversible": "Warning: This action is irreversible!",
"type_to_confirm": "Type ELIMINAR to confirm",
"confirm_instruction": "Type ELIMINAR in capital letters to confirm permanent deletion",
"confirm_soft": "Mark as Inactive",
"confirm_hard": "Permanently Delete",
"summary_title": "Deletion Complete",
"supplier_deleted": "Supplier {name} has been permanently deleted",
"deletion_summary": "Deletion Summary",
"deleted_price_lists": "Price lists deleted",
"deleted_quality_reviews": "Quality reviews deleted",
"deleted_performance_metrics": "Performance metrics deleted",
"deleted_alerts": "Alerts deleted",
"deleted_scorecards": "Scorecards deleted",
"cannot_delete": "Cannot delete supplier with active purchase orders"
}
}

View File

@@ -22,7 +22,18 @@
"safety_stock_percentage": "Stock de Seguridad (%)",
"workflow": "Flujo de Aprobación",
"approval_reminder_hours": "Recordatorio de Aprobación (horas)",
"critical_escalation_hours": "Escalación Crítica (horas)"
"critical_escalation_hours": "Escalación Crítica (horas)",
"smart_procurement": "Cálculo Inteligente de Compras",
"use_reorder_rules": "Usar reglas de reorden (punto y cantidad)",
"use_reorder_rules_desc": "Respetar punto de reorden y cantidad de reorden configurados en ingredientes",
"economic_rounding": "Redondeo económico",
"economic_rounding_desc": "Redondear cantidades a múltiplos económicos (cantidad de reorden o mínimo del proveedor)",
"respect_storage_limits": "Respetar límites de almacenamiento",
"respect_storage_limits_desc": "Limitar pedidos al nivel máximo de stock configurado",
"use_supplier_minimums": "Usar mínimos del proveedor",
"use_supplier_minimums_desc": "Respetar cantidad mínima de pedido y monto mínimo del proveedor",
"optimize_price_tiers": "Optimizar niveles de precio",
"optimize_price_tiers_desc": "Ajustar cantidades para capturar descuentos por volumen cuando sea beneficioso"
},
"inventory": {
"title": "Gestión de Inventario",

View File

@@ -189,7 +189,9 @@
"name": "Nombre",
"contact_person": "Persona de Contacto",
"email": "Email",
"email_placeholder": "email@ejemplo.com",
"phone": "Teléfono",
"phone_placeholder": "+34 XXX XXX XXX",
"city": "Ciudad",
"country": "País",
"address": "Dirección",

View File

@@ -10,7 +10,9 @@
"customer_satisfaction": "Satisfacción del Cliente",
"inventory_turnover": "Rotación de Inventario",
"daily_profit": "Ganancia Diaria",
"products_sold": "Productos Vendidos"
"products_sold": "Productos Vendidos",
"waste_reduction": "Reducción de Residuos",
"monthly_savings": "Ahorro Mensual"
},
"trends": {
"vs_yesterday": "% vs ayer",
@@ -147,7 +149,14 @@
"action_required": "Acción requerida",
"manage_organizations": "Gestiona tus organizaciones",
"setup_new_business": "Configurar un nuevo negocio desde cero",
"active_organizations": "Organizaciones Activas"
"active_organizations": "Organizaciones Activas",
"excellent_progress": "¡Excelente progreso!",
"keep_improving": "Sigue mejorando",
"from_sustainability": "De sostenibilidad",
"all_caught_up": "¡Todo al día!",
"stock_healthy": "Stock saludable",
"same_as_yesterday": "Igual que ayer",
"less_than_yesterday": "menos que ayer"
},
"time_periods": {
"today": "Hoy",
@@ -157,5 +166,8 @@
"last_7_days": "Últimos 7 días",
"last_30_days": "Últimos 30 días",
"last_90_days": "Últimos 90 días"
},
"errors": {
"failed_to_load_stats": "Error al cargar las estadísticas del panel. Por favor, inténtelo de nuevo."
}
}

View File

@@ -60,6 +60,9 @@
"labels": {
"total_equipment": "Total de Equipos",
"operational": "Operacionales",
"warning": "Advertencia",
"maintenance_required": "Mantenimiento Requerido",
"down": "Fuera de Servicio",
"avg_efficiency": "Eficiencia Promedio",
"active_alerts": "Alertas Activas",
"maintenance_due": "Mantenimiento Próximo",
@@ -109,4 +112,4 @@
"warning": "Advertencia",
"info": "Información"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"title": "Gestión de Inventario",
"subtitle": "Controla el stock de ingredientes y materias primas",
"subtitle": "Gestiona stock, costos, lotes y alertas de ingredientes",
"overview": {
"total_items": "Total Artículos",
"low_stock": "Stock Bajo",
@@ -24,6 +24,9 @@
},
"fields": {
"name": "Nombre",
"sku": "Código SKU",
"barcode": "Código de Barras",
"brand": "Marca",
"category": "Categoría",
"current_stock": "Stock Actual",
"min_stock": "Stock Mínimo",
@@ -35,10 +38,42 @@
"last_restocked": "Último Reabastecimiento",
"expiration_date": "Fecha de Caducidad",
"batch_number": "Número de Lote",
"lot_number": "Número de Lote",
"supplier_batch_ref": "Ref. Proveedor",
"location": "Ubicación",
"barcode": "Código de Barras",
"description": "Descripción",
"notes": "Notas"
"notes": "Notas",
"package_size": "Tamaño de Paquete",
"average_cost": "Costo Promedio",
"standard_cost": "Costo Estándar",
"unit_cost": "Costo Unitario",
"low_stock_threshold": "Umbral Stock Bajo",
"reorder_point": "Punto de Reorden",
"reorder_quantity": "Cantidad de Reorden",
"max_stock_level": "Stock Máximo",
"shelf_life_days": "Días de Vida Útil",
"is_perishable": "¿Es Perecedero?",
"costs_and_pricing": "Costos y Precios",
"reserved_quantity": "Cantidad Reservada",
"available_quantity": "Cantidad Disponible",
"received_date": "Fecha de Recepción",
"best_before_date": "Mejor Antes De",
"warehouse_zone": "Zona de Almacén",
"shelf_position": "Posición en Estantería",
"quality_status": "Estado de Calidad",
"storage_instructions": "Instrucciones de Almacenamiento",
"transformation_reference": "Referencia de Transformación",
"original_expiration_date": "Vencimiento Original",
"transformation_date": "Fecha de Transformación",
"final_expiration_date": "Vencimiento Final"
},
"sections": {
"purchase_costs": "Costos de Compra",
"stock_management": "Gestión de Stock"
},
"help": {
"standard_cost": "Costo objetivo para presupuesto y análisis de variación",
"average_cost": "Calculado automáticamente según el promedio ponderado de compras"
},
"enums": {
"product_type": {
@@ -97,7 +132,8 @@
"TRANSFER": "Transferencia",
"RETURN": "Devolución",
"INITIAL_STOCK": "Stock Inicial",
"TRANSFORMATION": "Transformación"
"TRANSFORMATION": "Transformación",
"OTHER": "Otro"
}
},
"labels": {

View File

@@ -113,6 +113,22 @@
"chemical": "Químico",
"hygiene": "Higiene"
},
"check_types": {
"visual": "Visual",
"visual_description": "Inspección visual",
"measurement": "Medición",
"measurement_description": "Mediciones precisas",
"temperature": "Temperatura",
"temperature_description": "Control de temperatura",
"weight": "Peso",
"weight_description": "Control de peso",
"boolean": "Sí/No",
"boolean_description": "Verificación binaria",
"timing": "Tiempo",
"timing_description": "Control de tiempo",
"checklist": "Lista de verificación",
"checklist_description": "Checklist de verificación"
},
"inspection": {
"title": "Inspección de Calidad",
"notes_placeholder": "Agregar notas para este criterio (opcional)..."
@@ -691,4 +707,4 @@
"active_alerts": "alertas activas"
}
}
}
}

View File

@@ -81,24 +81,85 @@
"currency": "Moneda",
"created_date": "Fecha de Creación",
"updated_date": "Última Actualización",
"notes": "Observaciones"
"notes": "Observaciones",
"tax_id": "NIF/CIF",
"registration_number": "Registro Mercantil",
"mobile": "Teléfono Móvil",
"website": "Sitio Web",
"address_line1": "Dirección Línea 1",
"address_line2": "Dirección Línea 2",
"state_province": "Provincia/Estado",
"postal_code": "Código Postal",
"delivery_area": "Área de Entrega"
},
"sections": {
"contact_info": "Información de Contacto",
"address_info": "Información de Dirección",
"commercial_info": "Información Comercial",
"additional_info": "Información Adicional",
"performance": "Rendimiento y Estadísticas",
"notes": "Notas"
},
"placeholders": {
"name": "Nombre del proveedor",
"contact_person": "Nombre del contacto",
"supplier_code": "Código único",
"notes": "Notas sobre el proveedor"
"supplier_code": "ej., PROV-001",
"notes": "Notas sobre el proveedor",
"tax_id": "ej., ESB12345678",
"registration_number": "Número de registro mercantil",
"mobile": "+34 XXX XXX XXX",
"website": "https://ejemplo.com",
"address_line1": "Dirección de la calle",
"address_line2": "Apartamento, piso, etc. (opcional)",
"state_province": "Provincia o Estado",
"postal_code": "Código postal",
"delivery_area": "Área de cobertura de entrega"
},
"currencies": {
"EUR": "Euro (€)",
"USD": "Dólar estadounidense ($)",
"GBP": "Libra esterlina (£)"
},
"descriptions": {
"supplier_type": "Selecciona el tipo de productos o servicios que ofrece este proveedor",
"payment_terms": "Términos de pago acordados con el proveedor",
"quality_rating": "Calificación de 1 a 5 estrellas basada en la calidad de los productos",
"delivery_rating": "Calificación de 1 a 5 estrellas basada en la puntualidad y estado de las entregas"
},
"actions": {
"approve": "Aprobar Proveedor",
"reject": "Rechazar Proveedor",
"delete": "Eliminar Proveedor"
},
"confirm": {
"approve": "¿Estás seguro de que quieres aprobar este proveedor? Esto activará el proveedor para su uso.",
"reject": "¿Estás seguro de que quieres rechazar este proveedor? Esta acción se puede deshacer más tarde."
},
"delete": {
"title": "Eliminar Proveedor",
"subtitle": "¿Cómo te gustaría eliminar {name}?",
"supplier_name": "Proveedor",
"soft_delete": "Marcar como Inactivo",
"hard_delete": "Eliminar Permanentemente",
"soft_explanation": "Marca el proveedor como inactivo. Puede reactivarse más tarde. Todos los datos se conservan.",
"hard_explanation": "Elimina permanentemente todos los datos del proveedor, incluyendo listas de precios, revisiones de calidad y métricas de rendimiento.",
"confirm_soft_title": "Confirmar Marcar como Inactivo",
"confirm_hard_title": "Confirmar Eliminación Permanente",
"soft_description": "Esto marcará el proveedor como inactivo. El proveedor puede reactivarse más tarde y todos los datos se conservarán.",
"hard_description": "Esto eliminará permanentemente todos los datos del proveedor. Esta acción no se puede deshacer.",
"warning_irreversible": "Advertencia: ¡Esta acción es irreversible!",
"type_to_confirm": "Escribe ELIMINAR para confirmar",
"confirm_instruction": "Escribe ELIMINAR en mayúsculas para confirmar la eliminación permanente",
"confirm_soft": "Marcar como Inactivo",
"confirm_hard": "Eliminar Permanentemente",
"summary_title": "Eliminación Completa",
"supplier_deleted": "El proveedor {name} ha sido eliminado permanentemente",
"deletion_summary": "Resumen de Eliminación",
"deleted_price_lists": "Listas de precios eliminadas",
"deleted_quality_reviews": "Revisiones de calidad eliminadas",
"deleted_performance_metrics": "Métricas de rendimiento eliminadas",
"deleted_alerts": "Alertas eliminadas",
"deleted_scorecards": "Tarjetas de puntuación eliminadas",
"cannot_delete": "No se puede eliminar el proveedor con órdenes de compra activas"
}
}

View File

@@ -22,7 +22,18 @@
"safety_stock_percentage": "Segurtasun Stocka (%)",
"workflow": "Onespen Fluxua",
"approval_reminder_hours": "Onespen Gogorarazpena (orduak)",
"critical_escalation_hours": "Eskalazio Kritikoa (orduak)"
"critical_escalation_hours": "Eskalazio Kritikoa (orduak)",
"smart_procurement": "Erosketa Adimendunaren Kalkulua",
"use_reorder_rules": "Erabili berrerozketa arauak (puntua eta kantitatea)",
"use_reorder_rules_desc": "Egin erreferentzia osagaietan konfiguratutako berrerozketa puntua eta kantitateari",
"economic_rounding": "Biribiltze ekonomikoa",
"economic_rounding_desc": "Biribildu kantitateak multiplo ekonomikoetara (berrerozketa kantitatea edo hornitzailearen gutxienekoa)",
"respect_storage_limits": "Egin errespetu biltegiratze mugari",
"respect_storage_limits_desc": "Mugatu aginduak konfiguratutako gehienezko stock mailara",
"use_supplier_minimums": "Erabili hornitzaileen gutxienezkoak",
"use_supplier_minimums_desc": "Egin errespetu hornitzaileen gutxieneko erosketa kantitateari eta gutxieneko erosketa zenbatekoari",
"optimize_price_tiers": "Optimizatu prezio mailak",
"optimize_price_tiers_desc": "Doitu kantitateak bolumeneko deskontuak lortzeko onuragarria denean"
},
"inventory": {
"title": "Inbentarioaren Kudeaketa",

View File

@@ -189,7 +189,9 @@
"name": "Izena",
"contact_person": "Kontaktu pertsona",
"email": "Emaila",
"email_placeholder": "email@adibidea.eus",
"phone": "Telefonoa",
"phone_placeholder": "+34 XXX XXX XXX",
"city": "Hiria",
"country": "Herrialdea",
"address": "Helbidea",

View File

@@ -1 +1,99 @@
{}
{
"title": "Inbentario Kudeaketa",
"subtitle": "Kudeatu stock-a, kostuak, loteak eta osagaien alertak",
"fields": {
"name": "Izena",
"sku": "SKU Kodea",
"barcode": "Barra Kodea",
"brand": "Marka",
"category": "Kategoria",
"current_stock": "Egungo Stock-a",
"min_stock": "Gutxieneko Stock-a",
"max_stock": "Gehienezko Stock-a",
"unit": "Unitatea",
"cost": "Kostua",
"price": "Prezioa",
"supplier": "Hornitzailea",
"last_restocked": "Azken Hornidura",
"expiration_date": "Iraungitze Data",
"batch_number": "Lote Zenbakia",
"lot_number": "Lote Zenbakia",
"supplier_batch_ref": "Hornitzailearen Err.",
"location": "Kokapena",
"description": "Deskribapena",
"notes": "Oharrak",
"package_size": "Pakete Tamaina",
"average_cost": "Batez Besteko Kostua",
"standard_cost": "Kostu Estandarra",
"unit_cost": "Unitatearen Kostua",
"low_stock_threshold": "Stock Baxuaren Muga",
"reorder_point": "Berriz Eskatzeko Puntua",
"reorder_quantity": "Berriz Eskatzeko Kantitatea",
"max_stock_level": "Gehienezko Stock-a",
"shelf_life_days": "Bizitza Erabilgarria Egunetan",
"is_perishable": "Hondagarria da?",
"costs_and_pricing": "Kostuak eta Prezioak",
"reserved_quantity": "Erreserbatutako Kantitatea",
"available_quantity": "Kantitate Erabilgarria",
"received_date": "Jasotze Data",
"best_before_date": "Hobe Baino Lehen",
"warehouse_zone": "Biltegiaren Zona",
"shelf_position": "Apaleko Posizioa",
"quality_status": "Kalitatearen Egoera",
"storage_instructions": "Biltegiratze Jarraibideak",
"transformation_reference": "Transformazio Erreferentzia",
"original_expiration_date": "Jatorrizko Iraungipena",
"transformation_date": "Transformazio Data",
"final_expiration_date": "Azken Iraungipena"
},
"sections": {
"purchase_costs": "Erosketa Kostuak",
"stock_management": "Stock Kudeaketa"
},
"help": {
"standard_cost": "Helburuko kostua aurrekonturako eta bariantza analisirako",
"average_cost": "Erosketaren batez besteko ponderatutik automatikoki kalkulatuta"
},
"enums": {
"ingredient_category": {
"flour": "Irinak",
"yeast": "Legamiak",
"dairy": "Esnekiak",
"eggs": "Arrautzak",
"sugar": "Azukrea",
"fats": "Gantzak",
"salt": "Gatza",
"spices": "Espezia",
"additives": "Gehigarriak",
"packaging": "Ontziak",
"cleaning": "Garbiketa",
"other": "Besteak"
},
"stock_movement_type": {
"PURCHASE": "Erosketa",
"PRODUCTION_USE": "Ekoizpenean Erabilera",
"TRANSFORMATION": "Transformazioa",
"ADJUSTMENT": "Doikuntza",
"WASTE": "Hondakina",
"TRANSFER": "Transferentzia",
"RETURN": "Itzulera",
"INITIAL_STOCK": "Hasierako Stock-a",
"OTHER": "Bestea"
}
},
"categories": {
"all": "Kategoria guztiak",
"flour": "Irinak",
"dairy": "Esnekiak",
"eggs": "Arrautzak",
"fats": "Gantzak",
"sugar": "Azukrea",
"yeast": "Legamiak",
"spices": "Espezia",
"additives": "Gehigarriak",
"packaging": "Ontziak",
"cleaning": "Garbiketa",
"equipment": "Ekipoak",
"other": "Besteak"
}
}

View File

@@ -81,24 +81,85 @@
"currency": "Moneta",
"created_date": "Sortze data",
"updated_date": "Azken eguneraketa",
"notes": "Oharrak"
"notes": "Oharrak",
"tax_id": "IFK/ZIOA",
"registration_number": "Merkataritza erregistroa",
"mobile": "Mugikorra",
"website": "Webgunea",
"address_line1": "Helbide lerroa 1",
"address_line2": "Helbide lerroa 2",
"state_province": "Probintzia/Estatua",
"postal_code": "Posta kodea",
"delivery_area": "Entrega eremua"
},
"sections": {
"contact_info": "Kontaktu informazioa",
"address_info": "Helbide informazioa",
"commercial_info": "Informazio komertziala",
"additional_info": "Informazio gehigarria",
"performance": "Errendimendua eta estatistikak",
"notes": "Oharrak"
},
"placeholders": {
"name": "Hornitzailearen izena",
"contact_person": "Kontaktuaren izena",
"supplier_code": "Kode esklusiboa",
"notes": "Oharrak hornitzaileari buruz"
"supplier_code": "adib., HORN-001",
"notes": "Oharrak hornitzaileari buruz",
"tax_id": "adib., ESB12345678",
"registration_number": "Merkataritza erregistro zenbakia",
"mobile": "+34 XXX XXX XXX",
"website": "https://adibidea.eus",
"address_line1": "Kalearen helbidea",
"address_line2": "Apartamentua, pisua, etab. (aukerakoa)",
"state_province": "Probintzia edo Estatua",
"postal_code": "Posta kodea",
"delivery_area": "Entregaren estaldura eremua"
},
"currencies": {
"EUR": "Euroa (€)",
"USD": "AEBetako dolarra ($)",
"GBP": "Libera esterlina (£)"
},
"descriptions": {
"supplier_type": "Hautatu hornitzaile honek ematen dituen produktuen edo zerbitzuen mota",
"payment_terms": "Hornitzailearekin hitz egindako ordainketa baldintzak",
"quality_rating": "1etik 5erako izarra balorazioa produktuaren kalitatean oinarrituta",
"delivery_rating": "1etik 5erako izarra balorazioa entrega puntualtasunean eta baldintzetan oinarrituta"
},
"actions": {
"approve": "Hornitzailea Onartu",
"reject": "Hornitzailea Baztertu",
"delete": "Hornitzailea Ezabatu"
},
"confirm": {
"approve": "Ziur zaude hornitzaile hau onartu nahi duzula? Honek hornitzailea erabiltzeko aktibatuko du.",
"reject": "Ziur zaude hornitzaile hau baztertu nahi duzula? Ekintza hau geroago desegin daiteke."
},
"delete": {
"title": "Hornitzailea Ezabatu",
"subtitle": "Nola ezabatu nahi duzu {name}?",
"supplier_name": "Hornitzailea",
"soft_delete": "Inaktibo gisa Markatu",
"hard_delete": "Betirako Ezabatu",
"soft_explanation": "Hornitzailea inaktibo gisa markatzen du. Geroago berriro aktibatu daiteke. Datu guztiak gordetzen dira.",
"hard_explanation": "Hornitzailearen datu guztiak betirako ezabatzen ditu, prezio zerrendak, kalitate berrikuspenak eta errendimenduko metrikak barne.",
"confirm_soft_title": "Berretsi Inaktibo gisa Markatu",
"confirm_hard_title": "Berretsi Betirako Ezabatzea",
"soft_description": "Honek hornitzailea inaktibo gisa markatuko du. Hornitzailea geroago berriro aktibatu daiteke eta datu guztiak gordeko dira.",
"hard_description": "Honek hornitzailearen datu guztiak betirako ezabatuko ditu. Ekintza hau ezin da desegin.",
"warning_irreversible": "Abisua: Ekintza hau itzulezina da!",
"type_to_confirm": "Idatzi EZABATU berresteko",
"confirm_instruction": "Idatzi EZABATU letra larriz betirako ezabatzea berresteko",
"confirm_soft": "Inaktibo gisa Markatu",
"confirm_hard": "Betirako Ezabatu",
"summary_title": "Ezabatzea Osatua",
"supplier_deleted": "{name} hornitzailea betirako ezabatu da",
"deletion_summary": "Ezabatze Laburpena",
"deleted_price_lists": "Ezabatutako prezio zerrendak",
"deleted_quality_reviews": "Ezabatutako kalitate berrikuspenak",
"deleted_performance_metrics": "Ezabatutako errendimenduko metrikak",
"deleted_alerts": "Ezabatutako alertak",
"deleted_scorecards": "Ezabatutako puntuazio txartelak",
"cannot_delete": "Ezin da ezabatu erosketa agindu aktiboak dituen hornitzailea"
}
}

View File

@@ -12,6 +12,7 @@ import productionEs from './es/production.json';
import equipmentEs from './es/equipment.json';
import landingEs from './es/landing.json';
import settingsEs from './es/settings.json';
import ajustesEs from './es/ajustes.json';
// English translations
import commonEn from './en/common.json';
@@ -27,6 +28,7 @@ import productionEn from './en/production.json';
import equipmentEn from './en/equipment.json';
import landingEn from './en/landing.json';
import settingsEn from './en/settings.json';
import ajustesEn from './en/ajustes.json';
// Basque translations
import commonEu from './eu/common.json';
@@ -42,10 +44,11 @@ import productionEu from './eu/production.json';
import equipmentEu from './eu/equipment.json';
import landingEu from './eu/landing.json';
import settingsEu from './eu/settings.json';
import ajustesEu from './eu/ajustes.json';
// Translation resources by language
export const resources = {
es: {
es: {
common: commonEs,
auth: authEs,
inventory: inventoryEs,
@@ -59,6 +62,7 @@ export const resources = {
equipment: equipmentEs,
landing: landingEs,
settings: settingsEs,
ajustes: ajustesEs,
},
en: {
common: commonEn,
@@ -74,6 +78,7 @@ export const resources = {
equipment: equipmentEn,
landing: landingEn,
settings: settingsEn,
ajustes: ajustesEn,
},
eu: {
common: commonEu,
@@ -89,6 +94,7 @@ export const resources = {
equipment: equipmentEu,
landing: landingEu,
settings: settingsEu,
ajustes: ajustesEu,
},
};
@@ -125,7 +131,7 @@ export const languageConfig = {
};
// Namespaces available in translations
export const namespaces = ['common', 'auth', 'inventory', 'foodSafety', 'suppliers', 'orders', 'recipes', 'errors', 'dashboard', 'production', 'equipment', 'landing', 'settings'] as const;
export const namespaces = ['common', 'auth', 'inventory', 'foodSafety', 'suppliers', 'orders', 'recipes', 'errors', 'dashboard', 'production', 'equipment', 'landing', 'settings', 'ajustes'] as const;
export type Namespace = typeof namespaces[number];
// Helper function to get language display name
@@ -139,7 +145,7 @@ export const isSupportedLanguage = (language: string): language is SupportedLang
};
// Export individual language modules for direct imports
export { commonEs, authEs, inventoryEs, foodSafetyEs, suppliersEs, ordersEs, recipesEs, errorsEs, equipmentEs, landingEs, settingsEs };
export { commonEs, authEs, inventoryEs, foodSafetyEs, suppliersEs, ordersEs, recipesEs, errorsEs, equipmentEs, landingEs, settingsEs, ajustesEs };
// Default export with all translations
export default resources;
export default resources;