#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import copy
from pathlib import Path

root = Path(__file__).resolve().parents[1] / "src" / "i18n"
en = json.loads((root / "en.json").read_text(encoding="utf-8"))

en["hero"] = {
    "eyebrow": "Exclusive Sri Lanka Offer",
    "h1_a": "Spin & Unlock Up to 200% + 150 Free Spins",
    "h1_b": "Open Your Pack — Deposit from Only 500 LKR",
    "sub": "Play the wheel, open a free pack, lock your bonus — then register in 30 seconds to claim it.",
    "cta_a": "Spin Free Wheel",
    "cta_b": "Open Free Pack",
    "secondary": "Skip games → Register now",
    "chips": ["1 Free Spin", "Free Bronze Pack", "500 LKR min", "Fast eZ Cash"],
}

en["games"]["subtitle"] = "Tap any game — register & play in seconds"
en["sticky"] = "Register & Claim Bonus"
en["sticky_sub"] = "Complete the wheel + pack to unlock your full prize"

en["urgency"] = {
    "online": "214 players online",
    "offer": "Bonus ends in",
}

en["vault"] = {
    "badge": "Your Bonus Vault",
    "title": "Prizes locked — register to unlock",
    "hint_start": "Step 1: spin the wheel. Step 2: open your free pack.",
    "hint_ready": "All set! Your bonus is ready — register now to unlock.",
    "your_prize": "Accumulated prize",
    "empty": "— spin & open pack —",
    "locked": "Locked until registration",
    "cta_locked": "Complete steps above first",
    "cta_ready": "Unlock Bonus — Register Now",
    "note": "Bonus activates after registration & qualifying deposit. 18+. T&Cs apply.",
}

en["wheel"]["next"] = "Next: Open Free Pack →"
en["wheel"]["subtitle"] = "Free spin for every visitor — you always win a welcome reward"
en["wheel"]["disclaimer"] = "Preview spin. Full bonus credited after registration. 18+."

en["packs"].update({
    "subtitle": "1 free pack open now. Silver & Gold unlock after registration.",
    "free_label": "FREE OPEN",
    "locked_label": "REGISTER",
    "locked_msg": "Register to open this pack",
    "revealed_cta": "View My Vault →",
    "upsell": "Want Silver or Gold? Unlock all packs after signup.",
    "unlock_all": "Register to unlock all packs →",
})

en["steps"] = {
    "title": "Get your bonus in 3 steps",
    "items": [
        {"title": "Register", "text": "30 seconds — phone or email"},
        {"title": "Deposit", "text": "From 500 LKR via eZ Cash / bank"},
        {"title": "Claim", "text": "Bonus + free spins land in your account"},
    ],
}

(root / "en.json").write_text(json.dumps(en, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
print("en updated")

# SI/TA: deep-merge from en then override game strings without emoji surrogates issues
# Load existing si/ta if valid else clone en
for lang, overrides in [
    ("si", {
        "lang": "si",
        "hero": {
            "eyebrow": "\u0dc1\u0dca\u200d\u0dbb\u0dd3 \u0dbd\u0d82\u0d9a\u0dcf\u0dc0 \u0daf\u0dd3\u0db8\u0db1\u0dcf\u0dc0",
            "h1_a": "\u0d9a\u0dd0\u0dbb\u0dc0\u0dcf \u0d9a\u0dbb \u0db6\u0ddd\u0db1\u0dc3\u0dca 200% + \u0db1\u0ddc\u0db8\u0dd2\u0dbd\u0dda \u0d9a\u0dd0\u0dbb\u0d9a\u0dd3\u0db8\u0dca 150 \u0daf\u0d9a\u0dca\u0dc0\u0dcf",
            "h1_b": "\u0db4\u0dd0\u0d9a\u0dca \u0dc0\u0dd2\u0dc0\u0db1\u0dca\u0db1 \u2014 \u0dbb\u0dd4. 500 \u0dc3\u0dd2\u0da7",
            "sub": "\u0d9a\u0dd0\u0dbb\u0dc0\u0dcf \u0d9a\u0dd0\u0dbb\u0db1\u0dca\u0db1, \u0db1\u0ddc\u0db8\u0dd2\u0dbd\u0dda \u0db4\u0dd0\u0d9a\u0dca \u0dc0\u0dd2\u0dc0\u0db1\u0dca\u0db1, \u0db6\u0ddd\u0db1\u0dc3\u0dca \u0d85\u0d9c\u0dd4\u0dc5\u0dd4\u0dc0 \u0d9a\u0dbb \u0dbd\u0dd2\u0dba\u0dcf\u0db4\u0daf\u0dd2\u0d82\u0da0\u0dd2 \u0dc0\u0db1\u0dca\u0db1.",
            "cta_a": "\u0db1\u0ddc\u0db8\u0dd2\u0dbd\u0dda \u0d9a\u0dd0\u0dbb\u0dc0\u0dcf",
            "cta_b": "\u0db1\u0ddc\u0db8\u0dd2\u0dbd\u0dda \u0db4\u0dd0\u0d9a\u0dca",
            "secondary": "\u0dbd\u0dd2\u0dba\u0dcf\u0db4\u0daf\u0dd2\u0d82\u0da0\u0dd2 \u0dc0\u0db1\u0dca\u0db1",
            "chips": ["1 Free Spin", "Free Pack", "Rs 500", "eZ Cash"],
        },
        "sticky": "\u0dbd\u0dd2\u0dba\u0dcf\u0db4\u0daf\u0dd2\u0d82\u0da0\u0dd2 \u0dc0\u0dd3 \u0db6\u0ddd\u0db1\u0dc3\u0dca \u0dbd\u0db6\u0dcf\u0d9c\u0db1\u0dca\u0db1",
        "sticky_sub": "\u0d9a\u0dd0\u0dbb\u0dc0\u0dcf + \u0db4\u0dd0\u0d9a\u0dca \u0dc3\u0db8\u0dca\u0db4\u0dd6\u0dbb\u0dca\u0dab \u0d9a\u0dbb\u0db1\u0dca\u0db1",
        "urgency": {"online": "214 players online", "offer": "\u0db6\u0ddd\u0db1\u0dc3\u0dca \u0d85\u0dc0\u0dc3\u0dcf\u0db1\u0dba:"},
        "vault": {
            "badge": "Bonus Vault",
            "title": "\u0db6\u0ddd\u0db1\u0dc3\u0dca \u0d85\u0d9c\u0dd4\u0dc5\u0dd4\u0dc0\u0dba\u0dd2 \u2014 \u0dbd\u0dd2\u0dba\u0dcf\u0db4\u0daf\u0dd2\u0d82\u0da0\u0dd2 \u0dc0\u0db1\u0dca\u0db1",
            "hint_start": "1: \u0d9a\u0dd0\u0dbb\u0dc0\u0dcf  2: \u0db1\u0ddc\u0db8\u0dd2\u0dbd\u0dda \u0db4\u0dd0\u0d9a\u0dca",
            "hint_ready": "\u0dc3\u0dd4\u0daf\u0dcf\u0db1\u0db8\u0dba\u0dd2! \u0dbd\u0dd2\u0dba\u0dcf\u0db4\u0daf\u0dd2\u0d82\u0da0\u0dd2 \u0dc0\u0dd3 \u0db6\u0ddd\u0db1\u0dc3\u0dca \u0dbd\u0db6\u0dcf\u0d9c\u0db1\u0dca\u0db1.",
            "your_prize": "\u0d94\u0db6\u0dda \u0db6\u0ddd\u0db1\u0dc3\u0dca",
            "empty": "\u2014 \u0d9a\u0dd0\u0dbb\u0dc0\u0dcf + \u0db4\u0dd0\u0d9a\u0dca \u2014",
            "locked": "\u0dbd\u0dd2\u0dba\u0dcf\u0db4\u0daf\u0dd2\u0d82\u0da0\u0dd2 \u0daf\u0d9a\u0dca\u0dc0\u0dcf \u0d85\u0d9c\u0dd4\u0dc5\u0dd4\u0dc0\u0dba\u0dd2",
            "cta_locked": "\u0d8b\u0da9\u0dd4 \u0db4\u0dd2\u0dba\u0dc0\u0dd4\u0db8\u0dca \u0dc3\u0db8\u0dca\u0db4\u0dd6\u0dbb\u0dca\u0dab \u0d9a\u0dbb\u0db1\u0dca\u0db1",
            "cta_ready": "\u0db6\u0ddd\u0db1\u0dc3\u0dca \u0dbd\u0db6\u0dcf\u0d9c\u0db1\u0dca\u0db1 \u2014 \u0dbd\u0dd2\u0dba\u0dcf\u0db4\u0daf\u0dd2\u0d82\u0da0\u0dd2",
            "note": "18+. T&Cs apply.",
        },
        "wheel": {
            "next": "\u0db1\u0ddc\u0db8\u0dd2\u0dbd\u0dda \u0db4\u0dd0\u0d9a\u0dca \u0dc0\u0dd2\u0dc0\u0db1\u0dca\u0db1 \u2192",
            "spin": "\u0d9a\u0dd0\u0dbb\u0db1\u0dca\u0db1",
            "spinning": "...",
            "result_prefix": "\u0d94\u0db6 \u0da2\u0dba\u0d9c\u0dca\u0dbb\u0dc4\u0dab\u0dba:",
            "title": "\u0d9a\u0dd0\u0dbb\u0db8\u0dd2\u0db1 \u0d9a\u0dd0\u0dbb\u0dc0\u0dcf",
            "badge": "Lucky Spin",
            "subtitle": "\u0db1\u0ddc\u0db8\u0dd2\u0dbd\u0dda \u0d9a\u0dd0\u0dbb\u0d9a\u0dd3\u0db8\u0dca \u2014 \u0dc3\u0dd6\u0db7\u0dca\u0dba \u0db4\u0dc5\u0db8\u0dd4\u0d9a\u0dd2!",
            "disclaimer": "18+.",
            "claim": "Claim",
            "segments": en["wheel"]["segments"],
        },
        "packs": {
            "free_label": "FREE",
            "locked_label": "LOCK",
            "locked_msg": "Register",
            "revealed_cta": "Vault \u2192",
            "upsell": "Silver/Gold = register",
            "unlock_all": "Register \u2192",
        },
    }),
    ("ta", {
        "lang": "ta",
        "hero": {
            "eyebrow": "\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8 \u0b9a\u0bb2\u0bc1\u0b95\u0bc8",
            "h1_a": "\u0b9a\u0bc1\u0bb1\u0bcd\u0bb1\u0bbf 200% + 150 \u0b87\u0bb2\u0bb5\u0b9a \u0b9a\u0bc1\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bb3\u0bcd \u0baa\u0bc6\u0bb1\u0bc1\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
            "h1_b": "\u0baa\u0bc7\u0b95\u0bcd \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95\u0bc1 \u2014 \u0bb0\u0bc2. 500 \u0bae\u0bc1\u0ba4\u0bb2\u0bcd",
            "sub": "\u0b9a\u0bc1\u0bb1\u0bcd\u0bb1\u0bc1, \u0b87\u0bb2\u0bb5\u0b9a \u0baa\u0bc7\u0b95\u0bcd \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95\u0bc1, \u0baa\u0ba4\u0bbf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1 \u0baa\u0bcb\u0ba9\u0bb8\u0bcd \u0baa\u0bc6\u0bb1\u0bc1\u0b99\u0bcd\u0b95\u0bb3\u0bcd.",
            "cta_a": "\u0b87\u0bb2\u0bb5\u0b9a \u0b9a\u0bc1\u0bb1\u0bcd\u0bb1\u0bc1",
            "cta_b": "\u0b87\u0bb2\u0bb5\u0b9a \u0baa\u0bc7\u0b95\u0bcd",
            "secondary": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
            "chips": ["1 Free Spin", "Free Pack", "Rs 500", "eZ Cash"],
        },
        "sticky": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc1 & \u0baa\u0bcb\u0ba9\u0bb8\u0bcd",
        "sticky_sub": "\u0b9a\u0bc1\u0bb1\u0bcd\u0bb1\u0bc1 + \u0baa\u0bc7\u0b95\u0bcd \u0bae\u0bc1\u0b9f\u0bbf",
        "urgency": {"online": "214 players online", "offer": "\u0baa\u0bcb\u0ba9\u0bb8\u0bcd \u0bae\u0bc1\u0b9f\u0bbf\u0bb5\u0bc1:"},
        "vault": {
            "badge": "Bonus Vault",
            "title": "\u0baa\u0bcb\u0ba9\u0bb8\u0bcd \u0baa\u0bc2\u0b9f\u0bcd\u0b9f\u0bc1 \u2014 \u0baa\u0ba4\u0bbf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1",
            "hint_start": "1: \u0b9a\u0bc1\u0bb1\u0bcd\u0bb1\u0bc1  2: \u0b87\u0bb2\u0bb5\u0b9a \u0baa\u0bc7\u0b95\u0bcd",
            "hint_ready": "\u0ba4\u0baf\u0bbe\u0bb0\u0bcd! \u0b87\u0baa\u0bcd\u0baa\u0bcb\u0ba4\u0bc1 \u0baa\u0ba4\u0bbf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1.",
            "your_prize": "\u0b89\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0baa\u0bcb\u0ba9\u0bb8\u0bcd",
            "empty": "\u2014 \u0b9a\u0bc1\u0bb1\u0bcd\u0bb1\u0bc1 + \u0baa\u0bc7\u0b95\u0bcd \u2014",
            "locked": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc1 \u0bb5\u0bb0\u0bc8 \u0baa\u0bc2\u0b9f\u0bcd\u0b9f\u0bc1",
            "cta_locked": "\u0bae\u0bc1\u0ba4\u0bb2\u0bcd \u0baa\u0b9f\u0bbf\u0b95\u0bb3\u0bcd \u0bae\u0bc1\u0b9f\u0bbf",
            "cta_ready": "\u0baa\u0bcb\u0ba9\u0bb8\u0bcd \u0baa\u0bc6\u0bb1\u0bc1 \u2014 \u0baa\u0ba4\u0bbf\u0bb5\u0bc1",
            "note": "18+. T&Cs apply.",
        },
        "wheel": {
            "next": "\u0b87\u0bb2\u0bb5\u0b9a \u0baa\u0bc7\u0b95\u0bcd \u0ba4\u0bbf\u0bb1 \u2192",
            "spin": "\u0b9a\u0bc1\u0bb1\u0bcd\u0bb1\u0bc1",
            "spinning": "...",
            "result_prefix": "\u0bb5\u0bc6\u0ba8\u0bcd\u0bb1\u0bc1:",
            "title": "\u0b9a\u0bc1\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0b95\u0bcd\u0b95\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1",
            "badge": "Lucky Spin",
            "subtitle": "\u0b87\u0bb2\u0bb5\u0b9a \u0b9a\u0bc1\u0bb1\u0bcd\u0bb1\u0bc1!",
            "disclaimer": "18+.",
            "claim": "Claim",
            "segments": en["wheel"]["segments"],
        },
        "packs": {
            "free_label": "FREE",
            "locked_label": "LOCK",
            "locked_msg": "Register",
            "revealed_cta": "Vault \u2192",
            "upsell": "Silver/Gold = register",
            "unlock_all": "Register \u2192",
        },
    }),
]:
    def deep_merge(a, b):
        out = copy.deepcopy(a)
        for k, v in b.items():
            if isinstance(v, dict) and isinstance(out.get(k), dict):
                out[k] = deep_merge(out[k], v)
            else:
                out[k] = v
        return out

    data = deep_merge(en, overrides)
    (root / f"{lang}.json").write_text(json.dumps(data, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
    print("wrote", lang)
