// i18n — translations for sidebar + receipt across EN / RU / UK / BE / PL

const I18N = {
  en: {
    label_lang: "Language",
    total: "Total",
    section_details: "Details",
    section_items: "Line items",
    section_adjust: "Adjustments",
    section_note: "Note",
    section_payment: "Payment",
    items_n: (n) => `${n} item${n !== 1 ? "s" : ""}`,
    meta_off: "Off",
    meta_set: "Set",
    meta_empty: "Empty",
    meta_pay_link: "Pay link",
    from: "From",
    order_no: "Order #",
    date: "Date",
    client: "Client",
    currency: "Currency",
    discount: "Discount",
    tax: "Tax",
    tax_before: "Pre-disc.",
    tax_after: "Post-disc.",
    tax_help_before: "Tax computed on the subtotal, before discount.",
    tax_help_after: "Tax computed on the discounted amount.",
    note_placeholder: "Optional message to the client. Shown above the payment block on the receipt.",
    payment_none: "None",
    payment_link: "Pay link",
    payment_crypto: "Crypto",
    payment_url: "Payment URL",
    payment_asset: "Asset / network",
    payment_address: "Wallet address",
    addr_valid: "Address looks valid",
    addr_invalid: "Doesn't match the expected format for this network",
    addr_enter: "Enter wallet address",
    optional: "— optional",
    disclaim_link: "We don't verify or take any responsibility for the correctness of payment links — double-check before sharing.",
    disclaim_addr: "Format check only — we don't verify ownership or the network. We take no responsibility for incorrect addresses. Always double-check before sending funds.",
    disclaim_bottom_1: "Receipts are generated on your device — nothing is stored on a server.",
    disclaim_bottom_2: "We do not verify payment links, wallet addresses, or any data you enter. We take no responsibility for the correctness, deliverability, or outcome of payments. Verify everything yourself before sending or sharing.",
    made_by: "Made by Ovič",
    preview: "Preview",
    copy_as_text: "Copy as text",
    copied: "✓ Copied",
    download_pdf: "Download PDF",
    download_png: "Download PNG",
    item_title: "Title",
    item_label: "Label / tag",
    item_description: "Description",
    item_rate_type: "Rate",
    item_fixed: "Fixed price",
    item_hourly: "Hourly",
    item_hours: "Hours",
    item_rate_per_h: (sym) => `Rate / h (${sym})`,
    item_total: (sym) => `Total (${sym})`,
    item_untitled: "Untitled item",
    item_done_collapse: "Done · collapse ↑",
    item_remove: "Remove item",
    add_item: "Add line item",
    r_receipt: "RECEIPT",
    r_order: "ORDER",
    r_date: "DATE",
    r_client: "CLIENT",
    r_currency: "CURRENCY",
    r_item: "ITEM",
    r_amount: "AMOUNT",
    r_subtotal: "SUBTOTAL",
    r_discount: "DISCOUNT",
    r_tax: "TAX",
    r_total: "TOTAL",
    r_pay_now: "Pay now",
    r_scan_to_pay: "Scan to pay",
    r_scan_or_copy: "scan or copy address",
    r_generated: "generated",
    r_cut_here: "cut here",
    r_no: "No.",
    ph_from: "Your name or studio",
    ph_client: "Acme Co.",
    ph_order: "4521",
    ph_title: "WIREFRAMES",
    ph_label: "lo-fi",
    ph_description: "Made a few screens so you can check them",
    ph_hours: "8",
    ph_rate: "30",
    ph_total: "240",
    print_invoice: "print · invoice",
  },

  ru: {
    label_lang: "Язык",
    total: "Итого",
    section_details: "Данные",
    section_items: "Позиции",
    section_adjust: "Корректировки",
    section_note: "Заметка",
    section_payment: "Оплата",
    items_n: (n) => {
      const last = n % 10, lastTwo = n % 100;
      if (lastTwo >= 11 && lastTwo <= 14) return `${n} позиций`;
      if (last === 1) return `${n} позиция`;
      if (last >= 2 && last <= 4) return `${n} позиции`;
      return `${n} позиций`;
    },
    meta_off: "Выкл.",
    meta_set: "Заполнено",
    meta_empty: "Пусто",
    meta_pay_link: "Ссылка",
    from: "От кого",
    order_no: "Номер",
    date: "Дата",
    client: "Клиент",
    currency: "Валюта",
    discount: "Скидка",
    tax: "Налог",
    tax_before: "До скидки",
    tax_after: "После скидки",
    tax_help_before: "Налог считается от суммы до скидки.",
    tax_help_after: "Налог считается от суммы после скидки.",
    note_placeholder: "Необязательное сообщение клиенту. Выводится над блоком оплаты.",
    payment_none: "Нет",
    payment_link: "Ссылка",
    payment_crypto: "Крипта",
    payment_url: "URL оплаты",
    payment_asset: "Актив / сеть",
    payment_address: "Адрес кошелька",
    addr_valid: "Адрес корректный",
    addr_invalid: "Адрес не подходит для выбранной сети",
    addr_enter: "Введите адрес кошелька",
    optional: "— опционально",
    disclaim_link: "Мы не проверяем и не несём ответственности за корректность платёжных ссылок. Проверьте сами перед отправкой.",
    disclaim_addr: "Только проверка формата — мы не подтверждаем владение и сеть. Мы не несём ответственности за ошибочные адреса. Всегда проверяйте сами перед отправкой средств.",
    disclaim_bottom_1: "Чеки генерируются на вашем устройстве — ничего не отправляется на сервер.",
    disclaim_bottom_2: "Мы не проверяем ссылки на оплату, адреса кошельков и любые введённые данные. Мы не несём никакой ответственности за корректность, доставку или результат платежей. Проверяйте всё самостоятельно перед отправкой.",
    made_by: "Made by Ovič",
    preview: "Превью",
    copy_as_text: "Скопировать текст",
    copied: "✓ Скопировано",
    download_pdf: "Скачать PDF",
    download_png: "Скачать PNG",
    item_title: "Название",
    item_label: "Метка",
    item_description: "Описание",
    item_rate_type: "Тип оплаты",
    item_fixed: "Фикс.",
    item_hourly: "Почасовая",
    item_hours: "Часы",
    item_rate_per_h: (sym) => `Ставка/ч (${sym})`,
    item_total: (sym) => `Сумма (${sym})`,
    item_untitled: "Без названия",
    item_done_collapse: "Готово · свернуть ↑",
    item_remove: "Удалить",
    add_item: "Добавить позицию",
    r_receipt: "ЧЕК",
    r_order: "НОМЕР",
    r_date: "ДАТА",
    r_client: "КЛИЕНТ",
    r_currency: "ВАЛЮТА",
    r_item: "ПОЗИЦИЯ",
    r_amount: "СУММА",
    r_subtotal: "ПОДЫТОГ",
    r_discount: "СКИДКА",
    r_tax: "НАЛОГ",
    r_total: "ИТОГО",
    r_pay_now: "Оплатить",
    r_scan_to_pay: "Сканируйте для оплаты",
    r_scan_or_copy: "сканировать или скопировать",
    r_generated: "создан",
    r_cut_here: "линия отреза",
    r_no: "№",
    ph_from: "Ваше имя или студия",
    ph_client: "ООО Ромашка",
    ph_order: "4521",
    ph_title: "ВАЙРФРЕЙМЫ",
    ph_label: "lo-fi",
    ph_description: "Сделал пару экранов, чтобы вы могли посмотреть",
    ph_hours: "8",
    ph_rate: "30",
    ph_total: "240",
    print_invoice: "печать · чек",
  },

  uk: {
    label_lang: "Мова",
    total: "Разом",
    section_details: "Деталі",
    section_items: "Позиції",
    section_adjust: "Коригування",
    section_note: "Примітка",
    section_payment: "Оплата",
    items_n: (n) => {
      const last = n % 10, lastTwo = n % 100;
      if (lastTwo >= 11 && lastTwo <= 14) return `${n} позицій`;
      if (last === 1) return `${n} позиція`;
      if (last >= 2 && last <= 4) return `${n} позиції`;
      return `${n} позицій`;
    },
    meta_off: "Вимк.",
    meta_set: "Заповнено",
    meta_empty: "Порожньо",
    meta_pay_link: "Посилання",
    from: "Від кого",
    order_no: "Номер",
    date: "Дата",
    client: "Клієнт",
    currency: "Валюта",
    discount: "Знижка",
    tax: "Податок",
    tax_before: "До знижки",
    tax_after: "Після знижки",
    tax_help_before: "Податок рахується від суми до знижки.",
    tax_help_after: "Податок рахується від суми після знижки.",
    note_placeholder: "Необов'язкове повідомлення клієнту. Виводиться над блоком оплати.",
    payment_none: "Немає",
    payment_link: "Посилання",
    payment_crypto: "Крипта",
    payment_url: "URL оплати",
    payment_asset: "Актив / мережа",
    payment_address: "Адреса гаманця",
    addr_valid: "Адреса коректна",
    addr_invalid: "Адреса не підходить для обраної мережі",
    addr_enter: "Введіть адресу гаманця",
    optional: "— опційно",
    disclaim_link: "Ми не перевіряємо та не несемо відповідальності за коректність платіжних посилань. Перевірте самі перед надсиланням.",
    disclaim_addr: "Лише перевірка формату — ми не підтверджуємо власність і мережу. Ми не несемо відповідальності за помилкові адреси. Завжди перевіряйте самі перед надсиланням коштів.",
    disclaim_bottom_1: "Чеки генеруються на вашому пристрої — нічого не зберігається на сервері.",
    disclaim_bottom_2: "Ми не перевіряємо посилання на оплату, адреси гаманців та будь-які введені дані. Ми не несемо жодної відповідальності за коректність, доставку чи результат платежів. Перевіряйте все самостійно перед надсиланням.",
    made_by: "Made by Ovič",
    preview: "Превʼю",
    copy_as_text: "Скопіювати текст",
    copied: "✓ Скопійовано",
    download_pdf: "Завантажити PDF",
    download_png: "Завантажити PNG",
    item_title: "Назва",
    item_label: "Тег",
    item_description: "Опис",
    item_rate_type: "Тип оплати",
    item_fixed: "Фікс.",
    item_hourly: "Погодинна",
    item_hours: "Години",
    item_rate_per_h: (sym) => `Ставка/год (${sym})`,
    item_total: (sym) => `Сума (${sym})`,
    item_untitled: "Без назви",
    item_done_collapse: "Готово · згорнути ↑",
    item_remove: "Видалити",
    add_item: "Додати позицію",
    r_receipt: "ЧЕК",
    r_order: "НОМЕР",
    r_date: "ДАТА",
    r_client: "КЛІЄНТ",
    r_currency: "ВАЛЮТА",
    r_item: "ПОЗИЦІЯ",
    r_amount: "СУМА",
    r_subtotal: "РАЗОМ",
    r_discount: "ЗНИЖКА",
    r_tax: "ПОДАТОК",
    r_total: "ДО СПЛАТИ",
    r_pay_now: "Сплатити",
    r_scan_to_pay: "Скануйте для оплати",
    r_scan_or_copy: "сканувати або скопіювати",
    r_generated: "створено",
    r_cut_here: "лінія відрізу",
    r_no: "№",
    ph_from: "Ваше імʼя або студія",
    ph_client: "ТОВ Ромашка",
    ph_order: "4521",
    ph_title: "ВАЙРФРЕЙМИ",
    ph_label: "lo-fi",
    ph_description: "Зробив декілька екранів, щоб ви подивились",
    ph_hours: "8",
    ph_rate: "30",
    ph_total: "240",
    print_invoice: "друк · чек",
  },

  be: {
    label_lang: "Мова",
    total: "Усяго",
    section_details: "Звесткі",
    section_items: "Пазіцыі",
    section_adjust: "Карэкцыі",
    section_note: "Заўвага",
    section_payment: "Аплата",
    items_n: (n) => {
      const last = n % 10, lastTwo = n % 100;
      if (lastTwo >= 11 && lastTwo <= 14) return `${n} пазіцый`;
      if (last === 1) return `${n} пазіцыя`;
      if (last >= 2 && last <= 4) return `${n} пазіцыі`;
      return `${n} пазіцый`;
    },
    meta_off: "Выкл.",
    meta_set: "Запоўнена",
    meta_empty: "Пуста",
    meta_pay_link: "Спасылка",
    from: "Ад каго",
    order_no: "Нумар",
    date: "Дата",
    client: "Кліент",
    currency: "Валюта",
    discount: "Зніжка",
    tax: "Падатак",
    tax_before: "Да зніжкі",
    tax_after: "Пасля зніжкі",
    tax_help_before: "Падатак лічыцца ад сумы да зніжкі.",
    tax_help_after: "Падатак лічыцца ад сумы пасля зніжкі.",
    note_placeholder: "Неабавязковае паведамленне кліенту. Выводзіцца над блокам аплаты.",
    payment_none: "Няма",
    payment_link: "Спасылка",
    payment_crypto: "Крыпта",
    payment_url: "URL аплаты",
    payment_asset: "Актыў / сетка",
    payment_address: "Адрас гаманца",
    addr_valid: "Адрас карэктны",
    addr_invalid: "Адрас не падыходзіць для абранай сеткі",
    addr_enter: "Увядзіце адрас гаманца",
    optional: "— па жаданні",
    disclaim_link: "Мы не правяраем і не нясём адказнасці за карэктнасць спасылак для аплаты. Праверце самі перад дасылам.",
    disclaim_addr: "Толькі праверка фармату — мы не пацвярджаем уладальніка ці сетку. Мы не нясём адказнасці за памылковыя адрасы. Заўсёды правярайце самі перад адпраўкай сродкаў.",
    disclaim_bottom_1: "Чэкі генеруюцца на вашай прыладзе — нічога не захоўваецца на серверы.",
    disclaim_bottom_2: "Мы не правяраем спасылкі для аплаты, адрасы гаманцоў ці іншыя ўведзеныя дадзеныя. Мы не нясём ніякай адказнасці за карэктнасць, дастаўку ці вынік плацяжоў. Правярайце ўсё самі перад адпраўкай.",
    made_by: "Made by Ovič",
    preview: "Прэвʼю",
    copy_as_text: "Скапіяваць тэкст",
    copied: "✓ Скапіявана",
    download_pdf: "Спампаваць PDF",
    download_png: "Спампаваць PNG",
    item_title: "Назва",
    item_label: "Тэг",
    item_description: "Апісанне",
    item_rate_type: "Тып аплаты",
    item_fixed: "Фікс.",
    item_hourly: "Пагадзінна",
    item_hours: "Гадзіны",
    item_rate_per_h: (sym) => `Стаўка/гадз (${sym})`,
    item_total: (sym) => `Сума (${sym})`,
    item_untitled: "Без назвы",
    item_done_collapse: "Гатова · згарнуць ↑",
    item_remove: "Выдаліць",
    add_item: "Дадаць пазіцыю",
    r_receipt: "ЧЭК",
    r_order: "НУМАР",
    r_date: "ДАТА",
    r_client: "КЛІЕНТ",
    r_currency: "ВАЛЮТА",
    r_item: "ПАЗІЦЫЯ",
    r_amount: "СУМА",
    r_subtotal: "ПАДСУМА",
    r_discount: "ЗНІЖКА",
    r_tax: "ПАДАТАК",
    r_total: "УСЯГО",
    r_pay_now: "Заплаціць",
    r_scan_to_pay: "Скануйце для аплаты",
    r_scan_or_copy: "сканаваць ці скапіяваць",
    r_generated: "створана",
    r_cut_here: "лінія адрэзу",
    r_no: "№",
    ph_from: "Ваша імя ці студыя",
    ph_client: "ТАА Рамонак",
    ph_order: "4521",
    ph_title: "ВАЙРФРЭЙМЫ",
    ph_label: "lo-fi",
    ph_description: "Зрабіў пару экранаў, каб вы паглядзелі",
    ph_hours: "8",
    ph_rate: "30",
    ph_total: "240",
    print_invoice: "друк · чэк",
  },

  pl: {
    label_lang: "Język",
    total: "Suma",
    section_details: "Dane",
    section_items: "Pozycje",
    section_adjust: "Korekty",
    section_note: "Notatka",
    section_payment: "Płatność",
    items_n: (n) => {
      const last = n % 10, lastTwo = n % 100;
      if (n === 1) return "1 pozycja";
      if (lastTwo >= 12 && lastTwo <= 14) return `${n} pozycji`;
      if (last >= 2 && last <= 4) return `${n} pozycje`;
      return `${n} pozycji`;
    },
    meta_off: "Wył.",
    meta_set: "Wypełnione",
    meta_empty: "Puste",
    meta_pay_link: "Link",
    from: "Od kogo",
    order_no: "Numer",
    date: "Data",
    client: "Klient",
    currency: "Waluta",
    discount: "Rabat",
    tax: "Podatek",
    tax_before: "Przed rab.",
    tax_after: "Po rabacie",
    tax_help_before: "Podatek liczony od kwoty przed rabatem.",
    tax_help_after: "Podatek liczony od kwoty po rabacie.",
    note_placeholder: "Opcjonalna wiadomość do klienta. Wyświetlana nad blokiem płatności.",
    payment_none: "Brak",
    payment_link: "Link",
    payment_crypto: "Krypto",
    payment_url: "URL płatności",
    payment_asset: "Aktyw / sieć",
    payment_address: "Adres portfela",
    addr_valid: "Adres wygląda poprawnie",
    addr_invalid: "Adres nie pasuje do wybranej sieci",
    addr_enter: "Wpisz adres portfela",
    optional: "— opcjonalne",
    disclaim_link: "Nie weryfikujemy ani nie ponosimy odpowiedzialności za poprawność linków płatności. Sprawdź sam przed udostępnieniem.",
    disclaim_addr: "Tylko sprawdzenie formatu — nie weryfikujemy własności ani sieci. Nie ponosimy odpowiedzialności za błędne adresy. Zawsze sprawdź dwa razy przed wysłaniem środków.",
    disclaim_bottom_1: "Paragony generowane lokalnie — nic nie jest zapisywane na serwerze.",
    disclaim_bottom_2: "Nie weryfikujemy linków płatności, adresów portfeli ani żadnych wprowadzonych danych. Nie ponosimy żadnej odpowiedzialności za poprawność, dostarczalność ani wynik płatności. Sprawdź wszystko samodzielnie przed wysłaniem.",
    made_by: "Made by Ovič",
    preview: "Podgląd",
    copy_as_text: "Kopiuj jako tekst",
    copied: "✓ Skopiowano",
    download_pdf: "Pobierz PDF",
    download_png: "Pobierz PNG",
    item_title: "Tytuł",
    item_label: "Tag",
    item_description: "Opis",
    item_rate_type: "Stawka",
    item_fixed: "Stała",
    item_hourly: "Godzinowa",
    item_hours: "Godziny",
    item_rate_per_h: (sym) => `Stawka/godz (${sym})`,
    item_total: (sym) => `Suma (${sym})`,
    item_untitled: "Bez tytułu",
    item_done_collapse: "Gotowe · zwiń ↑",
    item_remove: "Usuń",
    add_item: "Dodaj pozycję",
    r_receipt: "PARAGON",
    r_order: "NUMER",
    r_date: "DATA",
    r_client: "KLIENT",
    r_currency: "WALUTA",
    r_item: "POZYCJA",
    r_amount: "KWOTA",
    r_subtotal: "PODSUMA",
    r_discount: "RABAT",
    r_tax: "PODATEK",
    r_total: "DO ZAPŁATY",
    r_pay_now: "Zapłać",
    r_scan_to_pay: "Skanuj, aby zapłacić",
    r_scan_or_copy: "skanuj lub skopiuj",
    r_generated: "utworzono",
    r_cut_here: "linia cięcia",
    r_no: "Nr",
    ph_from: "Twoje imię lub studio",
    ph_client: "Acme Sp. z o.o.",
    ph_order: "4521",
    ph_title: "WIREFRAMES",
    ph_label: "lo-fi",
    ph_description: "Zrobiłem kilka ekranów do podglądu",
    ph_hours: "8",
    ph_rate: "30",
    ph_total: "240",
    print_invoice: "druk · paragon",
  },
};

const LANGS = [
  { code: "en", label: "EN" },
  { code: "ru", label: "RU" },
  { code: "uk", label: "UA" },
  { code: "be", label: "BY" },
  { code: "pl", label: "PL" },
];

function makeT(lang) {
  const dict = I18N[lang] || I18N.en;
  const fallback = I18N.en;
  return (key, ...args) => {
    let v = dict[key];
    if (v === undefined) v = fallback[key];
    if (typeof v === "function") return v(...args);
    return v ?? key;
  };
}

Object.assign(window, { I18N, LANGS, makeT });
