Improve frontend traslations

This commit is contained in:
Urtzi Alfaro
2025-11-18 22:17:56 +01:00
parent 8c6393ea14
commit bbf6658759
27 changed files with 424 additions and 462 deletions

View File

@@ -21,7 +21,7 @@
<!-- Runtime configuration - MUST load before app code (Kubernetes deployment) -->
<script src="/runtime-config.js"></script>
<title>Bakery AI - Gestión Inteligente para Panaderías</title>
<title>BakeWise - Gestión Inteligente para Panaderías</title>
</head>
<body>
<div id="root"></div>

View File

@@ -1,6 +1,6 @@
{
"name": "Bakery AI - Gestión Inteligente para Panaderías",
"short_name": "Bakery AI",
"name": "BakeWise - Gestión Inteligente para Panaderías",
"short_name": "BakeWise",
"description": "Plataforma inteligente de gestión para panaderías con predicción de demanda impulsada por IA",
"start_url": "/",
"display": "standalone",

View File

@@ -15,7 +15,8 @@ import { CompactLanguageSelector } from '../../ui/LanguageSelector';
import {
Menu,
Bell,
X
X,
TrendingUp
} from 'lucide-react';
export interface HeaderProps {
@@ -177,19 +178,19 @@ export const Header = forwardRef<HeaderRef, HeaderProps>(({
</div>
{/* Logo */}
<div className="flex items-center gap-2 sm:gap-3 min-w-0 flex-shrink-0">
<div className="flex items-center gap-2 sm:gap-3 min-w-0 flex-shrink-0 h-full">
{logo || (
<>
<div className="w-8 h-8 bg-gradient-to-br from-[var(--color-primary)] to-[var(--color-primary-dark)] rounded-lg flex items-center justify-center text-white font-bold text-sm flex-shrink-0">
PI
<div className="w-8 h-8 bg-gradient-to-br from-[var(--color-primary)] to-[var(--color-primary-dark)] rounded-lg flex items-center justify-center flex-shrink-0 shadow-sm">
<TrendingUp className="w-5 h-5 text-white" strokeWidth={2.5} />
</div>
<h1 className={clsx(
'font-semibold text-[var(--text-primary)] transition-opacity duration-300',
'hidden md:block text-lg leading-tight whitespace-nowrap',
'self-center',
'hidden md:block text-lg whitespace-nowrap',
'leading-[32px]', // Match icon height for perfect alignment
sidebarCollapsed ? 'lg:block' : 'lg:hidden xl:block'
)}>
{t('common:app.name', 'Panadería IA')}
{t('common:app.name', 'BakeWise')}
</h1>
</>
)}

View File

@@ -194,15 +194,11 @@ export const PublicHeader = forwardRef<PublicHeaderRef, PublicHeaderProps>(({
const linkContent = (
<span className={clsx(
"relative text-sm font-medium transition-all duration-200",
isMobile ? "text-base py-1" : "",
"relative text-sm font-medium transition-all duration-200 px-3 py-1.5 rounded-md",
isMobile ? "text-base py-2" : "",
isActive
? "text-[var(--color-primary)]"
: "text-[var(--text-secondary)] hover:text-[var(--text-primary)]",
// Animated underline on hover
!isMobile && "after:content-[''] after:absolute after:bottom-[-4px] after:left-0 after:w-0 after:h-[2px] after:bg-[var(--color-primary)] after:transition-all after:duration-300 hover:after:w-full",
// Active state indicator
isActive && !isMobile && "after:w-full"
? "text-[var(--color-primary)] bg-[var(--color-primary)]/10"
: "text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-secondary)]"
)}>
{item.label}
</span>
@@ -302,11 +298,14 @@ export const PublicHeader = forwardRef<PublicHeaderRef, PublicHeaderProps>(({
<Link to="/" className="flex items-center gap-3 hover:opacity-80 transition-opacity">
{logo || (
<>
<div className="w-8 h-8 bg-gradient-to-br from-[var(--color-primary)] to-[var(--color-primary-dark)] rounded-lg flex items-center justify-center text-white font-bold text-sm">
PI
<div className="w-8 h-8 bg-gradient-to-br from-[var(--color-primary)] to-[var(--color-primary-dark)] rounded-lg flex items-center justify-center shadow-sm">
<svg xmlns="http://www.w3.org/2000/svg" className="w-5 h-5 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="2.5">
<polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline>
<polyline points="17 6 23 6 23 12"></polyline>
</svg>
</div>
<h1 className="text-xl lg:text-2xl font-bold text-[var(--text-primary)]">
Panadería IA
{t('common:app.name', 'BakeWise')}
</h1>
</>
)}
@@ -430,11 +429,14 @@ export const PublicHeader = forwardRef<PublicHeaderRef, PublicHeaderProps>(({
{/* Drawer header */}
<div className="flex items-center justify-between p-4 border-b border-[var(--border-primary)]">
<div className="flex items-center gap-2">
<div className="w-8 h-8 bg-gradient-to-br from-[var(--color-primary)] to-[var(--color-primary-dark)] rounded-lg flex items-center justify-center text-white font-bold text-sm">
PI
<div className="w-8 h-8 bg-gradient-to-br from-[var(--color-primary)] to-[var(--color-primary-dark)] rounded-lg flex items-center justify-center shadow-sm">
<svg xmlns="http://www.w3.org/2000/svg" className="w-5 h-5 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="2.5">
<polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline>
<polyline points="17 6 23 6 23 12"></polyline>
</svg>
</div>
<h2 className="text-lg font-bold text-[var(--text-primary)]">
Panadería IA
{t('common:app.name', 'BakeWise')}
</h2>
</div>
<Button

View File

@@ -1,4 +1,5 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
interface FeatureComparison {
key: string;
@@ -33,7 +34,8 @@ export const PricingComparisonTable: React.FC<PricingComparisonTableProps> = ({
categories,
className = '',
}) => {
const currentLang = localStorage.getItem('language') || 'es';
const { i18n } = useTranslation();
const currentLang = i18n.language;
// Group features by category
const featuresByCategory = features.reduce((acc, feature) => {

View File

@@ -20,7 +20,7 @@ export const PricingSection: React.FC = () => {
<div className="text-center mt-12">
<Link
to="/plans/compare"
className="text-[var(--color-primary)] hover:text-[var(--color-primary-dark)] font-semibold inline-flex items-center gap-2"
className="text-[var(--color-primary)] hover:text-white font-semibold inline-flex items-center gap-2 px-4 py-2 rounded-lg transition-all duration-200 hover:bg-[var(--color-primary)] no-underline"
>
{t('landing:pricing.compare_link', 'Ver comparación completa de características')}
<ArrowRight className="w-4 h-4" />

View File

@@ -201,22 +201,22 @@ export const SubscriptionPricingCards: React.FC<SubscriptionPricingCardsProps> =
className={`px-6 py-2 rounded-md text-sm font-semibold transition-all ${
billingCycle === 'monthly'
? 'bg-[var(--color-primary)] text-white shadow-md'
: 'text-[var(--text-secondary)] hover:text-[var(--text-primary)]'
: 'text-[var(--text-secondary)] hover:bg-[var(--bg-primary)] hover:text-[var(--text-primary)]'
}`}
>
Mensual
{t('billing.monthly', 'Mensual')}
</button>
<button
onClick={() => setBillingCycle('yearly')}
className={`px-6 py-2 rounded-md text-sm font-semibold transition-all flex items-center gap-2 ${
billingCycle === 'yearly'
? 'bg-[var(--color-primary)] text-white shadow-md'
: 'text-[var(--text-secondary)] hover:text-[var(--text-primary)]'
: 'text-[var(--text-secondary)] hover:bg-[var(--bg-primary)] hover:text-[var(--text-primary)]'
}`}
>
Anual
{t('billing.yearly', 'Anual')}
<span className="text-xs font-bold text-green-600 dark:text-green-400">
Ahorra 17%
{t('billing.save_percent', 'Ahorra 17%')}
</span>
</button>
</div>
@@ -309,14 +309,14 @@ export const SubscriptionPricingCards: React.FC<SubscriptionPricingCardsProps> =
<div className={`mt-2 px-3 py-1 text-sm font-medium rounded-full inline-block ${
isPopular ? 'bg-white/20 text-white' : 'bg-[var(--color-success)]/10 text-[var(--color-success)]'
}`}>
{pilotTrialMonths} meses gratis
{t('billing.free_months', { count: pilotTrialMonths })}
</div>
)}
{!savings && !showPilotBanner && (
<div className={`mt-2 px-3 py-1 text-sm font-medium rounded-full inline-block ${
isPopular ? 'bg-white/20 text-white' : 'bg-[var(--color-success)]/10 text-[var(--color-success)]'
}`}>
{plan.trial_days} días gratis
{t('billing.free_trial_days', { count: plan.trial_days })}
</div>
)}
</div>
@@ -359,37 +359,37 @@ export const SubscriptionPricingCards: React.FC<SubscriptionPricingCardsProps> =
<div className="flex items-center justify-between text-xs">
<span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}>
<Users className="w-3 h-3 inline mr-1" />
Usuarios
{t('limits.users', 'Usuarios')}
</span>
<span className={`font-bold ${isPopular ? 'text-white' : isSelected ? 'text-[var(--color-primary)]' : 'text-[var(--text-primary)]'}`}>
{plan.limits.users || '∞'}
{plan.limits.users || t('limits.unlimited', 'Ilimitado')}
</span>
</div>
<div className="flex items-center justify-between text-xs">
<span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}>
<MapPin className="w-3 h-3 inline mr-1" />
Ubicaciones
{t('limits.locations', 'Ubicaciones')}
</span>
<span className={`font-bold ${isPopular ? 'text-white' : isSelected ? 'text-[var(--color-primary)]' : 'text-[var(--text-primary)]'}`}>
{plan.limits.locations || '∞'}
{plan.limits.locations || t('limits.unlimited', 'Ilimitado')}
</span>
</div>
<div className="flex items-center justify-between text-xs">
<span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}>
<Package className="w-3 h-3 inline mr-1" />
Productos
{t('limits.products', 'Productos')}
</span>
<span className={`font-bold ${isPopular ? 'text-white' : isSelected ? 'text-[var(--color-primary)]' : 'text-[var(--text-primary)]'}`}>
{plan.limits.products || '∞'}
{plan.limits.products || t('limits.unlimited', 'Ilimitado')}
</span>
</div>
<div className="flex items-center justify-between text-xs">
<span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}>
<TrendingUp className="w-3 h-3 inline mr-1" />
Pronóstico
{t('limits.forecast', 'Pronóstico')}
</span>
<span className={`font-bold ${isPopular ? 'text-white' : isSelected ? 'text-[var(--color-primary)]' : 'text-[var(--text-primary)]'}`}>
{plan.limits.forecast_horizon_days ? `${plan.limits.forecast_horizon_days}d` : '∞'}
{plan.limits.forecast_horizon_days ? `${plan.limits.forecast_horizon_days}d` : t('limits.unlimited', 'Ilimitado')}
</span>
</div>
</div>
@@ -515,7 +515,7 @@ export const SubscriptionPricingCards: React.FC<SubscriptionPricingCardsProps> =
)}
<p className={`text-xs text-center mt-3 ${isPopular ? 'text-white/90' : 'text-[var(--text-secondary)]'}`}>
3 meses gratis Tarjeta requerida para validación
{t('billing.free_months', { count: 3 })} {t('billing.card_required')}
</p>
</CardWrapper>
);

View File

@@ -54,6 +54,8 @@ i18n
// React options
react: {
useSuspense: false,
bindI18n: 'languageChanged loaded',
bindI18nStore: 'added removed',
},
// Return key with namespace if translation is missing

View File

@@ -305,8 +305,8 @@
"search": "Search in the application"
},
"app": {
"name": "Bakery AI",
"full_name": "Bakery AI - Intelligent System"
"name": "BakeWise",
"full_name": "BakeWise - Intelligent Bakery Management"
},
"profile": {
"my_profile": "My Profile",

View File

@@ -1,6 +1,6 @@
{
"hero": {
"pre_headline": "For Bakeries Losing Money on Waste",
"pre_headline": "",
"scarcity": "Only 12 spots left out of 20 • 3 months FREE",
"scarcity_badge": "🔥 Only 12 spots left out of 20 in pilot program",
"badge": "Advanced AI for Modern Bakeries",
@@ -10,15 +10,15 @@
"title_option_a_line2": "and Save Thousands",
"title_option_b": "Stop Guessing How Much to Bake Every Day",
"subtitle": "AI that predicts demand using local data so you produce exactly what you'll sell. Reduce waste, improve margins, save time.",
"subtitle_option_a": "AI that knows your neighborhood. Predictions ready every morning at 6 AM.",
"subtitle_option_a": "Produce with confidence. AI that analyzes your area and predicts what you'll sell today.",
"subtitle_option_b": "AI that knows your area predicts sales with 92% accuracy. Wake up with your plan ready: what to make, what to order, when it arrives. Save €500-2,000/month on waste.",
"cta_primary": "Join Pilot Program",
"cta_secondary": "See How It Works (2 min)",
"cta_demo": "See Demo",
"social_proof": {
"bakeries": "20 bakeries already saving €1,500/month on average",
"bakeries": "Reduce waste up to 40% from the first month",
"accuracy": "92% accurate predictions (vs 60% generic systems)",
"setup": "15-minute setup"
"setup": "Automatic ordering and production system"
},
"trust": {
"no_cc": "3 months free",
@@ -28,109 +28,76 @@
}
},
"problems": {
"title": "The Problem We Solve",
"title": "The Problems You Face",
"subtitle": "If you own a bakery, you know exactly what we're talking about",
"problem1": {
"title": "You throw away 50 loaves a day \"just in case\"",
"description": "50 loaves × €2 = €100/day =3,000/month in the trash. And that's just bread."
"item1": {
"title": "Daily Waste",
"description": "You throw away2,000 per month because you produce \"just in case\" and end up with unsold bread."
},
"problem2": {
"title": "Customers leave empty-handed",
"description": "\"You're out of croissants at 2 PM\" = lost sales + frustrated customers."
"item2": {
"title": "Guessing Every Day",
"description": "You don't know how much to make. Sometimes you run out of stock, sometimes there's too much left over."
},
"problem3": {
"title": "You plan \"by eye\" with Excel",
"description": "Based on experience and gut feelings. It works... until it doesn't."
"item3": {
"title": "Time Lost",
"description": "Hours calculating orders, checking inventory, planning production manually."
}
},
"solutions": {
"title": "The Solution",
"title": "The AI Solution",
"subtitle": "AI that knows YOUR bakery, YOUR neighborhood, YOUR customers",
"solution1": {
"title": "Predicts real demand (92% accuracy)",
"description": "Knows tomorrow is a rainy Monday, school closed, market cancelled → you'll sell 78 croissants (not 100)."
"item1": {
"title": "Save €500-2,000/Month",
"description": "Reduce waste by 20-40% producing exactly what you're going to sell."
},
"solution2": {
"title": "Automatic system every morning",
"description": "5:30 AM: reviews inventory, predicts sales, plans production, creates orders. You arrive at 6:00 and everything's ready."
"item2": {
"title": "92% Accurate Predictions",
"description": "Knows exactly how much you'll sell tomorrow based on your data and environment."
},
"solution3": {
"title": "Your data = your grants",
"description": "100% your data + certified waste reduction = access to €50,000 in European sustainability grants."
"item3": {
"title": "Total Automation",
"description": "Automatic system every morning: prediction, production, orders. Everything ready at 6 AM."
}
},
"pillars": {
"badge": "The 3 System Keys",
"title": "Why It Works For Your Bakery",
"subtitle": "It's not magic. It's math applied to YOUR reality.",
"badge": "The 3 Keys to the System",
"title": "How BakeWise Works",
"subtitle": "Three pillars that transform your bakery",
"see_all": "See all features in detail",
"pillar1": {
"title": "🎯 Predicts Demand with Your Area's Data",
"intro": "AI that knows your neighborhood, not just the calendar. Knows the nearby school closes in August, there's a market in your plaza on Fridays, and another bakery opened 500m away.",
"schools": {
"title": "🎯 Predicts Demand with Local Data",
"intro": "AI that knows your neighborhood, not just the calendar. It knows the nearby school closes in August, that there's a market on Fridays in your plaza, and that another bakery opened 500m away.",
"schools": "Nearby Schools and Offices",
"schools_desc": "Knows when there are vacations, office hours, school events",
"competition": "Your Competition",
"competition_desc": "Detects new bakeries in your area and adjusts predictions",
"weather": "Local Weather",
"weather_desc": "Rain → fewer croissants. Heat → more fresh products",
"events": "Events and Festivals",
"events_desc": "Neighborhood festivals, markets, important matches",
"schools_nested": {
"title": "Nearby Schools",
"item1": "\"CEIP San José is 200m away\"",
"item2": "\"In August sales drop 40% (school vacation)\"",
"item3": "\"Mondays at 8:30 AM peak (parents after drop-off)\""
},
"competition": {
"title": "Your Competition",
"item1": "\"Another bakery opened 2 months ago 500m away\"",
"item2": "\"Impact: -15% in basic bread sales\"",
"item3": "\"Opportunity: Differentiate with specialties\""
},
"weather": {
"title": "Your Area's Weather",
"item1": "\"AEMET data from your zip code\"",
"item2": "\"Rain → -20% croissants, +10% sandwich bread\"",
"item3": "\"Heat → +30% fresh products\""
},
"events": {
"title": "Local Events",
"item1": "\"Friday market at Plaza Mayor (500m)\"",
"item2": "\"Neighborhood festival next week\"",
"item3": "\"Important match → pre-event sales spike\""
},
"accuracy": "Accuracy: 92% (vs 60-70% for generic systems)",
"cta": "See All Features"
},
"pillar2": {
"title": "🤖 Automatic System Every Morning",
"intro": "Imagine hiring a super organized assistant who arrives at 5:30 AM (before you) and does all this AUTOMATICALLY:",
"step1": {
"title": "5:30 AM - Reviews Your Entire Inventory",
"item1": "Counts every kilo of flour, every liter of milk",
"item2": "Checks expiration dates",
"item3": "Sees what's arriving today from suppliers"
},
"step2": {
"title": "5:35 AM - Predicts Today's Sales",
"item1": "Analyzes the day (rainy Monday, local holiday, school closed)",
"item2": "Compares with similar past days",
"item3": "Tells you: \"Today you'll sell 80 croissants, 120 loaves, 50 muffins\""
},
"step3": {
"title": "5:40 AM - Plans What To Do",
"item1": "Calculates exactly how much to bake",
"item2": "Gives you a ready-to-execute list",
"item3": "\"Make 80 croissants (not 100), use 5kg butter, 3kg flour...\""
},
"step4": {
"title": "5:45 AM - Manages Inventory Intelligently",
"projection_title": "Projects 7 days ahead:",
"day1": "Today: 50kg flour",
"day2": "Tomorrow: 42kg",
"day3": "Day after: 30kg",
"day4": "Day 4: 15kg",
"day5": "Day 5: You'd run out of flour",
"solution_title": "AUTOMATIC SOLUTION:",
"solution": "\"Order 50kg today, arrives in 3 days, problem solved\""
},
"step5": {
"title": "5:50 AM - Creates Supplier Orders",
"item1": "Knows Supplier A takes 3 days, Supplier B takes 5",
"item2": "Calculates when to order for just-in-time arrival",
"item3": "Prepares orders ready to approve with 1 click"
},
"intro": "Wake up with all the work done. At 5:30 AM the system has already predicted sales, planned production, managed inventory and created supplier orders.",
"step1": "Predicts today's sales:",
"step1_desc": "\"You'll make 80 croissants, 120 loaves\"",
"step2": "Plans production:",
"step2_desc": "Exact list of what to bake",
"step3": "Manages inventory:",
"step3_desc": "Projects 7 days → \"You'll run out of flour in 4 days, order 50kg today\"",
"step4": "Prevents waste:",
"step4_desc": "\"Milk expires in 5 days, don't order more than 15L\"",
"step5": "Creates orders:",
"step5_desc": "Ready to approve with 1 click",
"key": "🔑 You never run out of stock. The system prevents it 7 days in advance.",
"result": {
"title": "6:00 AM - You Receive an Email",
"item1": "Day's forecast completed ✅",
@@ -156,8 +123,8 @@
"data_ownership": "Data ownership",
"co2_metric": "CO₂",
"co2": "Automatic measurement",
"sdg_value": "SDG 12.3",
"sdg": "Compliance tracking",
"sdg_value": "Green",
"sdg": "Sustainability certified",
"sustainability_title": "Automated Sustainability Reports",
"sustainability_desc": "Generate reports that comply with international sustainability standards and food waste reduction",
"cta": "See All Features"
@@ -165,48 +132,47 @@
},
"how_it_works": {
"title": "How to Get Started",
"subtitle": "3 steps. 10 minutes. Done.",
"subtitle": "In 3 simple steps",
"step1": {
"title": "Upload 6-12 months of sales data",
"description": "More months = more accurate predictions. If you only have 6 months, it works fine, but improves over time.",
"time": "5 minutes"
},
"step2": {
"title": "AI learns from YOUR bakery",
"description": "Analyzes your patterns, products, seasonality. You don't need to configure anything.",
"title": "AI learns your patterns and environment",
"description": "Analyzes your sales, weather, competition, local events. Takes 15 minutes to set up.",
"time": "Automatic"
},
"step3": {
"title": "Start receiving predictions",
"description": "Every morning at 6:00 AM: day's forecast, production plan, orders to approve.",
"title": "Every morning you receive your daily plan",
"description": "What to make, what to order, when it arrives. Everything automatic, you just approve.",
"time": "Next day"
}
},
"pilot": {
"badge": "Pilot Program - Only 20 Spots",
"title": "Looking for 20 Pioneer Bakeries",
"subtitle": "It's not for everyone. We're selecting the first 20 bakeries to join our exclusive pilot program.",
"what_you_get": {
"title": "What You Get",
"free_trial": "3 months completely free",
"lifetime_discount": "20% lifetime discount if you continue",
"vip_support": "Direct support from founding team",
"influence": "Your ideas implemented first"
"badge": "⏰ PILOT PROGRAM • ONLY 12 SPOTS LEFT",
"title": "Join the Pilot Program",
"subtitle": "3 months free + exclusive benefits",
"you_get": {
"title": "What You Get",
"item1": "3 months completely free",
"item2": "Premium personalized support",
"item3": "Influence on product development"
},
"what_we_ask": {
"title": "What We Ask",
"feedback": "Honest weekly feedback (15 min)",
"patience": "Patience with bugs (we're in beta)",
"data": "Historical sales data (6-12 months)",
"communication": "Open communication"
"we_ask": {
"title": "🤝 What We Need",
"item1": "6-12 months of sales data",
"item2": "Credit card (no charge for 3 months)",
"item3": "Understanding this is a pilot program and weekly feedback on bugs and improvements"
},
"spots_left": "12 spots left out of 20",
"cta": "Request Pilot Spot"
"cta": "Request Spot Now"
},
"pricing": {
"badge": "Transparent Pricing",
"title": "One Plan. No Surprises.",
"subtitle": "3 months free for pilots. Then €99/month (or €79/month with lifetime discount if you were a pilot).",
"title": "Transparent Pricing",
"subtitle": "No surprises, no hidden costs",
"compare_link": "See complete feature comparison",
"plan": {
"name": "Bakery-AI Complete",
"pilot_price": "€0/month",
@@ -231,36 +197,37 @@
},
"faq": {
"badge": "Frequently Asked Questions",
"title": "What We're Always Asked",
"title": "Frequently Asked Questions",
"subtitle": "Honest answers to real questions",
"q1": {
"question": "Does it really work with only 6 months of data?",
"answer": "Yes. With 6 months we can detect basic patterns (day of the week, top-selling products). With 12 months, the AI learns seasonality (August vs December). Ideally 12 months, but 6 months is enough to start."
"question": "How much data do I need?",
"answer": "6-12 months of sales data. More data = better predictions, but it works from 6 months."
},
"q2": {
"question": "What if my data is a mess?",
"answer": "Our team helps you clean it. If you have sales in Excel, paper, or any format, we migrate it free during the pilot. We only need: date, product sold, quantity. We fix the rest."
"question": "Why do I need to provide my card?",
"answer": "To automatically continue after the 3-month free trial period. You can cancel anytime without charge."
},
"q3": {
"question": "Do I have to use your POS or can I keep mine?",
"answer": "You can keep your current POS if you like it. We integrate with most systems. We also offer our own POS optimized for bakeries (optional, included in the plan)."
"question": "What happens to my data?",
"answer": "100% yours. Servers in Spain, GDPR compliant, we never share or sell your information."
},
"q4": {
"question": "What happens after the 3 free months?",
"answer": "You decide. If you want to continue, you pay €79/month (20% lifetime discount for being a pilot). If not, cancel without explanations or penalties. Your data is always yours and we'll export it wherever you want."
"question": "Does it work for my type of bakery?",
"answer": "Yes. Whether local production or central bakery with multiple points of sale, the system adapts to your business model."
},
"q5": {
"question": "Why should I trust you?",
"answer": "Good question. We're a registered Spanish company, GDPR compliant, your data never leaves the EU. The founder has over a decade of AI experience. But most importantly: if after 3 months we don't help you save money, we give you free consulting to optimize your bakery another way. No risk for you."
"question": "What if I run out of stock?",
"answer": "The system prevents this. It projects 7 days ahead and alerts you when you need to order from suppliers, automatically creating purchase orders."
}
},
"final_cta": {
"scarcity_badge": "🔥 Only 12 spots left out of 20",
"title": "Be Among the First 20 Bakeries",
"title_accent": "To Try This Technology",
"subtitle": "It's not for everyone. We're looking for bakeries that want to reduce waste and increase profits with AI help, in exchange for honest feedback.",
"title": "Stop Losing €2,000 per Month on Waste",
"title_accent": "Trying This Technology",
"subtitle": "Join the first 20 bakeries. Only 12 spots left.",
"button": "Start Now - No Card Required",
"cta_primary": "Request Pilot Spot",
"cta_secondary": "See Demo (2 min)",
"guarantee": "Guarantee: 3 months free. Cancel anytime. No risk."
"guarantee": "Card required. No charge for 3 months. Cancel anytime."
}
}

View File

@@ -70,5 +70,20 @@
"support": "24/7 dedicated support + account manager",
"recommended_for": "Bakery chains, franchises, unlimited scale"
}
}
},
"billing": {
"monthly": "Monthly",
"yearly": "Yearly",
"save_percent": "Save 17%",
"free_months": "{count, plural, one {# month free} other {# months free}}",
"free_trial_days": "{count, plural, one {# day free} other {# days free}}",
"card_required": "Card required for validation"
},
"limits": {
"users": "Users",
"locations": "Locations",
"products": "Products",
"forecast": "Forecast",
"unlimited": "Unlimited"
}
}

View File

@@ -329,8 +329,8 @@
"search": "Buscar en la aplicación"
},
"app": {
"name": "Panadería IA",
"full_name": "Panadería IA - Sistema Inteligente"
"name": "BakeWise",
"full_name": "BakeWise - Gestión Inteligente para Panaderías"
},
"profile": {
"my_profile": "Mi perfil",

View File

@@ -1,6 +1,6 @@
{
"hero": {
"pre_headline": "Para Panaderías que Pierden Dinero en Desperdicios",
"pre_headline": "",
"scarcity": "Solo 12 plazas restantes de 20 • 3 meses GRATIS",
"scarcity_badge": "🔥 Solo 12 plazas restantes de 20 en el programa piloto",
"badge": "IA Avanzada para Panaderías Modernas",
@@ -10,15 +10,15 @@
"title_option_a_line2": "y Ahorra Miles",
"title_option_b": "Deja de Adivinar Cuánto Hornear Cada Día",
"subtitle": "IA que predice demanda con datos de tu zona para que produzcas exactamente lo que vas a vender. Reduce desperdicios, mejora márgenes y ahorra tiempo.",
"subtitle_option_a": "IA que conoce tu barrio. Predicciones listas cada mañana a las 6 AM.",
"subtitle_option_a": "Produce con confianza. IA que analiza tu zona y predice qué venderás hoy.",
"subtitle_option_b": "IA que conoce tu zona predice ventas con 92% de precisión. Despierta con tu plan listo: qué hacer, qué pedir, cuándo llegará. Ahorra €500-2,000/mes en desperdicios.",
"cta_primary": "Únete al Programa Piloto",
"cta_secondary": "Ver Cómo Funciona (2 min)",
"cta_demo": "Ver Demo",
"social_proof": {
"bakeries": "20 panaderías ya ahorran €1,500/mes de promedio",
"bakeries": "Reduce desperdicios hasta 40% desde el primer mes",
"accuracy": "Predicciones 92% precisas (vs 60% sistemas genéricos)",
"setup": "Configuración en 15 minutos"
"setup": "Sistema automático de pedidos y producción"
},
"trust": {
"no_cc": "3 meses gratis",
@@ -28,109 +28,76 @@
}
},
"problems": {
"title": "El Problema Que Resolvemos",
"title": "❌ Los Problemas Que Enfrentas",
"subtitle": "Si tienes una panadería, sabes exactamente de qué hablamos",
"problem1": {
"title": "Tiras 50 panes al día \"por si acaso\"",
"description": "50 panes × €2 = €100/día = €3,000/mes a la basura. Y eso solo en pan."
"item1": {
"title": "Desperdicios Diarios",
"description": "Tiras €2,000 al mes porque produces \"por si acaso\" y terminas con pan que no se vende."
},
"problem2": {
"title": "Clientes se van sin comprar",
"description": "\"Ya no te quedan croissants a las 14:00\" = ventas perdidas + clientes frustrados."
"item2": {
"title": "Adivinando Cada Día",
"description": "No sabes cuánto hacer. A veces te quedas sin stock, a veces sobra demasiado."
},
"problem3": {
"title": "Planificas \"a ojo\" con Excel",
"description": "Basándote en experiencia y corazonadas. Funciona... hasta que no funciona."
"item3": {
"title": "Tiempo Perdido",
"description": "Horas calculando pedidos, revisando inventario, planificando producción manualmente."
}
},
"solutions": {
"title": "La Solución",
"title": "La Solución Con IA",
"subtitle": "IA que conoce TU panadería, TU barrio, TUS clientes",
"solution1": {
"title": "Predice demanda real (92% precisión)",
"description": "Sabe que mañana es lunes lluvioso, colegio cerrado, mercadillo cancelado → venderás 78 croissants (no 100)."
"item1": {
"title": "Ahorra €500-2,000/Mes",
"description": "Reduce desperdicios 20-40% produciendo exactamente lo que vas a vender."
},
"solution2": {
"title": "Sistema automático cada mañana",
"description": "5:30 AM: revisa inventario, predice ventas, planifica producción, crea pedidos. Tú llegas a las 6:00 y todo está listo."
"item2": {
"title": "Predicciones 92% Precisas",
"description": "Sabe exactamente cuánto venderás mañana basándose en tus datos y tu entorno."
},
"solution3": {
"title": "Tus datos = tus subvenciones",
"description": "Datos 100% tuyos + reducción de desperdicios certificada = acceso a €50,000 en ayudas europeas de sostenibilidad."
"item3": {
"title": "Automatización Total",
"description": "Sistema automático cada mañana: predicción, producción, pedidos. Todo listo a las 6 AM."
}
},
"pillars": {
"badge": "Las 3 Claves del Sistema",
"title": "Por Qué Funciona Para Tu Panadería",
"subtitle": "No es magia. Es matemática aplicada a TU realidad.",
"title": "Cómo Funciona BakeWise",
"subtitle": "Tres pilares que transforman tu panadería",
"see_all": "Ver todas las funcionalidades en detalle",
"pillar1": {
"title": "🎯 Predice Demanda con Datos de Tu Zona",
"intro": "IA que conoce tu barrio, no solo el calendario. Sabe que el colegio de al lado cierra en agosto, que los viernes hay mercado en tu plaza, y que abrió otra panadería a 500m.",
"schools": {
"schools": "Colegios y Oficinas Cerca",
"schools_desc": "Sabe cuándo hay vacaciones, horarios de oficina, eventos escolares",
"competition": "Tu Competencia",
"competition_desc": "Detecta nuevas panaderías en tu zona y ajusta predicciones",
"weather": "Clima Local",
"weather_desc": "Lluvia → menos croissants. Calor → más productos frescos",
"events": "Eventos y Festivales",
"events_desc": "Fiestas del barrio, mercadillos, partidos importantes",
"schools_nested": {
"title": "Colegios Cerca",
"item1": "\"El CEIP San José está a 200m\"",
"item2": "\"En agosto vendes 40% menos (vacaciones)\"",
"item3": "\"Los lunes a las 8:30 hay pico (padres)\""
},
"competition": {
"title": "Tu Competencia",
"item1": "\"Abrió otra panadería hace 2 meses a 500m\"",
"item2": "\"Impacto: -15% en pan básico\"",
"item3": "\"Oportunidad: Diferénciate con especialidades\""
},
"weather": {
"title": "Clima de Tu Zona",
"item1": "\"Datos AEMET de tu código postal\"",
"item2": "\"Lluvia → -20% croissants, +10% pan de molde\"",
"item3": "\"Calor → +30% productos frescos\""
},
"events": {
"title": "Eventos Locales",
"item1": "\"Mercadillo los viernes en Plaza Mayor (500m)\"",
"item2": "\"Fiestas del barrio próxima semana\"",
"item3": "\"Partido importante → pico pre-evento\""
},
"accuracy": "Precisión: 92% (vs 60-70% de sistemas genéricos)",
"cta": "Ver Todas las Funcionalidades"
},
"pillar2": {
"title": "🤖 Sistema Automático Cada Mañana",
"intro": "Imagina contratar un ayudante súper organizado que llega a las 5:30 AM (antes que tú) y hace todo esto AUTOMÁTICAMENTE:",
"step1": {
"title": "5:30 AM - Revisa Todo Tu Inventario",
"item1": "Cuenta cada kilo de harina, cada litro de leche",
"item2": "Comprueba fechas de caducidad",
"item3": "Ve qué llega hoy de proveedores"
},
"step2": {
"title": "5:35 AM - Predice Ventas de Hoy",
"item1": "Analiza el día (lunes lluvioso, fiesta local, colegio cerrado)",
"item2": "Compara con días similares del pasado",
"item3": "Te dice: \"Hoy venderás 80 croissants, 120 barras, 50 magdalenas\""
},
"step3": {
"title": "5:40 AM - Planifica Qué Hacer",
"item1": "Calcula exactamente cuánto hornear",
"item2": "Te da una lista lista para ejecutar",
"item3": "\"Haz 80 croissants (no 100), usa 5kg mantequilla, 3kg harina...\""
},
"step4": {
"title": "5:45 AM - Gestiona Inventario Inteligentemente",
"projection_title": "Proyecta 7 días hacia adelante:",
"day1": "Hoy: 50kg harina",
"day2": "Mañana: 42kg",
"day3": "Pasado: 30kg",
"day4": "Día 4: 15kg",
"day5": "Día 5: Te quedarías sin harina",
"solution_title": "SOLUCIÓN AUTOMÁTICA:",
"solution": "\"Pide 50kg hoy, llega en 3 días, problema resuelto\""
},
"step5": {
"title": "5:50 AM - Crea Pedidos a Proveedores",
"item1": "Sabe que Proveedor A tarda 3 días, Proveedor B tarda 5",
"item2": "Calcula cuándo pedir para que llegue justo a tiempo",
"item3": "Prepara pedidos listos para aprobar con 1 clic"
},
"intro": "Despierta con todo el trabajo hecho. A las 5:30 AM el sistema ya predijo ventas, planificó producción, gestionó inventario y creó pedidos a proveedores.",
"step1": "Predice ventas de hoy:",
"step1_desc": "\"Harás 80 croissants, 120 barras\"",
"step2": "Planifica producción:",
"step2_desc": "Lista exacta de lo que hornear",
"step3": "Gestiona inventario:",
"step3_desc": "Proyecta 7 días → \"Te quedarás sin harina en 4 días, pide 50kg hoy\"",
"step4": "Previene desperdicios:",
"step4_desc": "\"Leche caduca en 5 días, no pidas más de 15L\"",
"step5": "Crea pedidos:",
"step5_desc": "Listos para aprobar con 1 clic",
"key": "🔑 Nunca llegas al punto de quedarte sin stock. El sistema lo previene 7 días antes.",
"result": {
"title": "6:00 AM - Recibes un Email",
"item1": "Predicción del día hecha ✅",
@@ -156,8 +123,8 @@
"data_ownership": "Propiedad de datos",
"co2_metric": "CO₂",
"co2": "Medición automática",
"sdg_value": "ODS 12.3",
"sdg": "Seguimiento de cumplimiento",
"sdg_value": "Verde",
"sdg": "Certificado de sostenibilidad",
"sustainability_title": "Informes de Sostenibilidad Automatizados",
"sustainability_desc": "Genera informes que cumplen con los estándares internacionales de sostenibilidad y reducción de desperdicio alimentario",
"cta": "Ver Todas las Funcionalidades"
@@ -165,48 +132,47 @@
},
"how_it_works": {
"title": "Cómo Empezar",
"subtitle": "3 pasos. 10 minutos. Listo.",
"subtitle": "En 3 pasos simples",
"step1": {
"title": "Sube 6-12 meses de datos de ventas",
"description": "Más meses = predicciones más precisas. Si tienes solo 6 meses, funciona igual, pero mejora con el tiempo.",
"time": "5 minutos"
},
"step2": {
"title": "La IA aprende de TU panadería",
"description": "Analiza tus patrones, productos, estacionalidad. No necesitas configurar nada.",
"title": "La IA aprende tus patrones y tu entorno",
"description": "Analiza tus ventas, clima, competencia, eventos locales. Tarda 15 minutos en configurarse.",
"time": "Automático"
},
"step3": {
"title": "Empiezas a recibir predicciones",
"description": "Cada mañana a las 6:00 AM: predicción del día, plan de producción, pedidos a aprobar.",
"title": "Cada mañana recibes tu plan del día",
"description": "Qué hacer, qué pedir, cuándo llegará. Todo automático, tú solo apruebas.",
"time": "Al día siguiente"
}
},
"pilot": {
"badge": "Programa Piloto - Solo 20 Plazas",
"title": "Buscamos 20 Panaderías Pioneras",
"subtitle": "No es para todo el mundo. Estamos seleccionando las primeras 20 panaderías para formar parte de nuestro programa piloto exclusivo.",
"what_you_get": {
"title": "Lo Que Obtienes",
"free_trial": "3 meses completamente gratis",
"lifetime_discount": "20% descuento de por vida si continúas",
"vip_support": "Soporte directo del equipo fundador",
"influence": "Tus ideas se implementan primero"
"badge": "⏰ PROGRAMA PILOTO • SOLO 12 PLAZAS RESTANTES",
"title": "Únete al Programa Piloto",
"subtitle": "3 meses gratis + beneficios exclusivos",
"you_get": {
"title": " Qué Recibes",
"item1": "3 meses completamente gratis",
"item2": "Soporte premium personalizado",
"item3": "Influencia en el desarrollo del producto"
},
"what_we_ask": {
"title": "Lo Que Pedimos",
"feedback": "Feedback honesto semanal (15 min)",
"patience": "Paciencia con bugs (estamos en beta)",
"data": "Datos de ventas históricos (6-12 meses)",
"communication": "Comunicación abierta"
"we_ask": {
"title": "🤝 Qué Necesitamos",
"item1": "6-12 meses de datos de ventas",
"item2": "Tarjeta de crédito (sin cargo por 3 meses)",
"item3": "Comprensión de que es un programa piloto y feedback semanal sobre fallos y mejoras"
},
"spots_left": "Quedan 12 plazas de 20",
"cta": "Solicitar Plaza en el Piloto"
"cta": "Solicitar Plaza Ahora"
},
"pricing": {
"badge": "Precios Transparentes",
"title": "Un Solo Plan. Sin Sorpresas.",
"subtitle": "3 meses gratis para pilotos. Luego €99/mes (o €79/mes con descuento de por vida si fuiste piloto).",
"title": "Precios Transparentes",
"subtitle": "Sin sorpresas, sin costos ocultos",
"compare_link": "Ver comparación completa de características",
"plan": {
"name": "Bakery-IA Completo",
"pilot_price": "€0/mes",
@@ -231,36 +197,37 @@
},
"faq": {
"badge": "Preguntas Frecuentes",
"title": "Lo Que Nos Preguntan Siempre",
"title": "Preguntas Frecuentes",
"subtitle": "Respuestas honestas a preguntas reales",
"q1": {
"question": "¿De verdad funciona con solo 6 meses de datos?",
"answer": "Sí. Con 6 meses ya podemos detectar patrones básicos (día de la semana, productos más vendidos). Con 12 meses, la IA aprende estacionalidad (agosto vs diciembre). Lo ideal son 12 meses, pero 6 meses es suficiente para empezar."
"question": "¿Cuántos datos necesito?",
"answer": "6-12 meses de datos de ventas. Más datos = mejores predicciones, pero funciona desde 6 meses."
},
"q2": {
"question": "¿Qué pasa si mis datos son un desastre?",
"answer": "Nuestro equipo te ayuda a limpiarlos. Si tienes ventas en Excel, papel, o cualquier formato, lo migramos gratis durante el piloto. Solo necesitamos: fecha, producto vendido, cantidad. El resto lo arreglamos nosotros."
"question": "¿Por qué necesito dar mi tarjeta?",
"answer": "Para continuar automáticamente después del período de prueba gratuito de 3 meses. Puedes cancelar en cualquier momento sin cargo."
},
"q3": {
"question": "¿Tengo que usar vuestro POS o puedo seguir con el mío?",
"answer": "Puedes seguir con tu POS actual si te gusta. Nos integramos con la mayoría de sistemas. También ofrecemos nuestro propio POS optimizado para panaderías (opcional, incluido en el plan)."
"question": "¿Qué pasa con mis datos?",
"answer": "100% tuyos. Servidores en España, cumplimiento RGPD, nunca compartimos ni vendemos tu información."
},
"q4": {
"question": "¿Qué pasa después de los 3 meses gratis?",
"answer": "Tú decides. Si quieres continuar, pagas €79/mes (20% descuento de por vida por ser piloto). Si no, cancelas sin explicaciones ni penalizaciones. Tus datos siempre son tuyos y te los llevamos a donde quieras."
"question": "¿Funciona para mi tipo de panadería?",
"answer": "Sí. Ya sea producción local o obrador central con múltiples puntos de venta, el sistema se adapta a tu modelo de negocio."
},
"q5": {
"question": "¿Por qué debería confiar en vosotros?",
"answer": "Buena pregunta. Somos una empresa española registrada, cumplimos RGPD, tus datos nunca salen de la UE. El fundador tiene más de una década de experiencia en IA. Pero lo más importante: si después de 3 meses no te ayudamos a ahorrar dinero, te damos consultoría gratis para optimizar tu panadería de otra forma. Sin riesgo para ti."
"question": "¿Qué pasa si me quedo sin stock?",
"answer": "El sistema previene esto. Proyecta 7 días hacia adelante y te avisa cuando necesitas pedir a proveedores, creando automáticamente las órdenes de compra."
}
},
"final_cta": {
"scarcity_badge": "🔥 Solo 12 plazas restantes de 20",
"title": "Sé de las Primeras 20 Panaderías",
"title": "Deja de Perder €2,000 al Mes en Desperdicios",
"title_accent": "En Probar Esta Tecnología",
"subtitle": "No es para todo el mundo. Buscamos panaderías que quieran reducir desperdicios y aumentar ganancias con ayuda de IA, a cambio de feedback honesto.",
"subtitle": "Únete a las primeras 20 panaderías. Solo quedan 12 plazas.",
"button": "Comenzar Ahora - Sin Tarjeta Requerida",
"cta_primary": "Solicitar Plaza en el Piloto",
"cta_secondary": "Ver Demo (2 min)",
"guarantee": "Garantía: 3 meses gratis. Cancelas cuando quieras. Sin riesgos."
"guarantee": "Tarjeta requerida. Sin cargo por 3 meses. Cancela cuando quieras."
}
}

View File

@@ -70,5 +70,20 @@
"support": "Soporte dedicado 24/7 + gestor de cuenta",
"recommended_for": "Cadenas de panaderías, franquicias, escala ilimitada"
}
}
},
"billing": {
"monthly": "Mensual",
"yearly": "Anual",
"save_percent": "Ahorra 17%",
"free_months": "{count, plural, one {# mes gratis} other {# meses gratis}}",
"free_trial_days": "{count, plural, one {# día gratis} other {# días gratis}}",
"card_required": "Tarjeta requerida para validación"
},
"limits": {
"users": "Usuarios",
"locations": "Ubicaciones",
"products": "Productos",
"forecast": "Pronóstico",
"unlimited": "Ilimitado"
}
}

View File

@@ -305,8 +305,8 @@
"search": "Aplikazioan bilatu"
},
"app": {
"name": "Okindegiaren AA",
"full_name": "Okindegiaren AA - Sistema Adimentsua"
"name": "BakeWise",
"full_name": "BakeWise - Okindegientzako Kudeaketa Adimentsua"
},
"profile": {
"my_profile": "Nire profila",

View File

@@ -1,6 +1,6 @@
{
"hero": {
"pre_headline": "Hondakinetan Dirua Galtzen Duten Okindegientzat",
"pre_headline": "",
"scarcity": "20tik 12 plaza bakarrik geratzen dira • 3 hilabete DOAN",
"scarcity_badge": "🔥 20tik 12 plaza bakarrik geratzen dira pilotu programan",
"badge": "AA Aurreratua Okindegi Modernoetarako",
@@ -10,122 +10,94 @@
"title_option_a_line2": "eta Aurreztu Milaka",
"title_option_b": "Utzi Asmatu Egunero Zenbat Labean Sartu",
"subtitle": "IAk eskariaren aurreikuspena egiten du zure eremuaren datuekin, zehazki salduko duzuna ekoiztu dezazun. Murriztu hondakinak, hobetu marjinak, aurreztu denbora.",
"subtitle_option_a": "IAk zure auzoa ezagutzen du. Aurreikuspenak prest goiz bakoitzean 6:00etan.",
"subtitle_option_a": "Ekoiztu konfiantzaz. IAk zure eremua aztertzen du eta gaur zer salduko duzun aurreikusten du.",
"subtitle_option_b": "Zure eremua ezagutzen duen IAk salmentak aurreikusten ditu %92ko zehaztasunarekin. Esnatu zure plana prestekin: zer egin, zer eskatu, noiz helduko den. Aurreztu €500-2,000/hilean hondakinetan.",
"cta_primary": "Eskatu Pilotuko Plaza",
"cta_secondary": "Ikusi Nola Lan Egiten Duen (2 min)",
"cta_demo": "Ikusi Demoa",
"social_proof": {
"bakeries": "Murriztu hondakinak %40 arte lehen hilabetatik",
"accuracy": "Aurreikuspen %92 zehatzak (%60 sistema generikoak)",
"setup": "Eskaerak eta ekoizpen sistema automatikoa"
},
"trust": {
"no_cc": "3 hilabete doan",
"card": "Txartela beharrezkoa",
"quick": "Prest 10 minututan",
"quick": "Konfigurazioa 15 minututan",
"spanish": "Laguntza euskeraz"
}
},
"problems": {
"title": "Konpontzen Dugun Arazoa",
"title": "Konpontzen Dugun Arazoa",
"subtitle": "Okindegi bat baduzu, zehatz-mehatz dakizu zer diogun",
"problem1": {
"title": "Egunero 50 ogi botatzen dituzu \"badaezpada\"",
"description": "50 ogi × €2 = €100/egunean = €3,000/hilean zakarrontzian. Eta ogian bakarrik."
"item1": {
"title": "Eguneko Hondakinak",
"description": "Hilean €2,000 botatzen dituzu \"badaezpada\" ekoizten duzulako eta saldu gabeko ogia geratzen zaizulako."
},
"problem2": {
"title": "Bezeroak hutsik alde egiten dute",
"description": "\"Croissantik ez duzu 14:00etan\" = salmenta galduak + bezero haserre."
"item2": {
"title": "Egunero Asmatu",
"description": "Ez dakizu zenbat egin. Batzuetan stockik gabe geratzen zara, batzuetan gehiegi geratzen da."
},
"problem3": {
"title": "\"Begira\" planifikatzen duzu Excel-ekin",
"description": "Esperientzia eta barrunbe sentimenduetan oinarrituta. Funtzionatzen du... funtzionatu arte."
"item3": {
"title": "Galdutako Denbora",
"description": "Orduak eskaerak kalkulatzen, inbentarioa egiaztatzen, ekoizpena eskuz planifikatzen."
}
},
"solutions": {
"title": "Irtenbidea",
"title": "Irtenbidea IArekin",
"subtitle": "IAk ezagutzen ditu ZURE okindeg ia, ZURE auzo a, ZURE bezeroak",
"solution1": {
"title": "Benetako eskaria aurreikusten du (%92ko zehaztasunarekin)",
"description": "Badaki bihar astelehen euritsu bat dela, eskola itxita, merkatu ezeztatua → 78 croissant salduko dituzu (ez 100)."
"item1": {
"title": "Aurreztu €500-2,000/Hilean",
"description": "Murriztu hondakinak %20-40 zehazki salduko duzuna ekoizten."
},
"solution2": {
"title": "Sistema automatikoa goiz bakoitzean",
"description": "5:30etan goizean: inbentarioa berrikusten, salmentak aurreikusten, ekoizpena planifikatzen, eskaerak sortzen. 6:00etan iristen zara eta dena prest dago."
"item2": {
"title": "Aurreikuspen %92 zehatzak",
"description": "Badaki zehazki zenbat salduko duzun bihar zure datuetan eta inguruan oinarrituta."
},
"solution3": {
"title": "Zure datuak = zure diru-laguntzak",
"description": "Datuak 100% zureak + hondakinen murrizketa ziurtatua = €50,000ko sarbidea Europako iraunkortasuneko laguntzetara."
"item3": {
"title": "Automatizazio Osoa",
"description": "Sistema automatikoa goiz bakoitzean: aurreikuspena, ekoizpena, eskaerak. Dena prest 6:00etan goizean."
}
},
"pillars": {
"badge": "Sistemaren 3 Gakoak",
"title": "Zergatik Funtzionatzen Duen Zure Okindegirako",
"subtitle": "Ez da magia. ZURE errealitateari aplikatutako matematika da.",
"title": "Nola Funtzionatzen Duen BakeWise",
"subtitle": "Hiru zutabe zure okindeg ia eraldatzen dutenak",
"see_all": "Ikusi ezaugarri guztiak xehetasunez",
"pillar1": {
"title": "🎯 Aurreikusten du Eskaria Zure Eremuaren Datuekin",
"intro": "IAk ezagutzen du zure auzoa, ez bakarrik egutegia. Badaki ondoko eskola abuztuan itxi egiten dela, ostiral bakoitzean zure plazan merkatua dagoela, eta beste okindegi bat 500m-ra ireki dela.",
"schools": {
"schools": "Inguruko Eskolak eta Bulegoak",
"schools_desc": "Badaki noiz dauden oporrak, bulego orduak, eskola ekitaldiak",
"competition": "Zure Lehia",
"competition_desc": "Detektatzen ditu okindegi berriak zure eremuan eta aurreikuspenak doitzen ditu",
"weather": "Tokiko Eguraldia",
"weather_desc": "Euria → croissant gutxiago. Beroa → produktu fresco gehiago",
"events": "Ekitaldiak eta Jaialdiak",
"events_desc": "Auzoko jaiak, merkatuak, partida garrantzitsuak",
"schools_nested": {
"title": "Inguruko Eskolak",
"item1": "\"CEIP San José 200m-ra dago\"",
"item2": "\"Abuztuan salmentak %40 murrizten dira (eskola-oporrak)\"",
"item3": "\"Astelehenetan 8:30etan gailurra (gurasoak seme-alabak utzi ondoren)\""
},
"competition": {
"title": "Zure Lehia",
"item1": "\"Beste okindegi bat ireki zen duela 2 hilabete 500m-ra\"",
"item2": "\"Eragina: -%15 oinarrizko ogiaren salmentetan\"",
"item3": "\"Aukera: Bereizi espezialtateekin\""
},
"weather": {
"title": "Zure Eremuaren Eguraldia",
"item1": "\"AEMET datuak zure posta kodetik\"",
"item2": "\"Euria → -%20 croissant, +%10 opil ogi\"",
"item3": "\"Beroa → +%30 produktu freskoak\""
},
"events": {
"title": "Tokiko Ekitaldiak",
"item1": "\"Ostiraleko azoka Plaza Mayorrean (500m)\"",
"item2": "\"Auzoaren jaiak datorren astean\"",
"item3": "\"Partida garrantzitsua → ekitaldi aurreko salmenten gailurra\""
},
"accuracy": "Zehaztasuna: %92 (vs %60-70 sistema generikoetan)",
"cta": "Ikusi Ezaugarri Guztiak"
},
"pillar2": {
"title": "🤖 Sistema Automatikoa Goiz Bakoitzean",
"intro": "Imajinatu laguntzaile super antolatua kontratatzen duzula, 5:30ean goizean (zu baino lehen) iristen dena eta hau guztia AUTOMATIKOKI egiten duena:",
"step1": {
"title": "5:30etan goizean - Zure Inbentario Osoa Berrikusten Du",
"item1": "Irin kilo bakoitza, esne litro bakoitza zenbatzen du",
"item2": "Iraungitze datak egiaztatzen ditu",
"item3": "Gaur hornitzaileetatik zer iristen den ikusten du"
},
"step2": {
"title": "5:35ean goizean - Gaurko Salmentak Aurreikusten Ditu",
"item1": "Eguna aztertzen du (astelehen euritsu bat, toki-jai bat, eskola itxita)",
"item2": "Antzeko iraganeko egunekin konparatzen du",
"item3": "Esaten dizu: \"Gaur 80 croissant, 120 ogi, 50 madalena salduko dituzu\""
},
"step3": {
"title": "5:40an goizean - Zer Egin Behar Den Planifikatzen Du",
"item1": "Zehazki zenbat labean sartu behar den kalkulatzen du",
"item2": "Exekutatzeko prest dagoen zerrenda bat ematen dizu",
"item3": "\"Egin 80 croissant (ez 100), erabili 5kg gurin, 3kg irin...\""
},
"step4": {
"title": "5:45ean goizean - Inbentarioa Adimentsu Kudeatzen Du",
"projection_title": "7 egun aurrera proiektatzen ditu:",
"day1": "Gaur: 50kg irin",
"day2": "Bihar: 42kg",
"day3": "Etzi: 30kg",
"day4": "4. eguna: 15kg",
"day5": "5. eguna: Irinik gabe geratuko zinateke",
"solution_title": "IRTENBIDE AUTOMATIKOA:",
"solution": "\"Eskatu 50kg gaur, 3 egunetan iristen da, arazoa konponduta\""
},
"step5": {
"title": "5:50ean goizean - Hornitzaileentzako Eskaerak Sortzen Ditu",
"item1": "Hornitzaile A-k 3 egun behar dituela badaki, Hornitzaile B-k 5",
"item2": "Noiz eskatu behar den kalkulatzen du zehatz-mehatz heltzeko",
"item3": "Klik batekin onartzeko prest dauden eskaerak prestatzen ditu"
},
"intro": "Esnatu lan guztia eginrik. 5:30ean goizean sistemak dagoeneko aurreikusi ditu salmentak, planifikatu du ekoizpena, kudeatu du inbentarioa eta sortu ditu hornitzaileentzako eskaerak.",
"step1": "Aurreikusten du gaurko salmentak:",
"step1_desc": "\"80 croissant, 120 ogi egingo dituzu\"",
"step2": "Planifikatzen du ekoizpena:",
"step2_desc": "Zer labean sartu beharko duzun zerrenda zehatza",
"step3": "Kudeatzen du inbentarioa:",
"step3_desc": "7 egun proiektatzen ditu → \"4 egunetan irinik gabe geratuko zara, eskatu 50kg gaur\"",
"step4": "Prebenitzen ditu hondakinak:",
"step4_desc": "\"Esnea 5 egunetan iraungitzen da, ez eskatu 15L baino gehiago\"",
"step5": "Sortzen ditu eskaerak:",
"step5_desc": "Klik batekin onartzeko prest",
"key": "🔑 Inoiz ez zara stockik gabe geratuko. Sistemak 7 egun lehenago prebenitzen du.",
"result": {
"title": "6:00etan goizean - Email bat Jasotzen Duzu",
"item1": "Eguneko iragarpena eginda ✅",
@@ -151,8 +123,8 @@
"data_ownership": "Datuen jabetza",
"co2_metric": "CO₂",
"co2": "Neurketa automatikoa",
"sdg_value": "GIH 12.3",
"sdg": "Betetze-jarraipena",
"sdg_value": "Berdea",
"sdg": "Iraunkortasun ziurtagiria",
"sustainability_title": "Iraunkortasun Txosten Automatizatuak",
"sustainability_desc": "Sortu nazioarteko iraunkortasun estandarrak eta elikagai-hondakinen murrizketarekin bat datozen txostenak",
"cta": "Ikusi Ezaugarri Guztiak"
@@ -160,48 +132,47 @@
},
"how_it_works": {
"title": "Nola Hasi",
"subtitle": "3 urrats. 10 minutu. Prest.",
"subtitle": "3 urrats sinpletan",
"step1": {
"title": "Igo 6-12 hilabeteko salmenta datuak",
"description": "Hilabete gehiago = aurreikuspena zehatzagoak. 6 hilabete bakarrik badituzu, ongi funtzionatzen du, baina denborarekin hobetzen da.",
"time": "5 minutu"
},
"step2": {
"title": "IAk ZURE okindegiaren berri ikasten du",
"description": "Zure ereduak, produktuak, denboraldiak aztertzen ditu. Ez duzu ezer konfiguratu behar.",
"title": "IAk zure ereduak eta ingurunea ikasten ditu",
"description": "Zure salmentak, eguraldia, lehia, tokiko ekitaldiak aztertzen ditu. Konfiguratzeko 15 minutu behar ditu.",
"time": "Automatikoa"
},
"step3": {
"title": "Hasiko zara aurreikuspenak jasotzen",
"description": "Goiz bakoitzean 6:00etan: eguneko iragarpena, ekoizpen plana, onartzeko eskaerak.",
"title": "Goiz bakoitzean jasotzen duzu eguneko plana",
"description": "Zer egin, zer eskatu, noiz helduko den. Dena automatikoa, zuk bakarrik onartu.",
"time": "Hurrengo eguna"
}
},
"pilot": {
"badge": "Pilotu Programa - 20 Plaza Bakarrik",
"title": "20 Okindegi Aitzindari Bilatzen",
"subtitle": "Ez da guztientzat. Lehenengo 20 okindegiak hautatzen ari gara gure pilotu programa esklusiboa osatzeko.",
"what_you_get": {
"title": "Zer Lortzen Duzu",
"free_trial": "3 hilabete guztiz doan",
"lifetime_discount": "%20ko deskontua bizitza osoan jarraitzen baduzu",
"vip_support": "Sortzaile taldearen zuzeneko laguntza",
"influence": "Zure ideiak lehenik inplementatzen dira"
"badge": "⏰ PILOTU PROGRAMA • 12 PLAZA BAKARRIK GERATZEN DIRA",
"title": "Pilotu Programara Batu",
"subtitle": "3 hilabete doan + onura esklusiboa",
"you_get": {
"title": "Zer Lortzen Duzu",
"item1": "3 hilabete guztiz doan",
"item2": "Premium laguntza pertsonalizatua",
"item3": "Produktuaren garapenean eragina"
},
"what_we_ask": {
"title": "Zer Eskatzen Dugu",
"feedback": "Feedback zintzoa astero (15 min)",
"patience": "Pazientzia bug-ekin (beta fasean gaude)",
"data": "Salmenta datu historikoak (6-12 hilabete)",
"communication": "Komunikazio irekia"
"we_ask": {
"title": "🤝 Zer Behar Dugu",
"item1": "6-12 hilabeteko salmenta datuak",
"item2": "Kreditu txartela (3 hilabetez kargurik gabe)",
"item3": "Ulertu pilotu programa bat dela eta astero feedback-a erroreen eta hobetzeen gainean"
},
"spots_left": "20tik 12 plaza geratzen dira",
"cta": "Eskatu Pilotuko Plaza"
"cta": "Eskatu Plaza Orain"
},
"pricing": {
"badge": "Prezio Gardenak",
"title": "Plan Bakarra. Sorpresarik Gabe.",
"subtitle": "3 hilabete doan pilotoetarako. Gero €99/hilean (edo €79/hilean bizitza osoko deskontuarekin piloto izan bazinen).",
"title": "Prezio Gardenak",
"subtitle": "Sorpresarik gabe, ezkutuko kosturik gabe",
"compare_link": "Ikusi ezaugarrien konparaketa osoa",
"plan": {
"name": "Bakery-IA Osoa",
"pilot_price": "€0/hilean",
@@ -226,36 +197,37 @@
},
"faq": {
"badge": "Maiz Egiten Diren Galderak",
"title": "Beti Galdetzen Digutena",
"title": "Maiz Egiten Diren Galderak",
"subtitle": "Erantzun zintzo galdera errealei",
"q1": {
"question": "Benetan funtzionatzen du 6 hilabeteko datuekin bakarrik?",
"answer": "Bai. 6 hilabeterekin oinarrizko ereduak detekta ditzakegu (asteko eguna, gehien saltzen diren produktuak). 12 hilabeterekin, IAk denboraldiak ikasten ditu (abuztua vs abendua). Ideala 12 hilabete dira, baina 6 hilabete nahikoa da hasteko."
"question": "Zenbat datu behar ditut?",
"answer": "6-12 hilabeteko salmenta datuak. Datu gehiago = aurreikuspen hobeak, baina 6 hilabetatik funtzionatzen du."
},
"q2": {
"question": "Zer gertatzen da nire datuak desastre bat badira?",
"answer": "Gure taldeak laguntzen dizu garbitzen. Excel-en, paperean edo edozein formatutan salmentak badituzu, doan migratzen ditugu pilotuaren bitartean. Behar duguna bakarrik: data, saldutako produktua, kantitatea. Gainerakoa guk konpontzen dugu."
"question": "Zergatik eman behar dut nire txartela?",
"answer": "3 hilabeteko doan proba aldiaren ondoren automatikoki jarraitzeko. Edonoiz ezeztatu dezakezu kargurik gabe."
},
"q3": {
"question": "Zuen POS-a erabili behar dut ala nirearekin jarrai dezaket?",
"answer": "Zure POS aktualarekinen jarrai dezakezu gustatzen bazaizu. Gehiengo sistemekin integratzen gara. Okindegietarako optimizatutako gure POS propioa ere eskaintzen dugu (aukerakoa, planean sartuta)."
"question": "Zer gertatzen da nire datuekin?",
"answer": "%100 zureak. Zerbitzariak Espainian, RGPD betetzen dugu, inoiz ez ditugu zure informazioa partekatzen edo saltzen."
},
"q4": {
"question": "Zer gertatzen da 3 hilabete doanaren ondoren?",
"answer": "Zuk erabakitzen duzu. Jarraitu nahi baduzu, €79/hilean ordaintzen duzu (%20ko deskontua bizitza osoan piloto izateagatik). Bestela, ezeztatu azalpenik edo zigorrrik gabe. Zure datuak beti zureak dira eta nahi duzun tokira eramango ditugu."
"question": "Funtzionatzen al du nire okindegi motarako?",
"answer": "Bai. Tokiko ekoizpena edo obrador zentrala hainbat salmenta punturekin izan, sistemak zure negozio modelora egokitzen da."
},
"q5": {
"question": "Zergatik fidatu behar dut zuengan?",
"answer": "Galdera ona. Espainian erregistratutako enpresa bat gara, RGPD betetzen dugu, zure datuak inoiz ez dira EBtik ateratzen. Sortzaileak hamarkada bat baino gehiagoko esperientzia du IAn. Baina garrantzitsuena: 3 hilabeteko ondoren dirua aurreztea laguntzen ez badizugu, doan aholkularitza emango dizugu zure okindeg ia beste modu batean optimizatzeko. Arriskurik gabe zuretzat."
"question": "Zer gertatzen da stockik gabe geratzen banaiz?",
"answer": "Sistemak hau prebenitzen du. 7 egun aurrera proiektatzen du eta abisatzen dizu hornitzaileei noiz eskatu behar diozun, automatikoki erosketa aginduak sortuz."
}
},
"final_cta": {
"scarcity_badge": "🔥 20tik 12 plaza bakarrik geratzen dira",
"title": "Izan Lehenengo 20 Okindegien Artean",
"title_accent": "Teknologia Hau Probatzeko",
"subtitle": "Ez da guztientzat. Hondakinak murriztu eta irabaziak handitu nahi dituzten okindegiak bilatzen ari gara IAren laguntzarekin, feedback zintzoaren truke.",
"title": "Utzi Hilean €2,000 Galtzea Hondakinetan",
"title_accent": "Teknologia Hau Probatzen",
"subtitle": "Batu lehenengo 20 okindegiei. 12 plaza bakarrik geratzen dira.",
"button": "Hasi Orain - Txartelik Gabe",
"cta_primary": "Eskatu Pilotuko Plaza",
"cta_secondary": "Ikusi Demoa (2 min)",
"guarantee": "Bermea: 3 hilabete doan. Ezeztatu edonoiz. Arriskurik gabe."
"guarantee": "Txartela beharrezkoa. 3 hilabetez kargurik gabe. Ezeztatu edonoiz."
}
}

View File

@@ -70,5 +70,20 @@
"support": "24/7 laguntza dedikatua + kontu kudeatzailea",
"recommended_for": "Ogi-denda kateak, frantziziak, eskala mugagabea"
}
}
},
"billing": {
"monthly": "Hilekoa",
"yearly": "Urtekoa",
"save_percent": "Aurreztu %17",
"free_months": "{count, plural, one {# hilabete doan} other {# hilabete doan}}",
"free_trial_days": "{count, plural, one {# egun doan} other {# egun doan}}",
"card_required": "Txartela beharrezkoa balidaziorako"
},
"limits": {
"users": "Erabiltzaileak",
"locations": "Kokapena",
"products": "Produktuak",
"forecast": "Aurreikuspena",
"unlimited": "Mugagabea"
}
}

View File

@@ -726,7 +726,7 @@ const SubscriptionPage: React.FC = () => {
</p>
<p className="text-sm text-[var(--text-secondary)]">
Si tienes preguntas sobre tu suscripción o necesitas asistencia, contacta a nuestro equipo de soporte en{' '}
<a href="mailto:support@bakery-ia.com" className="text-blue-500 hover:underline">
<a href="mailto:support@bakery-ia.com" className="text-blue-500 hover:text-white hover:bg-blue-500 px-2 py-0.5 rounded transition-all duration-200 no-underline">
support@bakery-ia.com
</a>
</p>

View File

@@ -90,7 +90,7 @@ const CareersPage: React.FC = () => {
<span className="block text-[var(--color-primary)]">Paso a Paso</span>
</h1>
<p className="text-xl text-[var(--text-secondary)] leading-relaxed mb-8">
Panadería IA es actualmente un proyecto en solitario, enfocado en crear la mejor herramienta
{t('common:app.name', 'BakeWise')} es actualmente un proyecto en solitario, enfocado en crear la mejor herramienta
de IA para panaderías mediante contacto directo con clientes y ejecución ágil. Cuando llegue
el momento adecuado, construiré un equipo que comparta esta visión.
</p>

View File

@@ -414,7 +414,7 @@ export const CookiePolicyPage: React.FC = () => {
If you have questions about our use of cookies, please contact us:
</p>
<div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg">
<p className="font-semibold">Panadería IA</p>
<p className="font-semibold">{t('common:app.name', 'BakeWise')}</p>
<p>Email: privacy@panaderia-ia.com</p>
<p>Website: https://panaderia-ia.com</p>
</div>

View File

@@ -153,7 +153,7 @@ const FeedbackPage: React.FC = () => {
</div>
<h1 className="text-4xl lg:text-6xl font-extrabold text-[var(--text-primary)] mb-6">
Ayúdanos a Mejorar
<span className="block text-[var(--color-primary)]">Panadería IA</span>
<span className="block text-[var(--color-primary)]">{t('common:app.name', 'BakeWise')}</span>
</h1>
<p className="text-xl text-[var(--text-secondary)] leading-relaxed mb-8">
Tu feedback es fundamental para construir el mejor producto para panaderías

View File

@@ -282,10 +282,10 @@ const LandingPage: React.FC = () => {
</div>
<div className="flex-1">
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4">
{t('landing:pillar1.title', '🎯 Predice Demanda con Datos de Tu Zona')}
{t('landing:pillars.pillar1.title', '🎯 Predice Demanda con Datos de Tu Zona')}
</h3>
<p className="text-lg text-[var(--text-secondary)] mb-6">
{t('landing:pillar1.intro', 'IA que conoce tu barrio, no solo el calendario. Sabe que el colegio de al lado cierra en agosto, que los viernes hay mercado en tu plaza, y que abrió otra panadería a 500m.')}
{t('landing:pillars.pillar1.intro', 'IA que conoce tu barrio, no solo el calendario. Sabe que el colegio de al lado cierra en agosto, que los viernes hay mercado en tu plaza, y que abrió otra panadería a 500m.')}
</p>
<div className="grid md:grid-cols-2 gap-4">
@@ -293,44 +293,44 @@ const LandingPage: React.FC = () => {
<div className="flex items-center gap-3 mb-2">
<School className="w-5 h-5 text-blue-600" />
<h4 className="font-bold text-[var(--text-primary)]">
{t('landing:pillar1.schools', 'Colegios y Oficinas Cerca')}
{t('landing:pillars.pillar1.schools', 'Colegios y Oficinas Cerca')}
</h4>
</div>
<p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar1.schools_desc', 'Sabe cuándo hay vacaciones, horarios de oficina, eventos escolares')}
{t('landing:pillars.pillar1.schools_desc', 'Sabe cuándo hay vacaciones, horarios de oficina, eventos escolares')}
</p>
</div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4">
<div className="flex items-center gap-3 mb-2">
<Building2 className="w-5 h-5 text-purple-600" />
<h4 className="font-bold text-[var(--text-primary)]">
{t('landing:pillar1.competition', 'Tu Competencia')}
{t('landing:pillars.pillar1.competition', 'Tu Competencia')}
</h4>
</div>
<p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar1.competition_desc', 'Detecta nuevas panaderías en tu zona y ajusta predicciones')}
{t('landing:pillars.pillar1.competition_desc', 'Detecta nuevas panaderías en tu zona y ajusta predicciones')}
</p>
</div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4">
<div className="flex items-center gap-3 mb-2">
<Cloud className="w-5 h-5 text-sky-600" />
<h4 className="font-bold text-[var(--text-primary)]">
{t('landing:pillar1.weather', 'Clima Local (AEMET)')}
{t('landing:pillars.pillar1.weather', 'Clima Local')}
</h4>
</div>
<p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar1.weather_desc', 'Lluvia → menos croissants. Calor → más productos frescos')}
{t('landing:pillars.pillar1.weather_desc', 'Lluvia → menos croissants. Calor → más productos frescos')}
</p>
</div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4">
<div className="flex items-center gap-3 mb-2">
<Target className="w-5 h-5 text-amber-600" />
<h4 className="font-bold text-[var(--text-primary)]">
{t('landing:pillar1.events', 'Eventos y Festivales')}
{t('landing:pillars.pillar1.events', 'Eventos y Festivales')}
</h4>
</div>
<p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar1.events_desc', 'Fiestas del barrio, mercadillos, partidos importantes')}
{t('landing:pillars.pillar1.events_desc', 'Fiestas del barrio, mercadillos, partidos importantes')}
</p>
</div>
</div>
@@ -352,48 +352,48 @@ const LandingPage: React.FC = () => {
</div>
<div className="flex-1">
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4">
{t('landing:pillar2.title', '🤖 Sistema Automático Cada Mañana')}
{t('landing:pillars.pillar2.title', '🤖 Sistema Automático Cada Mañana')}
</h3>
<p className="text-lg text-[var(--text-secondary)] mb-6">
{t('landing:pillar2.intro', 'Despierta con todo el trabajo hecho. A las 5:30 AM el sistema ya predijo ventas, planificó producción, gestionó inventario y creó pedidos a proveedores.')}
{t('landing:pillars.pillar2.intro', 'Despierta con todo el trabajo hecho. A las 5:30 AM el sistema ya predijo ventas, planificó producción, gestionó inventario y creó pedidos a proveedores.')}
</p>
<div className="space-y-3">
<div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]">
<strong>{t('landing:pillar2.step1', 'Predice ventas de hoy:')}</strong> {t('landing:pillar2.step1_desc', '"Harás 80 croissants, 120 barras"')}
<strong>{t('landing:pillars.pillar2.step1', 'Predice ventas de hoy:')}</strong> {t('landing:pillars.pillar2.step1_desc', '"Harás 80 croissants, 120 barras"')}
</p>
</div>
<div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]">
<strong>{t('landing:pillar2.step2', 'Planifica producción:')}</strong> {t('landing:pillar2.step2_desc', 'Lista exacta de lo que hornear')}
<strong>{t('landing:pillars.pillar2.step2', 'Planifica producción:')}</strong> {t('landing:pillars.pillar2.step2_desc', 'Lista exacta de lo que hornear')}
</p>
</div>
<div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]">
<strong>{t('landing:pillar2.step3', 'Gestiona inventario:')}</strong> {t('landing:pillar2.step3_desc', 'Proyecta 7 días → "Te quedarás sin harina en 4 días, pide 50kg hoy"')}
<strong>{t('landing:pillars.pillar2.step3', 'Gestiona inventario:')}</strong> {t('landing:pillars.pillar2.step3_desc', 'Proyecta 7 días → "Te quedarás sin harina en 4 días, pide 50kg hoy"')}
</p>
</div>
<div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]">
<strong>{t('landing:pillar2.step4', 'Previene desperdicios:')}</strong> {t('landing:pillar2.step4_desc', '"Leche caduca en 5 días, no pidas más de 15L"')}
<strong>{t('landing:pillars.pillar2.step4', 'Previene desperdicios:')}</strong> {t('landing:pillars.pillar2.step4_desc', '"Leche caduca en 5 días, no pidas más de 15L"')}
</p>
</div>
<div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]">
<strong>{t('landing:pillar2.step5', 'Crea pedidos:')}</strong> {t('landing:pillar2.step5_desc', 'Listos para aprobar con 1 clic')}
<strong>{t('landing:pillars.pillar2.step5', 'Crea pedidos:')}</strong> {t('landing:pillars.pillar2.step5_desc', 'Listos para aprobar con 1 clic')}
</p>
</div>
</div>
<div className="mt-6 bg-gradient-to-r from-blue-50 to-indigo-50 dark:from-blue-900/20 dark:to-indigo-900/20 rounded-lg p-4 border-l-4 border-blue-600">
<p className="font-bold text-[var(--text-primary)]">
{t('landing:pillar2.key', '🔑 Nunca llegas al punto de quedarte sin stock. El sistema lo previene 7 días antes.')}
{t('landing:pillars.pillar2.key', '🔑 Nunca llegas al punto de quedarte sin stock. El sistema lo previene 7 días antes.')}
</p>
</div>
</div>
@@ -408,45 +408,45 @@ const LandingPage: React.FC = () => {
</div>
<div className="flex-1">
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4">
{t('landing:pillar3.title', 'Tus Datos, Tu Impacto Ambiental')}
{t('landing:pillars.pillar3.title', 'Tus Datos, Tu Impacto Ambiental')}
</h3>
<p className="text-lg text-[var(--text-secondary)] mb-6">
{t('landing:pillar3.intro', '100% de tus datos te pertenecen. Mide tu impacto ambiental automáticamente y genera informes de sostenibilidad que cumplen con los estándares internacionales.')}
{t('landing:pillars.pillar3.intro', '100% de tus datos te pertenecen. Mide tu impacto ambiental automáticamente y genera informes de sostenibilidad que cumplen con los estándares internacionales.')}
</p>
<div className="grid md:grid-cols-3 gap-4 mb-6">
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
<div className="text-3xl font-bold text-green-600 mb-2">
{t('landing:pillar3.data_ownership_value', '100%')}
{t('landing:pillars.pillar3.data_ownership_value', '100%')}
</div>
<p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar3.data_ownership', 'Propiedad de datos')}
{t('landing:pillars.pillar3.data_ownership', 'Propiedad de datos')}
</p>
</div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
<div className="text-3xl font-bold text-blue-600 mb-2">
{t('landing:pillar3.co2_metric', 'CO₂')}
{t('landing:pillars.pillar3.co2_metric', 'CO₂')}
</div>
<p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar3.co2', 'Medición automática')}
{t('landing:pillars.pillar3.co2', 'Medición automática')}
</p>
</div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
<div className="text-3xl font-bold text-amber-600 mb-2">
{t('landing:pillar3.sdg_value', 'ODS 12.3')}
{t('landing:pillars.pillar3.sdg_value', 'ODS 12.3')}
</div>
<p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar3.sdg', 'Seguimiento de cumplimiento')}
{t('landing:pillars.pillar3.sdg', 'Seguimiento de cumplimiento')}
</p>
</div>
</div>
<div className="bg-gradient-to-r from-green-50 to-emerald-50 dark:from-green-900/20 dark:to-emerald-900/20 rounded-lg p-4 border-l-4 border-green-600">
<p className="font-bold text-[var(--text-primary)] mb-2">
{t('landing:pillar3.sustainability_title', 'Informes de Sostenibilidad Automatizados')}
{t('landing:pillars.pillar3.sustainability_title', 'Informes de Sostenibilidad Automatizados')}
</p>
<p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar3.sustainability_desc', 'Genera informes que cumplen con los estándares internacionales de sostenibilidad y reducción de desperdicio alimentario')}
{t('landing:pillars.pillar3.sustainability_desc', 'Genera informes que cumplen con los estándares internacionales de sostenibilidad y reducción de desperdicio alimentario')}
</p>
</div>
</div>
@@ -456,7 +456,7 @@ const LandingPage: React.FC = () => {
{/* Link to Features Page */}
<div className="mt-12 text-center">
<Link to="/features" className="inline-flex items-center gap-2 text-[var(--color-primary)] hover:text-[var(--color-primary-dark)] font-semibold text-lg group">
<Link to="/features" className="inline-flex items-center gap-2 text-[var(--color-primary)] hover:text-white font-semibold text-lg group px-6 py-3 rounded-lg transition-all duration-200 hover:bg-[var(--color-primary)] no-underline">
{t('landing:pillars.see_all', 'Ver todas las funcionalidades en detalle')}
<ChevronRight className="w-5 h-5 group-hover:translate-x-1 transition-transform" />
</Link>
@@ -571,6 +571,10 @@ const LandingPage: React.FC = () => {
<Check className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<span className="text-[var(--text-secondary)]">{t('landing:pilot.we_ask.item2', 'Tarjeta de crédito (sin cargo por 3 meses)')}</span>
</li>
<li className="flex items-start gap-2">
<Check className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<span className="text-[var(--text-secondary)]">{t('landing:pilot.we_ask.item3', 'Comprensión de que es un programa piloto y feedback semanal sobre fallos y mejoras')}</span>
</li>
</ul>
</div>
</div>

View File

@@ -35,7 +35,7 @@ export const PrivacyPolicyPage: React.FC = () => {
The data controller responsible for your personal data is:
</p>
<div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg mb-4">
<p className="font-semibold">Panadería IA</p>
<p className="font-semibold">{t('common:app.name', 'BakeWise')}</p>
<p>Email: privacy@panaderia-ia.com</p>
<p>Website: https://panaderia-ia.com</p>
</div>

View File

@@ -32,13 +32,13 @@ export const TermsOfServicePage: React.FC = () => {
1. {t('legal:terms.section_1_title', 'Agreement to Terms')}
</h2>
<p className="text-gray-700 dark:text-gray-300 mb-4">
By accessing or using Panadería IA ("the Platform", "our Service"), you agree to be
By accessing or using {t('common:app.name', 'BakeWise')} ("the Platform", "our Service"), you agree to be
bound by these Terms of Service ("Terms"). If you do not agree to these Terms, do not
use the Platform.
</p>
<p className="text-gray-700 dark:text-gray-300">
These Terms constitute a legally binding agreement between you ("User", "you", "your")
and Panadería IA regarding your use of the Platform.
and {t('common:app.name', 'BakeWise')} regarding your use of the Platform.
</p>
</section>
@@ -47,7 +47,7 @@ export const TermsOfServicePage: React.FC = () => {
2. {t('legal:terms.section_2_title', 'Description of Service')}
</h2>
<p className="text-gray-700 dark:text-gray-300 mb-4">
Panadería IA provides a comprehensive bakery management platform that includes:
{t('common:app.name', 'BakeWise')} provides a comprehensive bakery management platform that includes:
</p>
<ul className="list-disc pl-6 mb-4 text-gray-700 dark:text-gray-300 space-y-1">
<li>Inventory management and tracking</li>
@@ -176,7 +176,7 @@ export const TermsOfServicePage: React.FC = () => {
6.1 Platform Ownership
</h3>
<p className="text-gray-700 dark:text-gray-300 mb-4">
The Platform and all content, features, and functionality are owned by Panadería IA and
The Platform and all content, features, and functionality are owned by {t('common:app.name', 'BakeWise')} and
are protected by international copyright, trademark, and other intellectual property laws.
</p>
@@ -197,7 +197,7 @@ export const TermsOfServicePage: React.FC = () => {
6.3 Trademarks
</h3>
<p className="text-gray-700 dark:text-gray-300">
"Panadería IA" and our logo are trademarks. You may not use our trademarks without
"{t('common:app.name', 'BakeWise')}" and our logo are trademarks. You may not use our trademarks without
prior written consent.
</p>
</section>
@@ -300,7 +300,7 @@ export const TermsOfServicePage: React.FC = () => {
10. {t('legal:terms.section_10_title', 'Indemnification')}
</h2>
<p className="text-gray-700 dark:text-gray-300">
You agree to indemnify and hold harmless Panadería IA from any claims, damages, losses,
You agree to indemnify and hold harmless {t('common:app.name', 'BakeWise')} from any claims, damages, losses,
liabilities, and expenses (including legal fees) arising from:
</p>
<ul className="list-disc pl-6 mb-4 text-gray-700 dark:text-gray-300 space-y-1">
@@ -364,7 +364,7 @@ export const TermsOfServicePage: React.FC = () => {
</h3>
<p className="text-gray-700 dark:text-gray-300 mb-4">
These Terms, together with our Privacy Policy and Cookie Policy, constitute the entire
agreement between you and Panadería IA.
agreement between you and {t('common:app.name', 'BakeWise')}.
</p>
<h3 className="text-xl font-semibold text-gray-900 dark:text-white mb-3">
@@ -398,7 +398,7 @@ export const TermsOfServicePage: React.FC = () => {
For questions about these Terms, contact us at:
</p>
<div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg">
<p className="font-semibold">Panadería IA</p>
<p className="font-semibold">{t('common:app.name', 'BakeWise')}</p>
<p>Email: legal@panaderia-ia.com</p>
<p>Website: https://panaderia-ia.com</p>
</div>

View File

@@ -182,7 +182,7 @@ export const routesConfig: RouteConfig[] = [
path: ROUTES.HOME,
name: 'Home',
component: 'HomePage',
title: 'Panadería IA - Gestión Inteligente',
title: 'BakeWise - Gestión Inteligente',
requiresAuth: false,
showInNavigation: false,
meta: {
@@ -220,7 +220,7 @@ export const routesConfig: RouteConfig[] = [
path: ROUTES.FEATURES,
name: 'Features',
component: 'FeaturesPage',
title: 'Funcionalidades - Bakery-IA',
title: 'Funcionalidades - BakeWise',
requiresAuth: false,
showInNavigation: false,
meta: {

View File

@@ -11,7 +11,7 @@ elif [ -z "$VITE_API_URL" ]; then
fi
# Default values for environment variables
export VITE_APP_TITLE=${VITE_APP_TITLE:-"PanIA Dashboard"}
export VITE_APP_TITLE=${VITE_APP_TITLE:-"BakeWise"}
export VITE_APP_VERSION=${VITE_APP_VERSION:-"1.0.0"}
# Default values for pilot program configuration