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

@@ -1,6 +1,6 @@
# 🍞 Bakery IA - Multi-Service Architecture # 🍞 BakeWise - Multi-Service Architecture
Welcome to Bakery IA, an advanced AI-powered platform for bakery management and optimization. This project implements a microservices architecture with multiple interconnected services to provide comprehensive bakery management solutions. Welcome to BakeWise, an advanced AI-powered platform for bakery management and optimization. This project implements a microservices architecture with multiple interconnected services to provide comprehensive bakery management solutions.
## 🚀 Quick Start ## 🚀 Quick Start

View File

@@ -21,7 +21,7 @@
<!-- Runtime configuration - MUST load before app code (Kubernetes deployment) --> <!-- Runtime configuration - MUST load before app code (Kubernetes deployment) -->
<script src="/runtime-config.js"></script> <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> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>

View File

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

View File

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

View File

@@ -194,15 +194,11 @@ export const PublicHeader = forwardRef<PublicHeaderRef, PublicHeaderProps>(({
const linkContent = ( const linkContent = (
<span className={clsx( <span className={clsx(
"relative text-sm font-medium transition-all duration-200", "relative text-sm font-medium transition-all duration-200 px-3 py-1.5 rounded-md",
isMobile ? "text-base py-1" : "", isMobile ? "text-base py-2" : "",
isActive isActive
? "text-[var(--color-primary)]" ? "text-[var(--color-primary)] bg-[var(--color-primary)]/10"
: "text-[var(--text-secondary)] hover:text-[var(--text-primary)]", : "text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:bg-[var(--bg-secondary)]"
// 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"
)}> )}>
{item.label} {item.label}
</span> </span>
@@ -302,11 +298,14 @@ export const PublicHeader = forwardRef<PublicHeaderRef, PublicHeaderProps>(({
<Link to="/" className="flex items-center gap-3 hover:opacity-80 transition-opacity"> <Link to="/" className="flex items-center gap-3 hover:opacity-80 transition-opacity">
{logo || ( {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"> <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">
PI <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> </div>
<h1 className="text-xl lg:text-2xl font-bold text-[var(--text-primary)]"> <h1 className="text-xl lg:text-2xl font-bold text-[var(--text-primary)]">
Panadería IA {t('common:app.name', 'BakeWise')}
</h1> </h1>
</> </>
)} )}
@@ -430,11 +429,14 @@ export const PublicHeader = forwardRef<PublicHeaderRef, PublicHeaderProps>(({
{/* Drawer header */} {/* Drawer header */}
<div className="flex items-center justify-between p-4 border-b border-[var(--border-primary)]"> <div className="flex items-center justify-between p-4 border-b border-[var(--border-primary)]">
<div className="flex items-center gap-2"> <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"> <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">
PI <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> </div>
<h2 className="text-lg font-bold text-[var(--text-primary)]"> <h2 className="text-lg font-bold text-[var(--text-primary)]">
Panadería IA {t('common:app.name', 'BakeWise')}
</h2> </h2>
</div> </div>
<Button <Button

View File

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

View File

@@ -20,7 +20,7 @@ export const PricingSection: React.FC = () => {
<div className="text-center mt-12"> <div className="text-center mt-12">
<Link <Link
to="/plans/compare" 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')} {t('landing:pricing.compare_link', 'Ver comparación completa de características')}
<ArrowRight className="w-4 h-4" /> <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 ${ className={`px-6 py-2 rounded-md text-sm font-semibold transition-all ${
billingCycle === 'monthly' billingCycle === 'monthly'
? 'bg-[var(--color-primary)] text-white shadow-md' ? '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>
<button <button
onClick={() => setBillingCycle('yearly')} onClick={() => setBillingCycle('yearly')}
className={`px-6 py-2 rounded-md text-sm font-semibold transition-all flex items-center gap-2 ${ className={`px-6 py-2 rounded-md text-sm font-semibold transition-all flex items-center gap-2 ${
billingCycle === 'yearly' billingCycle === 'yearly'
? 'bg-[var(--color-primary)] text-white shadow-md' ? '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"> <span className="text-xs font-bold text-green-600 dark:text-green-400">
Ahorra 17% {t('billing.save_percent', 'Ahorra 17%')}
</span> </span>
</button> </button>
</div> </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 ${ <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)]' 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> </div>
)} )}
{!savings && !showPilotBanner && ( {!savings && !showPilotBanner && (
<div className={`mt-2 px-3 py-1 text-sm font-medium rounded-full inline-block ${ <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)]' 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>
)} )}
</div> </div>
@@ -359,37 +359,37 @@ export const SubscriptionPricingCards: React.FC<SubscriptionPricingCardsProps> =
<div className="flex items-center justify-between text-xs"> <div className="flex items-center justify-between text-xs">
<span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}> <span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}>
<Users className="w-3 h-3 inline mr-1" /> <Users className="w-3 h-3 inline mr-1" />
Usuarios {t('limits.users', 'Usuarios')}
</span> </span>
<span className={`font-bold ${isPopular ? 'text-white' : isSelected ? 'text-[var(--color-primary)]' : 'text-[var(--text-primary)]'}`}> <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> </span>
</div> </div>
<div className="flex items-center justify-between text-xs"> <div className="flex items-center justify-between text-xs">
<span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}> <span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}>
<MapPin className="w-3 h-3 inline mr-1" /> <MapPin className="w-3 h-3 inline mr-1" />
Ubicaciones {t('limits.locations', 'Ubicaciones')}
</span> </span>
<span className={`font-bold ${isPopular ? 'text-white' : isSelected ? 'text-[var(--color-primary)]' : 'text-[var(--text-primary)]'}`}> <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> </span>
</div> </div>
<div className="flex items-center justify-between text-xs"> <div className="flex items-center justify-between text-xs">
<span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}> <span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}>
<Package className="w-3 h-3 inline mr-1" /> <Package className="w-3 h-3 inline mr-1" />
Productos {t('limits.products', 'Productos')}
</span> </span>
<span className={`font-bold ${isPopular ? 'text-white' : isSelected ? 'text-[var(--color-primary)]' : 'text-[var(--text-primary)]'}`}> <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> </span>
</div> </div>
<div className="flex items-center justify-between text-xs"> <div className="flex items-center justify-between text-xs">
<span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}> <span className={isPopular ? 'text-white/95' : 'text-[var(--text-secondary)]'}>
<TrendingUp className="w-3 h-3 inline mr-1" /> <TrendingUp className="w-3 h-3 inline mr-1" />
Pronóstico {t('limits.forecast', 'Pronóstico')}
</span> </span>
<span className={`font-bold ${isPopular ? 'text-white' : isSelected ? 'text-[var(--color-primary)]' : 'text-[var(--text-primary)]'}`}> <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> </span>
</div> </div>
</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)]'}`}> <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> </p>
</CardWrapper> </CardWrapper>
); );

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
{ {
"hero": { "hero": {
"pre_headline": "For Bakeries Losing Money on Waste", "pre_headline": "",
"scarcity": "Only 12 spots left out of 20 • 3 months FREE", "scarcity": "Only 12 spots left out of 20 • 3 months FREE",
"scarcity_badge": "🔥 Only 12 spots left out of 20 in pilot program", "scarcity_badge": "🔥 Only 12 spots left out of 20 in pilot program",
"badge": "Advanced AI for Modern Bakeries", "badge": "Advanced AI for Modern Bakeries",
@@ -10,15 +10,15 @@
"title_option_a_line2": "and Save Thousands", "title_option_a_line2": "and Save Thousands",
"title_option_b": "Stop Guessing How Much to Bake Every Day", "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": "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.", "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_primary": "Join Pilot Program",
"cta_secondary": "See How It Works (2 min)", "cta_secondary": "See How It Works (2 min)",
"cta_demo": "See Demo", "cta_demo": "See Demo",
"social_proof": { "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)", "accuracy": "92% accurate predictions (vs 60% generic systems)",
"setup": "15-minute setup" "setup": "Automatic ordering and production system"
}, },
"trust": { "trust": {
"no_cc": "3 months free", "no_cc": "3 months free",
@@ -28,109 +28,76 @@
} }
}, },
"problems": { "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", "subtitle": "If you own a bakery, you know exactly what we're talking about",
"problem1": { "item1": {
"title": "You throw away 50 loaves a day \"just in case\"", "title": "Daily Waste",
"description": "50 loaves × €2 = €100/day =3,000/month in the trash. And that's just bread." "description": "You throw away2,000 per month because you produce \"just in case\" and end up with unsold bread."
}, },
"problem2": { "item2": {
"title": "Customers leave empty-handed", "title": "Guessing Every Day",
"description": "\"You're out of croissants at 2 PM\" = lost sales + frustrated customers." "description": "You don't know how much to make. Sometimes you run out of stock, sometimes there's too much left over."
}, },
"problem3": { "item3": {
"title": "You plan \"by eye\" with Excel", "title": "Time Lost",
"description": "Based on experience and gut feelings. It works... until it doesn't." "description": "Hours calculating orders, checking inventory, planning production manually."
} }
}, },
"solutions": { "solutions": {
"title": "The Solution", "title": "The AI Solution",
"subtitle": "AI that knows YOUR bakery, YOUR neighborhood, YOUR customers", "subtitle": "AI that knows YOUR bakery, YOUR neighborhood, YOUR customers",
"solution1": { "item1": {
"title": "Predicts real demand (92% accuracy)", "title": "Save €500-2,000/Month",
"description": "Knows tomorrow is a rainy Monday, school closed, market cancelled → you'll sell 78 croissants (not 100)." "description": "Reduce waste by 20-40% producing exactly what you're going to sell."
}, },
"solution2": { "item2": {
"title": "Automatic system every morning", "title": "92% Accurate Predictions",
"description": "5:30 AM: reviews inventory, predicts sales, plans production, creates orders. You arrive at 6:00 and everything's ready." "description": "Knows exactly how much you'll sell tomorrow based on your data and environment."
}, },
"solution3": { "item3": {
"title": "Your data = your grants", "title": "Total Automation",
"description": "100% your data + certified waste reduction = access to €50,000 in European sustainability grants." "description": "Automatic system every morning: prediction, production, orders. Everything ready at 6 AM."
} }
}, },
"pillars": { "pillars": {
"badge": "The 3 System Keys", "badge": "The 3 Keys to the System",
"title": "Why It Works For Your Bakery", "title": "How BakeWise Works",
"subtitle": "It's not magic. It's math applied to YOUR reality.", "subtitle": "Three pillars that transform your bakery",
"see_all": "See all features in detail",
"pillar1": { "pillar1": {
"title": "🎯 Predicts Demand with Your Area's Data", "title": "🎯 Predicts Demand with Local 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.", "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": { "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", "title": "Nearby Schools",
"item1": "\"CEIP San José is 200m away\"", "item1": "\"CEIP San José is 200m away\"",
"item2": "\"In August sales drop 40% (school vacation)\"", "item2": "\"In August sales drop 40% (school vacation)\"",
"item3": "\"Mondays at 8:30 AM peak (parents after drop-off)\"" "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)", "accuracy": "Accuracy: 92% (vs 60-70% for generic systems)",
"cta": "See All Features" "cta": "See All Features"
}, },
"pillar2": { "pillar2": {
"title": "🤖 Automatic System Every Morning", "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:", "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": { "step1": "Predicts today's sales:",
"title": "5:30 AM - Reviews Your Entire Inventory", "step1_desc": "\"You'll make 80 croissants, 120 loaves\"",
"item1": "Counts every kilo of flour, every liter of milk", "step2": "Plans production:",
"item2": "Checks expiration dates", "step2_desc": "Exact list of what to bake",
"item3": "Sees what's arriving today from suppliers" "step3": "Manages inventory:",
}, "step3_desc": "Projects 7 days → \"You'll run out of flour in 4 days, order 50kg today\"",
"step2": { "step4": "Prevents waste:",
"title": "5:35 AM - Predicts Today's Sales", "step4_desc": "\"Milk expires in 5 days, don't order more than 15L\"",
"item1": "Analyzes the day (rainy Monday, local holiday, school closed)", "step5": "Creates orders:",
"item2": "Compares with similar past days", "step5_desc": "Ready to approve with 1 click",
"item3": "Tells you: \"Today you'll sell 80 croissants, 120 loaves, 50 muffins\"" "key": "🔑 You never run out of stock. The system prevents it 7 days in advance.",
},
"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"
},
"result": { "result": {
"title": "6:00 AM - You Receive an Email", "title": "6:00 AM - You Receive an Email",
"item1": "Day's forecast completed ✅", "item1": "Day's forecast completed ✅",
@@ -156,8 +123,8 @@
"data_ownership": "Data ownership", "data_ownership": "Data ownership",
"co2_metric": "CO₂", "co2_metric": "CO₂",
"co2": "Automatic measurement", "co2": "Automatic measurement",
"sdg_value": "SDG 12.3", "sdg_value": "Green",
"sdg": "Compliance tracking", "sdg": "Sustainability certified",
"sustainability_title": "Automated Sustainability Reports", "sustainability_title": "Automated Sustainability Reports",
"sustainability_desc": "Generate reports that comply with international sustainability standards and food waste reduction", "sustainability_desc": "Generate reports that comply with international sustainability standards and food waste reduction",
"cta": "See All Features" "cta": "See All Features"
@@ -165,48 +132,47 @@
}, },
"how_it_works": { "how_it_works": {
"title": "How to Get Started", "title": "How to Get Started",
"subtitle": "3 steps. 10 minutes. Done.", "subtitle": "In 3 simple steps",
"step1": { "step1": {
"title": "Upload 6-12 months of sales data", "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.", "description": "More months = more accurate predictions. If you only have 6 months, it works fine, but improves over time.",
"time": "5 minutes" "time": "5 minutes"
}, },
"step2": { "step2": {
"title": "AI learns from YOUR bakery", "title": "AI learns your patterns and environment",
"description": "Analyzes your patterns, products, seasonality. You don't need to configure anything.", "description": "Analyzes your sales, weather, competition, local events. Takes 15 minutes to set up.",
"time": "Automatic" "time": "Automatic"
}, },
"step3": { "step3": {
"title": "Start receiving predictions", "title": "Every morning you receive your daily plan",
"description": "Every morning at 6:00 AM: day's forecast, production plan, orders to approve.", "description": "What to make, what to order, when it arrives. Everything automatic, you just approve.",
"time": "Next day" "time": "Next day"
} }
}, },
"pilot": { "pilot": {
"badge": "Pilot Program - Only 20 Spots", "badge": "⏰ PILOT PROGRAM • ONLY 12 SPOTS LEFT",
"title": "Looking for 20 Pioneer Bakeries", "title": "Join the Pilot Program",
"subtitle": "It's not for everyone. We're selecting the first 20 bakeries to join our exclusive pilot program.", "subtitle": "3 months free + exclusive benefits",
"what_you_get": { "you_get": {
"title": "What You Get", "title": "What You Get",
"free_trial": "3 months completely free", "item1": "3 months completely free",
"lifetime_discount": "20% lifetime discount if you continue", "item2": "Premium personalized support",
"vip_support": "Direct support from founding team", "item3": "Influence on product development"
"influence": "Your ideas implemented first"
}, },
"what_we_ask": { "we_ask": {
"title": "What We Ask", "title": "🤝 What We Need",
"feedback": "Honest weekly feedback (15 min)", "item1": "6-12 months of sales data",
"patience": "Patience with bugs (we're in beta)", "item2": "Credit card (no charge for 3 months)",
"data": "Historical sales data (6-12 months)", "item3": "Understanding this is a pilot program and weekly feedback on bugs and improvements"
"communication": "Open communication"
}, },
"spots_left": "12 spots left out of 20", "spots_left": "12 spots left out of 20",
"cta": "Request Pilot Spot" "cta": "Request Spot Now"
}, },
"pricing": { "pricing": {
"badge": "Transparent Pricing", "badge": "Transparent Pricing",
"title": "One Plan. No Surprises.", "title": "Transparent Pricing",
"subtitle": "3 months free for pilots. Then €99/month (or €79/month with lifetime discount if you were a pilot).", "subtitle": "No surprises, no hidden costs",
"compare_link": "See complete feature comparison",
"plan": { "plan": {
"name": "Bakery-AI Complete", "name": "Bakery-AI Complete",
"pilot_price": "€0/month", "pilot_price": "€0/month",
@@ -231,36 +197,37 @@
}, },
"faq": { "faq": {
"badge": "Frequently Asked Questions", "badge": "Frequently Asked Questions",
"title": "What We're Always Asked", "title": "Frequently Asked Questions",
"subtitle": "Honest answers to real questions", "subtitle": "Honest answers to real questions",
"q1": { "q1": {
"question": "Does it really work with only 6 months of data?", "question": "How much data do I need?",
"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." "answer": "6-12 months of sales data. More data = better predictions, but it works from 6 months."
}, },
"q2": { "q2": {
"question": "What if my data is a mess?", "question": "Why do I need to provide my card?",
"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." "answer": "To automatically continue after the 3-month free trial period. You can cancel anytime without charge."
}, },
"q3": { "q3": {
"question": "Do I have to use your POS or can I keep mine?", "question": "What happens to my data?",
"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)." "answer": "100% yours. Servers in Spain, GDPR compliant, we never share or sell your information."
}, },
"q4": { "q4": {
"question": "What happens after the 3 free months?", "question": "Does it work for my type of bakery?",
"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." "answer": "Yes. Whether local production or central bakery with multiple points of sale, the system adapts to your business model."
}, },
"q5": { "q5": {
"question": "Why should I trust you?", "question": "What if I run out of stock?",
"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." "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": { "final_cta": {
"scarcity_badge": "🔥 Only 12 spots left out of 20", "scarcity_badge": "🔥 Only 12 spots left out of 20",
"title": "Be Among the First 20 Bakeries", "title": "Stop Losing €2,000 per Month on Waste",
"title_accent": "To Try This Technology", "title_accent": "Trying 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.", "subtitle": "Join the first 20 bakeries. Only 12 spots left.",
"button": "Start Now - No Card Required",
"cta_primary": "Request Pilot Spot", "cta_primary": "Request Pilot Spot",
"cta_secondary": "See Demo (2 min)", "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", "support": "24/7 dedicated support + account manager",
"recommended_for": "Bakery chains, franchises, unlimited scale" "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" "search": "Buscar en la aplicación"
}, },
"app": { "app": {
"name": "Panadería IA", "name": "BakeWise",
"full_name": "Panadería IA - Sistema Inteligente" "full_name": "BakeWise - Gestión Inteligente para Panaderías"
}, },
"profile": { "profile": {
"my_profile": "Mi perfil", "my_profile": "Mi perfil",

View File

@@ -1,6 +1,6 @@
{ {
"hero": { "hero": {
"pre_headline": "Para Panaderías que Pierden Dinero en Desperdicios", "pre_headline": "",
"scarcity": "Solo 12 plazas restantes de 20 • 3 meses GRATIS", "scarcity": "Solo 12 plazas restantes de 20 • 3 meses GRATIS",
"scarcity_badge": "🔥 Solo 12 plazas restantes de 20 en el programa piloto", "scarcity_badge": "🔥 Solo 12 plazas restantes de 20 en el programa piloto",
"badge": "IA Avanzada para Panaderías Modernas", "badge": "IA Avanzada para Panaderías Modernas",
@@ -10,15 +10,15 @@
"title_option_a_line2": "y Ahorra Miles", "title_option_a_line2": "y Ahorra Miles",
"title_option_b": "Deja de Adivinar Cuánto Hornear Cada Día", "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": "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.", "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_primary": "Únete al Programa Piloto",
"cta_secondary": "Ver Cómo Funciona (2 min)", "cta_secondary": "Ver Cómo Funciona (2 min)",
"cta_demo": "Ver Demo", "cta_demo": "Ver Demo",
"social_proof": { "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)", "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": { "trust": {
"no_cc": "3 meses gratis", "no_cc": "3 meses gratis",
@@ -28,109 +28,76 @@
} }
}, },
"problems": { "problems": {
"title": "El Problema Que Resolvemos", "title": "❌ Los Problemas Que Enfrentas",
"subtitle": "Si tienes una panadería, sabes exactamente de qué hablamos", "subtitle": "Si tienes una panadería, sabes exactamente de qué hablamos",
"problem1": { "item1": {
"title": "Tiras 50 panes al día \"por si acaso\"", "title": "Desperdicios Diarios",
"description": "50 panes × €2 = €100/día = €3,000/mes a la basura. Y eso solo en pan." "description": "Tiras €2,000 al mes porque produces \"por si acaso\" y terminas con pan que no se vende."
}, },
"problem2": { "item2": {
"title": "Clientes se van sin comprar", "title": "Adivinando Cada Día",
"description": "\"Ya no te quedan croissants a las 14:00\" = ventas perdidas + clientes frustrados." "description": "No sabes cuánto hacer. A veces te quedas sin stock, a veces sobra demasiado."
}, },
"problem3": { "item3": {
"title": "Planificas \"a ojo\" con Excel", "title": "Tiempo Perdido",
"description": "Basándote en experiencia y corazonadas. Funciona... hasta que no funciona." "description": "Horas calculando pedidos, revisando inventario, planificando producción manualmente."
} }
}, },
"solutions": { "solutions": {
"title": "La Solución", "title": "La Solución Con IA",
"subtitle": "IA que conoce TU panadería, TU barrio, TUS clientes", "subtitle": "IA que conoce TU panadería, TU barrio, TUS clientes",
"solution1": { "item1": {
"title": "Predice demanda real (92% precisión)", "title": "Ahorra €500-2,000/Mes",
"description": "Sabe que mañana es lunes lluvioso, colegio cerrado, mercadillo cancelado → venderás 78 croissants (no 100)." "description": "Reduce desperdicios 20-40% produciendo exactamente lo que vas a vender."
}, },
"solution2": { "item2": {
"title": "Sistema automático cada mañana", "title": "Predicciones 92% Precisas",
"description": "5:30 AM: revisa inventario, predice ventas, planifica producción, crea pedidos. Tú llegas a las 6:00 y todo está listo." "description": "Sabe exactamente cuánto venderás mañana basándose en tus datos y tu entorno."
}, },
"solution3": { "item3": {
"title": "Tus datos = tus subvenciones", "title": "Automatización Total",
"description": "Datos 100% tuyos + reducción de desperdicios certificada = acceso a €50,000 en ayudas europeas de sostenibilidad." "description": "Sistema automático cada mañana: predicción, producción, pedidos. Todo listo a las 6 AM."
} }
}, },
"pillars": { "pillars": {
"badge": "Las 3 Claves del Sistema", "badge": "Las 3 Claves del Sistema",
"title": "Por Qué Funciona Para Tu Panadería", "title": "Cómo Funciona BakeWise",
"subtitle": "No es magia. Es matemática aplicada a TU realidad.", "subtitle": "Tres pilares que transforman tu panadería",
"see_all": "Ver todas las funcionalidades en detalle",
"pillar1": { "pillar1": {
"title": "🎯 Predice Demanda con Datos de Tu Zona", "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.", "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", "title": "Colegios Cerca",
"item1": "\"El CEIP San José está a 200m\"", "item1": "\"El CEIP San José está a 200m\"",
"item2": "\"En agosto vendes 40% menos (vacaciones)\"", "item2": "\"En agosto vendes 40% menos (vacaciones)\"",
"item3": "\"Los lunes a las 8:30 hay pico (padres)\"" "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)", "accuracy": "Precisión: 92% (vs 60-70% de sistemas genéricos)",
"cta": "Ver Todas las Funcionalidades" "cta": "Ver Todas las Funcionalidades"
}, },
"pillar2": { "pillar2": {
"title": "🤖 Sistema Automático Cada Mañana", "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:", "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": { "step1": "Predice ventas de hoy:",
"title": "5:30 AM - Revisa Todo Tu Inventario", "step1_desc": "\"Harás 80 croissants, 120 barras\"",
"item1": "Cuenta cada kilo de harina, cada litro de leche", "step2": "Planifica producción:",
"item2": "Comprueba fechas de caducidad", "step2_desc": "Lista exacta de lo que hornear",
"item3": "Ve qué llega hoy de proveedores" "step3": "Gestiona inventario:",
}, "step3_desc": "Proyecta 7 días → \"Te quedarás sin harina en 4 días, pide 50kg hoy\"",
"step2": { "step4": "Previene desperdicios:",
"title": "5:35 AM - Predice Ventas de Hoy", "step4_desc": "\"Leche caduca en 5 días, no pidas más de 15L\"",
"item1": "Analiza el día (lunes lluvioso, fiesta local, colegio cerrado)", "step5": "Crea pedidos:",
"item2": "Compara con días similares del pasado", "step5_desc": "Listos para aprobar con 1 clic",
"item3": "Te dice: \"Hoy venderás 80 croissants, 120 barras, 50 magdalenas\"" "key": "🔑 Nunca llegas al punto de quedarte sin stock. El sistema lo previene 7 días antes.",
},
"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"
},
"result": { "result": {
"title": "6:00 AM - Recibes un Email", "title": "6:00 AM - Recibes un Email",
"item1": "Predicción del día hecha ✅", "item1": "Predicción del día hecha ✅",
@@ -156,8 +123,8 @@
"data_ownership": "Propiedad de datos", "data_ownership": "Propiedad de datos",
"co2_metric": "CO₂", "co2_metric": "CO₂",
"co2": "Medición automática", "co2": "Medición automática",
"sdg_value": "ODS 12.3", "sdg_value": "Verde",
"sdg": "Seguimiento de cumplimiento", "sdg": "Certificado de sostenibilidad",
"sustainability_title": "Informes de Sostenibilidad Automatizados", "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", "sustainability_desc": "Genera informes que cumplen con los estándares internacionales de sostenibilidad y reducción de desperdicio alimentario",
"cta": "Ver Todas las Funcionalidades" "cta": "Ver Todas las Funcionalidades"
@@ -165,48 +132,47 @@
}, },
"how_it_works": { "how_it_works": {
"title": "Cómo Empezar", "title": "Cómo Empezar",
"subtitle": "3 pasos. 10 minutos. Listo.", "subtitle": "En 3 pasos simples",
"step1": { "step1": {
"title": "Sube 6-12 meses de datos de ventas", "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.", "description": "Más meses = predicciones más precisas. Si tienes solo 6 meses, funciona igual, pero mejora con el tiempo.",
"time": "5 minutos" "time": "5 minutos"
}, },
"step2": { "step2": {
"title": "La IA aprende de TU panadería", "title": "La IA aprende tus patrones y tu entorno",
"description": "Analiza tus patrones, productos, estacionalidad. No necesitas configurar nada.", "description": "Analiza tus ventas, clima, competencia, eventos locales. Tarda 15 minutos en configurarse.",
"time": "Automático" "time": "Automático"
}, },
"step3": { "step3": {
"title": "Empiezas a recibir predicciones", "title": "Cada mañana recibes tu plan del día",
"description": "Cada mañana a las 6:00 AM: predicción del día, plan de producción, pedidos a aprobar.", "description": "Qué hacer, qué pedir, cuándo llegará. Todo automático, tú solo apruebas.",
"time": "Al día siguiente" "time": "Al día siguiente"
} }
}, },
"pilot": { "pilot": {
"badge": "Programa Piloto - Solo 20 Plazas", "badge": "⏰ PROGRAMA PILOTO • SOLO 12 PLAZAS RESTANTES",
"title": "Buscamos 20 Panaderías Pioneras", "title": "Únete al Programa Piloto",
"subtitle": "No es para todo el mundo. Estamos seleccionando las primeras 20 panaderías para formar parte de nuestro programa piloto exclusivo.", "subtitle": "3 meses gratis + beneficios exclusivos",
"what_you_get": { "you_get": {
"title": "Lo Que Obtienes", "title": " Qué Recibes",
"free_trial": "3 meses completamente gratis", "item1": "3 meses completamente gratis",
"lifetime_discount": "20% descuento de por vida si continúas", "item2": "Soporte premium personalizado",
"vip_support": "Soporte directo del equipo fundador", "item3": "Influencia en el desarrollo del producto"
"influence": "Tus ideas se implementan primero"
}, },
"what_we_ask": { "we_ask": {
"title": "Lo Que Pedimos", "title": "🤝 Qué Necesitamos",
"feedback": "Feedback honesto semanal (15 min)", "item1": "6-12 meses de datos de ventas",
"patience": "Paciencia con bugs (estamos en beta)", "item2": "Tarjeta de crédito (sin cargo por 3 meses)",
"data": "Datos de ventas históricos (6-12 meses)", "item3": "Comprensión de que es un programa piloto y feedback semanal sobre fallos y mejoras"
"communication": "Comunicación abierta"
}, },
"spots_left": "Quedan 12 plazas de 20", "spots_left": "Quedan 12 plazas de 20",
"cta": "Solicitar Plaza en el Piloto" "cta": "Solicitar Plaza Ahora"
}, },
"pricing": { "pricing": {
"badge": "Precios Transparentes", "badge": "Precios Transparentes",
"title": "Un Solo Plan. Sin Sorpresas.", "title": "Precios Transparentes",
"subtitle": "3 meses gratis para pilotos. Luego €99/mes (o €79/mes con descuento de por vida si fuiste piloto).", "subtitle": "Sin sorpresas, sin costos ocultos",
"compare_link": "Ver comparación completa de características",
"plan": { "plan": {
"name": "Bakery-IA Completo", "name": "Bakery-IA Completo",
"pilot_price": "€0/mes", "pilot_price": "€0/mes",
@@ -231,36 +197,37 @@
}, },
"faq": { "faq": {
"badge": "Preguntas Frecuentes", "badge": "Preguntas Frecuentes",
"title": "Lo Que Nos Preguntan Siempre", "title": "Preguntas Frecuentes",
"subtitle": "Respuestas honestas a preguntas reales", "subtitle": "Respuestas honestas a preguntas reales",
"q1": { "q1": {
"question": "¿De verdad funciona con solo 6 meses de datos?", "question": "¿Cuántos datos necesito?",
"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." "answer": "6-12 meses de datos de ventas. Más datos = mejores predicciones, pero funciona desde 6 meses."
}, },
"q2": { "q2": {
"question": "¿Qué pasa si mis datos son un desastre?", "question": "¿Por qué necesito dar mi tarjeta?",
"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." "answer": "Para continuar automáticamente después del período de prueba gratuito de 3 meses. Puedes cancelar en cualquier momento sin cargo."
}, },
"q3": { "q3": {
"question": "¿Tengo que usar vuestro POS o puedo seguir con el mío?", "question": "¿Qué pasa con mis datos?",
"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)." "answer": "100% tuyos. Servidores en España, cumplimiento RGPD, nunca compartimos ni vendemos tu información."
}, },
"q4": { "q4": {
"question": "¿Qué pasa después de los 3 meses gratis?", "question": "¿Funciona para mi tipo de panadería?",
"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." "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": { "q5": {
"question": "¿Por qué debería confiar en vosotros?", "question": "¿Qué pasa si me quedo sin stock?",
"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." "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": { "final_cta": {
"scarcity_badge": "🔥 Solo 12 plazas restantes de 20", "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", "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_primary": "Solicitar Plaza en el Piloto",
"cta_secondary": "Ver Demo (2 min)", "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", "support": "Soporte dedicado 24/7 + gestor de cuenta",
"recommended_for": "Cadenas de panaderías, franquicias, escala ilimitada" "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" "search": "Aplikazioan bilatu"
}, },
"app": { "app": {
"name": "Okindegiaren AA", "name": "BakeWise",
"full_name": "Okindegiaren AA - Sistema Adimentsua" "full_name": "BakeWise - Okindegientzako Kudeaketa Adimentsua"
}, },
"profile": { "profile": {
"my_profile": "Nire profila", "my_profile": "Nire profila",

View File

@@ -1,6 +1,6 @@
{ {
"hero": { "hero": {
"pre_headline": "Hondakinetan Dirua Galtzen Duten Okindegientzat", "pre_headline": "",
"scarcity": "20tik 12 plaza bakarrik geratzen dira • 3 hilabete DOAN", "scarcity": "20tik 12 plaza bakarrik geratzen dira • 3 hilabete DOAN",
"scarcity_badge": "🔥 20tik 12 plaza bakarrik geratzen dira pilotu programan", "scarcity_badge": "🔥 20tik 12 plaza bakarrik geratzen dira pilotu programan",
"badge": "AA Aurreratua Okindegi Modernoetarako", "badge": "AA Aurreratua Okindegi Modernoetarako",
@@ -10,122 +10,94 @@
"title_option_a_line2": "eta Aurreztu Milaka", "title_option_a_line2": "eta Aurreztu Milaka",
"title_option_b": "Utzi Asmatu Egunero Zenbat Labean Sartu", "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": "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.", "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_primary": "Eskatu Pilotuko Plaza",
"cta_secondary": "Ikusi Nola Lan Egiten Duen (2 min)", "cta_secondary": "Ikusi Nola Lan Egiten Duen (2 min)",
"cta_demo": "Ikusi Demoa", "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": { "trust": {
"no_cc": "3 hilabete doan", "no_cc": "3 hilabete doan",
"card": "Txartela beharrezkoa", "card": "Txartela beharrezkoa",
"quick": "Prest 10 minututan", "quick": "Konfigurazioa 15 minututan",
"spanish": "Laguntza euskeraz" "spanish": "Laguntza euskeraz"
} }
}, },
"problems": { "problems": {
"title": "Konpontzen Dugun Arazoa", "title": "Konpontzen Dugun Arazoa",
"subtitle": "Okindegi bat baduzu, zehatz-mehatz dakizu zer diogun", "subtitle": "Okindegi bat baduzu, zehatz-mehatz dakizu zer diogun",
"problem1": { "item1": {
"title": "Egunero 50 ogi botatzen dituzu \"badaezpada\"", "title": "Eguneko Hondakinak",
"description": "50 ogi × €2 = €100/egunean = €3,000/hilean zakarrontzian. Eta ogian bakarrik." "description": "Hilean €2,000 botatzen dituzu \"badaezpada\" ekoizten duzulako eta saldu gabeko ogia geratzen zaizulako."
}, },
"problem2": { "item2": {
"title": "Bezeroak hutsik alde egiten dute", "title": "Egunero Asmatu",
"description": "\"Croissantik ez duzu 14:00etan\" = salmenta galduak + bezero haserre." "description": "Ez dakizu zenbat egin. Batzuetan stockik gabe geratzen zara, batzuetan gehiegi geratzen da."
}, },
"problem3": { "item3": {
"title": "\"Begira\" planifikatzen duzu Excel-ekin", "title": "Galdutako Denbora",
"description": "Esperientzia eta barrunbe sentimenduetan oinarrituta. Funtzionatzen du... funtzionatu arte." "description": "Orduak eskaerak kalkulatzen, inbentarioa egiaztatzen, ekoizpena eskuz planifikatzen."
} }
}, },
"solutions": { "solutions": {
"title": "Irtenbidea", "title": "Irtenbidea IArekin",
"subtitle": "IAk ezagutzen ditu ZURE okindeg ia, ZURE auzo a, ZURE bezeroak", "subtitle": "IAk ezagutzen ditu ZURE okindeg ia, ZURE auzo a, ZURE bezeroak",
"solution1": { "item1": {
"title": "Benetako eskaria aurreikusten du (%92ko zehaztasunarekin)", "title": "Aurreztu €500-2,000/Hilean",
"description": "Badaki bihar astelehen euritsu bat dela, eskola itxita, merkatu ezeztatua → 78 croissant salduko dituzu (ez 100)." "description": "Murriztu hondakinak %20-40 zehazki salduko duzuna ekoizten."
}, },
"solution2": { "item2": {
"title": "Sistema automatikoa goiz bakoitzean", "title": "Aurreikuspen %92 zehatzak",
"description": "5:30etan goizean: inbentarioa berrikusten, salmentak aurreikusten, ekoizpena planifikatzen, eskaerak sortzen. 6:00etan iristen zara eta dena prest dago." "description": "Badaki zehazki zenbat salduko duzun bihar zure datuetan eta inguruan oinarrituta."
}, },
"solution3": { "item3": {
"title": "Zure datuak = zure diru-laguntzak", "title": "Automatizazio Osoa",
"description": "Datuak 100% zureak + hondakinen murrizketa ziurtatua = €50,000ko sarbidea Europako iraunkortasuneko laguntzetara." "description": "Sistema automatikoa goiz bakoitzean: aurreikuspena, ekoizpena, eskaerak. Dena prest 6:00etan goizean."
} }
}, },
"pillars": { "pillars": {
"badge": "Sistemaren 3 Gakoak", "badge": "Sistemaren 3 Gakoak",
"title": "Zergatik Funtzionatzen Duen Zure Okindegirako", "title": "Nola Funtzionatzen Duen BakeWise",
"subtitle": "Ez da magia. ZURE errealitateari aplikatutako matematika da.", "subtitle": "Hiru zutabe zure okindeg ia eraldatzen dutenak",
"see_all": "Ikusi ezaugarri guztiak xehetasunez",
"pillar1": { "pillar1": {
"title": "🎯 Aurreikusten du Eskaria Zure Eremuaren Datuekin", "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.", "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", "title": "Inguruko Eskolak",
"item1": "\"CEIP San José 200m-ra dago\"", "item1": "\"CEIP San José 200m-ra dago\"",
"item2": "\"Abuztuan salmentak %40 murrizten dira (eskola-oporrak)\"", "item2": "\"Abuztuan salmentak %40 murrizten dira (eskola-oporrak)\"",
"item3": "\"Astelehenetan 8:30etan gailurra (gurasoak seme-alabak utzi ondoren)\"" "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)", "accuracy": "Zehaztasuna: %92 (vs %60-70 sistema generikoetan)",
"cta": "Ikusi Ezaugarri Guztiak" "cta": "Ikusi Ezaugarri Guztiak"
}, },
"pillar2": { "pillar2": {
"title": "🤖 Sistema Automatikoa Goiz Bakoitzean", "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:", "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": { "step1": "Aurreikusten du gaurko salmentak:",
"title": "5:30etan goizean - Zure Inbentario Osoa Berrikusten Du", "step1_desc": "\"80 croissant, 120 ogi egingo dituzu\"",
"item1": "Irin kilo bakoitza, esne litro bakoitza zenbatzen du", "step2": "Planifikatzen du ekoizpena:",
"item2": "Iraungitze datak egiaztatzen ditu", "step2_desc": "Zer labean sartu beharko duzun zerrenda zehatza",
"item3": "Gaur hornitzaileetatik zer iristen den ikusten du" "step3": "Kudeatzen du inbentarioa:",
}, "step3_desc": "7 egun proiektatzen ditu → \"4 egunetan irinik gabe geratuko zara, eskatu 50kg gaur\"",
"step2": { "step4": "Prebenitzen ditu hondakinak:",
"title": "5:35ean goizean - Gaurko Salmentak Aurreikusten Ditu", "step4_desc": "\"Esnea 5 egunetan iraungitzen da, ez eskatu 15L baino gehiago\"",
"item1": "Eguna aztertzen du (astelehen euritsu bat, toki-jai bat, eskola itxita)", "step5": "Sortzen ditu eskaerak:",
"item2": "Antzeko iraganeko egunekin konparatzen du", "step5_desc": "Klik batekin onartzeko prest",
"item3": "Esaten dizu: \"Gaur 80 croissant, 120 ogi, 50 madalena salduko dituzu\"" "key": "🔑 Inoiz ez zara stockik gabe geratuko. Sistemak 7 egun lehenago prebenitzen du.",
},
"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"
},
"result": { "result": {
"title": "6:00etan goizean - Email bat Jasotzen Duzu", "title": "6:00etan goizean - Email bat Jasotzen Duzu",
"item1": "Eguneko iragarpena eginda ✅", "item1": "Eguneko iragarpena eginda ✅",
@@ -151,8 +123,8 @@
"data_ownership": "Datuen jabetza", "data_ownership": "Datuen jabetza",
"co2_metric": "CO₂", "co2_metric": "CO₂",
"co2": "Neurketa automatikoa", "co2": "Neurketa automatikoa",
"sdg_value": "GIH 12.3", "sdg_value": "Berdea",
"sdg": "Betetze-jarraipena", "sdg": "Iraunkortasun ziurtagiria",
"sustainability_title": "Iraunkortasun Txosten Automatizatuak", "sustainability_title": "Iraunkortasun Txosten Automatizatuak",
"sustainability_desc": "Sortu nazioarteko iraunkortasun estandarrak eta elikagai-hondakinen murrizketarekin bat datozen txostenak", "sustainability_desc": "Sortu nazioarteko iraunkortasun estandarrak eta elikagai-hondakinen murrizketarekin bat datozen txostenak",
"cta": "Ikusi Ezaugarri Guztiak" "cta": "Ikusi Ezaugarri Guztiak"
@@ -160,48 +132,47 @@
}, },
"how_it_works": { "how_it_works": {
"title": "Nola Hasi", "title": "Nola Hasi",
"subtitle": "3 urrats. 10 minutu. Prest.", "subtitle": "3 urrats sinpletan",
"step1": { "step1": {
"title": "Igo 6-12 hilabeteko salmenta datuak", "title": "Igo 6-12 hilabeteko salmenta datuak",
"description": "Hilabete gehiago = aurreikuspena zehatzagoak. 6 hilabete bakarrik badituzu, ongi funtzionatzen du, baina denborarekin hobetzen da.", "description": "Hilabete gehiago = aurreikuspena zehatzagoak. 6 hilabete bakarrik badituzu, ongi funtzionatzen du, baina denborarekin hobetzen da.",
"time": "5 minutu" "time": "5 minutu"
}, },
"step2": { "step2": {
"title": "IAk ZURE okindegiaren berri ikasten du", "title": "IAk zure ereduak eta ingurunea ikasten ditu",
"description": "Zure ereduak, produktuak, denboraldiak aztertzen ditu. Ez duzu ezer konfiguratu behar.", "description": "Zure salmentak, eguraldia, lehia, tokiko ekitaldiak aztertzen ditu. Konfiguratzeko 15 minutu behar ditu.",
"time": "Automatikoa" "time": "Automatikoa"
}, },
"step3": { "step3": {
"title": "Hasiko zara aurreikuspenak jasotzen", "title": "Goiz bakoitzean jasotzen duzu eguneko plana",
"description": "Goiz bakoitzean 6:00etan: eguneko iragarpena, ekoizpen plana, onartzeko eskaerak.", "description": "Zer egin, zer eskatu, noiz helduko den. Dena automatikoa, zuk bakarrik onartu.",
"time": "Hurrengo eguna" "time": "Hurrengo eguna"
} }
}, },
"pilot": { "pilot": {
"badge": "Pilotu Programa - 20 Plaza Bakarrik", "badge": "⏰ PILOTU PROGRAMA • 12 PLAZA BAKARRIK GERATZEN DIRA",
"title": "20 Okindegi Aitzindari Bilatzen", "title": "Pilotu Programara Batu",
"subtitle": "Ez da guztientzat. Lehenengo 20 okindegiak hautatzen ari gara gure pilotu programa esklusiboa osatzeko.", "subtitle": "3 hilabete doan + onura esklusiboa",
"what_you_get": { "you_get": {
"title": "Zer Lortzen Duzu", "title": "Zer Lortzen Duzu",
"free_trial": "3 hilabete guztiz doan", "item1": "3 hilabete guztiz doan",
"lifetime_discount": "%20ko deskontua bizitza osoan jarraitzen baduzu", "item2": "Premium laguntza pertsonalizatua",
"vip_support": "Sortzaile taldearen zuzeneko laguntza", "item3": "Produktuaren garapenean eragina"
"influence": "Zure ideiak lehenik inplementatzen dira"
}, },
"what_we_ask": { "we_ask": {
"title": "Zer Eskatzen Dugu", "title": "🤝 Zer Behar Dugu",
"feedback": "Feedback zintzoa astero (15 min)", "item1": "6-12 hilabeteko salmenta datuak",
"patience": "Pazientzia bug-ekin (beta fasean gaude)", "item2": "Kreditu txartela (3 hilabetez kargurik gabe)",
"data": "Salmenta datu historikoak (6-12 hilabete)", "item3": "Ulertu pilotu programa bat dela eta astero feedback-a erroreen eta hobetzeen gainean"
"communication": "Komunikazio irekia"
}, },
"spots_left": "20tik 12 plaza geratzen dira", "spots_left": "20tik 12 plaza geratzen dira",
"cta": "Eskatu Pilotuko Plaza" "cta": "Eskatu Plaza Orain"
}, },
"pricing": { "pricing": {
"badge": "Prezio Gardenak", "badge": "Prezio Gardenak",
"title": "Plan Bakarra. Sorpresarik Gabe.", "title": "Prezio Gardenak",
"subtitle": "3 hilabete doan pilotoetarako. Gero €99/hilean (edo €79/hilean bizitza osoko deskontuarekin piloto izan bazinen).", "subtitle": "Sorpresarik gabe, ezkutuko kosturik gabe",
"compare_link": "Ikusi ezaugarrien konparaketa osoa",
"plan": { "plan": {
"name": "Bakery-IA Osoa", "name": "Bakery-IA Osoa",
"pilot_price": "€0/hilean", "pilot_price": "€0/hilean",
@@ -226,36 +197,37 @@
}, },
"faq": { "faq": {
"badge": "Maiz Egiten Diren Galderak", "badge": "Maiz Egiten Diren Galderak",
"title": "Beti Galdetzen Digutena", "title": "Maiz Egiten Diren Galderak",
"subtitle": "Erantzun zintzo galdera errealei", "subtitle": "Erantzun zintzo galdera errealei",
"q1": { "q1": {
"question": "Benetan funtzionatzen du 6 hilabeteko datuekin bakarrik?", "question": "Zenbat datu behar ditut?",
"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." "answer": "6-12 hilabeteko salmenta datuak. Datu gehiago = aurreikuspen hobeak, baina 6 hilabetatik funtzionatzen du."
}, },
"q2": { "q2": {
"question": "Zer gertatzen da nire datuak desastre bat badira?", "question": "Zergatik eman behar dut nire txartela?",
"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." "answer": "3 hilabeteko doan proba aldiaren ondoren automatikoki jarraitzeko. Edonoiz ezeztatu dezakezu kargurik gabe."
}, },
"q3": { "q3": {
"question": "Zuen POS-a erabili behar dut ala nirearekin jarrai dezaket?", "question": "Zer gertatzen da nire datuekin?",
"answer": "Zure POS aktualarekinen jarrai dezakezu gustatzen bazaizu. Gehiengo sistemekin integratzen gara. Okindegietarako optimizatutako gure POS propioa ere eskaintzen dugu (aukerakoa, planean sartuta)." "answer": "%100 zureak. Zerbitzariak Espainian, RGPD betetzen dugu, inoiz ez ditugu zure informazioa partekatzen edo saltzen."
}, },
"q4": { "q4": {
"question": "Zer gertatzen da 3 hilabete doanaren ondoren?", "question": "Funtzionatzen al du nire okindegi motarako?",
"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." "answer": "Bai. Tokiko ekoizpena edo obrador zentrala hainbat salmenta punturekin izan, sistemak zure negozio modelora egokitzen da."
}, },
"q5": { "q5": {
"question": "Zergatik fidatu behar dut zuengan?", "question": "Zer gertatzen da stockik gabe geratzen banaiz?",
"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." "answer": "Sistemak hau prebenitzen du. 7 egun aurrera proiektatzen du eta abisatzen dizu hornitzaileei noiz eskatu behar diozun, automatikoki erosketa aginduak sortuz."
} }
}, },
"final_cta": { "final_cta": {
"scarcity_badge": "🔥 20tik 12 plaza bakarrik geratzen dira", "scarcity_badge": "🔥 20tik 12 plaza bakarrik geratzen dira",
"title": "Izan Lehenengo 20 Okindegien Artean", "title": "Utzi Hilean €2,000 Galtzea Hondakinetan",
"title_accent": "Teknologia Hau Probatzeko", "title_accent": "Teknologia Hau Probatzen",
"subtitle": "Ez da guztientzat. Hondakinak murriztu eta irabaziak handitu nahi dituzten okindegiak bilatzen ari gara IAren laguntzarekin, feedback zintzoaren truke.", "subtitle": "Batu lehenengo 20 okindegiei. 12 plaza bakarrik geratzen dira.",
"button": "Hasi Orain - Txartelik Gabe",
"cta_primary": "Eskatu Pilotuko Plaza", "cta_primary": "Eskatu Pilotuko Plaza",
"cta_secondary": "Ikusi Demoa (2 min)", "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", "support": "24/7 laguntza dedikatua + kontu kudeatzailea",
"recommended_for": "Ogi-denda kateak, frantziziak, eskala mugagabea" "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>
<p className="text-sm text-[var(--text-secondary)]"> <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{' '} 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 support@bakery-ia.com
</a> </a>
</p> </p>

View File

@@ -90,7 +90,7 @@ const CareersPage: React.FC = () => {
<span className="block text-[var(--color-primary)]">Paso a Paso</span> <span className="block text-[var(--color-primary)]">Paso a Paso</span>
</h1> </h1>
<p className="text-xl text-[var(--text-secondary)] leading-relaxed mb-8"> <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 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. el momento adecuado, construiré un equipo que comparta esta visión.
</p> </p>

View File

@@ -414,7 +414,7 @@ export const CookiePolicyPage: React.FC = () => {
If you have questions about our use of cookies, please contact us: If you have questions about our use of cookies, please contact us:
</p> </p>
<div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg"> <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>Email: privacy@panaderia-ia.com</p>
<p>Website: https://panaderia-ia.com</p> <p>Website: https://panaderia-ia.com</p>
</div> </div>

View File

@@ -153,7 +153,7 @@ const FeedbackPage: React.FC = () => {
</div> </div>
<h1 className="text-4xl lg:text-6xl font-extrabold text-[var(--text-primary)] mb-6"> <h1 className="text-4xl lg:text-6xl font-extrabold text-[var(--text-primary)] mb-6">
Ayúdanos a Mejorar 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> </h1>
<p className="text-xl text-[var(--text-secondary)] leading-relaxed mb-8"> <p className="text-xl text-[var(--text-secondary)] leading-relaxed mb-8">
Tu feedback es fundamental para construir el mejor producto para panaderías Tu feedback es fundamental para construir el mejor producto para panaderías

View File

@@ -282,10 +282,10 @@ const LandingPage: React.FC = () => {
</div> </div>
<div className="flex-1"> <div className="flex-1">
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4"> <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> </h3>
<p className="text-lg text-[var(--text-secondary)] mb-6"> <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> </p>
<div className="grid md:grid-cols-2 gap-4"> <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"> <div className="flex items-center gap-3 mb-2">
<School className="w-5 h-5 text-blue-600" /> <School className="w-5 h-5 text-blue-600" />
<h4 className="font-bold text-[var(--text-primary)]"> <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> </h4>
</div> </div>
<p className="text-sm text-[var(--text-secondary)]"> <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> </p>
</div> </div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4"> <div className="bg-[var(--bg-secondary)] rounded-lg p-4">
<div className="flex items-center gap-3 mb-2"> <div className="flex items-center gap-3 mb-2">
<Building2 className="w-5 h-5 text-purple-600" /> <Building2 className="w-5 h-5 text-purple-600" />
<h4 className="font-bold text-[var(--text-primary)]"> <h4 className="font-bold text-[var(--text-primary)]">
{t('landing:pillar1.competition', 'Tu Competencia')} {t('landing:pillars.pillar1.competition', 'Tu Competencia')}
</h4> </h4>
</div> </div>
<p className="text-sm text-[var(--text-secondary)]"> <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> </p>
</div> </div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4"> <div className="bg-[var(--bg-secondary)] rounded-lg p-4">
<div className="flex items-center gap-3 mb-2"> <div className="flex items-center gap-3 mb-2">
<Cloud className="w-5 h-5 text-sky-600" /> <Cloud className="w-5 h-5 text-sky-600" />
<h4 className="font-bold text-[var(--text-primary)]"> <h4 className="font-bold text-[var(--text-primary)]">
{t('landing:pillar1.weather', 'Clima Local (AEMET)')} {t('landing:pillars.pillar1.weather', 'Clima Local')}
</h4> </h4>
</div> </div>
<p className="text-sm text-[var(--text-secondary)]"> <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> </p>
</div> </div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4"> <div className="bg-[var(--bg-secondary)] rounded-lg p-4">
<div className="flex items-center gap-3 mb-2"> <div className="flex items-center gap-3 mb-2">
<Target className="w-5 h-5 text-amber-600" /> <Target className="w-5 h-5 text-amber-600" />
<h4 className="font-bold text-[var(--text-primary)]"> <h4 className="font-bold text-[var(--text-primary)]">
{t('landing:pillar1.events', 'Eventos y Festivales')} {t('landing:pillars.pillar1.events', 'Eventos y Festivales')}
</h4> </h4>
</div> </div>
<p className="text-sm text-[var(--text-secondary)]"> <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> </p>
</div> </div>
</div> </div>
@@ -352,48 +352,48 @@ const LandingPage: React.FC = () => {
</div> </div>
<div className="flex-1"> <div className="flex-1">
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4"> <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> </h3>
<p className="text-lg text-[var(--text-secondary)] mb-6"> <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> </p>
<div className="space-y-3"> <div className="space-y-3">
<div className="flex items-start gap-3"> <div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" /> <CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]"> <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> </p>
</div> </div>
<div className="flex items-start gap-3"> <div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" /> <CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]"> <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> </p>
</div> </div>
<div className="flex items-start gap-3"> <div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" /> <CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]"> <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> </p>
</div> </div>
<div className="flex items-start gap-3"> <div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" /> <CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]"> <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> </p>
</div> </div>
<div className="flex items-start gap-3"> <div className="flex items-start gap-3">
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" /> <CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
<p className="text-[var(--text-secondary)]"> <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> </p>
</div> </div>
</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"> <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)]"> <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> </p>
</div> </div>
</div> </div>
@@ -408,45 +408,45 @@ const LandingPage: React.FC = () => {
</div> </div>
<div className="flex-1"> <div className="flex-1">
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4"> <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> </h3>
<p className="text-lg text-[var(--text-secondary)] mb-6"> <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> </p>
<div className="grid md:grid-cols-3 gap-4 mb-6"> <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="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
<div className="text-3xl font-bold text-green-600 mb-2"> <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> </div>
<p className="text-sm text-[var(--text-secondary)]"> <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> </p>
</div> </div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center"> <div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
<div className="text-3xl font-bold text-blue-600 mb-2"> <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> </div>
<p className="text-sm text-[var(--text-secondary)]"> <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> </p>
</div> </div>
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center"> <div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
<div className="text-3xl font-bold text-amber-600 mb-2"> <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> </div>
<p className="text-sm text-[var(--text-secondary)]"> <p className="text-sm text-[var(--text-secondary)]">
{t('landing:pillar3.sdg', 'Seguimiento de cumplimiento')} {t('landing:pillars.pillar3.sdg', 'Seguimiento de cumplimiento')}
</p> </p>
</div> </div>
</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"> <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"> <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>
<p className="text-sm text-[var(--text-secondary)]"> <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> </p>
</div> </div>
</div> </div>
@@ -456,7 +456,7 @@ const LandingPage: React.FC = () => {
{/* Link to Features Page */} {/* Link to Features Page */}
<div className="mt-12 text-center"> <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')} {t('landing:pillars.see_all', 'Ver todas las funcionalidades en detalle')}
<ChevronRight className="w-5 h-5 group-hover:translate-x-1 transition-transform" /> <ChevronRight className="w-5 h-5 group-hover:translate-x-1 transition-transform" />
</Link> </Link>
@@ -571,6 +571,10 @@ const LandingPage: React.FC = () => {
<Check className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" /> <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> <span className="text-[var(--text-secondary)]">{t('landing:pilot.we_ask.item2', 'Tarjeta de crédito (sin cargo por 3 meses)')}</span>
</li> </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> </ul>
</div> </div>
</div> </div>

View File

@@ -35,7 +35,7 @@ export const PrivacyPolicyPage: React.FC = () => {
The data controller responsible for your personal data is: The data controller responsible for your personal data is:
</p> </p>
<div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg mb-4"> <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>Email: privacy@panaderia-ia.com</p>
<p>Website: https://panaderia-ia.com</p> <p>Website: https://panaderia-ia.com</p>
</div> </div>

View File

@@ -32,13 +32,13 @@ export const TermsOfServicePage: React.FC = () => {
1. {t('legal:terms.section_1_title', 'Agreement to Terms')} 1. {t('legal:terms.section_1_title', 'Agreement to Terms')}
</h2> </h2>
<p className="text-gray-700 dark:text-gray-300 mb-4"> <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 bound by these Terms of Service ("Terms"). If you do not agree to these Terms, do not
use the Platform. use the Platform.
</p> </p>
<p className="text-gray-700 dark:text-gray-300"> <p className="text-gray-700 dark:text-gray-300">
These Terms constitute a legally binding agreement between you ("User", "you", "your") 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> </p>
</section> </section>
@@ -47,7 +47,7 @@ export const TermsOfServicePage: React.FC = () => {
2. {t('legal:terms.section_2_title', 'Description of Service')} 2. {t('legal:terms.section_2_title', 'Description of Service')}
</h2> </h2>
<p className="text-gray-700 dark:text-gray-300 mb-4"> <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> </p>
<ul className="list-disc pl-6 mb-4 text-gray-700 dark:text-gray-300 space-y-1"> <ul className="list-disc pl-6 mb-4 text-gray-700 dark:text-gray-300 space-y-1">
<li>Inventory management and tracking</li> <li>Inventory management and tracking</li>
@@ -176,7 +176,7 @@ export const TermsOfServicePage: React.FC = () => {
6.1 Platform Ownership 6.1 Platform Ownership
</h3> </h3>
<p className="text-gray-700 dark:text-gray-300 mb-4"> <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. are protected by international copyright, trademark, and other intellectual property laws.
</p> </p>
@@ -197,7 +197,7 @@ export const TermsOfServicePage: React.FC = () => {
6.3 Trademarks 6.3 Trademarks
</h3> </h3>
<p className="text-gray-700 dark:text-gray-300"> <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. prior written consent.
</p> </p>
</section> </section>
@@ -300,7 +300,7 @@ export const TermsOfServicePage: React.FC = () => {
10. {t('legal:terms.section_10_title', 'Indemnification')} 10. {t('legal:terms.section_10_title', 'Indemnification')}
</h2> </h2>
<p className="text-gray-700 dark:text-gray-300"> <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: liabilities, and expenses (including legal fees) arising from:
</p> </p>
<ul className="list-disc pl-6 mb-4 text-gray-700 dark:text-gray-300 space-y-1"> <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> </h3>
<p className="text-gray-700 dark:text-gray-300 mb-4"> <p className="text-gray-700 dark:text-gray-300 mb-4">
These Terms, together with our Privacy Policy and Cookie Policy, constitute the entire 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> </p>
<h3 className="text-xl font-semibold text-gray-900 dark:text-white mb-3"> <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: For questions about these Terms, contact us at:
</p> </p>
<div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg"> <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>Email: legal@panaderia-ia.com</p>
<p>Website: https://panaderia-ia.com</p> <p>Website: https://panaderia-ia.com</p>
</div> </div>

View File

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

View File

@@ -11,7 +11,7 @@ elif [ -z "$VITE_API_URL" ]; then
fi fi
# Default values for environment variables # 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"} export VITE_APP_VERSION=${VITE_APP_VERSION:-"1.0.0"}
# Default values for pilot program configuration # Default values for pilot program configuration