"components.brand" = "Sleepless Coder"; "components.appcard.go" = "Open"; "components.appcard.label" = "Service"; "components.nav.login" = "Login"; "components.nav.logout" = "Logout"; "components.nav.main" = "Home"; "components.nav.menu" = "Open menu"; "components.nav.navigation" = "Main navigation"; "components.nav.projects" = "Projects"; "components.nav.socials" = "Blog"; "components.footer.tagline" = "Ilya's personal site, blog and lab"; "general.back" = "Back"; "general.cancel" = "Cancel"; "general.close" = "Close"; "general.create" = "Create"; "general.send" = "Send"; "page.blog.article" = "Article"; "page.blog.author" = "Author"; "page.blog.authorDescription" = "Writing about software, systems, and games."; "page.blog.back" = "Back to home"; "page.blog.copied" = "Link copied"; "page.blog.copyLink" = "Copy link"; "page.blog.errorDescription" = "The article could not be loaded."; "page.blog.errorTitle" = "Article unavailable"; "page.blog.eyebrow" = "Blog · Sleepless Coder"; "page.blog.fallbackTitle" = "Blog — Sleepless Coder"; "page.blog.loading" = "Loading article…"; "page.blog.minutes" = "min read"; "page.blog.moreEyebrow" = "Keep reading"; "page.blog.moreTitle" = "Related articles"; "page.blog.retry" = "Try again"; "page.blog.telegram" = "Telegram channel"; "page.blog.toMain" = "Back to home"; "page.blogCategory.articles" = "articles in this category | article in this category | articles in this category"; "page.blogCategory.articlesTitle" = "Category articles"; "page.blogCategory.empty" = "There are no published articles in this category yet."; "page.blogCategory.errorDescription" = "The category could not be loaded."; "page.blogCategory.errorTitle" = "Category unavailable"; "page.blogCategory.eyebrow" = "Article series"; "page.blogCategory.fallbackDescription" = "A curated series of related articles."; "page.blogCategory.fallbackTitle" = "Blog category — Sleepless Coder"; "page.blogCategory.listEyebrow" = "All posts"; "page.blogCategory.loading" = "Loading category…"; "page.blogCategory.metaSuffix" = "Sleepless Coder"; "page.dev.appId" = "App ID"; "page.dev.appName" = "App name"; "page.dev.appSecret" = "App secret"; "page.dev.createApp" = "Create app"; "page.dev.createdApp" = "App has been created"; "page.dev.delete" = "Delete"; "page.dev.deleteApp" = "Delete app"; "page.dev.issueToken" = "Issue token"; "page.dev.issuedTokens" = "Issued tokens:"; "page.dev.issuingToken" = "Issuing token"; "page.dev.permissions" = "Permissions"; "page.dev.requestsPerDay" = "Requests per day: {ldr}"; "page.dev.requestsPerMouth" = "Requests per month: {lmr}"; "page.dev.saveToken" = "Token showed only once, save it!"; "page.dev.tokenIssued" = "Token issued"; "page.dev.tokenName" = "Token name"; "page.hub.available" = "Services available: {count}"; "page.hub.categoryCount" = "{count} services"; "page.hub.description" = "Services, bots, and tools by Sleepless Coder."; "page.hub.emptyDescription" = "The API responded successfully but did not return any available services yet."; "page.hub.emptyTitle" = "Nothing here yet"; "page.hub.errorDescription" = "The service list could not be loaded. The API may be temporarily unavailable — please try again."; "page.hub.errorTitle" = "Hub failed to load"; "page.hub.eyebrow" = "Services and experiments"; "page.hub.heading" = "Hub"; "page.hub.intro" = "Bots, tools, documentation, and small services you can use right now."; "page.hub.loading" = "Loading services…"; "page.hub.retry" = "Try again"; "page.hub.title" = "Sleepless Coder — Hub"; "page.hub.unavailable" = "API is temporarily unavailable"; "page.hub.untitledCategory" = "Other"; "page.index.latestDescription" = "Long-form writing about software, infrastructure, systems, and game culture."; "page.index.latestEyebrow" = "Latest posts"; "page.index.latestTitle" = "From the blog"; "page.index.readArticle" = "Read article"; "page.index.about" = "Welcome! My name is Ilya, I'm a Java and Node.js developer with more than 6 years of experience."; "page.index.aboutEyebrow" = "About"; "page.index.aboutTitle" = "I turn ideas into working products"; "page.index.allProjects" = "All projects"; "page.index.automationDescription" = "Community moderation, voice transcription, sticker search, payments, and automation of routine workflows."; "page.index.automationTitle" = "Telegram bots and automation"; "page.index.backendDescription" = "I build backends with Java and Node.js: REST APIs, WebSockets, PostgreSQL, and payment logic."; "page.index.backendTitle" = "Backend and system integrations"; "page.index.career01Period" = "May 2025 — present"; "page.index.careerAlta" = "Maintenance and development of existing Java systems."; "page.index.careerAltaPeriod" = "April 2024 — April 2025"; "page.index.careerAltaTitle" = "Alta-Soft"; "page.index.careerEyebrow" = "Experience"; "page.index.careerPractice" = "Telegram bots, APIs, services, and automation for private clients."; "page.index.careerPracticePeriod" = "March 2018 — present"; "page.index.careerPracticeTitle" = "Independent practice"; "page.index.careerStorytelling" = "Java / Node.js, system integrations, and internal tools."; "page.index.careerStorytellingPeriod" = "February 2022 — May 2025"; "page.index.careerTitle" = "My experience"; "page.index.currentRole" = "Current"; "page.index.expertiseEyebrow" = "Specialization"; "page.index.expertiseIntro" = "From application logic to operations: I build complete services and connect them with external systems."; "page.index.expertiseTitle" = "What I do"; "page.index.infrastructureDescription" = "Docker, Nginx, Linux, CI/CD, Grafana, and Prometheus for repeatable deployments and observability."; "page.index.infrastructureTitle" = "Infrastructure"; "page.index.stackEyebrow" = "Tools"; "page.index.stackTitle" = "Core stack"; "page.index.backend" = "backend"; "page.index.contactDescription" = "Have an idea, a task, or just want to talk tech? Send me a message and let's think it through."; "page.index.contactEyebrow" = "Get in touch"; "page.index.contactMe" = "Contact me"; "page.index.contactTitle" = "Let's make something useful"; "page.index.channelDescription" = "This is my personal channel. I explain the systems I work with, explore technology, and think aloud about games — how they are built, their ethics, and their effect on people."; "page.index.channelEyebrow" = "My Telegram channel"; "page.index.channelTitle" = "I also write on Telegram"; "page.index.channelTopicDevelopment" = "development practice"; "page.index.channelTopicGames" = "how games work"; "page.index.channelTopicSystems" = "system architecture"; "page.index.channelTopicsLabel" = "Channel topics"; "page.index.contact" = "You can contact with me using: "; "page.index.contact2" = "Also with telegram bot: "; "page.index.dashboards" = "Stats dashboards"; "page.index.eyebrow" = "Java & Node.js developer"; "page.index.experience" = "I specialize in creating Telegram bots and back-end solutions for various projects. Over the years I have managed to cooperate with the Moscow Center for the Development of Professional Education, College of Communications №54, StoryTelling team and dozens of individual customers. I'm always open to new ideas and ready to help bring your project to life!"; "page.index.factsLabel" = "Experience and specializations at a glance"; "page.index.guard" = "Imperium Guard"; "page.index.guardDescription" = "A bot for moderation and protection of Telegram communities with transparent performance statistics."; "page.index.heroAccent" = "I build useful services."; "page.index.heroLead" = "I design backends, Telegram bots, and small experiments that solve real-world problems."; "page.index.heroTitle" = "I write code."; "page.index.hubDescription" = "A collection of services, tools, and experiments gathered in one place."; "page.index.hubTitle" = "Project laboratory"; "page.index.metaDescription" = "Ilya's personal site: Java and Node.js development, Telegram bots, projects, and technical experiments."; "page.index.labLabel" = "Sleepless Coder · Lab"; "page.index.metaTitle" = "Sleepless Coder — Java & Node.js developer"; "page.index.openDashboard" = "Open dashboard"; "page.index.openHub" = "Explore Hub"; "page.index.projectsEyebrow" = "Selected work"; "page.index.projectsTitle" = "Projects in action"; "page.index.postAiDescription" = "From ELIZA in 1966 to people treating modern models as friends."; "page.index.postAiTitle" = "Why we get attached to AI"; "page.index.postGamesDescription" = "How players reshape the rules and turn a PvP environment into a space for cooperation."; "page.index.postGamesTitle" = "The player shapes the game world"; "page.index.postQueuesDescription" = "How one Map and a global listener replaced hundreds of handlers in a large system."; "page.index.postQueuesTitle" = "Message queues without listener leaks"; "page.index.readChannel" = "Visit the channel"; "page.index.services" = "services"; "page.index.viewProjects" = "View projects"; "page.index.voice" = "Underground transcriber"; "page.index.voiceDescription" = "A service that turns voice messages into text and helps people save time."; "page.index.years" = "years experience"; "page.login.back" = "Back"; "page.login.confirm" = "Confirm"; "page.login.createAccount" = "Create account"; "page.login.description" = "Sign in to your account on redguy.ru."; "page.login.emailNotConfirmed" = "Your email is not confirmed"; "page.login.eyebrow" = "Account"; "page.login.error" = "Login or password is incorrect"; "page.login.forgotPassword" = "Forgot password?"; "page.login.formDescription" = "Use the username and password you chose during registration."; "page.login.formTitle" = "Sign in"; "page.login.heroDescription" = "Sign in to manage your account, applications, and service settings."; "page.login.heroTitle" = "Welcome back"; "page.login.hidePassword" = "Hide"; "page.login.networkError" = "Could not reach the server. Please try again."; "page.login.password" = "Password"; "page.login.passwordPlaceholder" = "Your password"; "page.login.requiredFields" = "Enter your username and password."; "page.login.showPassword" = "Show"; "page.login.tfa" = "Confirm sign-in"; "page.login.tfaCode" = "One-time code"; "page.login.tfaDescription" = "Enter the one-time code from your authenticator app."; "page.login.tfaError" = "The confirmation code is incorrect."; "page.login.tfaPlaceholder" = "000000"; "page.login.tfaRequired" = "Enter the confirmation code."; "page.login.title" = "Sign in — Sleepless Coder"; "page.login.username" = "Username"; "page.login.usernamePlaceholder" = "Your username"; "page.logs.createService" = "Create a service"; "page.logs.level" = "Level"; "page.logs.loadMore" = "Load more"; "page.logs.message" = "Message"; "page.logs.payload" = "Payload"; "page.logs.service" = "Service"; "page.logs.serviceName" = "Service name"; "page.logs.time" = "Time"; "page.oauth.vk.description" = "Complete sign-in with VK ID."; "page.oauth.vk.errorTitle" = "Sign-in failed"; "page.oauth.vk.exchangeError" = "Could not complete sign-in with VK ID. Please try again."; "page.oauth.vk.loadingDescription" = "Checking the VK ID response and completing authorization."; "page.oauth.vk.loadingTitle" = "Completing sign-in"; "page.oauth.vk.missingCode" = "VK ID did not provide an authorization code. Return to sign-in and try again."; "page.oauth.vk.title" = "Sign in with VK ID — Sleepless Coder"; "page.oauth.vk.toLogin" = "Back to sign in"; "page.oauth.vk.toMain" = "Back to home"; "page.oauth.authorize.authorizeError" = "Could not grant access to the application."; "page.oauth.authorize.basicDescription" = "The application will know that you signed in successfully."; "page.oauth.authorize.basicTitle" = "Sign-in confirmation"; "page.oauth.authorize.description" = "Grant an application access to your account."; "page.oauth.authorize.emailTitle" = "Email address"; "page.oauth.authorize.errorTitle" = "Invalid request"; "page.oauth.authorize.eyebrow" = "Access request"; "page.oauth.authorize.invalidRequest" = "Required parameters are missing from the OAuth request."; "page.oauth.authorize.loadError" = "Could not load application information."; "page.oauth.authorize.loadingDescription" = "Checking the application and requested permissions."; "page.oauth.authorize.loadingTitle" = "Checking request"; "page.oauth.authorize.profileTitle" = "Account profile"; "page.oauth.authorize.securityNote" = "Your password is never shared with the application. You can revoke access later."; "page.oauth.authorize.title" = "Authorize access — Sleepless Coder"; "page.oauth.authorize.toMain" = "Back to home"; "page.oauth.authorize.access.email" = "Access to your email"; "page.oauth.authorize.access.nickname" = "Access to your nickname and id"; "page.oauth.authorize.allow" = "Allow"; "page.oauth.authorize.app" = "App {app}"; "page.oauth.authorize.cancel" = "Cancel"; "page.oauth.authorize.requestsAccess" = "requests access to your account"; "page.oauth.authorize.willAllow" = "It will allow app to:"; "page.register.description" = "Create an account on redguy.ru."; "page.register.email" = "Email"; "page.register.emailError" = "Email is not valid"; "page.register.emailExists" = "Email already exists"; "page.register.error" = "Something went wrong"; "page.register.eyebrow" = "New account"; "page.register.formDescription" = "Fill in four fields — a confirmation link will be sent to your email."; "page.register.formTitle" = "Registration"; "page.register.haveAccount" = "Already have an account?"; "page.register.heroDescription" = "One account for services, settings, and applications across the ecosystem."; "page.register.heroTitle" = "Create your profile"; "page.register.login" = "Login"; "page.register.loginError" = "Login must be at least 3 characters long"; "page.register.loginExists" = "Login already exists"; "page.register.loginPlaceholder" = "At least 3 characters"; "page.register.networkError" = "Could not reach the server. Please try again."; "page.register.ok" = "We have sent you an email with a link to confirm your account. Please, check your email."; "page.register.password" = "Password"; "page.register.passwordPlaceholder" = "At least 8 characters"; "page.register.passwordAgain" = "Repeat password"; "page.register.passwordAgainError" = "Passwords do not match"; "page.register.passwordAgainPlaceholder" = "Enter the password again"; "page.register.passwordError" = "Password must be at least 8 characters long and contain at least one number and one letter of both cases"; "page.register.register" = "Register"; "page.register.successTitle" = "Check your inbox"; "page.register.title" = "Register — Sleepless Coder"; "page.register.toLogin" = "Go to sign in"; "page.reset.description" = "Create a new password for your account on redguy.ru."; "page.reset.error" = "The password could not be changed. Please try again."; "page.reset.eyebrow" = "Account recovery"; "page.reset.formTitle" = "New password"; "page.reset.heroDescription" = "Create a new password to protect your account."; "page.reset.heroTitle" = "Almost there"; "page.reset.invalidTitle" = "Invalid link"; "page.reset.invalidToken" = "This recovery link is invalid or has already been used."; "page.reset.missingToken" = "The recovery code is missing. Request a new email."; "page.reset.networkError" = "Could not reach the server. Check your connection and try again."; "page.reset.password" = "New password"; "page.reset.passwordAgain" = "Repeat password"; "page.reset.passwordAgainPlaceholder" = "Enter the password again"; "page.reset.passwordHint" = "At least 8 characters with a lowercase letter, an uppercase letter, and a number."; "page.reset.passwordPlaceholder" = "At least 8 characters"; "page.reset.requestAgain" = "Request a new link"; "page.reset.submit" = "Save password"; "page.reset.successDescription" = "Your password has been changed. You can now sign in with it."; "page.reset.successTitle" = "Password updated"; "page.reset.title" = "New password — Sleepless Coder"; "page.reset.toLogin" = "Go to sign in"; "page.reset.enter" = "Enter a new password"; "page.reset.not-match" = "The passwords don't match"; "page.reset.too-easy" = "The password is too easy"; "page.restore.captchaError" = "The CAPTCHA check could not be loaded. Refresh the page and try again."; "page.restore.captchaLoading" = "Loading verification…"; "page.restore.captchaRequired" = "Please confirm that you are not a robot."; "page.restore.description" = "Recover access to your account on redguy.ru."; "page.restore.email" = "Email"; "page.restore.emailError" = "Enter a valid email address."; "page.restore.emailPlaceholder" = "name{'@'}example.com"; "page.restore.error" = "The email could not be sent. Please try again."; "page.restore.eyebrow" = "Account recovery"; "page.restore.formTitle" = "Forgot your password?"; "page.restore.heroDescription" = "We will send a secure link for creating a new password."; "page.restore.heroTitle" = "Recover access"; "page.restore.networkError" = "Could not reach the server. Check your connection and try again."; "page.restore.successTitle" = "Check your inbox"; "page.restore.title" = "Password recovery — Sleepless Coder"; "page.restore.toLogin" = "Back to sign in"; "page.restore.enter" = "Enter email, which you use for register"; "page.restore.sent" = "If this email exists in our system, we have sent an email with a password recovery link."; "page.settings.close" = "Close"; "page.settings.disabled" = "Disabled"; "page.settings.enabled" = "Enabled"; "page.settings.enterCode" = "Enter a code from your authenticator app to disable two-factor protection."; "page.settings.eyebrow" = "Account"; "page.settings.heading" = "Settings"; "page.settings.intro" = "Manage your account security and active sessions."; "page.settings.loadError" = "Could not load settings"; "page.settings.loading" = "Loading settings…"; "page.settings.manualCode" = "Or enter the secret manually"; "page.settings.passwordDesc" = "Update your password if you think the old one may have been compromised."; "page.settings.retry" = "Try again"; "page.settings.sessionsDesc" = "End every active session except the current one."; "page.settings.sessionsReset" = "Other sessions have been ended."; "page.settings.totpDescDisabled" = "Add a second layer of protection with an authenticator app."; "page.settings.totpDescEnabled" = "A one-time code from your app is required when signing in."; "page.settings.cancel" = "Cancel"; "page.settings.changePassword" = "Password change"; "page.settings.changePassword2" = "Change password"; "page.settings.code" = "Code from the app"; "page.settings.currentPassword" = "Current password"; "page.settings.description" = "Account settings"; "page.settings.error" = "Something went wrong"; "page.settings.incorrectCode" = "Incorrect 2FA code"; "page.settings.incorrectPassword" = "Incorrect password"; "page.settings.newPassword" = "New password"; "page.settings.newPasswordAgain" = "Retype new password"; "page.settings.notStrongEnough" = "Password is not strong enough"; "page.settings.passwordsNotEquals" = "Passwords do not equals"; "page.settings.resetSessions" = "Reset sessions"; "page.settings.resetTOTP" = "Disable two-factor authentication"; "page.settings.safety" = "Safety"; "page.settings.setTOTP" = "Enable two-factor authentication"; "page.settings.setTOTP2" = "Confirm"; "page.settings.title" = "Settings"; "page.socials.boosty.description" = "My page on Boosty, where I publish additional materials and you can support me!"; "page.socials.boosty.title" = "Boosty"; "page.socials.description" = "My blogs and channels on different platforms"; "page.socials.discord.description" = "My Discord server, where I chat a lot"; "page.socials.discord.title" = "SleepLessCode discord"; "page.socials.my" = "My blogs and channels"; "page.socials.sleeplesschat.description" = "My chat in Telegram, where I chat with my subscribers (mostly in Russian)"; "page.socials.sleeplesschat.title" = "Sleeping juniors"; "page.socials.sleeplesscode.description" = "My blog in Telegram, where I publish my thoughts and ideas (in Russian)"; "page.socials.sleeplesscode.title" = "Sleepless developer"; "page.socials.sleeplessfoto.description" = "My channel in Telegram, where I publish my photos"; "page.socials.sleeplessfoto.title" = "Sleepless photos"; "page.socials.sleeplessstickers.description" = "My channel in Telegram, where I publish stickers created by me"; "page.socials.sleeplessstickers.title" = "Sleepless stickers"; "page.socials.title" = "Sleepless Coder — blogs and channels"; "page.socials.youtube.description" = "My YouTube channel, where I publish videos about my things (in Russian)"; "page.socials.youtube.title" = "Sleepless Coder"; "page.verify.description" = "Email address verification on redguy.ru."; "page.verify.errorDescription" = "We could not verify your account."; "page.verify.errorTitle" = "Verification failed"; "page.verify.eyebrow" = "Account verification"; "page.verify.invalidToken" = "This link is invalid or has already been used."; "page.verify.missingToken" = "The verification code is missing. Open the complete link from your email."; "page.verify.networkError" = "Could not reach the server. Check your connection and try again."; "page.verify.retry" = "Try again"; "page.verify.successDescription" = "Your email address has been verified. You can now sign in."; "page.verify.successTitle" = "Account verified"; "page.verify.title" = "Account verification — Sleepless Coder"; "page.verify.toLogin" = "Go to sign in"; "page.verify.toMain" = "Back to home"; "page.verify.waitDescription" = "Checking the link from your email. This should only take a few seconds."; "page.verify.waitTitle" = "Verifying your account"; "page.verify.error" = "Something went wrong"; "page.verify.main" = "main page"; "page.verify.ok" = "Done! You can go to the"; "page.verify.wait" = "Please, wait"; "permissions.hashes" = "Hashes decoding"; "permissions.logs" = "Logging"; "permissions.minecraft" = "Minecraft";