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