1ee8288c7e
Google Analytics integration, off by default and GDPR-compliant for EU:
- src/lib/analytics/gtag.ts: typed event helpers + consent control. Every
function is a safe no-op when NEXT_PUBLIC_GA_ID is unset.
- GoogleAnalytics.tsx: loads gtag.js with Consent Mode v2, all storage
defaulting to "denied". anonymize_ip on, send_page_view off.
- ConsentBanner.tsx: on-brand cookie banner, localized to all 5 locales,
persists choice for one year, flips analytics_storage to granted on accept.
- PageViewTracker.tsx: fires page_view on App Router client navigation
(inside Suspense for useSearchParams).
- Key conversion events wired: ai_consultation_submitted (primary funnel
goal) and ai_chat_opened.
- Consent strings added to messages/{en,it,vec,es,de}.json.
Build plumbing:
- NEXT_PUBLIC_GA_ID inlined at build time via Dockerfile ARG +
docker-compose build.args (NEXT_PUBLIC_* must exist during next build,
not just runtime).
- Nginx CSP extended to allow googletagmanager.com + google-analytics.com.
- env template documents NEXT_PUBLIC_GA_ID (empty = analytics disabled).
Verified: production build inlines the Measurement ID into the client
bundle; site builds cleanly both with and without the ID set.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
222 lines
10 KiB
JSON
222 lines
10 KiB
JSON
{
|
|
"Consent": {
|
|
"title": "Respetamos tu privacidad",
|
|
"body": "Usamos cookies analíticas para entender cómo los visitantes usan nuestro sitio y mejorarlo. No se recopila ningún dato hasta que aceptes.",
|
|
"learnMore": "Política de privacidad",
|
|
"accept": "Aceptar",
|
|
"decline": "Rechazar"
|
|
},
|
|
"Navigation": {
|
|
"applications": "Aplicaciones",
|
|
"globalMap": "Mapa Global",
|
|
"ourStory": "Nuestra Historia",
|
|
"parts": "Repuestos",
|
|
"insideFlux": "Inside Flux"
|
|
},
|
|
"HeroReel": {
|
|
"title1": "Innovación,",
|
|
"title2": "no imitación.",
|
|
"description1": "Impulsando la innovación donde otros dudan",
|
|
"description2": "Creando soluciones de RF de última generación con precisión inigualable y excelencia europea."
|
|
},
|
|
"CartDrawer": {
|
|
"titleSupport": "Soporte Técnico",
|
|
"titleCart": "Carrito de Operaciones",
|
|
"tabParts": "Repuestos",
|
|
"tabDiagnostic": "Solicitar Diagnóstico",
|
|
"emptyCart": "Tu carrito está vacío.",
|
|
"needHelp": "¿Necesitas asistencia técnica en su lugar?",
|
|
"quote": "Cotización",
|
|
"contactDetails": "Detalles de Contacto",
|
|
"fullName": "Nombre Completo",
|
|
"email": "Correo Corporativo",
|
|
"company": "Empresa",
|
|
"phone": "Teléfono (Opcional)",
|
|
"placeholderDiagnostic": "Describe la falla, códigos de error o síntomas...",
|
|
"placeholderCart": "Notas adicionales para tu pedido...",
|
|
"attachMedia": "Adjuntar Archivos (Opcional)",
|
|
"selectFiles": "Seleccionar Archivos",
|
|
"dragDrop": "Arrastra videos o fotos aquí. Máximo 50MB por archivo.",
|
|
"gdprAgreement": "Acepto la",
|
|
"dataPrivacy": "Política de Privacidad de Datos",
|
|
"gdprDesc": ". Mis archivos serán analizados de forma segura por FLUX Engineering y eliminados tras la resolución.",
|
|
"estSubtotal": "Subtotal Est.",
|
|
"quotePending": "+ Artículos pendientes de cotización",
|
|
"btnSubmitEngineering": "Enviar a Ingeniería",
|
|
"btnRequestComponents": "Solicitar Componentes",
|
|
"encrypting": "Encriptando Archivos...",
|
|
"connecting": "Conectando...",
|
|
"successTitle": "Solicitud Recibida",
|
|
"successDesc1": "Tu ticket",
|
|
"successDesc2": "ha sido asignado a nuestro equipo de ingeniería.",
|
|
"closePanel": "Cerrar Panel",
|
|
"modalTitle": "Privacidad y Manejo de Datos",
|
|
"modalDesc1": "En cumplimiento con el RGPD de la UE, FLUX Srl recopila tu información de contacto y archivos estrictamente para diagnóstico técnico y cotizaciones comerciales.",
|
|
"modalDesc2": "Eliminación Automática:",
|
|
"modalDesc3": "Todos los videos e imágenes adjuntos se almacenan en un entorno seguro y serán",
|
|
"modalDesc4": "borrados permanentemente de nuestros servidores",
|
|
"modalDesc5": "automáticamente una vez que nuestros ingenieros resuelvan tu ticket.",
|
|
"understood": "Entendido"
|
|
},
|
|
"HeritagePage": {
|
|
"backToOverview": "Volver a la Vista General",
|
|
"subtitle": "El Legado de FLUX",
|
|
"title1": "Ingeniando un legado.",
|
|
"title2": "Redefiniendo el futuro.",
|
|
"emptyState": "La historia profunda se está redactando actualmente en el CMS."
|
|
},
|
|
"WhatWeDo": {
|
|
"subtitle": "Qué Hacemos",
|
|
"title": "Desarrollamos tecnologías avanzadas Radio Frequency (RF) para impulsar las industrias del mañana.",
|
|
"desc": "Entregando innovación, eficiencia y sostenibilidad en cada solución.",
|
|
"tech": "Nuestra tecnología Pulse Wave utiliza campos electromagnéticos de alta frecuencia para calentar las moléculas de agua dentro de un producto.",
|
|
"process": "Al exponerse a estas ondas, las moléculas vibran y giran millones de veces por segundo.",
|
|
"efficiency": "Esta transferencia de calor intrínseca e inmediata ocurre de manera uniforme, haciendo que el proceso sea significativamente más rápido y eficiente energéticamente que los métodos convencionales.",
|
|
"servicesSubtitle": "Nuestros Servicios",
|
|
"servicesTitle1": "Elevando sus procesos de fabricación con ",
|
|
"servicesTitle2": "velocidad, precisión, ",
|
|
"servicesTitle3": "y ",
|
|
"servicesTitle4": "optimización energética.",
|
|
"servicesDesc": "Gracias a la versatilidad de nuestra tecnología, ofrecemos soluciones dedicadas en múltiples sectores, adaptando la innovación de RF a las demandas específicas de cada campo."
|
|
},
|
|
"AppsDeep": {
|
|
"subtitle": "Nuestra Experiencia",
|
|
"title1": "Aplicaciones ",
|
|
"title2": "Industriales.",
|
|
"moreInfo": "Más Información"
|
|
},
|
|
"GlobalOperations": {
|
|
"subtitle": "Presencia Mundial",
|
|
"title1": "Escala global.",
|
|
"title2": "Precisión local.",
|
|
"filterAll": "Red Global",
|
|
"filterInstallations": "Instalaciones",
|
|
"filterEvents": "Próximos Eventos",
|
|
"filterHQ": "Sede Histórica",
|
|
"filterByApp": "Filtrar por aplicación:",
|
|
"networkStatus": "Estado de la Red",
|
|
"statusTracking": "Monitoreando actualmente {count} despliegues globales, transmitiendo datos en vivo.",
|
|
"statusShowing": "Mostrando instalaciones especializadas de RF en {app} a través de nuestra red global.",
|
|
"helpText": "[ Arrastre para rotar • Desplazar para zoom ]",
|
|
"statusDetails": "Estado / Detalles",
|
|
"viewCaseStudy": "Ver Caso de Estudio",
|
|
"typeEvent": "Evento / Exhibición",
|
|
"typeHQ": "Sede Central",
|
|
"typeInstall": "Instalación de Campo"
|
|
},
|
|
"AppsDashboard": {
|
|
"subtitle": "Aplicaciones de RF",
|
|
"title1": "Diseñado para su industria.",
|
|
"title2": "Optimizado para la eficiencia.",
|
|
"desc": "Nuestra tecnología Solid-State RF es altamente flexible para la programación de producción. Seleccione una aplicación a continuación para ver el impacto en sus métricas operativas.",
|
|
"calcROI": "Calcular ROI",
|
|
"compareTech": "Comparar Tecnologías",
|
|
"viewSpecs": "Ver Especificaciones"
|
|
},
|
|
"OurStory": {
|
|
"subtitle": "Legado de la Empresa",
|
|
"title": "Una historia de innovación."
|
|
},
|
|
"NewsHub": {
|
|
"subtitle": "Inside Flux",
|
|
"title1": "Historias desde el ",
|
|
"title2": "núcleo.",
|
|
"description": "Actualizaciones tecnológicas, avances de ingeniería y una mirada detrás de escena a las personas que impulsan el futuro de la tecnología RF.",
|
|
"emptyState": "La sala de redacción está preparando la primera historia.",
|
|
"readFull": "Leer historia completa",
|
|
"readMore": "Leer más"
|
|
},
|
|
"PatrizioLegacy": {
|
|
"subtitle": "Nuestra Herencia",
|
|
"title1": "40 Años de Excelencia en RF.",
|
|
"title2": "Reimaginado para 2026.",
|
|
"p1_1": "Fundada y dirigida por el Ingeniero ",
|
|
"p1_2": "Patrizio Grando",
|
|
"p1_3": ", quien se reintegró a la empresa en 2023 para continuar su legado de innovación. FLUX Srl lleva adelante cuatro décadas de experiencia inigualable en tecnología Radio Frequency (RF).",
|
|
"p2": "Nos enfocamos en desarrollar soluciones Solid-State RF de vanguardia para mercados innovadores, donde los competidores carecen de la experiencia necesaria y el conocimiento detallado de ingeniería.",
|
|
"button": "Leer más sobre el legado de Patrizio"
|
|
},
|
|
"CaseStudyModal": {
|
|
"typeEvent": "Evento / Exhibición",
|
|
"typeHQ": "Sede Central",
|
|
"typeInstall": "Instalación de Campo",
|
|
"keyHighlight": "Hito Clave",
|
|
"keyMetric": "Métrica Clave",
|
|
"locationStand": "Ubicación / Stand",
|
|
"energyImpact": "Impacto Energético",
|
|
"systemStatus": "Estado del Sistema",
|
|
"scheduled": "Programado",
|
|
"concluded": "Concluido",
|
|
"operational": "Totalmente Operativo",
|
|
"eventOverview": "Resumen del Evento",
|
|
"projectChronicle": "Crónica del Proyecto",
|
|
"pendingData": "[ Datos de crónica pendientes para este nodo ]",
|
|
"mediaGallery": "Galería de Medios"
|
|
},
|
|
"Footer": {
|
|
"madeInItaly": "Hecho en Italia",
|
|
"rights": "Todos los derechos reservados",
|
|
"techTitle": "Tecnología",
|
|
"appsTitle": "Aplicaciones",
|
|
"companyTitle": "Empresa",
|
|
"hqTitle": "Sede Central",
|
|
"techSolidState": "Solid-State RF",
|
|
"techMicrowave": "Microwave Systems",
|
|
"techEfficiency": "Eficiencia Energética",
|
|
"companyStory": "Nuestra Historia",
|
|
"companyMap": "Red Global",
|
|
"companyNews": "Inside Flux"
|
|
},
|
|
"SpareParts": {
|
|
"title1": "Matriz de",
|
|
"title2": "Componentes.",
|
|
"description": "Repuestos y actualizaciones originales de FLUX. Asegure el máximo rendimiento y longevidad para su equipo de RF.",
|
|
"quoteBased": "Bajo Cotización",
|
|
"searchPlaceholder": "Buscar por SKU, nombre o especificación...",
|
|
"componentsFound": "componentes encontrados",
|
|
"componentFound": "componente encontrado",
|
|
"noComponents": "No se encontraron componentes",
|
|
"clearSearch": "Limpiar búsqueda",
|
|
"accessRestricted": "Acceso Restringido",
|
|
"accessDescription": "La Matriz de Componentes FLUX es un portal exclusivo B2B. Por favor, inicie sesión con su cuenta corporativa o solicite acceso para ver componentes, precios y fichas técnicas.",
|
|
"signIn": "Iniciar Sesión",
|
|
"requestAccess": "Solicitar Acceso",
|
|
"b2bLogin": "Login B2B",
|
|
"addToCart": "Añadir al Carrito de Operaciones",
|
|
"unitPrice": "Precio Unitario",
|
|
"productOverview": "Descripción del Producto",
|
|
"techSpecs": "Especificaciones Técnicas",
|
|
"noMedia": "No hay archivos multimedia",
|
|
"mediaGallery": "Galería de Medios",
|
|
"page": "Página",
|
|
"of": "de"
|
|
},
|
|
"ArticlePage": {
|
|
"backToNewsHub": "Volver al News Hub",
|
|
"backToNews": "Volver a Noticias",
|
|
"mediaGallery": "Galería de Medios",
|
|
"joinLinkedIn": "Únete a la conversación en LinkedIn",
|
|
"internalRelease": "Comunicado Corporativo Interno"
|
|
},
|
|
"AuthModal": {
|
|
"b2bPortal": "Portal B2B",
|
|
"signIn": "Iniciar Sesión",
|
|
"requestAccess": "Solicitar Acceso",
|
|
"corporateEmail": "Correo Corporativo",
|
|
"password": "Contraseña",
|
|
"accessPortal": "Acceder al Portal Seguro",
|
|
"fullName": "Nombre Completo",
|
|
"companyName": "Nombre de la Empresa",
|
|
"workEmail": "Correo de Trabajo",
|
|
"createPassword": "Crear Contraseña",
|
|
"submitRequest": "Enviar Solicitud",
|
|
"successMessage": "Acceso solicitado con éxito. Le notificaremos por correo tras la aprobación de ingeniería.",
|
|
"updateCredentials": "Actualizar Credenciales de Seguridad",
|
|
"currentPassword": "Contraseña Actual",
|
|
"newPassword": "Nueva Contraseña",
|
|
"changePassword": "Cambiar Contraseña",
|
|
"passwordUpdated": "Contraseña actualizada de forma segura.",
|
|
"secureLogout": "Cierre de Sesión Seguro",
|
|
"invalidCredentials": "Credenciales inválidas."
|
|
}
|
|
} |