#!/usr/bin/env python3
"""Add weekly/monthly leaderboard i18n keys to all locale files (idempotent)."""
import json, os

LOCALES = os.path.join(os.path.dirname(__file__), "..", "app", "i18n", "locales")

NEW_KEYS = {
    "en": {
        "no_leaderboard_data": "Leaderboard data is not available yet.",
        "lb_hint_global": "All-time points from every finished match",
        "lb_hint_week": "Points earned in the last 7 days",
        "lb_hint_month": "Points earned in the last 30 days",
        "you": "YOU",
        "lb_rule_win": "Win a match: +100 pts",
        "lb_rule_play": "Play a match: +20 pts",
        "lb_rule_reset": "Weekly & monthly windows reset automatically",
    },
    "fa": {
        "no_leaderboard_data": "داده‌های لیدربورد هنوز در دسترس نیست.",
        "lb_hint_global": "مجموع امتیازهای همه‌ی مسابقه‌ها از ابتدا",
        "lb_hint_week": "امتیازهای جمع‌آوری‌شده در ۷ روز گذشته",
        "lb_hint_month": "امتیازهای جمع‌آوری‌شده در ۳۰ روز گذشته",
        "you": "شما",
        "lb_rule_win": "برد در مسابقه: ‎+100 امتیاز",
        "lb_rule_play": "شرکت در مسابقه: ‎+20 امتیاز",
        "lb_rule_reset": "پنجره‌های هفتگی و ماهانه خودکار ریست می‌شوند",
    },
    "tr": {
        "no_leaderboard_data": "Liderlik tablosu verileri henüz mevcut değil.",
        "lb_hint_global": "Tüm zamanların maçlarından toplam puan",
        "lb_hint_week": "Son 7 günde kazanılan puanlar",
        "lb_hint_month": "Son 30 günde kazanılan puanlar",
        "you": "SEN",
        "lb_rule_win": "Maç kazanınca: +100 puan",
        "lb_rule_play": "Maç oynayınca: +20 puan",
        "lb_rule_reset": "Haftalık ve aylık pencereler otomatik sıfırlanır",
    },
    "ar": {
        "no_leaderboard_data": "بيانات لوحة الصدارة غير متاحة بعد.",
        "lb_hint_global": "مجموع نقاط جميع المباريات منذ البداية",
        "lb_hint_week": "النقاط المكتسبة في آخر ٧ أيام",
        "lb_hint_month": "النقاط المكتسبة في آخر ٣٠ يومًا",
        "you": "أنت",
        "lb_rule_win": "الفوز بمباراة: +100 نقطة",
        "lb_rule_play": "المشاركة في مباراة: +20 نقطة",
        "lb_rule_reset": "تُعاد نوافذ الأسبوع والشهر تلقائيًا",
    },
}

for lang, keys in NEW_KEYS.items():
    path = os.path.join(LOCALES, f"{lang}.json")
    with open(path, encoding="utf-8") as f:
        data = json.load(f)
    added = 0
    for k, v in keys.items():
        if k not in data:
            data[k] = v
            added += 1
    with open(path, "w", encoding="utf-8") as f:
        json.dump(data, f, ensure_ascii=False, indent=2)
        f.write("\n")
    print(f"{lang}: +{added} keys → {len(data)} total")
print("OK")
