// site/i18n.jsx — translations + language detection // All user-facing strings live here; components pull via the t() helper. const TRANSLATIONS = { it: { // nav 'nav.channels': 'Canali', 'nav.pricing': 'Prezzi', 'nav.faq': 'FAQ', 'nav.contact': 'Prenota una demo', // hero 'hero.eyebrow': 'per musei, teatri e i luoghi della cultura', 'hero.payoff': 'attiva la tua community.', 'hero.subline': 'Hai gi\u00e0 persone che amano quello che fai. Sono disperse su email, WhatsApp, Telegram, SMS, push. Ti manca solo un posto semplice da cui raggiungerle tutte.', 'hero.cta.primary': 'Prenota una demo', 'hero.cta.secondary': 'Scopri i piani', 'hero.cta.demo': 'Prenota una demo', // hero variant b 'hero.b.line1': 'una sola casa', 'hero.b.line2': 'per la tua community.', // hero variant c 'hero.c.before': 'la community che hai gi\u00e0,', 'hero.c.after': 'finalmente al posto giusto.', // pain section 'pain.eyebrow': 'il problema', 'pain.headline': 'la tua community \u00e8 ovunque. e da nessuna parte.', 'pain.body': 'Mailchimp per le newsletter. Un foglio Excel per i soci. Un gruppo WhatsApp gestito a mano. Un fornitore esterno per gli SMS. Un\u2019app fatta da un\u2019agenzia che non risponde pi\u00f9. Ogni canale \u00e8 un\u2019isola: nessuno parla con gli altri, nessuno sa chi \u00e8 chi.', 'pain.body2': 'Il risultato? Passi pi\u00f9 tempo a esportare CSV che a curare il pubblico per cui lavori.', 'pain.bridge.before': 'prima', 'pain.bridge.after': 'con showtime!', 'pain.before.1': '15 strumenti scollegati', 'pain.after.1': 'una sola console', 'pain.before.2': 'contatti duplicati ovunque', 'pain.after.2': 'un\u2019anagrafica unica', 'pain.before.3': 'CSV su CSV', 'pain.after.3': 'segmenti in due click', 'pain.before.4': 'ogni canale un fornitore', 'pain.after.4': 'cinque canali, un prezzo', 'pain.before.5': 'il visitatore \u00e8 un biglietto', 'pain.after.5': 'il visitatore \u00e8 una persona', // solution / channels intro 'sol.eyebrow': 'la soluzione', 'sol.headline': 'un solo posto. tutti i canali. la tua community che torna.', // channels 'ch.eyebrow': 'canali inclusi', 'ch.headline': 'tutti i tuoi canali, una sola console.', 'ch.subline': 'Costruisci segmenti, scrivi una volta, pubblica ovunque. Nessun markup sui costi di terze parti: WhatsApp lo paghi a Meta, gli SMS sono prepagati, tutto il resto \u00e8 incluso.', 'ch.email.name': 'Email', 'ch.email.tagline': 'newsletter, inviti, conferme', 'ch.email.body': 'Editor testo e immagini per comporre le campagne. Definisci il mittente, seleziona i destinatari ed escludi i contatti che vuoi. I volumi inclusi dipendono dal piano.', 'ch.whatsapp.name': 'WhatsApp', 'ch.whatsapp.tagline': 'conversazioni dirette, 1\u20111', 'ch.whatsapp.body': 'Integrazione API Meta inclusa dal piano Starter. Paghi a costo i messaggi di Meta, senza markup.', 'ch.telegram.name': 'Telegram', 'ch.telegram.tagline': 'messaggi diretti ai tuoi contatti', 'ch.telegram.body': 'Raggiungi i tuoi contatti su Telegram uno a uno via API. Incluso nel piano, senza costi aggiuntivi per messaggio.', 'ch.sms.name': 'SMS', 'ch.sms.tagline': 'massima copertura, anche offline', 'ch.sms.body': 'Anche per chi non ha smartphone o non legge mail. Crediti prepagati, validi 12 mesi.', 'ch.push.name': 'Push *', 'ch.push.tagline': 'notifiche istantanee', 'ch.push.body': 'Verso la tua app mobile dedicata. Segmentate per et\u00e0, area, preferenze. Illimitate, sempre.', 'ch.app.note': '*L\u2019app mobile dedicata \u00e8 un add-on su richiesta.', // stats / industry numbers 'stats.eyebrow': 'il momento \u00e8 ora', 'stats.headline': 'la tua community cresce. i tuoi strumenti no.', 'stats.subline': 'Le community attorno alle istituzioni crescono, ma i loro strumenti digitali per gestirle non tengono il passo. Showtime! nasce qui.', 'stats.1.value': '97%', 'stats.1.label': 'dei professionisti culturali vuole usare meglio i propri dati. Solo il 5% ci riesce davvero.', 'stats.1.source': 'Blackbaud', 'stats.2.value': '8\u201315', 'stats.2.label': 'strumenti scollegati per istituzione, in media', 'stats.2.source': 'Urban Insight, 2025', 'stats.3.value': '+7,6%', 'stats.3.label': 'crescita annuale del mercato museale globale', 'stats.3.source': 'Research and Markets, 2025', 'stats.4.value': '80%', 'stats.4.label': 'dei membri rinnova per la missione, non per lo sconto', 'stats.4.source': 'AAM Member Survey, 2025', // social proof 'sp.eyebrow': 'scelgono showtime!', 'sp.headline': 'musei, teatri, biblioteche, festival.', 'sp.note': '', // pricing 'pr.eyebrow': 'piani trasparenti', 'pr.headline': 'scegli in base alla tua community.', 'pr.subline': 'Prezzi pubblicati. Nessun costo di implementazione. Nessun extra per utenti aggiuntivi. Tutti i canali inclusi.', 'pr.month': '/mese', 'pr.billing': 'canone annuale', 'pr.contactsUpTo': 'fino a {n} contatti', 'pr.contactsRaw': '{n} contatti', 'pr.popular': 'pi\u00f9 scelto', 'pr.cta': 'Prenota una demo', 'pr.cta.free': 'Inizia gratis', 'pr.note.1': '*Costi WhatsApp addebitati direttamente da Meta, senza markup. SMS via pacchetti prepagati.', 'pr.note.2': '**L\u2019app mobile dedicata \u00e8 un add-on a parte, su richiesta.', 'pr.free.name': 'Free', 'pr.free.price': '\u20ac0', 'pr.free.tag': 'i primi passi', 'pr.free.contacts': '2.500', 'pr.free.f1': 'Email \u2014 10.000 invii / mese', 'pr.free.f1.value': '10.000 invii / mese', 'pr.free.f2': 'Telegram \u2014 10.000 messaggi / mese', 'pr.free.f2.value': '10.000 messaggi / mese', 'pr.free.f3': 'WhatsApp Business — non incluso', 'pr.free.f3.value': '—', 'pr.free.f4': 'Push illimitate verso app', 'pr.free.f4.value': 'illimitate', 'pr.free.f5': 'SMS via crediti prepagati', 'pr.free.f5.value': 'crediti prepagati', 'pr.free.f6': 'Tutta la console di gestione', 'pr.free.f6.value': 'console completa', 'pr.starter.name': 'Starter', 'pr.starter.price': '\u20ac69', 'pr.starter.tag': 'community consolidata', 'pr.starter.contacts': '30.000', 'pr.starter.f1': 'Email \u2014 120.000 invii / mese', 'pr.starter.f1.value': '120.000 invii / mese', 'pr.starter.f2': 'Telegram \u2014 120.000 messaggi / mese', 'pr.starter.f2.value': '120.000 messaggi / mese', 'pr.starter.f3': 'WhatsApp Business API inclusa', 'pr.starter.f3.value': 'Business API inclusa', 'pr.starter.f4': 'Push illimitate verso app', 'pr.starter.f4.value': 'illimitate', 'pr.starter.f5': 'SMS via crediti prepagati', 'pr.starter.f5.value': 'crediti prepagati', 'pr.starter.f6': 'Segmentazione avanzata + automazioni', 'pr.starter.f6.value': 'segmenti + automazioni', 'pr.pro.name': 'Professional', 'pr.pro.price': '\u20ac169', 'pr.pro.tag': 'grandi istituzioni', 'pr.pro.contacts': '100.000', 'pr.pro.f1': 'Email \u2014 400.000 invii / mese', 'pr.pro.f1.value': '400.000 invii / mese', 'pr.pro.f2': 'Telegram \u2014 400.000 messaggi / mese', 'pr.pro.f2.value': '400.000 messaggi / mese', 'pr.pro.f3': 'WhatsApp Business API inclusa', 'pr.pro.f3.value': 'Business API inclusa', 'pr.pro.f4': 'Push illimitate verso app', 'pr.pro.f4.value': 'illimitate', 'pr.pro.f5': 'SMS via crediti prepagati', 'pr.pro.f5.value': 'crediti prepagati', 'pr.pro.f6': 'Account manager dedicato', 'pr.pro.f6.value': 'account manager dedicato', 'pr.custom.name': 'Custom', 'pr.custom.price': 'Custom', 'pr.custom.tag': 'Su misura', 'pr.custom.contacts': 'oltre 100.000', 'pr.custom.cta': 'Parliamone', 'pr.custom.f1': 'Email — oltre 400.000 invii / mese', 'pr.custom.f1.value': 'oltre 400.000 invii / mese', 'pr.custom.f2': 'Telegram — oltre 400.000 messaggi / mese', 'pr.custom.f2.value': 'oltre 400.000 messaggi / mese', 'pr.custom.f3': 'WhatsApp Business API inclusa', 'pr.custom.f3.value': 'Business API inclusa', 'pr.custom.f4': 'Push illimitate verso app', 'pr.custom.f4.value': 'illimitate', 'pr.custom.f5': 'SMS via crediti prepagati', 'pr.custom.f5.value': 'crediti prepagati', // FAQ 'faq.eyebrow': 'domande frequenti', 'faq.headline': 'le risposte rapide.', 'faq.q1': 'Quando dovrei scegliere il piano Professional rispetto allo Starter?', 'faq.a1': 'Lo Starter \u00e8 pensato per community consolidate fino a 30.000 contatti, con 120.000 invii al mese su email e Telegram. Il Professional serve le grandi istituzioni: fino a 100.000 contatti, 400.000 invii al mese e un account manager dedicato.', 'faq.q2': 'Cosa succede se supero i contatti del mio piano?', 'faq.a2': 'Ti avvisiamo prima che succeda e ti proponiamo il piano successivo. Niente sospensioni, niente sorprese. Se hai un picco temporaneo (una mostra, un festival) lo gestiamo insieme.', 'faq.q3': 'Quanto costa davvero WhatsApp Business?', 'faq.a3': 'L\u2019integrazione API \u00e8 inclusa dal piano Starter. I messaggi li paghi direttamente a Meta secondo le tariffe ufficiali per l\u2019Italia, senza markup da parte nostra. Meta fattura per conversazione, non per messaggio: una conversazione dura 24 ore.', 'faq.q4': 'L\u2019app mobile \u00e8 inclusa nel prezzo?', 'faq.a4': 'No, l\u2019app dedicata \u00e8 un add-on su richiesta. Puoi partire dai canali messaggistici e aggiungere l\u2019app quando vuoi aprire quel canale.', 'faq.q5': 'Posso migrare i miei contatti esistenti?', 'faq.a5': 'S\u00ec. La piattaforma include un importatore da foglio di calcolo e accetta esportazioni dai principali competitor (Mailchimp, SendinBlue e altri). Il sistema gestisce i campi in modo intelligente: non devi riformattare il tuo file prima di importare.', 'faq.q6': 'Quanto dura l\u2019attivazione?', 'faq.a6': 'In genere due settimane dal momento in cui firmiamo il contratto o avviamo la collaborazione. La prima call di setup la facciamo nei primi tre giorni.', 'faq.q7': 'Devo firmare contratti lunghi?', 'faq.a7': 'No. I piani sono annuali. Forniamo fattura italiana, IVA inclusa nelle quote esposte tranne dove diversamente indicato.', 'faq.q8': 'Showtime! \u00e8 conforme al GDPR?', 'faq.a8': 'S\u00ec. Dati ospitati in Europa, nomina a responsabile del trattamento pronta da firmare, esportazione completa in qualunque momento. Siamo nati in Italia per istituzioni internazionali.', // final cta 'cta.eyebrow': 'pronti?', 'cta.headline': 'attiva la tua community. oggi.', 'cta.subline': 'Trenta minuti di call. Niente impegno. Capiamo insieme se ha senso, e se s\u00ec ti mostriamo come ti gestiremmo i contatti che hai gi\u00e0.', 'cta.button': 'Prenota una demo', 'cta.alt': 'O scrivici a hello@showtime.platform', 'cta.email.note': 'O scrivici a showtime@mangomobi.com', // footer 'foot.tagline': 'attiva la tua community.', 'foot.col1': 'Prodotto', 'foot.col1.1': 'Canali', 'foot.col1.2': 'Pricing', 'foot.col1.3': 'App mobile (add-on)', 'foot.col1.4': 'FAQ', 'foot.col2': 'Azienda', 'foot.col2.1': 'Chi siamo', 'foot.col2.2': 'Clienti', 'foot.col2.3': 'Blog', 'foot.col2.4': 'Lavora con noi', 'foot.col3': 'Risorse', 'foot.col3.1': 'Centro assistenza', 'foot.col3.2': 'Stato del servizio', 'foot.col3.3': 'API & integrazioni', 'foot.col3.4': 'Migrazione', 'foot.col4': 'Legali', 'foot.col4.1': 'Privacy', 'foot.col4.2': 'Cookie', 'foot.col4.3': 'Termini', 'foot.col4.4': 'DPA', 'foot.copyright': '\u00a9 2026 Showtime! by Mango Mobile S.r.l. - C.F. e P.IVA: 04527390407 - Tutti i diritti riservati.', // cookie banner 'cookie.body': 'Questo sito usa solo cookie tecnici essenziali (preferenza lingua, consenso). Nessun tracker di terze parti attivo al momento.', 'cookie.accept': 'Accetta tutto', 'cookie.essential': 'Solo essenziali', 'cookie.policy': 'Cookie policy', }, en: { 'nav.channels': 'Channels', 'nav.pricing': 'Pricing', 'nav.faq': 'FAQ', 'nav.contact': 'Book a demo', 'hero.eyebrow': 'for museums, theatres and cultural venues', 'hero.payoff': 'activate your community.', 'hero.subline': 'You already have people who love what you do. They\'re scattered across email, WhatsApp, Telegram, SMS, push. You just need one simple place to reach them all.', 'hero.cta.primary': 'Book a demo', 'hero.cta.secondary': 'See pricing', 'hero.cta.demo': 'Book a demo', 'hero.b.line1': 'one home', 'hero.b.line2': 'for your community.', 'hero.c.before': 'the community you already have,', 'hero.c.after': 'finally in one place.', 'pain.eyebrow': 'the problem', 'pain.headline': 'your community lives everywhere. and nowhere.', 'pain.body': 'Mailchimp for newsletters. A spreadsheet for members. A WhatsApp group someone runs by hand. An external vendor for SMS. An app built by an agency that stopped answering emails. Every channel is an island: none talks to the others, none knows who is who.', 'pain.body2': 'The result? You spend more time exporting CSVs than caring for the audience you exist for.', 'pain.bridge.before': 'before', 'pain.bridge.after': 'with showtime!', 'pain.before.1': '15 disconnected tools', 'pain.after.1': 'one console', 'pain.before.2': 'contacts duplicated everywhere', 'pain.after.2': 'one source of truth', 'pain.before.3': 'CSVs on CSVs', 'pain.after.3': 'segments in two clicks', 'pain.before.4': 'a vendor per channel', 'pain.after.4': 'five channels, one price', 'pain.before.5': 'the visitor is a ticket', 'pain.after.5': 'the visitor is a person', 'sol.eyebrow': 'the solution', 'sol.headline': 'one place. every channel. the community that comes back.', 'ch.eyebrow': 'channels included', 'ch.headline': 'every channel, one console.', 'ch.subline': 'Build segments, write once, publish everywhere. No markup on third-party costs: pay Meta directly for WhatsApp, top up SMS credits, everything else is included.', 'ch.email.name': 'Email', 'ch.email.tagline': 'newsletters, invites, confirmations', 'ch.email.body': 'Text and image editor to compose your campaigns. Set the sender, pick your recipients, and exclude contacts as needed. Included volume depends on your plan.', 'ch.whatsapp.name': 'WhatsApp', 'ch.whatsapp.tagline': 'direct, one-to-one conversations', 'ch.whatsapp.body': 'Meta Business API integration included from the Starter plan. You pay Meta at cost, with no markup from us.', 'ch.telegram.name': 'Telegram', 'ch.telegram.tagline': 'direct messages to your contacts', 'ch.telegram.body': 'Reach your contacts on Telegram one to one via API. Included in your plan, with no per-message charges.', 'ch.sms.name': 'SMS', 'ch.sms.tagline': 'maximum reach, even offline', 'ch.sms.body': 'For people without smartphones or who don\u2019t read email. Prepaid credits, valid for 12 months.', 'ch.push.name': 'Push *', 'ch.push.tagline': 'instant notifications', 'ch.push.body': 'To your dedicated mobile app. Segmented by age, area, preferences. Unlimited, always.', 'ch.app.note': '*The dedicated mobile app is an optional add-on, on request.', 'stats.eyebrow': 'the time is now', 'stats.headline': 'your community is growing. your tools aren\'t.', 'stats.subline': 'Communities around cultural institutions are growing, but their digital tools for managing them can\'t keep up. That\'s where Showtime! comes in.', 'stats.1.value': '97%', 'stats.1.label': 'of cultural professionals want to use their data more effectively. Only 5% actually do.', 'stats.1.source': 'Blackbaud', 'stats.2.value': '8\u201315', 'stats.2.label': 'disconnected tools per institution, on average', 'stats.2.source': 'Urban Insight, 2025', 'stats.3.value': '+7.6%', 'stats.3.label': 'annual growth of the global museum market', 'stats.3.source': 'Research and Markets, 2025', 'stats.4.value': '80%', 'stats.4.label': 'of members renew for the mission, not the discount', 'stats.4.source': 'AAM Member Survey, 2025', 'sp.eyebrow': 'they chose showtime!', 'sp.headline': 'museums, theatres, libraries, festivals.', 'sp.note': '', 'pr.eyebrow': 'transparent pricing', 'pr.headline': 'pick the size of your community.', 'pr.subline': 'Published prices. No implementation fees. No extra cost per user. Every channel included.', 'pr.month': '/month', 'pr.billing': 'billed annually', 'pr.contactsUpTo': 'up to {n} contacts', 'pr.contactsRaw': '{n} contacts', 'pr.popular': 'most chosen', 'pr.cta': 'Book a demo', 'pr.cta.free': 'Start free', 'pr.note.1': '*WhatsApp costs are charged by Meta directly, with no markup. SMS via prepaid credit packs.', 'pr.note.2': '**The dedicated mobile app is a separate add-on, on request.', 'pr.free.name': 'Free', 'pr.free.price': '\u20ac0', 'pr.free.tag': 'first steps', 'pr.free.contacts': '2,500', 'pr.free.f1': 'Email \u2014 10,000 sends / month', 'pr.free.f1.value': '10,000 sends / month', 'pr.free.f2': 'Telegram \u2014 10,000 messages / month', 'pr.free.f2.value': '10,000 messages / month', 'pr.free.f3': 'WhatsApp Business — not included', 'pr.free.f3.value': '—', 'pr.free.f4': 'Unlimited push to your app', 'pr.free.f4.value': 'unlimited', 'pr.free.f5': 'SMS via prepaid credits', 'pr.free.f5.value': 'prepaid credits', 'pr.free.f6': 'Full management console', 'pr.free.f6.value': 'full console', 'pr.starter.name': 'Starter', 'pr.starter.price': '\u20ac69', 'pr.starter.tag': 'established community', 'pr.starter.contacts': '30,000', 'pr.starter.f1': 'Email \u2014 120,000 sends / month', 'pr.starter.f1.value': '120,000 sends / month', 'pr.starter.f2': 'Telegram \u2014 120,000 messages / month', 'pr.starter.f2.value': '120,000 messages / month', 'pr.starter.f3': 'WhatsApp Business API included', 'pr.starter.f3.value': 'Business API included', 'pr.starter.f4': 'Unlimited push to your app', 'pr.starter.f4.value': 'unlimited', 'pr.starter.f5': 'SMS via prepaid credits', 'pr.starter.f5.value': 'prepaid credits', 'pr.starter.f6': 'Advanced segmentation + automations', 'pr.starter.f6.value': 'segments + automations', 'pr.pro.name': 'Professional', 'pr.pro.price': '\u20ac169', 'pr.pro.tag': 'large institutions', 'pr.pro.contacts': '100,000', 'pr.pro.f1': 'Email \u2014 400,000 sends / month', 'pr.pro.f1.value': '400,000 sends / month', 'pr.pro.f2': 'Telegram \u2014 400,000 messages / month', 'pr.pro.f2.value': '400,000 messages / month', 'pr.pro.f3': 'WhatsApp Business API included', 'pr.pro.f3.value': 'Business API included', 'pr.pro.f4': 'Unlimited push to your app', 'pr.pro.f4.value': 'unlimited', 'pr.pro.f5': 'SMS via prepaid credits', 'pr.pro.f5.value': 'prepaid credits', 'pr.pro.f6': 'Dedicated account manager', 'pr.pro.f6.value': 'dedicated account manager', 'pr.custom.name': 'Custom', 'pr.custom.price': 'Custom', 'pr.custom.tag': 'Tailored', 'pr.custom.contacts': '100,000+', 'pr.custom.cta': 'Let’s talk', 'pr.custom.f1': 'Email — over 400,000 sends / month', 'pr.custom.f1.value': 'over 400,000 sends / month', 'pr.custom.f2': 'Telegram — over 400,000 messages / month', 'pr.custom.f2.value': 'over 400,000 messages / month', 'pr.custom.f3': 'WhatsApp Business API included', 'pr.custom.f3.value': 'Business API included', 'pr.custom.f4': 'Unlimited push to your app', 'pr.custom.f4.value': 'unlimited', 'pr.custom.f5': 'SMS via prepaid credits', 'pr.custom.f5.value': 'prepaid credits', 'faq.eyebrow': 'frequently asked', 'faq.headline': 'the short answers.', 'faq.q1': 'When should I pick Professional over Starter?', 'faq.a1': 'Starter is built for established communities up to 30,000 contacts, with 120,000 sends per month on email and Telegram. Professional is for large institutions: up to 100,000 contacts, 400,000 sends per month, and a dedicated account manager.', 'faq.q2': 'What happens if I exceed my contact limit?', 'faq.a2': 'We tell you before it happens and suggest the next plan. No suspensions, no surprises. If you have a temporary spike (an exhibition, a festival) we handle it together.', 'faq.q3': 'How much does WhatsApp Business really cost?', 'faq.a3': 'API integration is included from the Starter plan. Messages are billed by Meta directly at official Italian rates, with no markup from us. Meta charges per conversation, not per message: a conversation lasts 24 hours.', 'faq.q4': 'Is the mobile app included in the price?', 'faq.a4': 'No, the dedicated app is an add-on on request. You can start from messaging channels and add the app whenever you want to open that channel.', 'faq.q5': 'Can I migrate my existing contacts?', 'faq.a5': 'Yes. The platform includes a spreadsheet importer and accepts exports from major competitors (Mailchimp, SendinBlue and others). The system handles fields intelligently — you don’t need to reformat your file before importing.', 'faq.q6': 'How long does activation take?', 'faq.a6': 'Usually two weeks from when we sign the contract or start working together. The first setup call happens in the first three days.', 'faq.q7': 'Do I have to sign long-term contracts?', 'faq.a7': 'No. Plans are annual. We invoice from Italy, Italian VAT included in the listed prices unless otherwise stated.', 'faq.q8': 'Is Showtime! GDPR-compliant?', 'faq.a8': 'Yes. Data hosted in Europe, DPA ready to sign, full export at any time. Built in Italy for international institutions.', 'cta.eyebrow': 'ready?', 'cta.headline': 'activate your community. today.', 'cta.subline': 'A thirty-minute call. No commitment. We figure out together if it makes sense, and if it does, we show you how we\u2019d handle the contacts you already have.', 'cta.button': 'Book a demo', 'cta.alt': 'Or write to hello@showtime.platform', 'cta.email.note': 'Or write us at showtime@mangomobi.com', 'foot.tagline': 'activate your community.', 'foot.col1': 'Product', 'foot.col1.1': 'Channels', 'foot.col1.2': 'Pricing', 'foot.col1.3': 'Mobile app (add-on)', 'foot.col1.4': 'FAQ', 'foot.col2': 'Company', 'foot.col2.1': 'About', 'foot.col2.2': 'Customers', 'foot.col2.3': 'Blog', 'foot.col2.4': 'Careers', 'foot.col3': 'Resources', 'foot.col3.1': 'Help centre', 'foot.col3.2': 'Status', 'foot.col3.3': 'API & integrations', 'foot.col3.4': 'Migration', 'foot.col4': 'Legal', 'foot.col4.1': 'Privacy', 'foot.col4.2': 'Cookies', 'foot.col4.3': 'Terms', 'foot.col4.4': 'DPA', 'foot.copyright': '\u00a9 2026 Showtime! by Mango Mobile S.r.l. - VAT no. 04527390407 - All rights reserved.', // cookie banner 'cookie.body': 'This site uses only essential technical cookies (language preference, consent). No third-party trackers are active at this time.', 'cookie.accept': 'Accept all', 'cookie.essential': 'Essential only', 'cookie.policy': 'Cookie policy', }, }; // Auto-detect from browser language. If 'it', use Italian; else English. function detectLang() { try { const stored = localStorage.getItem('showtime-lang'); if (stored === 'it' || stored === 'en') return stored; } catch (e) {} const nav = (navigator.language || navigator.userLanguage || 'en').toLowerCase(); return nav.startsWith('it') ? 'it' : 'en'; } // Language context — components read with useLang() const LangContext = React.createContext({ lang: 'en', setLang: () => {} }); function useLang() { return React.useContext(LangContext); } function useT() { const { lang } = useLang(); return React.useCallback((key, vars) => { let s = (TRANSLATIONS[lang] && TRANSLATIONS[lang][key]) || TRANSLATIONS.en[key] || key; if (vars) for (const k in vars) s = s.replace('{' + k + '}', vars[k]); return s; }, [lang]); } Object.assign(window, { TRANSLATIONS, detectLang, LangContext, useLang, useT });