//! Git-panel + Git-dialog strings for this locale.
//!
//! Split out of `ru.rs` to keep that table under the
//! repo's 800-line file cap. The main table falls through
//! here for any `git.*` key.

pub fn lookup(key: &str) -> Option<&'static str> {
    Some(match key {
        "git.openPanel" => "Открыть панель Git",
        "git.closePanel" => "Закрыть панель Git",
        "git.title" => "Git · {{fileName}}",
        "git.titleNoFile" => "Git · (Файл не выбран)",
        "git.close" => "Закрыть",
        "git.initializing" => "Инициализация репозитория…",
        "git.conflict.title" => "Конфликт слияния",
        "git.conflict.description" => "Разрешите каждый конфликт с помощью карточек ниже, затем примените слияние.",
        "git.conflict.abort" => "Отменить слияние",
        "git.conflict.nonOp.title" => "Слияние приостановлено из-за не-.op файлов",
        "git.conflict.nonOp.description" => "Слияние .op файлов завершено, но другие файлы в репозитории ещё не разрешены. Разрешите их вне OpenPencil и продолжите.",
        "git.conflict.nonOp.unresolvedHeading_one" => "1 файл требует внимания",
        "git.conflict.nonOp.unresolvedHeading_other" => "{{count}} файлов требуют внимания",
        "git.conflict.nonOp.continue" => "Продолжить слияние",
        "git.conflict.nonOp.abort" => "Отменить слияние",
        "git.conflict.banner.progress" => "{{resolved}} / {{total}} разрешено",
        "git.conflict.banner.apply" => "Применить слияние",
        "git.conflict.banner.continue" => "Продолжить",
        "git.conflict.banner.finalizeError" => "Не удалось применить: {{message}}",
        "git.conflict.banner.pollError" => "Опрос статуса приостановлен из-за ошибки: {{message}}",
        "git.conflict.banner.reopenMessage" => "Панель была открыта повторно в процессе слияния — пожалуйста, прервите и повторите pull.",
        "git.conflict.list.heading" => "Все конфликты",
        "git.conflict.list.progress" => "{{resolved}} / {{total}} разрешено",
        "git.conflict.list.allResolved" => "Всё разрешено",
        "git.conflict.list.allOurs" => "Всё моё",
        "git.conflict.list.allTheirs" => "Всё их",
        "git.conflict.item.nodeConflict" => "Конфликт узла",
        "git.conflict.item.fieldConflict" => "Конфликт поля",
        "git.conflict.item.resolved" => "Разрешено",
        "git.conflict.card.ours" => "Моё",
        "git.conflict.card.theirs" => "Их",
        "git.conflict.card.base" => "База",
        "git.conflict.card.keepMine" => "Оставить моё",
        "git.conflict.card.keepTheirs" => "Оставить их",
        "git.conflict.card.oursThumbnailAlt" => "Моя версия",
        "git.conflict.card.theirsThumbnailAlt" => "Их версия",
        "git.conflict.editor.editManually" => "Редактировать вручную",
        "git.conflict.editor.cancel" => "Отмена",
        "git.conflict.editor.apply" => "Применить",
        "git.conflict.editor.invalidJson" => "Неверный JSON",
        "git.conflict.editor.textareaLabel" => "Редактировать значение JSON",
        "git.error.dismiss" => "Закрыть",
        "git.error.retry" => "Повторить",
        "git.error.title" => "Что-то пошло не так",
        "git.empty.heading" => "История версий ещё не создана",
        "git.empty.optional" => "Git необязателен — можно пропустить",
        "git.empty.requireSavedFile" => "Сначала сохраните файл .op, чтобы включить историю",
        "git.empty.newCard" => "Создать",
        "git.empty.newCardDescription" => "Создать локальную историю",
        "git.empty.openCard" => "Открыть",
        "git.empty.openCardDescription" => "Существующий репозиторий",
        "git.empty.cloneCard" => "Клонировать",
        "git.empty.cloneCardDescription" => "Из удалённого",
        "git.author.heading" => "Автор коммита",
        "git.author.subheading" => "Для первого коммита нужно имя и email",
        "git.author.nameLabel" => "Имя",
        "git.author.namePlaceholder" => "Ваше имя",
        "git.author.emailLabel" => "Email",
        "git.author.emailPlaceholder" => "vy@example.com",
        "git.author.submit" => "Сохранить",
        "git.author.cancel" => "Отмена",
        "git.author.validationName" => "Имя обязательно",
        "git.author.validationEmail" => "Требуется действительный email",
        "git.picker.heading" => "{{count}} файлов .op в этом репозитории:",
        "git.picker.milestoneCount" => "{{count}} вех",
        "git.picker.noHistory" => "Нет истории",
        "git.picker.lastCommit" => "{{message}} · {{time}}",
        "git.picker.bindButton" => "Отслеживать этот файл",
        "git.picker.bindAndOpenButton" => "Отслеживать и открыть",
        "git.picker.back" => "Назад",
        "git.picker.backClose" => "Отмена",
        "git.picker.empty.heading" => "В этом репозитории нет файлов .op",
        "git.picker.empty.body" => "Панель Git требует хотя бы один файл .op.",
        "git.picker.empty.close" => "Закрыть панель",
        "git.autoBind.confirmHeading" => "Найден {{fileName}} — открыть?",
        "git.autoBind.openButton" => "Открыть",
        "git.autoBind.dismissButton" => "Пропустить",
        "git.relativeTime.justNow" => "только что",
        "git.relativeTime.minutesAgo" => "{{count}}м назад",
        "git.relativeTime.hoursAgo" => "{{count}}ч назад",
        "git.relativeTime.daysAgo" => "{{count}}д назад",
        "git.commit.placeholder" => "Опишите это изменение…",
        "git.commit.submitButton" => "Сохранить веху",
        "git.commit.saveRequiredTitle" => "Сначала сохраните документ",
        "git.commit.saveRequiredBody" => "У вас есть несохранённые изменения. Сохраните документ, чтобы продолжить: {{label}}",
        "git.commit.saveRequiredSave" => "Сохранить",
        "git.commit.saveRequiredCancel" => "Отмена",
        "git.header.autosaveError" => "Ошибка автосохранения",
        "git.header.autosaveErrorTitle" => "Последнее автосохранение не удалось",
        "git.header.authorMissingWarning" => "Установите автора коммита для атрибуции",
        "git.header.overflowSwitchTracked" => "Сменить отслеживаемый файл…",
        "git.header.overflowClearAuthor" => "Очистить автора коммита",
        "git.header.overflowCloseRepo" => "Закрыть репозиторий",
        "git.header.overflowRemoteSettings" => "Настройки remote…",
        "git.header.overflowSshKeys" => "SSH-ключи…",
        "git.header.overflowMoreActions" => "Ещё действия",
        "git.history.empty" => "Нет истории",
        "git.history.autosaveGroup_one" => "1 автосохранение",
        "git.history.autosaveGroup_other" => "{{count}} автосохранений",
        "git.history.autosaveLabel" => "auto {{time}}",
        "git.history.milestoneDetailTitle" => "Детали вехи",
        "git.history.restoreButton" => "Восстановить",
        "git.history.copyHashButton" => "Копировать хеш",
        "git.history.copiedToast" => "Скопировано",
        "git.history.diff.loading" => "Загрузка diff…",
        "git.history.diff.initialCommit" => "Первый коммит — нет родителя для сравнения",
        "git.history.diff.noChanges" => "Изменений не обнаружено",
        "git.history.diff.error" => "Diff недоступен: {{message}}",
        "git.history.diff.framesChanged_one" => "1 фрейм изменён",
        "git.history.diff.framesChanged_other" => "{{count}} фреймов изменено",
        "git.history.diff.nodesAdded_one" => "1 узел добавлен",
        "git.history.diff.nodesAdded_other" => "{{count}} узлов добавлено",
        "git.history.diff.nodesRemoved_one" => "1 узел удалён",
        "git.history.diff.nodesRemoved_other" => "{{count}} узлов удалено",
        "git.history.diff.nodesModified_one" => "1 узел изменён",
        "git.history.diff.nodesModified_other" => "{{count}} узлов изменено",
        "git.history.promoteButton" => "Повысить до вехи",
        "git.history.promoteSuccessToast" => "Повышено до вехи",
        "git.history.loadMore" => "Загрузить ещё",
        "git.autosave.messagePrefix" => "auto",
        "git.autosave.messageDiffSuffix" => "",
        "git.branch.listHeading" => "Ветки",
        "git.branch.createAction" => "Новая ветка",
        "git.branch.createPlaceholder" => "feature/login-redesign",
        "git.branch.createSubmit" => "Создать ветку",
        "git.branch.createEmpty" => "Введите имя ветки",
        "git.branch.createExists" => "Ветка {{name}} уже существует",
        "git.branch.mergeAction" => "Слить ветку…",
        "git.branch.mergeHeading" => "Слияние в {{name}}",
        "git.branch.deletePrompt" => "Удалить ветку {{name}}?",
        "git.branch.deleteLabel" => "Удалить ветку {{name}}",
        "git.branch.deleteWarning" => "В ветке {{name}} есть неслитые коммиты",
        "git.branch.deleteConfirm" => "Удалить",
        "git.branch.deleteForce" => "Принудительно удалить",
        "git.branch.cancel" => "Отмена",
        "git.branch.conflictDisabled" => "Завершите слияние перед переключением ветки",
        "git.branch.noCommits" => "Пока нет коммитов",
        "git.wizard.clone.heading" => "Клонировать удалённый репозиторий",
        "git.wizard.clone.subheading" => "Выберите URL удалённого репозитория и папку назначения.",
        "git.wizard.clone.urlLabel" => "URL удалённого репозитория",
        "git.wizard.clone.urlPlaceholder" => "https://github.com/owner/repo.git",
        "git.wizard.clone.destLabel" => "Папка назначения",
        "git.wizard.clone.destPlaceholder" => "/путь/для/клона",
        "git.wizard.clone.destPickButton" => "Обзор…",
        "git.wizard.clone.usernameLabel" => "Имя пользователя (необязательно)",
        "git.wizard.clone.tokenLabel" => "Токен доступа (необязательно)",
        "git.wizard.clone.tokenPlaceholder" => "ghp_… для публичных можно оставить пустым",
        "git.wizard.clone.anonymousHint" => "Оставьте пустым для анонимного клонирования (только публичные репозитории).",
        "git.wizard.clone.sshHint" => "Этот URL требует аутентификации по SSH-ключу.",
        "git.wizard.clone.hostDetected" => "Обнаружено: {{host}} · {{mode}}",
        "git.wizard.clone.authMode.token-or-anon" => "токен или анонимно",
        "git.wizard.clone.authMode.ssh" => "SSH-ключ",
        "git.wizard.clone.cancel" => "Отмена",
        "git.wizard.clone.submit" => "Клонировать",
        "git.wizard.clone.validationUrl" => "Требуется URL удалённого репозитория",
        "git.wizard.clone.validationDest" => "Требуется папка назначения",
        "git.wizard.clone.validationTokenUsername" => "Имя пользователя обязательно при указании токена",
        "git.wizard.clone.error.clone-network" => "Сетевая ошибка при клонировании. Проверьте подключение и повторите попытку.",
        "git.wizard.clone.error.network" => "Сетевая ошибка. Проверьте подключение и повторите попытку.",
        "git.wizard.clone.error.timeout" => "Истекло время ожидания клонирования. Повторите попытку или используйте репозиторий поменьше.",
        "git.wizard.clone.error.auth-required" => "Этот репозиторий требует аутентификации.",
        "git.wizard.clone.error.auth-failed" => "Аутентификация не удалась. Проверьте имя пользователя и токен.",
        "git.wizard.clone.error.auth-token-invalid" => "Токен доступа отклонён. Создайте новый и повторите попытку.",
        "git.wizard.clone.error.clone-failed" => "Клонирование не удалось. Убедитесь, что URL указывает на существующий репозиторий.",
        "git.wizard.clone.error.clone-target-exists" => "Папка назначения уже существует или не пуста.",
        "git.pull.label" => "Pull",
        "git.pull.tooltip" => "Pull из origin",
        "git.pull.noRemote" => "Удалённый репозиторий не настроен — добавьте его в настройках Git",
        "git.pull.retry" => "Повторить pull",
        "git.push.label" => "Push",
        "git.push.tooltip_one" => "Отправить 1 коммит в origin",
        "git.push.tooltip_other" => "Отправить {{count}} коммитов в origin",
        "git.push.noRemote" => "Удалённый репозиторий не настроен — добавьте его в настройках Git",
        "git.push.upToDate" => "Нечего отправлять — вы в курсе",
        "git.push.retry" => "Повторить push",
        "git.push.rejectedBody" => "В удалённом репозитории есть коммиты, которых у вас ещё нет. Сначала выполните pull, затем повторите push.",
        "git.push.rejectedDismiss" => "Закрыть",
        "git.push.rejectedPull" => "Выполнить pull",
        "git.remote.dismissError" => "Закрыть",
        "git.remote.settingsLabel" => "Настройки удалённого",
        "git.remote.settingsHeading" => "Удалённый",
        "git.remote.back" => "Назад",
        "git.remote.cancel" => "Отмена",
        "git.remote.emptyNoOrigin" => "Удалённый репозиторий ещё не настроен. Добавьте:",
        "git.remote.urlLabel" => "URL origin",
        "git.remote.urlPlaceholder" => "https://github.com/owner/repo.git",
        "git.remote.saveButton" => "Сохранить",
        "git.remote.clearButton" => "Очистить",
        "git.remote.clearConfirmHeading" => "Очистить origin?",
        "git.remote.clearConfirmBody" => "Это удалит origin из этого репозитория.",
        "git.remote.clearConfirmAction" => "Подтвердить",
        "git.remote.aheadBehind" => "Впереди {{ahead}} · Позади {{behind}}",
        "git.remote.fetchButton" => "Fetch",
        "git.remote.sshIsoUnsupported" => "Встроенный движок не поддерживает SSH. Установите системный git или используйте HTTPS URL.",
        "git.remote.storedAuthLabel" => "Сохранённые учётные данные",
        "git.remote.storedAuth.token" => "Токен",
        "git.remote.storedAuth.ssh" => "SSH-ключ",
        "git.remote.storedAuth.none" => "Нет",
        "git.remote.storedAuth.loading" => "Загрузка…",
        "git.remote.storedAuth.noHost" => "Хост не обнаружен",
        "git.remote.clearAuthButton" => "Очистить сохранённые учётные данные",
        "git.ssh.label" => "SSH-ключи",
        "git.ssh.heading" => "SSH-ключи",
        "git.ssh.back" => "Назад",
        "git.ssh.cancel" => "Отмена",
        "git.ssh.isoUnsupported" => "Текущий удалённый использует SSH, но встроенный движок не может выполнить SSH-транспорт. Установите системный git или смените URL на HTTPS.",
        "git.ssh.emptyList" => "SSH-ключей пока нет.",
        "git.ssh.generateAction" => "Создать новый",
        "git.ssh.importAction" => "Импортировать существующий",
        "git.ssh.copyPublicKey" => "Скопировать публичный ключ",
        "git.ssh.copiedHint" => "Скопировано",
        "git.ssh.copyUnsupported" => "Буфер обмена недоступен — скопируйте этот ключ вручную.",
        "git.ssh.deleteKey" => "Удалить {{name}}",
        "git.ssh.deletePrompt" => "Удалить SSH-ключ {{name}}?",
        "git.ssh.deleteConfirm" => "Удалить",
        "git.ssh.currentHostBadge" => "текущий хост",
        "git.ssh.hostLabel" => "Хост",
        "git.ssh.hostPlaceholder" => "github.com",
        "git.ssh.commentLabel" => "Комментарий",
        "git.ssh.commentPlaceholder" => "laptop@home",
        "git.ssh.generateSubmit" => "Создать",
        "git.ssh.importPathLabel" => "Путь к приватному ключу",
        "git.ssh.importPathPlaceholder" => "/path/to/id_ed25519",
        "git.ssh.importBrowse" => "Обзор…",
        "git.ssh.importSubmit" => "Импортировать",
        "git.ssh.validationHost" => "Хост обязателен",
        "git.ssh.validationComment" => "Комментарий обязателен",
        "git.ssh.validationImportPath" => "Выберите файл приватного ключа для импорта",
        "git.ssh.providerLink" => "Открыть настройки SSH-ключей {{host}}",
        "git.ssh.genericGuidance" => "Скопируйте публичный ключ и добавьте его в настройки SSH-ключей вашего Git-провайдера.",
        "git.auth.formLabel" => "Учётные данные Git",
        "git.auth.heading" => "Аутентификация на {{host}}",
        "git.auth.headingUnknown" => "Аутентификация с этим удалённым",
        "git.auth.modeToggleLabel" => "Тип учётных данных",
        "git.auth.modeToken" => "Токен",
        "git.auth.modeSsh" => "SSH",
        "git.auth.usernameLabel" => "Имя пользователя (необязательно)",
        "git.auth.tokenLabel" => "Токен доступа",
        "git.auth.tokenPlaceholder" => "ghp_… или PAT",
        "git.auth.sshKeyLabel" => "SSH-ключ",
        "git.auth.sshNoKeys" => "Нет доступных SSH-ключей. Сначала импортируйте или сгенерируйте один в настройках Git.",
        "git.auth.rememberLabel" => "Запомнить эти учётные данные для этого хоста",
        "git.auth.rememberHint" => "Запомнить эти учётные данные для этого хоста",
        "git.auth.cancel" => "Отмена",
        "git.auth.validationToken" => "Токен доступа обязателен",
        "git.auth.validationSshKey" => "Выберите SSH-ключ",
        "git.auth.error.auth-required" => "Этот удалённый репозиторий требует аутентификации.",
        "git.auth.error.auth-failed" => "Ошибка аутентификации. Проверьте свои учётные данные и повторите попытку.",
        "git.auth.error.auth-token-invalid" => "Токен доступа был отклонён. Сгенерируйте новый и повторите попытку.",
        "git.error.pushTitle" => "Не удалось выполнить push",
        "git.error.pushBody" => "git push не удалось завершить.",
        "git.error.pullTitle" => "Не удалось выполнить pull",
        "git.error.pullBody" => "git pull не удалось завершить.",
        "git.error.commitTitle" => "Не удалось выполнить commit",
        "git.error.commitBody" => "git commit не удалось завершить.",
        "git.merge.conflictTitle" => "В слиянии есть конфликты",
        "git.merge.conflictBody" => "Слияние {{branch}} конфликтует в {{count}} файле(ах); слияние не применено, рабочее дерево не изменилось. Сначала разрешите конфликты:",
        "git.ssh.readyTitle" => "SSH-ключ готов",
        "git.ssh.readyBody" => "SSH-ключ для {{host}} создан и привязан; pull и push теперь используют его. Добавьте этот открытый ключ в настройки SSH-ключей хоста:",
        "git.panel.title" => "Git",
        "git.panel.loading" => "Загрузка репозитория…",
        "git.panel.notARepo" => "Не репозиторий git.",
        "git.panel.detachedHead" => "отсоединённый HEAD",
        "git.panel.branch" => "⎇ {{name}}",
        "git.panel.abortMerge" => "Прервать слияние",
        "git.panel.refresh" => "Обновить",
        "git.panel.complete" => "Завершить",
        "git.panel.commit" => "Коммит",
        "git.panel.pull" => "Получить",
        "git.panel.push" => "Отправить",
        "git.panel.mergeInProgress" => "Идёт слияние — устраните конфликты",
        "git.panel.conflicts" => "Конфликты",
        "git.panel.noConflicts" => "Конфликтов нет.",
        "git.panel.changes" => "Изменения — подготовлено {{staged}}/{{total}}",
        "git.panel.recentCommits" => "Недавние коммиты",
        "git.panel.noCommits" => "Коммитов пока нет.",
        "git.panel.branches" => "Ветки",
        "git.panel.commitPlaceholder" => "Сообщение коммита…",
        "git.panel.footer" => "Нажмите строку состояния или строку, чтобы увидеть различия",
        "git.panel.pulling" => "Получение…",
        "git.panel.pushing" => "Отправка…",
        "git.panel.changedConflicted" => "{{changed}} изменено · {{conflicted}} с конфликтом",
        "git.panel.changed" => "{{count}} изменено",
        "git.panel.clean" => "Рабочее дерево чистое",
        "git.panel.diffTitle" => "Различия · {{title}}",
        "git.panel.diffNoChanges" => "Без изменений.",
        "git.panel.diffComputing" => "Вычисление различий…",
        "git.panel.diffLoading" => "загрузка…",
        "git.panel.diffWorkingTree" => "Рабочее дерево",
        "git.panel.diffCommit" => "коммит {{rev}}",
        "git.panel.stage" => "Подготовить",
        "git.panel.diffFooter" => "Строки {{start}}–{{end}} из {{total}}{{col}}",
        "git.panel.diffCol" => " · стлб {{n}}",
        "git.panel.remotes" => "Удалённые",
        "git.panel.remotesMore" => "{{name}} +ещё {{count}}",
        "git.panel.noRemote" => "Нет удалённого — добавьте origin ниже.",
        "git.panel.remotePlaceholder" => "https://github.com/you/repo.git",
        "git.panel.httpsPlaceholder" => "имя:токен",
        "git.panel.set" => "Задать",
        "git.panel.login" => "Войти",
        "git.panel.resolveTitle" => "Разрешить слияние — {{branch}}",
        "git.panel.resolveSubtitle" => "{{count}} конфликт(ов) узлов — выберите сторону для каждого",
        "git.panel.ours" => "Наша",
        "git.panel.theirs" => "Их",
        "git.panel.applyMerge" => "Применить слияние",
        "git.panel.resolveFooter" => "Применение повторит слияние с вашим выбором",
        "git.panel.resolveFooterMore" => "+ещё {{count}} оставлено как наши · Отмена прерывает слияние",
        "git.conflict.bothModified" => "изменено с обеих сторон",
        "git.conflict.structuralChange" => "изменён порядок дочерних",
        "git.conflict.deleteModify" => "удаление / изменение",
        "git.conflict.bothAdded" => "добавлено с обеих сторон",
        "git.conflict.addedOnRemote" => "добавлено на удалённом",
        "git.merge.autoMergeable" => "{{path}} — структурно сливается автоматически",
        "git.merge.andMore" => "    … и ещё {{count}}",
        "git.panel.diffError" => "(не удалось получить различия: {{message}})",
        "git.reload.confirmTitle" => "Несохранённые изменения",
        "git.reload.confirmBody" => "Это действие Git перезагрузит документ с диска и отменит ваши несохранённые правки.\n\nДа = Сначала сохранить · Нет = Отменить · Отмена = остаться.",
        "git.gitError.notFound" => "Git не установлен — установите Git для использования контроля версий.",
        "git.gitError.notARepo" => "Не репозиторий git: {{detail}}",
        "git.gitError.commandFailed" => "Команда git завершилась с ошибкой:\n{{detail}}",
        "git.gitError.mergeInProgress" => "Слияние уже выполняется — сначала завершите или отмените его.",
        "git.gitError.workingTreeDirty" => "В рабочем дереве есть незакоммиченные изменения — закоммитьте или спрячьте их перед слиянием.",
        "git.gitError.io" => "Ошибка процесса git: {{detail}}",
        _ => return None,
    })
}
