{
    "components": {
        "brand": "Бессонный Кодер",
        "appcard": {
            "go": "Открыть",
            "label": "Сервис"
        },
        "nav": {
            "login": "Войти",
            "logout": "Выйти",
            "main": "Главная",
            "menu": "Открыть меню",
            "navigation": "Основная навигация",
            "projects": "Проекты",
            "socials": "Блоги"
        },
        "footer": {
            "tagline": "Личный сайт, блог и лаборатория Ильи"
        }
    },
    "general": {
        "back": "Назад",
        "cancel": "Отмена",
        "close": "Закрыть",
        "create": "Создать",
        "send": "Отправить"
    },
    "page": {
        "blog": {
            "article": "Статья",
            "author": "Автор",
            "authorDescription": "Пишу о разработке, системах и играх.",
            "back": "На главную",
            "copied": "Ссылка скопирована",
            "copyLink": "Скопировать ссылку",
            "errorDescription": "Не удалось загрузить статью.",
            "errorTitle": "Статья недоступна",
            "eyebrow": "Блог · Бессонный Кодер",
            "fallbackTitle": "Блог — Бессонный Кодер",
            "loading": "Загружаю статью…",
            "minutes": "мин чтения",
            "moreEyebrow": "Продолжить чтение",
            "moreTitle": "Похожие материалы",
            "retry": "Попробовать ещё раз",
            "telegram": "Telegram-канал",
            "toMain": "На главную"
        },
        "blogCategory": {
            "articles": "статей в категории | статья в категории | статьи в категории | статей в категории",
            "articlesTitle": "Материалы категории",
            "empty": "В этой категории пока нет опубликованных статей.",
            "errorDescription": "Не удалось загрузить категорию.",
            "errorTitle": "Категория недоступна",
            "eyebrow": "Серия статей",
            "fallbackDescription": "Подборка тематических статей.",
            "fallbackTitle": "Категория блога — Бессонный Кодер",
            "listEyebrow": "Все публикации",
            "loading": "Загружаю категорию…",
            "metaSuffix": "Бессонный Кодер"
        },
        "dev": {
            "appId": "ID приложения",
            "appName": "Название приложения",
            "appSecret": "Приватный токен приложения",
            "createApp": "Создать приложение",
            "createdApp": "Приложение создано",
            "delete": "Удалить",
            "deleteApp": "Удалить приложение",
            "issueToken": "Выпустить токен",
            "issuedTokens": "Выпущенные токены:",
            "issuingToken": "Выпуск токена",
            "permissions": "Права",
            "requestsPerDay": "Запросов за день: {ldr}",
            "requestsPerMouth": "Запросов за месяц: {lmr}",
            "saveToken": "Токен отображается в первый и последний раз, сохраните его в надёжном месте!",
            "tokenIssued": "Токен выпущен",
            "tokenName": "Название токена"
        },
        "hub": {
            "available": "Доступно сервисов: {count}",
            "categoryCount": "{count} сервисов",
            "description": "Сервисы, боты и инструменты Бессонного Кодера.",
            "emptyDescription": "API ответил успешно, но пока не вернул ни одного доступного сервиса.",
            "emptyTitle": "Здесь пока пусто",
            "errorDescription": "Не удалось получить список сервисов. Возможно, API временно недоступен — попробуйте ещё раз.",
            "errorTitle": "Hub не загрузился",
            "eyebrow": "Сервисы и эксперименты",
            "heading": "Hub",
            "intro": "Боты, инструменты, документация и небольшие сервисы, которыми можно пользоваться прямо сейчас.",
            "loading": "Получаю список сервисов…",
            "retry": "Попробовать снова",
            "title": "Бессонный Кодер — Hub",
            "unavailable": "API временно недоступен",
            "untitledCategory": "Прочее"
        },
        "index": {
            "latestDescription": "Большие материалы о разработке, инфраструктуре, устройстве систем и игровой культуре.",
            "latestEyebrow": "Последние публикации",
            "latestTitle": "Из блога",
            "readArticle": "Читать статью",
            "about": "Привет! Меня зовут Илья, я Java и Node.js программист с более чем 6-летним опытом.",
            "aboutEyebrow": "Обо мне",
            "aboutTitle": "Превращаю идеи в работающие продукты",
            "allProjects": "Все проекты",
            "automationDescription": "Модерация сообществ, транскрибация голосовых сообщений, поиск стикерпаков, платежи и автоматизация рутинных процессов.",
            "automationTitle": "Telegram-боты и автоматизация",
            "backendDescription": "Разрабатываю backend на Java и Node.js: REST API, WebSocket, PostgreSQL и платёжная логика.",
            "backendTitle": "Backend и системные интеграции",
            "career01Period": "Май 2025 — сейчас",
            "careerAlta": "Поддержка и развитие существующих Java-систем.",
            "careerAltaPeriod": "Апрель 2024 — апрель 2025",
            "careerAltaTitle": "Альта-Софт",
            "careerEyebrow": "Опыт",
            "careerPractice": "Telegram-боты, API, сервисы и автоматизация для частных заказчиков.",
            "careerPracticePeriod": "Март 2018 — сейчас",
            "careerPracticeTitle": "Частная практика",
            "careerStorytelling": "Java / Node.js, системные интеграции и внутренние инструменты.",
            "careerStorytellingPeriod": "Февраль 2022 — май 2025",
            "careerTitle": "Мой опыт",
            "currentRole": "Сейчас",
            "expertiseEyebrow": "Специализация",
            "expertiseIntro": "От прикладной логики до эксплуатации: собираю сервисы целиком и связываю их с внешними системами.",
            "expertiseTitle": "Что я делаю",
            "infrastructureDescription": "Docker, Nginx, Linux, CI/CD, Grafana и Prometheus — для воспроизводимого развёртывания и наблюдаемости.",
            "infrastructureTitle": "Инфраструктура",
            "stackEyebrow": "Инструменты",
            "stackTitle": "Основной стек",
            "backend": "бэкенд",
            "contactDescription": "Есть идея, задача или просто хочется обсудить технологии? Напишите — отвечу и подумаем вместе.",
            "contactEyebrow": "На связи",
            "contactMe": "Написать мне",
            "contactTitle": "Давайте сделаем что-нибудь полезное",
            "channelDescription": "Это мой личный канал. Там я рассказываю, как устроены системы, с которыми работаю, разбираюсь в технологиях и размышляю об играх — их устройстве, этике и влиянии на людей.",
            "channelEyebrow": "Мой Telegram-канал",
            "channelTitle": "Ещё я пишу в Telegram",
            "channelTopicDevelopment": "практика разработки",
            "channelTopicGames": "устройство игр",
            "channelTopicSystems": "архитектура систем",
            "channelTopicsLabel": "Темы канала",
            "contact": "Вы можете связаться со мной через: ",
            "contact2": "Или через бота: ",
            "dashboards": "Дашборды статистики",
            "eyebrow": "Java & Node.js developer",
            "experience": "Я специализируюсь на создании Telegram ботов и бэк-энд решений для самых разных проектов. За годы работы успел посотрудничать с Московским центром развития профессионального образования, Колледжем связи №54, StoryTelling team и десятками индивидуальных заказчиков. Я всегда открыт для новых идей и готов помочь воплотить ваш проект в жизнь!",
            "factsLabel": "Кратко об опыте и специализации",
            "guard": "Имперский стражник",
            "guardDescription": "Бот для модерации и защиты Telegram-сообществ с прозрачной статистикой работы.",
            "heroAccent": "Создаю полезные сервисы.",
            "heroLead": "Проектирую бэкенды, Telegram-ботов и небольшие эксперименты, которые решают реальные задачи.",
            "heroTitle": "Пишу код.",
            "hubDescription": "Коллекция сервисов, инструментов и экспериментов, собранных в одном месте.",
            "hubTitle": "Лаборатория проектов",
            "metaDescription": "Личный сайт Ильи: Java и Node.js разработка, Telegram-боты, проекты и технические эксперименты.",
            "labLabel": "Бессонный Кодер · Лаборатория",
            "metaTitle": "Бессонный Кодер — Java & Node.js разработчик",
            "openDashboard": "Открыть статистику",
            "openHub": "Перейти в Hub",
            "projectsEyebrow": "Избранное",
            "projectsTitle": "Проекты в работе",
            "postAiDescription": "От ELIZA 1966 года до людей, которые воспринимают современные модели как друзей.",
            "postAiTitle": "Почему мы привязываемся к ИИ",
            "postGamesDescription": "Как игроки сами меняют правила и превращают PvP-среду в пространство сотрудничества.",
            "postGamesTitle": "Игрок — автор видеоигровой среды",
            "postQueuesDescription": "Как одна Map и глобальный listener заменили сотни обработчиков в большой системе.",
            "postQueuesTitle": "Очереди сообщений без утечки listener’ов",
            "readChannel": "Заглянуть в канал",
            "services": "сервисы",
            "viewProjects": "Смотреть проекты",
            "voice": "Подпольный транскриптор",
            "voiceDescription": "Сервис, который превращает голосовые сообщения в текст и помогает экономить время.",
            "years": "лет опыта"
        },
        "login": {
            "back": "Назад",
            "confirm": "Подтвердить",
            "createAccount": "Создать аккаунт",
            "description": "Вход в личный кабинет на redguy.ru.",
            "emailNotConfirmed": "Ваш email не подтвержден",
            "eyebrow": "Личный кабинет",
            "error": "Логин или пароль не верны",
            "forgotPassword": "Забыли пароль?",
            "formDescription": "Используйте логин и пароль, указанные при регистрации.",
            "formTitle": "Вход в аккаунт",
            "heroDescription": "Войдите, чтобы управлять аккаунтом, приложениями и настройками сервисов.",
            "heroTitle": "С возвращением",
            "hidePassword": "Скрыть",
            "networkError": "Не удалось связаться с сервером. Попробуйте ещё раз.",
            "password": "Пароль",
            "passwordPlaceholder": "Ваш пароль",
            "requiredFields": "Введите логин и пароль.",
            "showPassword": "Показать",
            "tfa": "Подтверждение входа",
            "tfaCode": "Одноразовый код",
            "tfaDescription": "Введите одноразовый код из приложения-аутентификатора.",
            "tfaError": "Неверный код подтверждения.",
            "tfaPlaceholder": "000000",
            "tfaRequired": "Введите код подтверждения.",
            "title": "Вход — Бессонный Кодер",
            "username": "Логин",
            "usernamePlaceholder": "Ваш логин"
        },
        "logs": {
            "createService": "Создать сервис",
            "level": "Уровень",
            "loadMore": "Загрузить ещё",
            "message": "Сообщение",
            "payload": "Дополнительные данные",
            "service": "Источник",
            "serviceName": "Название сервиса",
            "time": "Время"
        },
        "oauth": {
            "vk": {
                "description": "Завершение входа через VK ID.",
                "errorTitle": "Не удалось войти",
                "exchangeError": "Не удалось завершить вход через VK ID. Попробуйте ещё раз.",
                "loadingDescription": "Проверяем ответ VK ID и завершаем авторизацию.",
                "loadingTitle": "Завершаем вход",
                "missingCode": "VK ID не передал код авторизации. Вернитесь ко входу и попробуйте снова.",
                "title": "Вход через VK ID — Бессонный Кодер",
                "toLogin": "Вернуться ко входу",
                "toMain": "На главную"
            },
            "authorize": {
                "authorizeError": "Не удалось выдать доступ приложению.",
                "basicDescription": "Приложение узнает, что вы успешно вошли.",
                "basicTitle": "Подтверждение входа",
                "description": "Предоставление приложению доступа к аккаунту.",
                "emailTitle": "Адрес электронной почты",
                "errorTitle": "Некорректный запрос",
                "eyebrow": "Запрос доступа",
                "invalidRequest": "В OAuth-запросе отсутствуют обязательные параметры.",
                "loadError": "Не удалось получить информацию о приложении.",
                "loadingDescription": "Проверяем приложение и запрошенные разрешения.",
                "loadingTitle": "Проверяем запрос",
                "profileTitle": "Профиль аккаунта",
                "securityNote": "Пароль не передаётся приложению. Вы сможете отозвать доступ позже.",
                "title": "Разрешение доступа — Бессонный Кодер",
                "toMain": "На главную",
                "access": {
                    "email": "Получить доступ к вашему email адресу",
                    "nickname": "Получить доступ к вашему id и никнейму"
                },
                "allow": "Разрешить",
                "app": "Приложение {app}",
                "cancel": "Отмена",
                "requestsAccess": "хочет получить доступ к вашему аккаунту",
                "willAllow": "Это позволит приложению:"
            }
        },
        "register": {
            "description": "Создание аккаунта на redguy.ru.",
            "email": "Email",
            "emailError": "Введена не корректная почта",
            "emailExists": "Почта уже занята",
            "error": "Что-то пошло не так",
            "eyebrow": "Новый аккаунт",
            "formDescription": "Заполните четыре поля — подтверждение придёт на указанную почту.",
            "formTitle": "Регистрация",
            "haveAccount": "Уже есть аккаунт?",
            "heroDescription": "Один аккаунт для сервисов, настроек и приложений экосистемы.",
            "heroTitle": "Создайте свой профиль",
            "login": "Логин",
            "loginError": "Логин должен быть от 3 символов",
            "loginExists": "Логин уже занят",
            "loginPlaceholder": "Минимум 3 символа",
            "networkError": "Не удалось связаться с сервером. Попробуйте ещё раз.",
            "ok": "Вам на почту было отправлено письмо с подтверждением. Пожалуйста, перейдите по ссылке в письме.",
            "password": "Пароль",
            "passwordPlaceholder": "От 8 символов",
            "passwordAgain": "Повтор пароля",
            "passwordAgainError": "Пароли не совпадают",
            "passwordAgainPlaceholder": "Введите пароль ещё раз",
            "passwordError": "Пароль должен быть от 8 символов, включая латинские буквы верхнего и нижнего регистра, а так же цифры",
            "register": "Зарегистрироваться",
            "successTitle": "Проверьте почту",
            "title": "Регистрация — Бессонный Кодер",
            "toLogin": "Перейти ко входу"
        },
        "reset": {
            "description": "Создание нового пароля для аккаунта на redguy.ru.",
            "error": "Не удалось изменить пароль. Попробуйте ещё раз.",
            "eyebrow": "Восстановление доступа",
            "formTitle": "Новый пароль",
            "heroDescription": "Придумайте новый пароль для защиты своего аккаунта.",
            "heroTitle": "Почти готово",
            "invalidTitle": "Ссылка недействительна",
            "invalidToken": "Ссылка для восстановления недействительна или уже была использована.",
            "missingToken": "В ссылке отсутствует код восстановления. Запросите новое письмо.",
            "networkError": "Не удалось связаться с сервером. Проверьте соединение и попробуйте ещё раз.",
            "password": "Новый пароль",
            "passwordAgain": "Повторите пароль",
            "passwordAgainPlaceholder": "Введите пароль ещё раз",
            "passwordHint": "Минимум 8 символов: строчная и заглавная латинские буквы и хотя бы одна цифра.",
            "passwordPlaceholder": "От 8 символов",
            "requestAgain": "Запросить новую ссылку",
            "submit": "Сохранить пароль",
            "successDescription": "Пароль изменён. Теперь вы можете войти с новыми данными.",
            "successTitle": "Пароль обновлён",
            "title": "Новый пароль — Бессонный Кодер",
            "toLogin": "Перейти ко входу",
            "enter": "Введите новый пароль",
            "not-match": "Пароли не совпадают",
            "too-easy": "Пароль слишком простой"
        },
        "restore": {
            "captchaError": "Не удалось загрузить проверку CAPTCHA. Обновите страницу и попробуйте снова.",
            "captchaLoading": "Загружаем проверку…",
            "captchaRequired": "Подтвердите, что вы не робот.",
            "description": "Восстановление доступа к аккаунту на redguy.ru.",
            "email": "Email",
            "emailError": "Введите корректный адрес электронной почты.",
            "emailPlaceholder": "name{'@'}example.com",
            "error": "Не удалось отправить письмо. Попробуйте ещё раз.",
            "eyebrow": "Восстановление доступа",
            "formTitle": "Забыли пароль?",
            "heroDescription": "Отправим безопасную ссылку для создания нового пароля.",
            "heroTitle": "Вернём доступ",
            "networkError": "Не удалось связаться с сервером. Проверьте соединение и попробуйте ещё раз.",
            "successTitle": "Проверьте почту",
            "title": "Восстановление пароля — Бессонный Кодер",
            "toLogin": "Вернуться ко входу",
            "enter": "Введите почту которую вы указали при регистрации",
            "sent": "Если данная почта существует в нашей системе, мы отправили письмо с ссылкой восстановления пароля."
        },
        "settings": {
            "close": "Закрыть",
            "disabled": "Выключена",
            "enabled": "Включена",
            "enterCode": "Введите код из приложения-аутентификатора, чтобы отключить двухфакторную защиту.",
            "eyebrow": "Аккаунт",
            "heading": "Настройки",
            "intro": "Управление безопасностью аккаунта и активными сессиями.",
            "loadError": "Не удалось загрузить настройки",
            "loading": "Загружаю настройки…",
            "manualCode": "Или введите секрет вручную",
            "passwordDesc": "Обновите пароль, если считаете, что старый мог быть скомпрометирован.",
            "retry": "Повторить",
            "sessionsDesc": "Завершить все активные сеансы, кроме текущего.",
            "sessionsReset": "Остальные сессии завершены.",
            "totpDescDisabled": "Добавьте второй фактор защиты с помощью приложения-аутентификатора.",
            "totpDescEnabled": "При входе потребуется одноразовый код из приложения.",
            "cancel": "Отмена",
            "changePassword": "Смена пароля",
            "changePassword2": "Сменить пароль",
            "code": "Код из приложения",
            "currentPassword": "Текущий пароль",
            "description": "Настройки аккаунта",
            "error": "Ошибка",
            "incorrectCode": "Код не корректен",
            "incorrectPassword": "Неверный пароль",
            "newPassword": "Новый пароль",
            "newPasswordAgain": "Повтор пароля",
            "notStrongEnough": "Новый пароль недостаточно безопасен",
            "passwordsNotEquals": "Пароли не совпадают",
            "resetSessions": "Сбросить сессии",
            "resetTOTP": "Выключить двухфакторную авторизацию",
            "safety": "Безопасность",
            "setTOTP": "Включить двухфакторную авторизацию",
            "setTOTP2": "Подтвердить",
            "title": "Настройки"
        },
        "socials": {
            "boosty": {
                "description": "Мой Boosty, где я публикую интересные дополнительные материалы и вы можете поддержать меня!",
                "title": "Boosty"
            },
            "description": "Мои блоги и каналы",
            "discord": {
                "description": "Мой Discord сервер, где я частенько общаюсь",
                "title": "SleepLessCode discord"
            },
            "my": "Мои блоги и каналы",
            "sleeplesschat": {
                "description": "Мой чат в Telegram, где я общаюсь с подписчиками",
                "title": "Спящие джуны"
            },
            "sleeplesscode": {
                "description": "Мой личный канал где я расказываю о своих проектах и не только",
                "title": "Бессонный кодер"
            },
            "sleeplessfoto": {
                "description": "Мой личный канал в Telegram, где я публикую свои фотографии",
                "title": "Бессонные фоточки"
            },
            "sleeplessstickers": {
                "description": "Мой канал в Telegram, где я публикую обновления своих стикеров",
                "title": "Бессонные стикеры"
            },
            "title": "Бессонный Кодер — блоги и каналы",
            "youtube": {
                "description": "Мой канал на YouTube, где я публикую самые разнообразные видео",
                "title": "Бессонный Кодер"
            }
        },
        "verify": {
            "description": "Подтверждение адреса электронной почты на redguy.ru.",
            "errorDescription": "Не удалось подтвердить аккаунт.",
            "errorTitle": "Подтверждение не выполнено",
            "eyebrow": "Подтверждение аккаунта",
            "invalidToken": "Ссылка недействительна или уже была использована.",
            "missingToken": "В ссылке отсутствует код подтверждения. Откройте ссылку из письма целиком.",
            "networkError": "Не удалось связаться с сервером. Проверьте соединение и попробуйте ещё раз.",
            "retry": "Попробовать ещё раз",
            "successDescription": "Адрес электронной почты подтверждён. Теперь можно войти в аккаунт.",
            "successTitle": "Аккаунт подтверждён",
            "title": "Подтверждение аккаунта — Бессонный Кодер",
            "toLogin": "Перейти ко входу",
            "toMain": "На главную",
            "waitDescription": "Проверяем ссылку из письма. Это займёт всего несколько секунд.",
            "waitTitle": "Подтверждаем аккаунт",
            "error": "Что-то пошло не так",
            "main": "главную",
            "ok": "Готово! Вы можете вернуться на",
            "wait": "Пожалуйста, подождите"
        }
    },
    "permissions": {
        "hashes": "Декодирование хешей",
        "logs": "Логгинг",
        "minecraft": "Minecraft"
    }
}
