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