#!/usr/bin/env python3
"""
1. Expand all product translation JSON files with full calculator strings
2. Add data-i18n attributes to the HTML elements
"""
import json, re, os

BASE = '/root/clawd/stroller-app'

# ── FULL ENGLISH TRANSLATION CONTENT PER PAGE ────────────────────────────────

TRANSLATIONS = {

'formula': {
  'en': {
    "hero": {"title": "The $2,500 Formula Decision", "subtitle": "Formula feeding costs $100–200/month for 12 months. The brand you pick adds up fast."},
    "tabs": {"calculator": "Calculator", "products": "Browse Products"},
    "calculator": {
      "title": "Calculate Your Formula Costs",
      "subtitle": "See exactly how much you'll spend in baby's first year",
      "feedingMethod": "Feeding Method",
      "formulaType": "Formula Type",
      "monthsOnFormula": "Months on Formula",
      "monthlyCans": "Cans Per Month",
      "monthlyCost": "Monthly Cost",
      "yearlyCost": "Annual Cost",
      "totalCost": "Total Cost",
      "perCan": "per can",
      "estimate": "estimate"
    },
    "tips": {"title": "Money-Saving Tips", "items": [
      {"title": "🏷️ Store Brands Save 30–50%", "text": "Target Up&Up, Kirkland, and Amazon Mama Bear meet the same FDA standards as name brands."},
      {"title": "📦 Buy in Bulk", "text": "Costco and warehouse clubs often sell formula 20–30% cheaper per ounce."},
      {"title": "🎁 WIC Program (US)", "text": "WIC covers formula for qualifying families. Apply early — it covers most of the first year."},
      {"title": "✉️ Sign Up for Brand Coupons", "text": "Similac and Enfamil mail $5–20 coupons to new parents. Request them before baby arrives."}
    ]},
    "products": {"title": "Browse Formula Products", "shopAmazon": "Shop on Amazon"}
  },
  'es-MX': {
    "hero": {"title": "La Decisión de $2,500 en Fórmula", "subtitle": "La fórmula cuesta $1,500–3,000 MXN/mes durante 12 meses. La marca que eliges importa."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Productos"},
    "calculator": {
      "title": "Calcula tus Costos de Fórmula",
      "subtitle": "Ve exactamente cuánto gastarás en el primer año",
      "feedingMethod": "Método de Alimentación",
      "formulaType": "Tipo de Fórmula",
      "monthsOnFormula": "Meses con Fórmula",
      "monthlyCans": "Latas por Mes",
      "monthlyCost": "Costo Mensual",
      "yearlyCost": "Costo Anual",
      "totalCost": "Costo Total",
      "perCan": "por lata",
      "estimate": "estimado"
    },
    "tips": {"title": "Tips para Ahorrar", "items": [
      {"title": "🏪 Marcas Genéricas Funcionan", "text": "Las marcas genéricas tienen los mismos nutrientes regulados que las marcas de nombre, a 30–50% menos."},
      {"title": "🏬 Costco México", "text": "Costco vende fórmula en paquetes grandes con descuentos de hasta 25%."},
      {"title": "📋 Programa de Apoyo IMSS", "text": "El IMSS y el ISSSTE ofrecen fórmula subsidiada para madres que no pueden amamantar."},
      {"title": "📦 Compra en Liverpool y Coppel", "text": "Ofertas frecuentes en Liverpool y Coppel con meses sin intereses."}
    ]},
    "products": {"title": "Ver Productos de Fórmula", "shopAmazon": "Comprar en Amazon"}
  },
  'es-ES': {
    "hero": {"title": "La Decisión de 2.500€ en Leche", "subtitle": "La leche de fórmula cuesta 100–200€/mes durante 12 meses. Elige bien."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Productos"},
    "calculator": {
      "title": "Calcula tus Costos de Leche",
      "subtitle": "Ve exactamente cuánto gastarás en el primer año",
      "feedingMethod": "Método de Alimentación",
      "formulaType": "Tipo de Leche",
      "monthsOnFormula": "Meses con Leche",
      "monthlyCans": "Botes por Mes",
      "monthlyCost": "Coste Mensual",
      "yearlyCost": "Coste Anual",
      "totalCost": "Coste Total",
      "perCan": "por bote",
      "estimate": "estimado"
    },
    "tips": {"title": "Consejos para Ahorrar", "items": [
      {"title": "🏪 Marcas Blancas Funcionan", "text": "Mercadona, Carrefour y Lidl ofrecen leches adaptadas al mismo estándar europeo, hasta 40% más baratas."},
      {"title": "💊 Sanidad Pública", "text": "El pediatra puede prescribir leche especial si hay intolerancia. Cúbrela con la seguridad social."},
      {"title": "📦 Compra en Packs Grandes", "text": "Amazon y El Corte Inglés ofrecen descuentos en packs de 6+ botes."},
      {"title": "🎁 Muestras Gratis", "text": "Pide muestras gratuitas a tu matrona — muchas marcas las ofrecen en los centros de salud."}
    ]},
    "products": {"title": "Ver Productos de Leche", "shopAmazon": "Comprar en Amazon"}
  },
  'fr-CA': {
    "hero": {"title": "La Décision à 2 500$ pour le Lait", "subtitle": "Le lait maternisé coûte 150–250$/mois pendant 12 mois. Le choix de marque compte."},
    "tabs": {"calculator": "Calculatrice", "products": "Voir les Produits"},
    "calculator": {
      "title": "Calculez vos Coûts de Lait",
      "subtitle": "Voyez exactement combien vous dépenserez la première année",
      "feedingMethod": "Mode d'Alimentation",
      "formulaType": "Type de Lait",
      "monthsOnFormula": "Mois avec Lait",
      "monthlyCans": "Boîtes par Mois",
      "monthlyCost": "Coût Mensuel",
      "yearlyCost": "Coût Annuel",
      "totalCost": "Coût Total",
      "perCan": "par boîte",
      "estimate": "estimation"
    },
    "tips": {"title": "Conseils pour Économiser", "items": [
      {"title": "🏪 Marques Génériques", "text": "Les marques de Walmart Canada et Costco respectent les mêmes normes Santé Canada, à 30–40% moins cher."},
      {"title": "👶 Programme Mieux-Être", "text": "Certaines provinces offrent des programmes d'aide alimentaire pour nourrissons. Vérifiez avec votre CLSC."},
      {"title": "📦 Acheter en Gros à Costco", "text": "Costco Canada vend en gros formats avec des économies importantes par portion."},
      {"title": "✉️ Coupons des Fabricants", "text": "Similac et Enfamil envoient des coupons de 10–20$ aux nouveaux parents. Inscrivez-vous avant la naissance."}
    ]},
    "products": {"title": "Voir les Produits de Lait", "shopAmazon": "Acheter sur Amazon"}
  }
},

'bottles': {
  'en': {
    "hero": {"title": "The $500 Baby Bottle Decision", "subtitle": "Bottles seem cheap — until you count all the pieces, sizes, and extras."},
    "tabs": {"calculator": "Calculator", "products": "Browse Products"},
    "calculator": {"title": "Calculate Your Bottle Costs", "subtitle": "Nipples, sterilizers, drying racks, and more add up fast"},
    "tips": {"title": "Money-Saving Tips", "items": [
      {"title": "🧪 Test Before Buying Sets", "text": "Buy 1–2 bottles before committing to a brand. Babies are picky — many parents end up switching."},
      {"title": "🔄 Nipple Sizes Matter", "text": "Buy nipples per age stage, not all at once. You'll waste money on sizes baby skips."},
      {"title": "🏷️ Buy Sets on Amazon", "text": "Amazon often has multi-pack bottle sets 20–30% cheaper than baby stores."},
      {"title": "🔁 Skip the Fancy Sterilizer", "text": "A microwave sterilizer bag ($10) works just as well as a $80 electric sterilizer."}
    ]},
    "products": {"title": "Browse Baby Bottles", "shopAmazon": "Shop on Amazon"}
  },
  'es-MX': {
    "hero": {"title": "La Decisión de $500 en Biberones", "subtitle": "Los biberones parecen baratos hasta que cuentas piezas, tallas y accesorios."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Productos"},
    "calculator": {"title": "Calcula tus Costos de Biberones", "subtitle": "Mamaderas, esterilizadores, secadores — todo suma rápido"},
    "tips": {"title": "Tips para Ahorrar", "items": [
      {"title": "🧪 Prueba Antes de Comprar Sets", "text": "Compra 1–2 biberones antes de comprometerte. Los bebés son exigentes."},
      {"title": "🏪 Walmart y Liverpool", "text": "Walmart México tiene sets de biberones a buenos precios. Liverpool tiene marcas premium en oferta."},
      {"title": "🔁 Esterilizador de Microondas", "text": "Una bolsa para microondas ($80 MXN) funciona igual que un esterilizador eléctrico de $600 MXN."},
      {"title": "📦 Compra en Packs", "text": "Los packs de 4–6 biberones son mucho más económicos que comprar individuales."}
    ]},
    "products": {"title": "Ver Biberones", "shopAmazon": "Comprar en Amazon"}
  },
  'es-ES': {
    "hero": {"title": "La Decisión de 500€ en Biberones", "subtitle": "Los biberones parecen baratos hasta que sumas tetinas, esterilizadores y accesorios."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Productos"},
    "calculator": {"title": "Calcula tus Costos de Biberones", "subtitle": "Tetinas, esterilizadores, escurridores — todo suma"},
    "tips": {"title": "Consejos para Ahorrar", "items": [
      {"title": "🧪 Prueba Antes de Comprar", "text": "Compra 1–2 biberones antes del set completo. Los bebés son muy selectivos con las tetinas."},
      {"title": "🏪 El Corte Inglés y Carrefour", "text": "Buenas ofertas en sets de biberones. Compara marcas españolas como Chicco y NUK."},
      {"title": "🔁 Esterilizador de Microondas", "text": "Los esterilizadores de microondas (10–15€) son igual de efectivos que los eléctricos de 60€+."},
      {"title": "♻️ Tetinas por Etapas", "text": "Compra tetinas según la etapa actual — no compres todas las tallas de golpe."}
    ]},
    "products": {"title": "Ver Biberones", "shopAmazon": "Comprar en Amazon"}
  },
  'fr-CA': {
    "hero": {"title": "La Décision à 500$ pour les Biberons", "subtitle": "Les biberons semblent bon marché — jusqu'à ce que vous comptiez tout."},
    "tabs": {"calculator": "Calculatrice", "products": "Voir les Produits"},
    "calculator": {"title": "Calculez vos Coûts de Biberons", "subtitle": "Tétines, stérilisateurs, séchoirs — ça s'accumule vite"},
    "tips": {"title": "Conseils pour Économiser", "items": [
      {"title": "🧪 Testez Avant d'Acheter", "text": "Achetez 1–2 biberons avant de vous engager. Les bébés sont difficiles avec les tétines."},
      {"title": "🏪 Walmart Canada et Costco", "text": "Excellentes valeurs sur les sets de biberons. Vérifiez les soldes de fin de saison."},
      {"title": "🔁 Stérilisateur Micro-ondes", "text": "Un sac stérilisateur micro-ondes (8–12$) fonctionne aussi bien qu'un appareil électrique de 80$+."},
      {"title": "♻️ Tétines par Étape", "text": "Achetez les tétines selon l'étape actuelle seulement — ne stockez pas toutes les tailles d'avance."}
    ]},
    "products": {"title": "Voir les Biberons", "shopAmazon": "Acheter sur Amazon"}
  }
},

'wipes': {
  'en': {
    "hero": {"title": "The $500 Decision on Wipes", "subtitle": "You'll use 3,500+ wipes in year one. The brand and buying strategy matters."},
    "tabs": {"calculator": "Calculator", "products": "Browse Products"},
    "calculator": {"title": "Calculate Your Wipe Costs", "subtitle": "See how much you'll spend on wipes from birth to potty training"},
    "tips": {"title": "Money-Saving Tips", "items": [
      {"title": "🏷️ Store Brands Work Fine", "text": "Kirkland, Up&Up, and Amazon store brands are 40–60% cheaper and just as gentle."},
      {"title": "📦 Subscribe & Save", "text": "Amazon Subscribe & Save saves 15% on wipes — set up before baby arrives."},
      {"title": "💧 Use Fewer", "text": "One wipe for pee, two for poo. Using 3–4 per change adds up to hundreds of extra dollars."},
      {"title": "🎁 Baby Shower Request", "text": "Wipes are the best baby shower gift — ask for multiple packs in different brands to try."}
    ]},
    "products": {"title": "Browse Baby Wipes", "shopAmazon": "Shop on Amazon"}
  },
  'es-MX': {
    "hero": {"title": "La Decisión de $500 en Toallitas", "subtitle": "Usarás más de 3,500 toallitas en el primer año. La estrategia de compra importa."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Productos"},
    "calculator": {"title": "Calcula tus Costos de Toallitas", "subtitle": "Ve cuánto gastarás desde el nacimiento hasta el baño solo"},
    "tips": {"title": "Tips para Ahorrar", "items": [
      {"title": "🏪 Marcas de Tienda", "text": "Las toallitas de Walmart y Coppel son 40–60% más baratas e igual de suaves."},
      {"title": "📦 Compra en Caja", "text": "Las cajas de 800+ toallitas en Costco o Sam's Club reducen el costo por unidad significativamente."},
      {"title": "💧 Usa Menos", "text": "Una toallita para pipí, dos para popó. Usar 3–4 por cambio suma cientos de pesos extra."},
      {"title": "🔔 Ofertas en Liverpool", "text": "Liverpool y Coppel tienen ofertas frecuentes en packs grandes. Compra cuando estén en promoción."}
    ]},
    "products": {"title": "Ver Toallitas", "shopAmazon": "Comprar en Amazon"}
  },
  'es-ES': {
    "hero": {"title": "La Decisión de 500€ en Toallitas", "subtitle": "Usarás más de 3,500 toallitas en el primer año. La estrategia de compra importa."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Productos"},
    "calculator": {"title": "Calcula tus Costos de Toallitas", "subtitle": "Ve cuánto gastarás desde el nacimiento hasta el pañal solo"},
    "tips": {"title": "Consejos para Ahorrar", "items": [
      {"title": "🏪 Marcas Blancas", "text": "Las toallitas de Mercadona, Lidl y Carrefour son 40–60% más baratas e igual de suaves."},
      {"title": "📦 Compra en Packs Grandes", "text": "El Corte Inglés y Amazon tienen packs de 800+ toallitas con buen descuento por unidad."},
      {"title": "💧 Usa Menos", "text": "Una toallita para pipí, dos para caca. Usar 3–4 por cambio suma mucho al año."},
      {"title": "🌿 Toallitas Húmedas vs Secas", "text": "Las toallitas secas (tipo Cottonlike de Lidl) son más baratas y más versátiles que las húmedas."}
    ]},
    "products": {"title": "Ver Toallitas", "shopAmazon": "Comprar en Amazon"}
  },
  'fr-CA': {
    "hero": {"title": "La Décision à 500$ pour les Lingettes", "subtitle": "Vous utiliserez 3 500+ lingettes la première année. La stratégie d'achat compte."},
    "tabs": {"calculator": "Calculatrice", "products": "Voir les Produits"},
    "calculator": {"title": "Calculez vos Coûts de Lingettes", "subtitle": "Voyez combien vous dépenserez de la naissance à la propreté"},
    "tips": {"title": "Conseils pour Économiser", "items": [
      {"title": "🏪 Marques Génériques", "text": "Kirkland, Up&Up et les marques Walmart Canada sont 40–60% moins chères et tout aussi douces."},
      {"title": "📦 Achetez en Gros à Costco", "text": "Les boîtes de 900+ lingettes à Costco offrent le meilleur rapport qualité-prix."},
      {"title": "💧 Utilisez-en Moins", "text": "Une lingette pour les pipis, deux pour les cacas. Utiliser 3–4 par change ajoute des centaines de dollars."},
      {"title": "🎁 Cadeau de Baby Shower", "text": "Les lingettes sont le meilleur cadeau de baby shower — demandez plusieurs packs de marques différentes."}
    ]},
    "products": {"title": "Voir les Lingettes", "shopAmazon": "Acheter sur Amazon"}
  }
},

'breast-pumps': {
  'en': {
    "hero": {"title": "Breast Pump True Cost Calculator", "subtitle": "The pump is just the start. Parts, bags, and supplies add up over months of pumping."},
    "tabs": {"calculator": "Calculator", "products": "Browse Products"},
    "calculator": {
      "title": "Calculate Your Pumping Costs",
      "subtitle": "Factor in the pump, replacement parts, and ongoing supplies",
      "pumpType": "Pump Type",
      "insurance": "Insurance Coverage",
      "duration": "Pumping Duration",
      "frequency": "Pumping Frequency",
      "pumpCost": "Pump Cost",
      "afterInsurance": "after insurance",
      "parts": "Parts",
      "replacements": "replacements",
      "supplies": "Supplies",
      "bagsEtc": "bags, pads, etc.",
      "total": "Total",
      "outOfPocket": "out of pocket",
      "insuranceTitle": "💡 Insurance Coverage (US)",
      "insuranceText": "Under the ACA, most US insurance plans cover breast pumps at no cost. Call your insurance to confirm coverage and approved brands."
    },
    "tips": {"title": "Money-Saving Tips", "items": [
      {"title": "🏥 Check Insurance First", "text": "Most US insurance plans cover one breast pump per pregnancy at 100% under ACA. Call before buying."},
      {"title": "🔄 Buy Replacement Parts Only", "text": "If your pump is covered by insurance, you still need to buy replacement parts every 3 months (~$20–40)."},
      {"title": "📱 Rent Hospital-Grade", "text": "Hospital-grade pumps rent for $50–80/month — cheaper than buying if you only need one for a few months."},
      {"title": "🛍️ Buy Milk Bags in Bulk", "text": "Lansinoh and Medela milk storage bags are cheapest in bulk packs on Amazon — 20–40 cents each vs 50+ cents at stores."}
    ]},
    "products": {"title": "Browse Breast Pumps", "shopAmazon": "Shop on Amazon"}
  },
  'es-MX': {
    "hero": {"title": "Calculadora del Costo Real del Tiraleche", "subtitle": "El tiraleche es solo el inicio. Piezas, bolsas y suministros se acumulan sobre meses de extracción."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Productos"},
    "calculator": {
      "title": "Calcula tus Costos de Tiraleche",
      "subtitle": "Considera el tiraleche, repuestos y suministros continuos",
      "pumpType": "Tipo de Tiraleche",
      "insurance": "Cobertura de Seguro",
      "duration": "Duración de Extracción",
      "frequency": "Frecuencia de Extracción",
      "pumpCost": "Costo del Tiraleche",
      "afterInsurance": "después del seguro",
      "parts": "Repuestos",
      "replacements": "reemplazos",
      "supplies": "Suministros",
      "bagsEtc": "bolsas, almohadillas, etc.",
      "total": "Total",
      "outOfPocket": "de tu bolsillo",
      "insuranceTitle": "💡 Cobertura IMSS/ISSSTE",
      "insuranceText": "El IMSS e ISSSTE pueden cubrir tiraleches para madres que trabajan. Consulta a tu médico sobre el subsidio disponible."
    },
    "tips": {"title": "Tips para Ahorrar", "items": [
      {"title": "🏥 Consulta tu Seguro Primero", "text": "El IMSS e ISSSTE pueden cubrir tiraleches. Pregunta a tu médico antes de comprar."},
      {"title": "🔄 Solo Repuestos", "text": "Cambia membranas y válvulas cada 3 meses (~$200–400 MXN) para mantener la eficiencia."},
      {"title": "📱 Renta Hospital-Grade", "text": "Los tiraleches hospitalarios se rentan por $800–1,500 MXN/mes en farmacias grandes."},
      {"title": "🛍️ Bolsas en Pack Grande", "text": "Las bolsas de almacenamiento de leche son más baratas en packs de 50+ en Amazon México."}
    ]},
    "products": {"title": "Ver Tiraleches", "shopAmazon": "Comprar en Amazon"}
  },
  'es-ES': {
    "hero": {"title": "Calculateur du Coût Réel du Tire-Lait", "subtitle": "El sacaleches es solo el inicio. Piezas, bolsas y accesorios se acumulan."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Productos"},
    "calculator": {
      "title": "Calculez vos Coûts de Sacaleches",
      "subtitle": "Considera el sacaleches, repuestos y suministros continuos",
      "pumpType": "Tipo de Sacaleches",
      "insurance": "Cobertura Sanitaria",
      "duration": "Duración de Extracción",
      "frequency": "Frecuencia de Extracción",
      "pumpCost": "Costo del Sacaleches",
      "afterInsurance": "después de cobertura",
      "parts": "Repuestos",
      "replacements": "reemplazos",
      "supplies": "Accesorios",
      "bagsEtc": "bolsas, discos, etc.",
      "total": "Total",
      "outOfPocket": "de tu bolsillo",
      "insuranceTitle": "💡 Sanidad Pública (España)",
      "insuranceText": "La Seguridad Social española puede cubrir sacaleches por prescripción médica. Consulta a tu matrona o pediatra."
    },
    "tips": {"title": "Consejos para Ahorrar", "items": [
      {"title": "🏥 Consulta la Seguridad Social", "text": "Algunos sacaleches pueden ser cubiertos por prescripción médica en España. Pregunta a tu matrona."},
      {"title": "🔄 Cambia las Piezas", "text": "Reemplaza membranas y válvulas cada 3 meses (5–15€) para mantener la succión óptima."},
      {"title": "🏪 El Corte Inglés y Decathlon", "text": "Buenas ofertas en sacaleches eléctricos de marcas como Medela y Chicco."},
      {"title": "🛍️ Bolsas en Packs Grandes", "text": "Las bolsas de almacenamiento de leche son más baratas en Amazon en packs de 50+."}
    ]},
    "products": {"title": "Ver Sacaleches", "shopAmazon": "Comprar en Amazon"}
  },
  'fr-CA': {
    "hero": {"title": "Calculateur du Coût Réel du Tire-Lait", "subtitle": "Le tire-lait n'est que le début. Pièces, sacs et fournitures s'accumulent sur des mois de pompage."},
    "tabs": {"calculator": "Calculatrice", "products": "Parcourir les Produits"},
    "calculator": {
      "title": "Calculez vos Coûts de Tire-Lait",
      "subtitle": "Intégrez le tire-lait, les pièces de rechange et les fournitures",
      "pumpType": "Type de Tire-Lait",
      "insurance": "Couverture d'Assurance",
      "duration": "Durée de Pompage",
      "frequency": "Fréquence de Pompage",
      "pumpCost": "Coût du Tire-Lait",
      "afterInsurance": "après assurance",
      "parts": "Pièces",
      "replacements": "remplacements",
      "supplies": "Fournitures",
      "bagsEtc": "sacs, coussinets, etc.",
      "total": "Total",
      "outOfPocket": "de votre poche",
      "insuranceTitle": "💡 Couverture Provinciale (Canada)",
      "insuranceText": "Certaines provinces canadiennes couvrent partiellement les tire-laits. Vérifiez avec votre RAMQ ou assurance provinciale."
    },
    "tips": {"title": "Conseils pour Économiser", "items": [
      {"title": "🏥 Vérifiez votre Assurance", "text": "Certains régimes provinciaux couvrent les tire-laits. Vérifiez avec votre RAMQ ou assureur privé."},
      {"title": "🔄 Remplacez les Pièces", "text": "Changez membranes et valves tous les 3 mois (15–30$) pour maintenir l'efficacité d'aspiration."},
      {"title": "📱 Louez un Tire-Lait Hospitalier", "text": "Les tire-laits hospitaliers se louent 60–100$/mois dans les pharmacies Jean Coutu et Shoppers Drug Mart."},
      {"title": "🛍️ Sacs en Gros", "text": "Les sacs de conservation du lait maternel sont moins chers en packs de 50+ sur Amazon Canada."}
    ]},
    "products": {"title": "Voir les Tire-Laits", "shopAmazon": "Acheter sur Amazon"}
  }
},

'baby-monitors': {
  'en': {
    "hero": {"title": "The $800 Monitor That Costs $1,300", "subtitle": "Smart baby monitors hide their real price in monthly subscriptions. Calculate the true cost before you buy."},
    "tabs": {"calculator": "Calculator", "products": "Browse Monitors"},
    "calculator": {
      "title": "Calculate Your Monitor's True Cost",
      "subtitle": "Subscription fees add up fast — see the real number over time",
      "monitorType": "Monitor Type",
      "subscription": "Monthly Subscription",
      "usageMonths": "How Long You'll Use It",
      "hardwareCost": "Hardware Cost",
      "oneTime": "one-time purchase",
      "subscriptionCost": "Subscription Total",
      "noSubscription": "No subscription",
      "totalCost": "TRUE Total Cost"
    },
    "tips": {"title": "Money-Saving Tips", "items": [
      {"title": "🔊 Audio monitors are underrated", "text": "For $25–50 with no subscription, a DECT audio monitor does the job for most parents."},
      {"title": "📱 Old phone = free smart monitor", "text": "Apps like Alfred or Baby Monitor 3G turn an old smartphone into a WiFi monitor for free."},
      {"title": "🛡️ No-WiFi = no hacking risk", "text": "Non-WiFi DECT monitors can't be accessed over the internet — peace of mind included."},
      {"title": "⏰ Subscribe short-term only", "text": "If you want smart features, subscribe for the first 6 months then cancel. Features matter less as baby grows."}
    ]},
    "products": {"title": "Browse Baby Monitors", "shopAmazon": "Shop on Amazon"}
  },
  'es-MX': {
    "hero": {"title": "El Monitor de $800 que Cuesta $1,300", "subtitle": "Los monitores inteligentes esconden su costo real en suscripciones mensuales."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Monitores"},
    "calculator": {
      "title": "Calcula el Costo Real de tu Monitor",
      "subtitle": "Las cuotas de suscripción suman rápido — ve el número real",
      "monitorType": "Tipo de Monitor",
      "subscription": "Suscripción Mensual",
      "usageMonths": "¿Cuánto Tiempo lo Usarás?",
      "hardwareCost": "Costo del Hardware",
      "oneTime": "compra única",
      "subscriptionCost": "Total de Suscripción",
      "noSubscription": "Sin suscripción",
      "totalCost": "Costo Total REAL"
    },
    "tips": {"title": "Tips para Ahorrar", "items": [
      {"title": "🔊 Monitores de Audio Son Subestimados", "text": "Por $300–500 MXN sin suscripción, un monitor DECT de audio cumple para la mayoría."},
      {"title": "📱 Teléfono Viejo = Monitor Gratis", "text": "Apps como Alfred convierten un smartphone viejo en monitor WiFi gratuitamente."},
      {"title": "🛡️ Sin WiFi = Sin Riesgo de Hackeo", "text": "Los monitores DECT sin WiFi no pueden ser accedidos por internet."},
      {"title": "🏪 Walmart y Liverpool", "text": "Busca monitores de video básicos en Walmart México — buena calidad sin suscripción."}
    ]},
    "products": {"title": "Ver Monitores", "shopAmazon": "Comprar en Amazon"}
  },
  'es-ES': {
    "hero": {"title": "El Monitor de 800€ que Cuesta 1.300€", "subtitle": "Los monitores inteligentes esconden su costo real en suscripciones mensuales."},
    "tabs": {"calculator": "Calculadora", "products": "Ver Monitores"},
    "calculator": {
      "title": "Calcula el Costo Real de tu Monitor",
      "subtitle": "Las cuotas de suscripción suman rápido",
      "monitorType": "Tipo de Monitor",
      "subscription": "Suscripción Mensual",
      "usageMonths": "¿Cuánto Tiempo lo Usarás?",
      "hardwareCost": "Costo del Hardware",
      "oneTime": "compra única",
      "subscriptionCost": "Total de Suscripción",
      "noSubscription": "Sin suscripción",
      "totalCost": "Costo Total REAL"
    },
    "tips": {"title": "Consejos para Ahorrar", "items": [
      {"title": "🔊 Monitores de Audio Infravalorados", "text": "Por 25–50€ sin suscripción, un monitor DECT de audio cumple perfectamente."},
      {"title": "📱 Móvil Viejo = Monitor Gratis", "text": "Apps como Alfred convierten un smartphone viejo en monitor WiFi gratuitamente."},
      {"title": "🛡️ Sin WiFi = Sin Hackeo", "text": "Los monitores DECT sin WiFi no son accesibles por internet."},
      {"title": "🏪 Miniland y Chicco en España", "text": "Marcas españolas como Miniland ofrecen monitores de video sin suscripción a buen precio."}
    ]},
    "products": {"title": "Ver Monitores", "shopAmazon": "Comprar en Amazon"}
  },
  'fr-CA': {
    "hero": {"title": "Le Moniteur à 800$ qui Coûte 1 300$", "subtitle": "Les moniteurs intelligents cachent leur vrai prix dans des abonnements mensuels."},
    "tabs": {"calculator": "Calculatrice", "products": "Voir les Moniteurs"},
    "calculator": {
      "title": "Calculez le Vrai Coût de votre Moniteur",
      "subtitle": "Les frais d'abonnement s'accumulent vite — voyez le vrai chiffre",
      "monitorType": "Type de Moniteur",
      "subscription": "Abonnement Mensuel",
      "usageMonths": "Combien de Temps l'Utiliserez-Vous?",
      "hardwareCost": "Coût du Matériel",
      "oneTime": "achat unique",
      "subscriptionCost": "Total d'Abonnement",
      "noSubscription": "Sans abonnement",
      "totalCost": "Coût Total RÉEL"
    },
    "tips": {"title": "Conseils pour Économiser", "items": [
      {"title": "🔊 Moniteurs Audio Sous-estimés", "text": "Pour 30–60$ sans abonnement, un moniteur DECT audio convient à la plupart des parents."},
      {"title": "📱 Vieux Téléphone = Moniteur Gratuit", "text": "Des apps comme Alfred transforment un vieux smartphone en moniteur WiFi gratuitement."},
      {"title": "🛡️ Sans WiFi = Sans Risque", "text": "Les moniteurs DECT sans WiFi ne peuvent pas être accédés via internet."},
      {"title": "⏰ Abonnez-vous Court Terme", "text": "Abonnez-vous seulement les 6 premiers mois (phase nouveau-né), puis annulez."}
    ]},
    "products": {"title": "Voir les Moniteurs", "shopAmazon": "Acheter sur Amazon"}
  }
},

}  # end TRANSLATIONS

# ── WRITE TRANSLATION FILES ───────────────────────────────────────────────────

for product, langs in TRANSLATIONS.items():
    for lang, data in langs.items():
        path = f'{BASE}/data/i18n/{product}-{lang}.json'
        with open(path, 'w') as f:
            json.dump(data, f, ensure_ascii=False, indent=2)
    print(f'✓ Wrote {len(langs)} translation files for {product}')

# ── ADD data-i18n ATTRIBUTES TO HTML ─────────────────────────────────────────

# breast-pumps: add data-i18n to result labels, input labels, insurance callout
pumps_path = f'{BASE}/breast-pumps.html'
pumps_html = open(pumps_path).read()

# result-label text → data-i18n
for old, key in [
    ('<div class="result-label">Pump Cost</div>', '<div class="result-label" data-i18n="calculator.pumpCost">Pump Cost</div>'),
    ('<div class="result-label">Parts</div>',     '<div class="result-label" data-i18n="calculator.parts">Parts</div>'),
    ('<div class="result-label">Supplies</div>',  '<div class="result-label" data-i18n="calculator.supplies">Supplies</div>'),
    ('<div class="result-label">Total</div>',     '<div class="result-label" data-i18n="calculator.total">Total</div>'),
    ('<div class="result-detail">after insurance</div>', '<div class="result-detail" data-i18n="calculator.afterInsurance">after insurance</div>'),
    ('<div class="result-detail">replacements</div>',    '<div class="result-detail" data-i18n="calculator.replacements">replacements</div>'),
    ('<div class="result-detail">bags, pads, etc.</div>','<div class="result-detail" data-i18n="calculator.bagsEtc">bags, pads, etc.</div>'),
    ('<div class="result-detail">out of pocket</div>',   '<div class="result-detail" data-i18n="calculator.outOfPocket">out of pocket</div>'),
    ('<h4>🏥 Insurance Coverage (US)</h4>', '<h4 data-i18n="calculator.insuranceTitle">🏥 Insurance Coverage (US)</h4>'),
    ('<label for="pump-type">Pump Type</label>',     '<label for="pump-type" data-i18n="calculator.pumpType">Pump Type</label>'),
    ('<label for="insurance">Insurance Coverage (US)</label>', '<label for="insurance" data-i18n="calculator.insurance">Insurance Coverage (US)</label>'),
    ('<label for="duration">Pumping Duration</label>',  '<label for="duration" data-i18n="calculator.duration">Pumping Duration</label>'),
    ('<label for="frequency">Pumping Frequency</label>','<label for="frequency" data-i18n="calculator.frequency">Pumping Frequency</label>'),
]:
    pumps_html = pumps_html.replace(old, key)

# calculator subtitle
pumps_html = re.sub(
    r'(<p class="section-subtitle")(?![^>]*data-i18n)([^>]*>)Factor in the pump',
    r'\1 data-i18n="calculator.subtitle"\2Factor in the pump',
    pumps_html, count=1
)

open(pumps_path, 'w').write(pumps_html)
print('✓ Added data-i18n attributes to breast-pumps.html')

print('\n✅ Translation files and HTML hooks updated!')
