// Лёгкая локализация интерфейса (ru/en). Контент-домен (офлайн-анализ,
// системные промпты профилей) остаётся на русском — это профиль продукта.

const DICT = {
  ru: {
    // topbar
    "tb.sidebar": "Боковая панель",
    "tb.search": "Поиск по документу…",
    "tb.prev": "Назад",
    "tb.next": "Вперёд",
    "tb.case": "Учитывать регистр",
    "tb.word": "Целые слова",
    "tb.regex": "Регулярное выражение",
    "tb.zoomout": "Уменьшить",
    "tb.zoomin": "Увеличить",
    "tb.fitwidth": "По ширине",
    "tb.fitpage": "Страница целиком",
    "tb.download": "Скачать PDF",
    "tb.print": "Печать",
    "st.printprep": "Подготовка к печати…",
    "vm.continuous": "Лента",
    "vm.single": "Одна страница",
    "vm.two": "В ряд",
    "tb.newwindow": "Открыть в отдельном окне",
    "tb.fullscreen": "Полный экран",
    "tb.theme": "Тема",
    "tb.draw": "Рисование",
    "draw.pencil": "Карандаш",
    "draw.line": "Линия",
    "draw.rect": "Прямоугольник",
    "draw.arrow": "Стрелка",
    "draw.erase": "Ластик",
    "tb.rotate": "Повернуть на 90°",
    "tb.invert": "Инверсия цветов (для тёмной темы)",
    "tb.settings": "Настройки AI",
    "tb.assistant": "AI Assistant",
    "help.title": "Горячие клавиши",
    "help.pages": "листать страницы",
    "help.ends": "первая / последняя страница",
    "help.zoom": "масштаб",
    "help.search": "поиск",
    "help.esc": "закрыть меню / окно",
    "help.help": "показать эту справку",
    "help.close": "Закрыть",
    // tabs
    "tab.outline": "Структура",
    "tab.thumbs": "Миниатюры",
    "tab.bookmarks": "Закладки",
    "tab.comments": "Комментарии",
    "cm.empty": "Аннотаций нет. Выделите текст в документе и выберите «Выделить» или «Заметка».",
    "bm.add": "+ Добавить закладку",
    "bm.ai": "✨ AI-закладки",
    "bm.export": "⤓ Экспорт заметок",
    // ai panel
    "ai.title": "AI Assistant",
    "ai.placeholder": "Спросите о документе…",
    "ai.send": "Отправить",
    // selection menu
    "sel.explain": "Объяснить",
    "sel.translate": "Перевести",
    "sel.shorten": "Сократить",
    "sel.rewrite": "Переписать",
    "sel.risks": "Найти риски",
    "sel.ask": "Спросить AI",
    "sel.highlight": "🖍 Выделить",
    "sel.underline": "Подчеркнуть",
    "sel.strike": "Зачеркнуть",
    "sel.note": "💬 Заметка",
    // status
    "st.loading": "Загрузка PDF…",
    "st.extract": "Извлечение текста…",
    "st.render": "Рендеринг…",
    "st.ocrcheck": "Проверка на скан (OCR)…",
    "st.nofile": "Файл PDF не открыт",
    "st.loaderr": "Ошибка загрузки",
    "st.password": "Введите пароль PDF:",
    "st.password.wrong": "Неверный пароль. Повторите:",
    "st.empty": "Документ пуст или повреждён",
    "st.retry": "Повторить",
    "st.open": "Открыть PDF",
    "st.drophint": "или перетащите PDF сюда",
    "st.recent": "Недавние документы",
    "ocr.scanned": "Похоже, это скан — текст не распознан.",
    "ocr.recognize": "Распознать (OCR)",
    "ocr.dismiss": "Скрыть",
    "ocr.running": "Распознавание…",
    // misc
    "ann.note.prompt": "Текст заметки:",
    "doc.loading": "Документ ещё загружается…",
    "ai.typing": "AI печатает…",
    // annotation export labels
    "annx.highlight": "Выделение",
    "annx.underline": "Подчёркивание",
    "annx.strike": "Зачёркивание",
    "annx.note": "Заметка",
    "annx.draw": "Рисунок",
    // options
    "opt.title": "Aris PDF AI Reader — настройки",
    "opt.viewer": "Просмотрщик",
    "opt.intercept": "Перехватывать открытие PDF и заменять встроенный просмотрщик",
    "opt.theme": "Тема",
    "opt.theme.auto": "Авто (по системе)",
    "opt.theme.light": "Светлая",
    "opt.theme.dark": "Тёмная",
    "opt.lang": "Язык интерфейса",
    "opt.lang.auto": "Авто (по браузеру)",
    "opt.aimode": "Режим AI",
    "opt.provider": "Подключение провайдера",
    "opt.backend": "Backend Gateway",
    "opt.history": "История",
    "opt.hist.docs": "Документы",
    "opt.hist.q": "Вопросы",
    "opt.clearhist": "Очистить историю документов и вопросов",
    "opt.save": "Сохранить",
    "opt.test": "Проверить соединение",
    "opt.sync": "Синхронизация (по sync-коду)",
    "opt.sync.enable": "Синхронизировать аннотации и закладки между устройствами",
    "opt.sync.code": "Sync-код (общий секрет для ваших устройств)",
    "opt.sync.gen": "Сгенерировать",
    "opt.sync.url": "URL сервера синхронизации (по умолчанию — Backend URL)",
    "opt.sync.hint": "Введите один и тот же код на всех устройствах. Данные хранятся на вашем сервере, привязаны к коду. Без аккаунтов.",
    "opt.collab.enable": "Совместная работа в реальном времени (живой обмен правками с участниками, у кого тот же код)",
    "collab.peers": "Совместный просмотр: участников онлайн",
    "opt.data": "Данные (резервная копия)",
    "opt.data.hint": "Закладки, аннотации, история и настройки. Ключи API в экспорт не включаются.",
    "opt.export": "⤓ Экспортировать данные",
    "opt.import": "⤒ Импортировать данные",
    "opt.ocr": "OCR",
    "opt.profile": "Профиль анализа по умолчанию",
    // popup
    "pp.intercept": "Перехват PDF",
    "pp.settings": "Настройки AI",
  },
  en: {
    "tb.sidebar": "Sidebar",
    "tb.search": "Search the document…",
    "tb.prev": "Previous",
    "tb.next": "Next",
    "tb.case": "Match case",
    "tb.word": "Whole words",
    "tb.regex": "Regular expression",
    "tb.zoomout": "Zoom out",
    "tb.zoomin": "Zoom in",
    "tb.fitwidth": "Fit width",
    "tb.fitpage": "Fit page",
    "tb.download": "Download PDF",
    "tb.print": "Print",
    "st.printprep": "Preparing to print…",
    "vm.continuous": "Continuous",
    "vm.single": "Single page",
    "vm.two": "Grid",
    "tb.newwindow": "Open in a separate window",
    "tb.fullscreen": "Fullscreen",
    "tb.theme": "Theme",
    "tb.draw": "Draw",
    "draw.pencil": "Pencil",
    "draw.line": "Line",
    "draw.rect": "Rectangle",
    "draw.arrow": "Arrow",
    "draw.erase": "Eraser",
    "tb.rotate": "Rotate 90°",
    "tb.invert": "Invert colors (for dark theme)",
    "tb.settings": "AI settings",
    "tb.assistant": "AI Assistant",
    "help.title": "Keyboard shortcuts",
    "help.pages": "navigate pages",
    "help.ends": "first / last page",
    "help.zoom": "zoom",
    "help.search": "search",
    "help.esc": "close menu / dialog",
    "help.help": "show this help",
    "help.close": "Close",
    "tab.outline": "Outline",
    "tab.thumbs": "Thumbnails",
    "tab.bookmarks": "Bookmarks",
    "tab.comments": "Comments",
    "cm.empty": "No annotations yet. Select text in the document and choose “Highlight” or “Note”.",
    "bm.add": "+ Add bookmark",
    "bm.ai": "✨ AI bookmarks",
    "bm.export": "⤓ Export notes",
    "ai.title": "AI Assistant",
    "ai.placeholder": "Ask about the document…",
    "ai.send": "Send",
    "sel.explain": "Explain",
    "sel.translate": "Translate",
    "sel.shorten": "Shorten",
    "sel.rewrite": "Rewrite",
    "sel.risks": "Find risks",
    "sel.ask": "Ask AI",
    "sel.highlight": "🖍 Highlight",
    "sel.underline": "Underline",
    "sel.strike": "Strikeout",
    "sel.note": "💬 Note",
    "st.loading": "Loading PDF…",
    "st.extract": "Extracting text…",
    "st.render": "Rendering…",
    "st.ocrcheck": "Checking for scan (OCR)…",
    "st.nofile": "No PDF opened",
    "st.loaderr": "Load error",
    "st.password": "Enter PDF password:",
    "st.password.wrong": "Wrong password. Try again:",
    "st.empty": "Document is empty or corrupted",
    "st.retry": "Retry",
    "st.open": "Open PDF",
    "st.drophint": "or drop a PDF here",
    "st.recent": "Recent documents",
    "ocr.scanned": "Looks like a scan — no text recognized.",
    "ocr.recognize": "Recognize (OCR)",
    "ocr.dismiss": "Dismiss",
    "ocr.running": "Recognizing…",
    "ann.note.prompt": "Note text:",
    "doc.loading": "Document is still loading…",
    "ai.typing": "AI is typing…",
    "annx.highlight": "Highlight",
    "annx.underline": "Underline",
    "annx.strike": "Strikeout",
    "annx.note": "Note",
    "annx.draw": "Drawing",
    "opt.title": "Aris PDF AI Reader — settings",
    "opt.viewer": "Viewer",
    "opt.intercept": "Intercept PDF opening and replace the built-in viewer",
    "opt.theme": "Theme",
    "opt.theme.auto": "Auto (system)",
    "opt.theme.light": "Light",
    "opt.theme.dark": "Dark",
    "opt.lang": "Interface language",
    "opt.lang.auto": "Auto (browser)",
    "opt.aimode": "AI mode",
    "opt.provider": "Provider connection",
    "opt.backend": "Backend Gateway",
    "opt.history": "History",
    "opt.hist.docs": "Documents",
    "opt.hist.q": "Questions",
    "opt.clearhist": "Clear document and question history",
    "opt.save": "Save",
    "opt.test": "Test connection",
    "opt.sync": "Sync (by sync code)",
    "opt.sync.enable": "Sync annotations and bookmarks across devices",
    "opt.sync.code": "Sync code (shared secret for your devices)",
    "opt.sync.gen": "Generate",
    "opt.sync.url": "Sync server URL (defaults to Backend URL)",
    "opt.collab.enable": "Real-time collaboration (live edit exchange with peers using the same code)",
    "collab.peers": "Collaborative viewing: peers online",
    "opt.sync.hint": "Enter the same code on all devices. Data is stored on your server, keyed by the code. No accounts.",
    "opt.data": "Data (backup)",
    "opt.data.hint": "Bookmarks, annotations, history and settings. API keys are excluded from the export.",
    "opt.export": "⤓ Export data",
    "opt.import": "⤒ Import data",
    "opt.ocr": "OCR",
    "opt.profile": "Default analysis profile",
    "pp.intercept": "Intercept PDF",
    "pp.settings": "AI settings",
  },
};

let _lang = "ru";

export function resolveLang(setting) {
  if (setting === "ru" || setting === "en") return setting;
  const nav = (navigator.language || "ru").toLowerCase();
  return nav.startsWith("en") ? "en" : "ru";
}

export function setLang(lang) {
  _lang = DICT[lang] ? lang : "ru";
}

export function getLang() {
  return _lang;
}

export function t(key) {
  return DICT[_lang]?.[key] ?? DICT.ru[key] ?? key;
}

/** Заменяет текст/атрибуты у элементов с data-i18n / data-i18n-title / data-i18n-ph. */
export function applyI18n(root = document) {
  root.querySelectorAll("[data-i18n]").forEach((el) => (el.textContent = t(el.dataset.i18n)));
  root.querySelectorAll("[data-i18n-title]").forEach((el) => (el.title = t(el.dataset.i18nTitle)));
  root.querySelectorAll("[data-i18n-ph]").forEach((el) => (el.placeholder = t(el.dataset.i18nPh)));
}
