{
  "splash": {
    "title": "DevOps Interview AI",
    "loading": "Loading model… {{progress}}%"
  },
  "selection": {
    "title": "Choose Your Interviewer",
    "subtitle": "Select a role to start your mock DevOps interview",
    "historyLink": "History",
    "pipelineLink": "Full hiring pipeline (5 stages) →",
    "practiceLink": "Practice & quiz →",
    "resumeReviewLink": "Resume review →",
    "resourcesLink": "Job search resources →"
  },
  "footer": {
    "developers": "Developers"
  },
  "pro": {
    "badge": "PRO",
    "title": "DevOps Interview Pro",
    "subtitle": "Two screens sit behind a plan. Everything else — the interviews, the hiring pipeline, the resources, your history — stays free.",
    "requested": "{{feature}} is part of Pro.",
    "testerUnlock": {
      "granted": "Test access is on — Practice & quiz and Resume review are open on this device. This is a tester unlock, not a purchase, and clearing your data removes it.",
      "back": "Back to the interviewers →"
    },
    "includedTitle": "What a plan unlocks",
    "features": {
      "practice": {
        "name": "Practice & quiz",
        "blurb": "The full question bank for all four interviewers, reshuffled whenever you want a new set, plus the scored quiz."
      },
      "resumeReview": {
        "name": "Resume review",
        "blurb": "An automated checklist over your resume text, scored out of 100 — still without sending a word to a server."
      }
    },
    "plansTitle": "Plans",
    "plans": {
      "monthly": { "name": "Monthly", "period": "per month" },
      "yearly": { "name": "Yearly", "period": "per year" },
      "lifetime": { "name": "Lifetime", "period": "one payment, no renewal" }
    },
    "bestValue": "Best value",
    "save": "Save {{percent}}%",
    "notLive": "Payments are not live yet, so nothing can be charged today and no plan can be bought. This is a static site with no server behind it, and a working checkout needs a payment provider — that part is still being built. The prices above are what it will cost when it is.",
    "notify": "Tell me when Pro opens →",
    "freeTitle": "Free, and staying free",
    "freeBody": "Mock interviews with all four interviewers, the five-stage hiring pipeline, the job search resources, the local engine check and your interview history need no plan and never will."
  },
  "difficulty": {
    "Easy": "Easy",
    "Medium": "Medium",
    "Hard": "Hard",
    "Expert": "Expert"
  },
  "interviewers": {
    "recruiter": {
      "description": "Soft skills, motivation and basic technical knowledge",
      "greeting": "Hi, I'm {{name}}, the Recruiter for this role. I'll ask about your motivation, soft skills, and some basic technical fundamentals."
    },
    "hr": {
      "description": "Team chemistry, conflict resolution, working under pressure",
      "greeting": "Hello, I'm {{name}}, the Project Manager. Let's talk about team chemistry and how you handle conflict and pressure."
    },
    "senior-devops": {
      "description": "CI/CD, Kubernetes, IaC, incidents and observability",
      "greeting": "Hey, I'm {{name}}, Senior DevOps Engineer. I'll dive into some deep technical questions on Kubernetes, CI/CD, Terraform, and AWS."
    },
    "cto": {
      "description": "Architecture, scalability, engineering strategy, trade-offs",
      "greeting": "Hi, I'm {{name}}, CTO / Tech Lead. I'd like to discuss architecture, scalability, and security trade-offs with you."
    }
  },
  "meet": {
    "messagesTitle": "In-call messages",
    "sendPlaceholder": "Send a message",
    "send": "Send",
    "you": "You",
    "finished": "The interview is over. Thank you for your answers!",
    "viewHistory": "View history",
    "assessment": {
      "title": "{{role}} — session summary",
      "disclaimer": "Mock rubric, not a real skill grade — full LLM-based answer grading arrives with on-device inference (DIA-84).",
      "completion": "Completion",
      "avgAnswerWords": "Avg. answer length (words)",
      "categories": "Categories covered"
    },
    "controls": {
      "micStart": "Record a voice answer",
      "micStop": "Stop listening",
      "micUnsupported": "Voice input is not supported in this browser",
      "cameraOn": "Turn off camera",
      "cameraOff": "Turn on camera",
      "captions": "Toggle captions",
      "chat": "Toggle chat",
      "closeChat": "Close chat",
      "hangup": "Leave call",
      "listening": "Listening…",
      "recordingSent": "Answer sent",
      "recordingEmpty": "No speech detected",
      "notAvailable": "Not available in this mock interview",
      "micErrors": {
        "no-speech": "No speech was picked up. Check that the right microphone is selected, then try again or type your answer.",
        "not-allowed": "Microphone access is blocked. Allow it via the padlock icon in the address bar and reload the page.",
        "audio-capture": "No microphone found. Connect one or pick another input device in your system settings.",
        "network": "The speech recognition service is unreachable. Check your connection and try again, or type your answer.",
        "language-not-supported": "This browser cannot recognize the selected interview language. Please type your answer instead.",
        "busy": "The previous recording is still closing. Give it a moment and press again.",
        "unknown": "Voice input failed. Try again or type your answer."
      },
      "voiceUnavailable": "This browser has no voice for the interview language: the recruiters will all sound alike, or stay silent. The interview works in text — or install the language's speech pack in your system settings."
    },
    "onDevice": "Answering on-device",
    "saidIn": {
      "en": "Said in English",
      "ua": "Said in Ukrainian"
    }
  },
  "history": {
    "title": "Interview History",
    "empty": "No completed sessions yet.",
    "newInterview": "← New interview",
    "completion": "{{rate}}% completed",
    "avgWords": "{{count}} words/answer avg.",
    "average": "Your average completion with {{role}}: {{rate}}%"
  },
  "level": {
    "junior": "Junior",
    "middle": "Middle",
    "senior": "Senior"
  },
  "language": {
    "label": "Language"
  },
  "privacy": {
    "note": "Everything you type here stays in this browser. Answers, interview history and pipeline progress are saved on this device only and are never sent to a server. Records older than {{days}} days are deleted automatically.",
    "dismiss": "Got it",
    "clear": "Clear my data",
    "clearConfirm": "Delete all interview history and pipeline progress saved in this browser? This cannot be undone."
  },
  "nav": {
    "back": "Back",
    "home": "Home"
  },
  "pipeline": {
    "home": {
      "title": "Hiring Pipeline",
      "subtitle": "Five sequential stages, in order — each unlocks after the previous one is completed."
    },
    "stageLabel": "Stage {{number}}",
    "stages": {
      "screening": "Primary Screening",
      "technicalScreening": "Technical Screening",
      "liveCoding": "Technical Interview & Live Coding",
      "culturalFit": "Management & Team Interview",
      "offer": "Final Offer"
    },
    "status": {
      "completed": "Completed",
      "unlocked": "Start",
      "locked": "Locked"
    },
    "continueTo": "Continue to {{title}} →",
    "viewOffer": "View your offer →",
    "showReference": "Show reference solutions",
    "hideReference": "Hide reference solutions"
  },
  "offer": {
    "title": "Final Offer",
    "subtitle": "Auto-generated from your Stage 1 screening answers.",
    "copy": "Copy letter",
    "copied": "Copied!",
    "backToPipeline": "← Back to pipeline",
    "letterBody": "Dear {{candidateName}},\n\nCongratulations! We are pleased to offer you the {{position}} position, based on your compensation range of {{salaryExpectations}} and a start date aligned with a notice period of {{noticePeriod}}. We understand you are based in {{location}}.\n\nThis is a mock offer letter generated from your Stage 1 screening answers — no automated skill grading is involved (see DIA-84).\n\nWelcome aboard!\n\nFor the next step, please contact Project Manager {{contactName}}:\n{{contactLinkedIn}}\n\n{{company}}"
  },
  "practice": {
    "title": "Practice & Self-Prep",
    "subtitle": "Browse through every interview question on your own, or test yourself with a quiz.",
    "tabs": {
      "questions": "Questions",
      "quiz": "Quiz"
    },
    "poolNote": "A random pick from the full question bank — a new set every time you open this page.",
    "newSet": "New question set ↻",
    "quiz": {
      "submit": "Check answers",
      "retry": "Retry",
      "result": "Result: {{correct}} of {{total}} ({{percentage}}%)"
    }
  },
  "resumeReview": {
    "title": "Resume Review",
    "subtitle": "Paste your resume text and get an automated improvement checklist (nothing is sent to a server).",
    "showSample": "Show sample resume",
    "hideSample": "Hide sample resume",
    "inputLabel": "Resume text",
    "inputPlaceholder": "Paste your resume text here…",
    "checkButton": "Check resume",
    "scoreLabel": "Score: {{score}}/100"
  },
  "resources": {
    "title": "Job Search Resources",
    "subtitle": "A curated list of sites, Telegram channels, and tips for finding DevOps roles.",
    "tipsTitle": "Tips for success"
  },
  "developers": {
    "title": "Developers",
    "subtitle": "The team and channels behind this project."
  },
  "engine": {
    "title": "Local engine check",
    "subtitle": "Whether this device can run the interviewer on-device, and what is missing if it cannot.",
    "checking": "checking…",
    "yes": "supported",
    "webgpu": "WebGPU",
    "simd": "WebAssembly SIMD",
    "simdFallback": "requires WebAssembly SIMD, which every browser with WebGPU has",
    "bundle": "Model bundle",
    "run": "Run a test question",
    "running": "Running…",
    "reasons": {
      "no-webgpu": "this browser has no WebGPU — the on-device model needs it",
      "no-gpu-adapter": "WebGPU is present but no GPU adapter was granted",
      "gpu-error": "the graphics driver refused the request",
      "model-unavailable": "the model bundle has not been downloaded to this device yet",
      "engine-error": "the runtime could not start with this model",
      "no-simd": "no WebAssembly SIMD — the runtime this app ships needs it"
    },
    "verdict": {
      "onDevice": "Answered on-device by Gemma 3 1B",
      "scripted": "Answered from the script"
    },
    "bundleSource": {
      "title": "The model bundle",
      "stored": "Stored on this device — {{size}} MB, verified and added {{date}}. It stays here until you remove it; nothing is uploaded anywhere.",
      "served": "Served from this site, out of public/models/ — the development setup.",
      "why": "GitHub serves release downloads without the CORS header a browser needs, so this page cannot fetch the {{size}} MB bundle for you. Download it yourself, then point us at the file: it is checked against a known SHA-256 and stored in this browser, on this device only.",
      "download": "Download {{file}} from release {{tag}}",
      "thenPick": "Choose the downloaded file here:",
      "progress": "{{percent}}% · {{received}} / {{total}} MB · {{speed}} MB/s",
      "verifying": "Checking the file against its SHA-256…",
      "cancel": "Cancel",
      "retry": "Try another file",
      "remove": "Remove from this device",
      "benefit": "With the model on this device, the interviewer reacts to your answers instead of reading from a script. Everything still runs in this browser — nothing is uploaded, and it works offline once the file is here.",
      "startInterview": "Start an interview"
    },
    "bundleErrors": {
      "no-storage": "This browser will not let the page store a file of this size, so the model cannot be kept here.",
      "insufficient-space": "Not enough free space on this device for the bundle.",
      "checksum-mismatch": "That file is not the bundle this app expects — its contents do not match the published SHA-256. It has not been kept.",
      "wrong-size": "That is not the model bundle: the file is the wrong size.",
      "network-error": "The file could not be read to the end.",
      "cancelled": "Cancelled. Nothing was kept.",
      "storage-error": "The file could not be stored on this device."
    },
    "requirements": "What this device needs",
    "check": {
      "body": "Not sure this browser can run the interviewer on your own machine? The check says what works and what is missing.",
      "action": "Check this device →"
    },
    "invite": {
      "title": "This device can run the interviewer locally.",
      "body": "With the model prepared, the interviewer reacts to what you actually said instead of following a script. One {{size}} MB download, kept on this device and never uploaded.",
      "prepare": "Prepare the model",
      "later": "Not now"
    }
  }
}
