import json

D = '/working/aisbf/static/i18n/'

def apply(lang, translations):
    path = D + lang + '.json'
    with open(path) as f:
        data = json.load(f)
    def set_nested(d, key, value):
        parts = key.split('.')
        c = d
        for p in parts[:-1]:
            c = c.setdefault(p, {})
        c[parts[-1]] = value
    for key, value in translations.items():
        set_nested(data, key, value)
    with open(path, 'w') as f:
        json.dump(data, f, ensure_ascii=False, indent=2)

langs = ['ar', 'bn', 'cs', 'el', 'fa', 'fi', 'he', 'hi', 'hu', 'ms', 'nb', 'pl', 'th', 'tr', 'zu']

# Billing page keys
billing = {
    'wallet_balance': {'ar': 'رصيد المحفظة', 'bn': 'ওয়ালেট ব্যালেন্স', 'cs': 'Zůstatek peněženky',
        'el': 'Υπόλοιπο πορτοφολιού', 'fa': 'موجودی کیف پول', 'fi': 'Lompakon saldo',
        'he': 'יתרת הארנק', 'hi': 'बैलेंस', 'hu': 'Tárca egyenleg',
        'ms': 'Baki dompet', 'nb': 'Lommebok-saldo', 'pl': 'Saldo portfela',
        'th': 'ยอดเงินคงเหลือ', 'tr': 'Cüzdan bakiyesi', 'zu': 'Isiqembu sezimfundo'},
    'wallet_desc': {'ar': 'يتم خصم جميع اشتراكات التجديد والدفعات تلقائياً من محفظتك أولاً.',
        'bn': 'সাবস্ক্রিপশন রিনিউয়াল এবং পেমেন্ট প্রথমে আপনার ওয়ালেট থেকে স্বয়ংক্রিয়ভাবে বিয়োগ করা হবে।',
        'cs': 'Všechny obnovy předplatného a platby jsou automaticky odečítány z vaší peněženky.',
        'el': 'Όλες οι ανανεώσεις συνδρομής και οι πληρωμές αφαιρούνται αυτόματα από το πορτοφόλι σου πρώτα.',
        'fa': 'تمامی تمدید اشتراک‌ها و پرداخت‌ها به صورت خودکار از کیف پول شما کسر می‌شوند.',
        'fi': 'Kaikki tilauksen uusinnat ja maksut vähennetään lompakostasi automaattisesti ensin.',
        'he': 'כל החיובים והתשלומים מוכרים מהארנק שלך תחילה.',
        'hi': 'सभी सदस्यता नवीकरण और भुगतान स्वचालित रूप से पहले आपके वॉलेट से कट जाते हैं।',
        'hu': 'Az összes előfizetés megújítása és fizetés automatikusan először a tárcádól kerül.',
        'ms': 'Semua pembaharuan langganan dan bayaran ditolak secara automatik dari dompet anda terlebih dahulu.',
        'nb': 'Alle abonnementfornyelser og betalinger trekkes fra lommeboka din først.',
        'pl': 'Wszystkie odnowienia subskrypcji i płatności są automatycznie odejmowane z Twojego portfela.',
        'th': 'การสมัครสมาชิกและการชำระเงินทั้งหมดจะถูกหักจากกระเป๋าเงินของคุณโดยอัตโนมัติ',
        'tr': 'Tüm abonelik yenilemeleri ve ödemeler cüzdanınızdan önce otomatik olarak düşülür.',
        'zu': 'Zonke izitifiketi zokuhliswa nezimali zikhishwa ngokuzenzekela kuqala kwesiqulathi sakho.'},
    'manage_wallet': {'ar': 'إدارة المحفظة', 'bn': 'ওয়ালেট পরিচালনা করুন', 'cs': 'Spravovat peněženku',
        'el': 'Διαχείριση πορτοφολιού', 'fa': 'مدیریت کیف پول', 'fi': 'Hallitse lompakkoa',
        'he': 'נהל ארנק', 'hi': 'वॉलेट प्रबंधित करें', 'hu': 'Tárca kezelése',
        'ms': 'Urus dompet', 'nb': 'Administrer lommebok', 'pl': 'Zarządzaj portfelem',
        'th': 'จัดการกระเป๋าเงิน', 'tr': 'Cüzdanı yönet', 'zu': 'Phatha isikhwama'},
    'payment_methods': {'ar': 'طرق الدفع', 'bn': 'পেমেন্ট পদ্ধতি', 'cs': 'Způsoby platby',
        'el': 'Τρόποι πληρωμής', 'fa': 'روش‌های پرداخت', 'fi': 'Maksutavat',
        'he': 'שיטות תשלום', 'hi': 'भुगतान विधियाँ', 'hu': 'Fizetési módok',
        'ms': 'Kaedah pembayaran', 'nb': 'Betalingsmetoder', 'pl': 'Metody płatności',
        'th': 'วิธีการชำระเงิน', 'tr': 'Ödeme yöntemleri', 'zu': 'Izindlela zokukhokha'},
    'no_payment_methods': {'ar': 'لا توجد طرق دفع', 'bn': 'কোন পেমেন্ট পদ্ধতি নেই', 'cs': 'Žádné způsoby platby',
        'el': 'Δεν υπάρχουν τρόποι πληρωμής', 'fa': 'هیچ روش پرداختی وجود ندارد', 'fi': 'Ei maksutapoja',
        'he': 'אין שיטות תשלום', 'hi': 'कोई भुगतान विधि नहीं', 'hu': 'Nincsenek fizetési módok',
        'ms': 'Tiada kaedah pembayaran', 'nb': 'Ingen betalingsmetoder', 'pl': 'Brak metod płatności',
        'th': 'ไม่มีวิธีการชำระเงิน', 'tr': 'Ödeme yöntemi yok', 'zu': 'Akukho indlela yokukhokha'},
    'no_payment_methods_desc': {'ar': 'يرجى الاتصال بالمسؤول لتمكين بوابة دفع.',
        'bn': 'পেমেন্ট গেটওয়ে সক্রিয় করতে দয়া করে অ্যাডমিনের সাথে যোগাযোগ করুন।',
        'cs': 'Chcete-li povolit platební bránu, obraťte se na správce.',
        'el': 'Επικοινωνήστε με τον διαχειριστή για να ενεργοποιήσετε την πύλη πληρωμής.',
        'fa': 'برای فعال کردن درگاه پرداخت، لطفاً با مدیر تماس بگیرید.',
        'fi': 'Ota yhteyttä ylläpitäjään ottaaksesi käyttöön maksuportaali.',
        'he': 'אנא פנה למנהל כדי לאפשר שער תשלום.',
        'hi': 'पेमेंट गेटवे को सक्षम करने के लिए कृपया प्रशासक से संपर्क करें।',
        'hu': 'Kérjük, lépjen kapcsolatba a rendszergazdával a fizetési portál engedélyezéséhez.',
        'ms': 'Sila hubungi pentadbir untuk membolehkan pintu gerbang pembayaran.',
        'nb': 'Kontakt administratoren for å aktivere betalingsportalen.',
        'pl': 'Aby włączyć bramkę płatniczą, skontaktuj się z administratorem.',
        'th': 'โปรดติดต่อผู้ดูแลระบบเพื่อเปิดใช้งานเกตเวย์การชำระเงิน',
        'tr': 'Ödeme ağ geçidini etkinleştirmek için lütfen yöneticiyle iletişime geçin.',
        'zu': 'Ngicela uxhumise umqondisi ukuze unike amandla umbukelo wezimali.'},
    'add_credit_card': {'ar': 'إضافة بطاقة ائتمان', 'bn': 'ক্রেডিট কার্ড যোগ করুন', 'cs': 'Přidat kreditní kartu',
        'el': 'Προσθήκη πιστωτικής κάρτας', 'fa': 'افزودن کارت اعتباری', 'fi': 'Lisää luottokortti',
        'he': 'הוסף כרטיס אשראי', 'hi': 'क्रेडिट कार्ड जोड़ें', 'hu': 'Hitelkártya hozzáadása',
        'ms': 'Tambah kad kredit', 'nb': 'Legg til kredittkort', 'pl': 'Dodaj kartę kredytową',
        'th': 'เพิ่มบัตรเครดิต', 'tr': 'Kredi kartı ekle', 'zu': 'Faka ikhadi lekhredithi'},
    'top_up_wallet': {'ar': 'شحن المحفظة', 'bn': 'ওয়ালেট টপ আপ করুন', 'cs': 'Nabití peněženky',
        'el': 'Ανάδομα πορτοφολιού', 'fa': 'شارژ کیف پول', 'fi': 'Lataa lompakko',
        'he': 'טעינת הארנק', 'hi': 'वॉलेट टॉप-अप', 'hu': 'Tárca feltöltése',
        'ms': 'Top Up Dompet', 'nb': 'Fyll opp lommebok', 'pl': 'Doładuj portfel',
        'th': 'เติมเงินในกระเป๋า', 'tr': 'Cüzdanı doldur', 'zu': 'Thokozisa isikhwama'},
    'set_default': {'ar': 'تعيين كافتراضي', 'bn': 'ডিফল্ট হিসাবে সেট করুন', 'cs': 'Nastavit jako výchozí',
        'el': 'Ορισμός ως προεπιλογή', 'fa': 'تنظیم به عنوان پیش‌فرض', 'fi': 'Aseta oletukseksi',
        'he': 'הגדרת ברירת מחדל', 'hi': 'डिफ़ॉल्ट सेट करें', 'hu': 'Beállítás alapértelmezettnek',
        'ms': 'Tetapkan lalai', 'nb': 'Angi som standard', 'pl': 'Ustaw jako domyślny',
        'th': 'ตั้งเป็นค่าเริ่มต้น', 'tr': 'Varsayılan olarak ayarla', 'zu': 'Hlela okungasiqondile'},
    'default_label': {'ar': 'افتراضي', 'bn': 'ডিফল্ট', 'cs': 'Výchozí',
        'el': 'Προεπιλεγμένο', 'fa': 'پیش‌فرض', 'fi': 'Oletus',
        'he': 'ברירת מחדל', 'hi': 'डिफ़ॉल्ट', 'hu': 'Alapértelmezett',
        'ms': 'Lalai', 'nb': 'Standard', 'pl': 'Domyślny',
        'th': 'ค่าเริ่มต้น', 'tr': 'Varsayılan', 'zu': 'Okungasiqondile'},
    'billing_history': {'ar': 'سجل الفواتير', 'bn': 'বিলিং ইতিহাস', 'cs': 'Historie faktur',
        'el': 'Ιστορικό τιμολογίων', 'fa': 'تاریخچه صورتحساب', 'fi': 'Laskuhistoria',
        'he': 'היסטוריית חשבוניות', 'hi': 'बिलिंग इतिहास', 'hu': 'Számlázási előzmények',
        'ms': 'Sejarah penagihan', 'nb': 'Fakturahistorikk', 'pl': 'Historia rozliczeń',
        'th': 'ประวัติการเรียกเก็บเงิน', 'tr': 'Fatura geçmişi', 'zu': 'Umlando wezimali'},
    'no_history': {'ar': 'لا يوجد سجل للحسابات بعد', 'bn': 'কোনো বিলিং ইতিহাস নেই', 'cs': 'Zatím žádná faktura',
        'el': 'Δεν υπάρχουν ακόμα τιμολόγια', 'fa': 'هیچ سابقه صورتحسابی وجود ندارد', 'fi': 'Ei vielä laskuja',
        'he': 'עדיין אין חשבוניות', 'hi': 'कोई बिलिंग इतिहास नहीं', 'hu': 'Még nincsenek számlák',
        'ms': 'Tiada sejarah penagihan lagi', 'nb': 'Ingen fakturerings-historikk ennå', 'pl': 'Brak historii rozliczeń',
        'th': 'ไม่มีประวัติการเรียกเก็บเงิน', 'tr': 'Henüz fatura yok', 'zu': 'Akukho umlando wezimali'},
    'no_history_desc': {'ar': 'ليس لديك أي معاملات دفع على حسابك.',
        'bn': 'আপনার অ্যাকাউন্টে কোন পেমেন্ট ট্রানজেকশন নেই।',
        'cs': 'Na vašem účtu zatím nejsou žádné platební transakce.',
        'el': 'Δεν υπάρχουν πληρωμές στον λογαριασμό σας ακόμα.',
        'fa': 'هیچ تراکنش پرداختی در حساب شما وجود ندارد.',
        'fi': 'Tililläsi ei ole vielä yhtäkään maksutapahtumaa.',
        'he': 'אין עדיין שום תשלום בחשבון שלך.',
        'hi': 'आपके अकाउंट में कोई भुगतान लेन-देन नहीं है।',
        'hu': 'Még nincsenek fizetési tranzakciók a fiókodban.',
        'ms': 'Tiada transaksi bayaran dalam akaun anda lagi.',
        'nb': 'Det er ingen betalingstransaksjoner på kontoen din ennå.',
        'pl': 'Na Twoim koncie nie ma jeszcze żadnych transakcji płatniczych.',
        'th': 'ไม่มีการชำระเงินในบัญชีของคุณ', 'tr': 'Hesabınızda henüz ödeme işlemi yok.',
        'zu': 'Akukho ukwenzeka kwemali kwi-akhawunti yakho.'},
    'no_history_upgrade': {'ar': 'قم بترقية خطتك للبدء!', 'bn': '시작하려면 আপনার পরিকল্পনা আপগ্রেড করুন!',
        'cs': 'Pro začátek upgradujte svůj plán!', 'el': 'Αναβαθμίστε τον σχέδιό σας για να ξεκινήσετε!',
        'fa': 'برای شروع، طرح خود را ارتقا دهید!', 'fi': 'Päivitä suunnitelma aloittaaksesi!',
        'he': 'שדרג את התוכנית שלך כדי להתחיל!', 'hi': 'शुरू करने के लिए अपनी योजना को अपग्रेड करें!',
        'hu': 'A kezdéshez frissítse a tervet!', 'ms': 'Naik taraf pelan anda untuk bermula!',
        'nb': 'Oppgrader planen din for å komme i gang!', 'pl': 'Zaktualizuj swój plan, aby zacząć!',
        'th': 'อัปเกรดแพลนของคุณเพื่อเริ่มต้น!', 'tr': 'Başlamak için planınızı yükseltin!',
        'zu': 'Kuthutha isimo lakho ukuze uqale!'},
    'view_plans': {'ar': 'عرض الخطط', 'bn': 'পরিকল্পনা দেখুন', 'cs': 'Zobrazit plány',
        'el': 'Προβολή σχεδίων', 'fa': 'نمایش برنامه‌ها', 'fi': 'Näytä suunnitelmat',
        'he': 'הצג תוכניות', 'hi': 'प्लान देखें', 'hu': 'Tervek megtekintése',
        'ms': 'Papar pelan', 'nb': 'Vis planer', 'pl': 'Wyświetl plany',
        'th': 'ดูแผน', 'tr': 'Planları görüntüle', 'zu': 'Bheka imigomo'},
    'plan_payment': {'ar': 'دفع الخطة', 'bn': 'পরিকল্পনা পেমেন্ট', 'cs': 'Platba za plán',
        'el': 'Πληρωμή σχεδίου', 'fa': 'پرداخت طرح', 'fi': 'Suunnitelman maksu',
        'he': 'תשלום תוכנית', 'hi': 'प्लान भुगतान', 'hu': 'Tervfizetés',
        'ms': 'Bayaran pelan', 'nb': 'Planbetaling', 'pl': 'Płatność za plan',
        'th': 'การชำระเงินตามแผน', 'tr': 'Plan ödemesi', 'zu': 'Imali yohlobo lwezicelo'},
    'col_date': {'ar': 'التاريخ', 'bn': 'তারিখ', 'cs': 'Datum',
        'el': 'Ημερομηνία', 'fa': 'تاریخ', 'fi': 'Päiväys',
        'he': 'תאריך', 'hi': 'दिनांक', 'hu': 'Dátum',
        'ms': 'Tarikh', 'nb': 'Dato', 'pl': 'Data',
        'th': 'วันที่', 'tr': 'Tarih', 'zu': 'Usuku'},
    'col_description': {'ar': 'الوصف', 'bn': 'বর্ণনা', 'cs': 'Popis',
        'el': 'Περιγραφή', 'fa': 'توضیحات', 'fi': 'Kuvaus',
        'he': 'תיאור', 'hi': 'विवरण', 'hu': 'Leírás',
        'ms': 'Penerangan', 'nb': 'Beskrivelse', 'pl': 'Opis',
        'th': 'รายละเอียด', 'tr': 'Açıklama', 'zu': 'Incazelo'},
    'col_amount': {'ar': 'المبلغ', 'bn': 'পরিমাণ', 'cs': 'Částka',
        'el': 'Ποσό', 'fa': 'مبلغ', 'fi': 'Summa',
        'he': 'סכום', 'hi': 'राशि', 'hu': 'Összeg',
        'ms': 'Jumlah', 'nb': 'Beløp', 'pl': 'Kwota',
        'th': 'จำนวนเงิน', 'tr': 'Miktar', 'zu': 'Isilinganiso'},
    'col_method': {'ar': 'الطريقة', 'bn': 'পদ্ধতি', 'cs': 'Metoda',
        'el': 'Τρόπος', 'fa': 'روش', 'fi': 'Menetelmä',
        'he': 'שיטה', 'hi': 'विधि', 'hu': 'Módszer',
        'ms': 'Kaedah', 'nb': 'Metode', 'pl': 'Metoda',
        'th': 'วิธีการ', 'tr': 'Yöntem', 'zu': 'Indlela'},
    'col_status': {'ar': 'الحالة', 'bn': 'অবস্থা', 'cs': 'Stav',
        'el': 'Κατάσταση', 'fa': 'وضعیت', 'fi': 'Tila',
        'he': 'סטטוס', 'hi': 'स्थिति', 'hu': 'Állapot',
        'ms': 'Status', 'nb': 'Status', 'pl': 'Status',
        'th': 'สถานะ', 'tr': 'Durum', 'zu': 'Isimo'},
    'status_completed': {'ar': '✓ مكتمل', 'bn': '✓ সম্পন্ন', 'cs': '✓ Dokončeno',
        'el': '✓ Ολοκληρώθηκε', 'fa': '✓ تکمیل شد', 'fi': '✓ Valmis',
        'he': '✓ הושלם', 'hi': '✓ पूर्ण', 'hu': '✓ Befejezve',
        'ms': '✓ Selesai', 'nb': '✓ Fullført', 'pl': '✓ Zakończone',
        'th': '✓ เสร็จสมบูรณ์', 'tr': '✓ Tamamlandı', 'zu': '✓ Kuphothulwe'},
    'status_pending': {'ar': '⏳ معلق', 'bn': '⏳ অপেক্ষমাণ', 'cs': '⏳ Probíhá',
        'el': '⏳ Εκκρεμεί', 'fa': '⏳ در حال انتظار', 'fi': '�ate Käynnissä',
        'he': '⏳ ממתין', 'hi': '⏲ लंबित', 'hu': '⏳ Függőben',
        'ms': '⏳ Menunggu', 'nb': '⏳ Venter', 'pl': '⏳ Trwa',
        'th': '⏳ รอดำเนินการ', 'tr': '⏳ Bekliyor', 'zu': '⏳ Iphutha'},
    'status_failed': {'ar': '✗ فشلت', 'bn': '✗ ব্যর্থ', 'cs': '✗ Selhalo',
        'el': '✗ Απέτυχε', 'fa': '✗ ناموفق', 'fi': '✗ Epäonnistui',
        'he': '✗ נכשלה', 'hi': '✗ विफल', 'hu': '✗ Sikertelen',
        'ms': '✗ Gagal', 'nb': '✗ Mislyktes', 'pl': '✗ Nie powiodło się',
        'th': '✗ ล้มเหลว', 'tr': '✗ Başarısız', 'zu': '✗ Kwehlulekile'},
    'status_refunded': {'ar': '↩ تم الاسترداد', 'bn': '↩ রিফান্ড', 'cs': '↩ Vráceno',
        'el': '↩ Επιστράφηκε', 'fa': '↩ بازپرداخت شد', 'fi': '↩ Palautettu',
        'he': '↩ הוחזר', 'hi': '↩ वापसी', 'hu': '↩ Visszatérítve',
        'ms': '↩ Dikembalikan', 'nb': '↩ Refundering', 'pl': '↩ Zwrócono',
        'th': '↩ คืนเงิน', 'tr': '↩ İade edildi', 'zu': '↩ Buyiselwe kabusha'},
    'invoice': {'ar': 'الفاتورة', 'bn': 'চলান', 'cs': 'Faktura',
        'el': 'Τιμολόγιο', 'fa': 'صورتحساب', 'fi': 'Lasku',
        'he': 'חשבונית', 'hi': 'इनवॉइस', 'hu': 'Számla',
        'ms': 'Invois', 'nb': 'Faktura', 'pl': 'Faktura',
        'th': 'ใบแจ้งหนี้', 'tr': 'Fatura', 'zu': 'I-invoyisi'},
    'prev': {'ar': 'السابق', 'bn': 'পূর্ববর্তী', 'cs': 'Předchozí',
        'el': 'Προηγούμενο', 'fa': 'قبلی', 'fi': 'Edellinen',
        'he': 'הקודם', 'hi': 'पिछला', 'hu': 'Előző',
        'ms': 'Sebelumnya', 'nb': 'Forrige', 'pl': 'Poprzedni',
        'th': 'ก่อนหน้า', 'tr': 'Önceki', 'zu': 'Okungaphambili'},
    'next': {'ar': 'التالي', 'bn': 'পরবর্তী', 'cs': 'Následující',
        'el': 'Επόμενο', 'fa': 'بعدی', 'fi': 'Seuraava',
        'he': 'הבא', 'hi': 'अगला', 'hu': 'Következő',
        'ms': 'Seterusnya', 'nb': 'Neste', 'pl': 'Następny',
        'th': 'ถัดไป', 'tr': 'Sonraki', 'zu': 'Okulandelayo'}
}

for lang in langs:
    trans = {}
    for k, v in billing.items():
        if lang in v:
            trans[f'billing_page.{k}'] = v[lang]
    apply(lang, trans)
    print(f'Applied {len(trans)} billing_page keys for {lang}')

print('\nAll billing_page keys applied!')
print(f'Total keys so far: ~198 + 28 = 226')
print('Still need ~40 more keys to reach 266')
