Improve frontend traslations
This commit is contained in:
@@ -726,7 +726,7 @@ const SubscriptionPage: React.FC = () => {
|
||||
</p>
|
||||
<p className="text-sm text-[var(--text-secondary)]">
|
||||
Si tienes preguntas sobre tu suscripción o necesitas asistencia, contacta a nuestro equipo de soporte en{' '}
|
||||
<a href="mailto:support@bakery-ia.com" className="text-blue-500 hover:underline">
|
||||
<a href="mailto:support@bakery-ia.com" className="text-blue-500 hover:text-white hover:bg-blue-500 px-2 py-0.5 rounded transition-all duration-200 no-underline">
|
||||
support@bakery-ia.com
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -90,7 +90,7 @@ const CareersPage: React.FC = () => {
|
||||
<span className="block text-[var(--color-primary)]">Paso a Paso</span>
|
||||
</h1>
|
||||
<p className="text-xl text-[var(--text-secondary)] leading-relaxed mb-8">
|
||||
Panadería IA es actualmente un proyecto en solitario, enfocado en crear la mejor herramienta
|
||||
{t('common:app.name', 'BakeWise')} es actualmente un proyecto en solitario, enfocado en crear la mejor herramienta
|
||||
de IA para panaderías mediante contacto directo con clientes y ejecución ágil. Cuando llegue
|
||||
el momento adecuado, construiré un equipo que comparta esta visión.
|
||||
</p>
|
||||
|
||||
@@ -414,7 +414,7 @@ export const CookiePolicyPage: React.FC = () => {
|
||||
If you have questions about our use of cookies, please contact us:
|
||||
</p>
|
||||
<div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg">
|
||||
<p className="font-semibold">Panadería IA</p>
|
||||
<p className="font-semibold">{t('common:app.name', 'BakeWise')}</p>
|
||||
<p>Email: privacy@panaderia-ia.com</p>
|
||||
<p>Website: https://panaderia-ia.com</p>
|
||||
</div>
|
||||
|
||||
@@ -153,7 +153,7 @@ const FeedbackPage: React.FC = () => {
|
||||
</div>
|
||||
<h1 className="text-4xl lg:text-6xl font-extrabold text-[var(--text-primary)] mb-6">
|
||||
Ayúdanos a Mejorar
|
||||
<span className="block text-[var(--color-primary)]">Panadería IA</span>
|
||||
<span className="block text-[var(--color-primary)]">{t('common:app.name', 'BakeWise')}</span>
|
||||
</h1>
|
||||
<p className="text-xl text-[var(--text-secondary)] leading-relaxed mb-8">
|
||||
Tu feedback es fundamental para construir el mejor producto para panaderías
|
||||
|
||||
@@ -282,10 +282,10 @@ const LandingPage: React.FC = () => {
|
||||
</div>
|
||||
<div className="flex-1">
|
||||
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4">
|
||||
{t('landing:pillar1.title', '🎯 Predice Demanda con Datos de Tu Zona')}
|
||||
{t('landing:pillars.pillar1.title', '🎯 Predice Demanda con Datos de Tu Zona')}
|
||||
</h3>
|
||||
<p className="text-lg text-[var(--text-secondary)] mb-6">
|
||||
{t('landing:pillar1.intro', 'IA que conoce tu barrio, no solo el calendario. Sabe que el colegio de al lado cierra en agosto, que los viernes hay mercado en tu plaza, y que abrió otra panadería a 500m.')}
|
||||
{t('landing:pillars.pillar1.intro', 'IA que conoce tu barrio, no solo el calendario. Sabe que el colegio de al lado cierra en agosto, que los viernes hay mercado en tu plaza, y que abrió otra panadería a 500m.')}
|
||||
</p>
|
||||
|
||||
<div className="grid md:grid-cols-2 gap-4">
|
||||
@@ -293,44 +293,44 @@ const LandingPage: React.FC = () => {
|
||||
<div className="flex items-center gap-3 mb-2">
|
||||
<School className="w-5 h-5 text-blue-600" />
|
||||
<h4 className="font-bold text-[var(--text-primary)]">
|
||||
{t('landing:pillar1.schools', 'Colegios y Oficinas Cerca')}
|
||||
{t('landing:pillars.pillar1.schools', 'Colegios y Oficinas Cerca')}
|
||||
</h4>
|
||||
</div>
|
||||
<p className="text-sm text-[var(--text-secondary)]">
|
||||
{t('landing:pillar1.schools_desc', 'Sabe cuándo hay vacaciones, horarios de oficina, eventos escolares')}
|
||||
{t('landing:pillars.pillar1.schools_desc', 'Sabe cuándo hay vacaciones, horarios de oficina, eventos escolares')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-[var(--bg-secondary)] rounded-lg p-4">
|
||||
<div className="flex items-center gap-3 mb-2">
|
||||
<Building2 className="w-5 h-5 text-purple-600" />
|
||||
<h4 className="font-bold text-[var(--text-primary)]">
|
||||
{t('landing:pillar1.competition', 'Tu Competencia')}
|
||||
{t('landing:pillars.pillar1.competition', 'Tu Competencia')}
|
||||
</h4>
|
||||
</div>
|
||||
<p className="text-sm text-[var(--text-secondary)]">
|
||||
{t('landing:pillar1.competition_desc', 'Detecta nuevas panaderías en tu zona y ajusta predicciones')}
|
||||
{t('landing:pillars.pillar1.competition_desc', 'Detecta nuevas panaderías en tu zona y ajusta predicciones')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-[var(--bg-secondary)] rounded-lg p-4">
|
||||
<div className="flex items-center gap-3 mb-2">
|
||||
<Cloud className="w-5 h-5 text-sky-600" />
|
||||
<h4 className="font-bold text-[var(--text-primary)]">
|
||||
{t('landing:pillar1.weather', 'Clima Local (AEMET)')}
|
||||
{t('landing:pillars.pillar1.weather', 'Clima Local')}
|
||||
</h4>
|
||||
</div>
|
||||
<p className="text-sm text-[var(--text-secondary)]">
|
||||
{t('landing:pillar1.weather_desc', 'Lluvia → menos croissants. Calor → más productos frescos')}
|
||||
{t('landing:pillars.pillar1.weather_desc', 'Lluvia → menos croissants. Calor → más productos frescos')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-[var(--bg-secondary)] rounded-lg p-4">
|
||||
<div className="flex items-center gap-3 mb-2">
|
||||
<Target className="w-5 h-5 text-amber-600" />
|
||||
<h4 className="font-bold text-[var(--text-primary)]">
|
||||
{t('landing:pillar1.events', 'Eventos y Festivales')}
|
||||
{t('landing:pillars.pillar1.events', 'Eventos y Festivales')}
|
||||
</h4>
|
||||
</div>
|
||||
<p className="text-sm text-[var(--text-secondary)]">
|
||||
{t('landing:pillar1.events_desc', 'Fiestas del barrio, mercadillos, partidos importantes')}
|
||||
{t('landing:pillars.pillar1.events_desc', 'Fiestas del barrio, mercadillos, partidos importantes')}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -352,48 +352,48 @@ const LandingPage: React.FC = () => {
|
||||
</div>
|
||||
<div className="flex-1">
|
||||
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4">
|
||||
{t('landing:pillar2.title', '🤖 Sistema Automático Cada Mañana')}
|
||||
{t('landing:pillars.pillar2.title', '🤖 Sistema Automático Cada Mañana')}
|
||||
</h3>
|
||||
<p className="text-lg text-[var(--text-secondary)] mb-6">
|
||||
{t('landing:pillar2.intro', 'Despierta con todo el trabajo hecho. A las 5:30 AM el sistema ya predijo ventas, planificó producción, gestionó inventario y creó pedidos a proveedores.')}
|
||||
{t('landing:pillars.pillar2.intro', 'Despierta con todo el trabajo hecho. A las 5:30 AM el sistema ya predijo ventas, planificó producción, gestionó inventario y creó pedidos a proveedores.')}
|
||||
</p>
|
||||
|
||||
<div className="space-y-3">
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
|
||||
<p className="text-[var(--text-secondary)]">
|
||||
<strong>{t('landing:pillar2.step1', 'Predice ventas de hoy:')}</strong> {t('landing:pillar2.step1_desc', '"Harás 80 croissants, 120 barras"')}
|
||||
<strong>{t('landing:pillars.pillar2.step1', 'Predice ventas de hoy:')}</strong> {t('landing:pillars.pillar2.step1_desc', '"Harás 80 croissants, 120 barras"')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
|
||||
<p className="text-[var(--text-secondary)]">
|
||||
<strong>{t('landing:pillar2.step2', 'Planifica producción:')}</strong> {t('landing:pillar2.step2_desc', 'Lista exacta de lo que hornear')}
|
||||
<strong>{t('landing:pillars.pillar2.step2', 'Planifica producción:')}</strong> {t('landing:pillars.pillar2.step2_desc', 'Lista exacta de lo que hornear')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
|
||||
<p className="text-[var(--text-secondary)]">
|
||||
<strong>{t('landing:pillar2.step3', 'Gestiona inventario:')}</strong> {t('landing:pillar2.step3_desc', 'Proyecta 7 días → "Te quedarás sin harina en 4 días, pide 50kg hoy"')}
|
||||
<strong>{t('landing:pillars.pillar2.step3', 'Gestiona inventario:')}</strong> {t('landing:pillars.pillar2.step3_desc', 'Proyecta 7 días → "Te quedarás sin harina en 4 días, pide 50kg hoy"')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
|
||||
<p className="text-[var(--text-secondary)]">
|
||||
<strong>{t('landing:pillar2.step4', 'Previene desperdicios:')}</strong> {t('landing:pillar2.step4_desc', '"Leche caduca en 5 días, no pidas más de 15L"')}
|
||||
<strong>{t('landing:pillars.pillar2.step4', 'Previene desperdicios:')}</strong> {t('landing:pillars.pillar2.step4_desc', '"Leche caduca en 5 días, no pidas más de 15L"')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<CheckCircle2 className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
|
||||
<p className="text-[var(--text-secondary)]">
|
||||
<strong>{t('landing:pillar2.step5', 'Crea pedidos:')}</strong> {t('landing:pillar2.step5_desc', 'Listos para aprobar con 1 clic')}
|
||||
<strong>{t('landing:pillars.pillar2.step5', 'Crea pedidos:')}</strong> {t('landing:pillars.pillar2.step5_desc', 'Listos para aprobar con 1 clic')}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mt-6 bg-gradient-to-r from-blue-50 to-indigo-50 dark:from-blue-900/20 dark:to-indigo-900/20 rounded-lg p-4 border-l-4 border-blue-600">
|
||||
<p className="font-bold text-[var(--text-primary)]">
|
||||
{t('landing:pillar2.key', '🔑 Nunca llegas al punto de quedarte sin stock. El sistema lo previene 7 días antes.')}
|
||||
{t('landing:pillars.pillar2.key', '🔑 Nunca llegas al punto de quedarte sin stock. El sistema lo previene 7 días antes.')}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -408,45 +408,45 @@ const LandingPage: React.FC = () => {
|
||||
</div>
|
||||
<div className="flex-1">
|
||||
<h3 className="text-2xl lg:text-3xl font-bold text-[var(--text-primary)] mb-4">
|
||||
{t('landing:pillar3.title', 'Tus Datos, Tu Impacto Ambiental')}
|
||||
{t('landing:pillars.pillar3.title', 'Tus Datos, Tu Impacto Ambiental')}
|
||||
</h3>
|
||||
<p className="text-lg text-[var(--text-secondary)] mb-6">
|
||||
{t('landing:pillar3.intro', '100% de tus datos te pertenecen. Mide tu impacto ambiental automáticamente y genera informes de sostenibilidad que cumplen con los estándares internacionales.')}
|
||||
{t('landing:pillars.pillar3.intro', '100% de tus datos te pertenecen. Mide tu impacto ambiental automáticamente y genera informes de sostenibilidad que cumplen con los estándares internacionales.')}
|
||||
</p>
|
||||
|
||||
<div className="grid md:grid-cols-3 gap-4 mb-6">
|
||||
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
|
||||
<div className="text-3xl font-bold text-green-600 mb-2">
|
||||
{t('landing:pillar3.data_ownership_value', '100%')}
|
||||
{t('landing:pillars.pillar3.data_ownership_value', '100%')}
|
||||
</div>
|
||||
<p className="text-sm text-[var(--text-secondary)]">
|
||||
{t('landing:pillar3.data_ownership', 'Propiedad de datos')}
|
||||
{t('landing:pillars.pillar3.data_ownership', 'Propiedad de datos')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
|
||||
<div className="text-3xl font-bold text-blue-600 mb-2">
|
||||
{t('landing:pillar3.co2_metric', 'CO₂')}
|
||||
{t('landing:pillars.pillar3.co2_metric', 'CO₂')}
|
||||
</div>
|
||||
<p className="text-sm text-[var(--text-secondary)]">
|
||||
{t('landing:pillar3.co2', 'Medición automática')}
|
||||
{t('landing:pillars.pillar3.co2', 'Medición automática')}
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-[var(--bg-secondary)] rounded-lg p-4 text-center">
|
||||
<div className="text-3xl font-bold text-amber-600 mb-2">
|
||||
{t('landing:pillar3.sdg_value', 'ODS 12.3')}
|
||||
{t('landing:pillars.pillar3.sdg_value', 'ODS 12.3')}
|
||||
</div>
|
||||
<p className="text-sm text-[var(--text-secondary)]">
|
||||
{t('landing:pillar3.sdg', 'Seguimiento de cumplimiento')}
|
||||
{t('landing:pillars.pillar3.sdg', 'Seguimiento de cumplimiento')}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="bg-gradient-to-r from-green-50 to-emerald-50 dark:from-green-900/20 dark:to-emerald-900/20 rounded-lg p-4 border-l-4 border-green-600">
|
||||
<p className="font-bold text-[var(--text-primary)] mb-2">
|
||||
{t('landing:pillar3.sustainability_title', 'Informes de Sostenibilidad Automatizados')}
|
||||
{t('landing:pillars.pillar3.sustainability_title', 'Informes de Sostenibilidad Automatizados')}
|
||||
</p>
|
||||
<p className="text-sm text-[var(--text-secondary)]">
|
||||
{t('landing:pillar3.sustainability_desc', 'Genera informes que cumplen con los estándares internacionales de sostenibilidad y reducción de desperdicio alimentario')}
|
||||
{t('landing:pillars.pillar3.sustainability_desc', 'Genera informes que cumplen con los estándares internacionales de sostenibilidad y reducción de desperdicio alimentario')}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -456,7 +456,7 @@ const LandingPage: React.FC = () => {
|
||||
|
||||
{/* Link to Features Page */}
|
||||
<div className="mt-12 text-center">
|
||||
<Link to="/features" className="inline-flex items-center gap-2 text-[var(--color-primary)] hover:text-[var(--color-primary-dark)] font-semibold text-lg group">
|
||||
<Link to="/features" className="inline-flex items-center gap-2 text-[var(--color-primary)] hover:text-white font-semibold text-lg group px-6 py-3 rounded-lg transition-all duration-200 hover:bg-[var(--color-primary)] no-underline">
|
||||
{t('landing:pillars.see_all', 'Ver todas las funcionalidades en detalle')}
|
||||
<ChevronRight className="w-5 h-5 group-hover:translate-x-1 transition-transform" />
|
||||
</Link>
|
||||
@@ -571,6 +571,10 @@ const LandingPage: React.FC = () => {
|
||||
<Check className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
|
||||
<span className="text-[var(--text-secondary)]">{t('landing:pilot.we_ask.item2', 'Tarjeta de crédito (sin cargo por 3 meses)')}</span>
|
||||
</li>
|
||||
<li className="flex items-start gap-2">
|
||||
<Check className="w-5 h-5 text-blue-600 mt-0.5 flex-shrink-0" />
|
||||
<span className="text-[var(--text-secondary)]">{t('landing:pilot.we_ask.item3', 'Comprensión de que es un programa piloto y feedback semanal sobre fallos y mejoras')}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -35,7 +35,7 @@ export const PrivacyPolicyPage: React.FC = () => {
|
||||
The data controller responsible for your personal data is:
|
||||
</p>
|
||||
<div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg mb-4">
|
||||
<p className="font-semibold">Panadería IA</p>
|
||||
<p className="font-semibold">{t('common:app.name', 'BakeWise')}</p>
|
||||
<p>Email: privacy@panaderia-ia.com</p>
|
||||
<p>Website: https://panaderia-ia.com</p>
|
||||
</div>
|
||||
|
||||
@@ -32,13 +32,13 @@ export const TermsOfServicePage: React.FC = () => {
|
||||
1. {t('legal:terms.section_1_title', 'Agreement to Terms')}
|
||||
</h2>
|
||||
<p className="text-gray-700 dark:text-gray-300 mb-4">
|
||||
By accessing or using Panadería IA ("the Platform", "our Service"), you agree to be
|
||||
By accessing or using {t('common:app.name', 'BakeWise')} ("the Platform", "our Service"), you agree to be
|
||||
bound by these Terms of Service ("Terms"). If you do not agree to these Terms, do not
|
||||
use the Platform.
|
||||
</p>
|
||||
<p className="text-gray-700 dark:text-gray-300">
|
||||
These Terms constitute a legally binding agreement between you ("User", "you", "your")
|
||||
and Panadería IA regarding your use of the Platform.
|
||||
and {t('common:app.name', 'BakeWise')} regarding your use of the Platform.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
@@ -47,7 +47,7 @@ export const TermsOfServicePage: React.FC = () => {
|
||||
2. {t('legal:terms.section_2_title', 'Description of Service')}
|
||||
</h2>
|
||||
<p className="text-gray-700 dark:text-gray-300 mb-4">
|
||||
Panadería IA provides a comprehensive bakery management platform that includes:
|
||||
{t('common:app.name', 'BakeWise')} provides a comprehensive bakery management platform that includes:
|
||||
</p>
|
||||
<ul className="list-disc pl-6 mb-4 text-gray-700 dark:text-gray-300 space-y-1">
|
||||
<li>Inventory management and tracking</li>
|
||||
@@ -176,7 +176,7 @@ export const TermsOfServicePage: React.FC = () => {
|
||||
6.1 Platform Ownership
|
||||
</h3>
|
||||
<p className="text-gray-700 dark:text-gray-300 mb-4">
|
||||
The Platform and all content, features, and functionality are owned by Panadería IA and
|
||||
The Platform and all content, features, and functionality are owned by {t('common:app.name', 'BakeWise')} and
|
||||
are protected by international copyright, trademark, and other intellectual property laws.
|
||||
</p>
|
||||
|
||||
@@ -197,7 +197,7 @@ export const TermsOfServicePage: React.FC = () => {
|
||||
6.3 Trademarks
|
||||
</h3>
|
||||
<p className="text-gray-700 dark:text-gray-300">
|
||||
"Panadería IA" and our logo are trademarks. You may not use our trademarks without
|
||||
"{t('common:app.name', 'BakeWise')}" and our logo are trademarks. You may not use our trademarks without
|
||||
prior written consent.
|
||||
</p>
|
||||
</section>
|
||||
@@ -300,7 +300,7 @@ export const TermsOfServicePage: React.FC = () => {
|
||||
10. {t('legal:terms.section_10_title', 'Indemnification')}
|
||||
</h2>
|
||||
<p className="text-gray-700 dark:text-gray-300">
|
||||
You agree to indemnify and hold harmless Panadería IA from any claims, damages, losses,
|
||||
You agree to indemnify and hold harmless {t('common:app.name', 'BakeWise')} from any claims, damages, losses,
|
||||
liabilities, and expenses (including legal fees) arising from:
|
||||
</p>
|
||||
<ul className="list-disc pl-6 mb-4 text-gray-700 dark:text-gray-300 space-y-1">
|
||||
@@ -364,7 +364,7 @@ export const TermsOfServicePage: React.FC = () => {
|
||||
</h3>
|
||||
<p className="text-gray-700 dark:text-gray-300 mb-4">
|
||||
These Terms, together with our Privacy Policy and Cookie Policy, constitute the entire
|
||||
agreement between you and Panadería IA.
|
||||
agreement between you and {t('common:app.name', 'BakeWise')}.
|
||||
</p>
|
||||
|
||||
<h3 className="text-xl font-semibold text-gray-900 dark:text-white mb-3">
|
||||
@@ -398,7 +398,7 @@ export const TermsOfServicePage: React.FC = () => {
|
||||
For questions about these Terms, contact us at:
|
||||
</p>
|
||||
<div className="bg-gray-50 dark:bg-gray-800 p-4 rounded-lg">
|
||||
<p className="font-semibold">Panadería IA</p>
|
||||
<p className="font-semibold">{t('common:app.name', 'BakeWise')}</p>
|
||||
<p>Email: legal@panaderia-ia.com</p>
|
||||
<p>Website: https://panaderia-ia.com</p>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user