{
  "test": "Hallo {{name}}",
  "common": {
    "404": "Something went wrong, try again later.",
    "500": "A server error occurred. Try again later.",
    "whiteSpace": " ",
    "error": "ERROR",
    "connectionError": "Connection error. Check your network and try again.",
    "sessionReplacedElsewhere": "Your session was opened on another device.",
    "logoutFailed": "Could not sign you out. Try again.",
    "invalidGroup": "Invalid room.",
    "invalidLocation": "Invalid location.",
    "unknownError": "An unknown error occurred."
  },
  "middleware": {
    "notAdmin": "You are not an admin."
  },
  "auth": {
    "required": "You need to be logged in.",
    "forbidden": "You do not have permission for this action.",
    "invalidCondition": "Server authentication configuration is invalid."
  },
  "api": {
    "invalidRequest": "Invalid API request.",
    "invalidName": "Invalid API name.",
    "invalidDataObject": "Invalid API payload.",
    "invalidRequestFormat": "Invalid request format.",
    "payloadTooLarge": "Request payload is too large.",
    "notFound": "API '{{name}}' was not found.",
    "invalidInputType": "Invalid API input.",
    "rateLimitExceeded": "Too many requests. Try again in {{seconds}} seconds.",
    "methodNotAllowed": "Method not allowed. Expected {{method}}.",
    "internalServerError": "An internal server error occurred.",
    "invalidResponseStatus": "API returned an invalid response status.",
    "emptyResponse": "API returned an empty response."
  },
  "sync": {
    "invalidRequest": "Invalid sync request.",
    "invalidCallback": "Invalid sync callback.",
    "methodNotAllowed": "Sync method not allowed.",
    "invalidName": "Invalid sync name.",
    "invalidRequestFormat": "Invalid sync request format.",
    "missingReceiver": "Sync receiver is required.",
    "notFound": "Sync event was not found.",
    "rateLimitExceeded": "Too many sync requests. Try again in {{seconds}} seconds.",
    "invalidInputType": "Invalid sync input: {{message}}",
    "serverExecutionFailed": "Sync server handler failed.",
    "invalidServerResponse": "Sync server returned an invalid response.",
    "noReceiversFound": "No receivers found for this sync event.",
    "receiverNotAllowed": "Broadcasting to all clients is not allowed.",
    "notRoomMember": "You are not a member of the room this sync event targets.",
    "invalidVersion": "Invalid sync version.",
    "failedRequest": "Sync request {{name}} failed: {{message}}",
    "requestTimeout": "Sync request timed out.",
    "disconnected": "Connection lost before the sync request was confirmed.",
    "disabled": "Sync over HTTP is disabled.",
    "devToolsUnavailable": "Sync dev tools are not available in this environment.",
    "clientExecutionFailed": "Sync client handler failed.",
    "invalidClientResponse": "Sync client returned an invalid response.",
    "clientRejected": "Sync event was rejected by client validation.",
    "clientFilteredOut": "You are not in the required context for this sync event.",
    "ioUnavailable": "Socket server is unavailable."
  },
  "error": {
    "invalidResponse": "Server returned an invalid error response."
  },
  "login": {
    "empty": "No email or password provided.",
    "emailCharacterLimit": "Email can't be longer than 191 characters.",
    "passwordCharacterMinimum": "Password must be at least 8 characters long.",
    "passwordCharacterLimit": "Password can't be longer than 191 characters.",
    "nameCharacterLimit": "Name can't be longer than 191 characters.",
    "invalidEmailFormat": "Invalid email format.",
    "passwordNotMatch": "Passwords do not match.",
    "emailExists": "Email already exists.",
    "userCreated": "User created.",
    "createUserFailed": "Failed to create new user.",
    "userNotFound": "User not found.",
    "wrongPassword": "Password does not match.",
    "loggedIn": "User logged in.",
    "providerNotFound": "Provider not found.",
    "oauthStateInitFailed": "Failed to initialize OAuth security state.",
    "noReason": "No reason provided.",
    "signInTitle": "Sign in to your account",
    "registerTitle": "Create a new account",
    "noAccount": "Don't have an account yet? ",
    "haveAccount": "Already have an account? ",
    "createAccount": "Create one now",
    "logIn": "Log in",
    "signUp": "Sign up",
    "loading": "Loading...",
    "twoFactorTitle": "Two-factor verification",
    "twoFactorIntro": "Enter the 6-digit code from your authenticator app.",
    "twoFactorEmailIntro": "Enter the code we sent to your email.",
    "twoFactorRecoveryIntro": "Enter one of your unused recovery codes.",
    "twoFactorCodeLabel": "Verification code",
    "twoFactorVerify": "Verify",
    "twoFactorUseTotp": "Use my authenticator app",
    "twoFactorUseEmail": "Email me a code instead",
    "twoFactorUseRecovery": "Use a recovery code",
    "twoFactorEmailSent": "Code sent to your email.",
    "twoFactorRequired": "Two-factor verification required.",
    "twoFactorInvalidCode": "Invalid verification code.",
    "twoFactorLocked": "Too many attempts — sign in again.",
    "twoFactorChallengeExpired": "The verification session expired — sign in again.",
    "twoFactorMethodUnavailable": "That verification method is not available.",
    "twoFactorEnrollmentExpired": "The setup session expired — start again.",
    "twoFactorPersistFailed": "Could not save the change — try again.",
    "twoFactorAlreadyEnabled": "Two-factor authentication is already on — turn it off first to re-enroll.",
    "twoFactorDisabledByServer": "Two-factor authentication is not available on this app.",
    "emailCodeTitle": "Sign in with an email code",
    "emailCodeIntro": "We'll email you a one-time code — no password needed.",
    "emailCodeTab": "Sign in with an email code instead",
    "emailCodeSend": "Send code",
    "emailCodeResend": "Send a new code",
    "emailCodeLabel": "Sign-in code",
    "emailCodeSent": "Code sent — check your inbox.",
    "emailCodeInvalid": "Invalid code.",
    "emailCodeExpired": "The code expired or was already used — request a new one.",
    "emailCodeLocked": "Too many attempts — request a new code.",
    "emailCodeDisabled": "Email-code sign-in is not enabled.",
    "emailCodeSendFailed": "Could not send the email — try again later.",
    "backToPassword": "Back to password sign-in",
    "name": "Name",
    "emailAddress": "Email address",
    "password": "Password",
    "confirmPassword": "Confirm password",
    "forgotPassword": "Forgot Password? ",
    "orContinueWith": "Or continue with",
    "forgotPasswordDisabled": "Password reset is disabled.",
    "resetTitle": "Reset your password",
    "resetIntro": "Enter your email and we'll send you a link to choose a new password.",
    "resetSendLink": "Send reset link",
    "resetEmailSent": "If that email exists, a reset link is on its way.",
    "resetCheckInbox": "Check your inbox. The link expires in 1 hour.",
    "resetBackToLogin": "Back to log in",
    "resetChooseTitle": "Choose a new password",
    "resetChooseIntro": "Pick something you haven't used before.",
    "resetConfirm": "Update password",
    "resetSuccess": "Your password has been updated. You can now log in with the new one.",
    "resetGoLogin": "Go to log in",
    "resetInvalidToken": "This reset link is invalid or has expired.",
    "resetPasswordUpdated": "Password updated."
  },
  "settings": {
    "changeAvatar": "Change avatar",
    "deleteAvatar": "Delete avatar",
    "changeAvatarDescription": "JPG, GIF or PNG. 4MB max.",
    "language": {
      "title": "Language",
      "nl": "NL",
      "en": "EN",
      "de": "DE",
      "fr": "FR"
    },
    "theme": {
      "title": "Theme",
      "light": "Light",
      "dark": "Dark"
    },
    "saveChanges": "Save changes",
    "updatedUser": "updated the user",
    "failedUpdateUser": "Failed to update the user",
    "noChangesMade": "No changes made",
    "sizeToLarge": "Max upload size is 4~5 MB, chose a smaller img!!",
    "loadingImg": "Photo is loading",
    "name": "Name",
    "email": "Email",
    "emailReadOnly": "Email is read-only for this account.",
    "emailChange": {
      "label": "Enter a new email address and we'll send a confirmation link to it. Clicking the link signs you out of all devices.",
      "button": "Send confirmation",
      "checkInbox": "Check the new inbox for a confirmation link.",
      "confirmPrompt": "Click the button below to confirm your new email address.",
      "confirmButton": "Confirm email change",
      "confirming": "Confirming your new email...",
      "confirmedTitle": "Email updated",
      "confirmedBody": "Your email address has been changed. All sessions have been signed out — please log in with the new email.",
      "failedTitle": "Confirmation failed",
      "invalidToken": "This confirmation link is invalid or has expired.",
      "emailTaken": "That email address is already in use.",
      "invalidEmail": "That doesn't look like a valid email address.",
      "emailSameAsCurrent": "The new email is the same as the current one.",
      "emailSendFailed": "Could not send the confirmation email. Try again later.",
      "currentPasswordRequired": "Enter your current password to change your email.",
      "wrongCurrentPassword": "Your current password is incorrect.",
      "managedByProvider": "Your email address comes from the service you sign in with and can't be changed here."
    },
    "passwordSection": "Password",
    "twoFactorSection": "Two-factor authentication",
    "twoFactorStatusOn": "Two-factor authentication is ON — your account asks for a code at sign-in.",
    "twoFactorStatusOff": "Two-factor authentication is off. Add an authenticator app for an extra layer of security.",
    "twoFactorSetup": "Set up authenticator app",
    "twoFactorScanIntro": "Add the secret below to your authenticator app (Google/Microsoft Authenticator, Authy, …) — scan or enter it manually — then confirm with the first code.",
    "twoFactorSecretLabel": "Secret (tap to copy)",
    "twoFactorCopyUri": "Copy setup link (otpauth://)",
    "twoFactorActivate": "Activate",
    "twoFactorCancel": "Cancel",
    "twoFactorEnabled": "Two-factor authentication is on.",
    "twoFactorDisabled": "Two-factor authentication is off.",
    "twoFactorDisable": "Turn off",
    "twoFactorDisableIntro": "Enter a code from your authenticator app (or a recovery code) to turn two-factor authentication off.",
    "twoFactorRegenerate": "New recovery codes",
    "twoFactorRegenerateIntro": "Enter a code from your authenticator app to replace your recovery codes.",
    "twoFactorRecoveryIntro": "Save these recovery codes somewhere safe — each works once if you lose your authenticator app. They are shown only now.",
    "twoFactorRecoveryDone": "I saved them",
    "twoFactorCopyCodes": "Copy codes",
    "twoFactorCopied": "Copied.",
    "currentPassword": "Current password",
    "newPassword": "New password",
    "confirmNewPassword": "Confirm new password",
    "changePassword": "Change password",
    "passwordChanged": "Password updated.",
    "sessionsSection": "Active sessions",
    "sessionsEmpty": "No other active sessions.",
    "currentSession": "Current session",
    "revokeSession": "Sign out",
    "sessionRevoked": "Session signed out.",
    "sessionExpiresIn": "~{{hours}}h remaining",
    "preferencesSection": "Notification preferences",
    "prefNotifySignIn": "Email me when a new sign-in happens",
    "prefNotifyPassword": "Email me when my password is changed",
    "preferencesSaved": "Preferences saved.",
    "dangerSection": "Danger zone",
    "signOutEverywhere": "Sign out everywhere",
    "signOutEverywhereConfirm": "This will end every active session including this one. You'll need to log back in.",
    "signOutEverywhereDone": "Signed out from all devices.",
    "deleteAccount": "Delete account",
    "deleteAccountConfirm": "This permanently deletes your account and all associated data. Type DELETE below to confirm.",
    "deleteAccountDone": "Account deleted."
  },
  "avatar": {
    "uploadFailed": "Failed to upload avatar.",
    "invalidFormat": "Invalid avatar format."
  },
  "session": {
    "invalid": "Session is invalid.",
    "notFound": "Your session has ended. Sign in again."
  },
  "docs": {
    "documentation": "Documentation",
    "room": "Room",
    "apis": "APIs",
    "syncs": "Syncs",
    "selectApiOrSync": "Select an API or sync event.",
    "api": "API",
    "sync": "Sync",
    "input": "Input",
    "output": "Output",
    "method": "Method",
    "rateLimit": "Rate limit",
    "unlimited": "Unlimited",
    "rateLimitNotProvided": "None provided",
    "auth": "Auth",
    "loginRequired": "Login required",
    "loginOptional": "Login not required",
    "additionalPermissions": "Additional permissions",
    "none": "None",
    "requestPayload": "Request payload preview",
    "responsePayload": "Response payload",
    "clientInput": "Client Input",
    "serverOutput": "Server Output",
    "clientOutput": "Client Output",
    "randomPreset": "Random Preset",
    "runSocket": "Run Socket",
    "runHttp": "Run HTTP",
    "roomCode": "roomCode",
    "ignoreSelf": "ignoreSelf",
    "roomToJoin": "room to join",
    "joinRoom": "Join Room",
    "roomToLeave": "room to leave",
    "leaveRoom": "Leave Room",
    "joinedRooms": "Joined rooms",
    "noRoomsJoined": "No rooms joined",
    "syncReceiverHeader": "Sync receiver room",
    "syncJoinHeader": "Join room",
    "syncLeaveHeader": "Leave room",
    "fetchRequestExample": "Fetch request example",
    "socketRequestExample": "Socket request example",
    "syncHttpHowItWorksTitle": "How sync + HTTP works on this page",
    "syncHttpHowItWorksLine1": "HTTP sync trigger calls /sync/... and the server broadcasts through Socket.io to users in the same room.",
    "syncHttpHowItWorksLine2": "This page joins room",
    "postmanTitle": "Postman / HTTP Instructions",
    "postmanLine1": "Use Cookie auth header: token=YOUR_SESSION_TOKEN, or keep Postman cookie jar enabled after login.",
    "postmanLine2": "Set language header with Accept-Language (preferred) or X-Language (also supported).",
    "postmanLine3": "API URL format: /api/{page}/{name}/{version} and Sync URL format: /sync/{page}/{name}/{version}.",
    "httpGuideTitle": "HTTP usage",
    "httpGuideLine1": "Use HTTP for one-time API calls or to trigger a sync broadcast from backend routes.",
    "httpGuideLine2": "For protected routes, authenticate first so your browser cookie or token is included.",
    "httpGuideLine3": "Set header Accept-Language to control localized error messages.",
    "httpGuideLine4": "Route format: /api/{page}/{name}/{version} and /sync/{page}/{name}/{version}.",
    "socketGuideTitle": "Socket usage",
    "socketGuideLine1": "Use Socket mode for real-time callback responses and room-based broadcasts.",
    "socketGuideLine2": "Join a room before testing broadcasts so you can receive the emitted sync event.",
    "socketGuideLine3": "Default docs room",
    "socketGuideLine4": "Use ignoreSelf when you want to broadcast to everyone except your current client.",
    "status": "Status",
    "invalidJsonInput": "Invalid JSON input",
    "httpApiRequestFailed": "HTTP API request failed",
    "syncRequestTimedOut": "Sync request timed out",
    "httpSyncRequestFailed": "HTTP sync request failed",
    "roomCodeRequired": "Room code is required",
    "joinedRoom": "Joined room",
    "leftRoom": "Left room",
    "failedToJoinRoom": "Failed to join room",
    "failedToLeaveRoom": "Failed to leave room",
    "failedToLoadDocumentation": "Failed to load documentation.",
    "emptyResponseBody": "Empty response body",
    "emptyErrorResponseBody": "Empty error response body",
    "invalidJsonResponse": "Response was not valid JSON",
    "apisSmall": "APIs",
    "syncsSmall": "Syncs",
    "doc": "DOC",
    "syncSmall": "SYNC"
  },
  "admin": {
    "title": "Admin"
  },
  "confirm": {
    "type": "Type ",
    "toConfirm": " to confirm:",
    "cancel": "Cancel",
    "confirm": "Confirm"
  },
  "dashboard": {
    "title": "Dashboard",
    "description": "This is the dashboard page. It maps to /dashboard via the framework's file-based router.",
    "welcome": "Welcome back, {{name}}",
    "welcomeSubtitle": "Here's a quick overview of your workspace.",
    "lastSignIn": "Last sign-in {{when}}",
    "lastSignInFirst": "Welcome to your first session.",
    "statsApiCalls": "API calls today",
    "statsActiveSessions": "Active sessions",
    "statsRecentErrors": "Recent errors",
    "statsUptime": "Uptime",
    "quickActions": "Quick actions",
    "openSettings": "Settings",
    "openPlayground": "Playground",
    "signOut": "Sign out",
    "systemStatus": "System status",
    "statusConnected": "All systems operational",
    "statusReconnecting": "Reconnecting…",
    "statusDisconnected": "Disconnected",
    "recentActivity": "Recent activity",
    "recentActivityEmpty": "No recent activity yet."
  },
  "home": {
    "settings": "Settings",
    "signOut": "Sign out"
  },
  "errorPage": {
    "goBack": "← Go Back",
    "home": "Home",
    "developerDetails": "Developer Details",
    "errorLabel": "Error"
  },
  "examples": {
    "title": "LuckyStack Examples",
    "subtitle": "Interactive demo of all framework features",
    "docs": "Docs",
    "userInfo": "User Info",
    "logout": "Logout",
    "notLoggedIn": "Not logged in",
    "goToLogin": "Go to Login",
    "realTimeSync": "Real-time Sync",
    "openTabs": "Open in 2 tabs to test",
    "publicApi": "Public API",
    "noLoginNeeded": "No login needed",
    "callApi": "Call API",
    "toggleAdmin": "Toggle Admin",
    "requiresLogin": "Requires login",
    "toggle": "Toggle",
    "adminOnly": "Admin Only",
    "adminTrueRequired": "admin: true required",
    "apiResults": "API Results",
    "apiResultsDesc": "Click an API button to see results here"
  },
  "template": {
    "logout": "Logout",
    "socketStatus": "Socket status:"
  }
}