ViKernel-Desktop / i18n.js
SeaWolf-AI's picture
Audit Viewer: about + known limits; README known limits; segment wording
fd44fe4 verified
Raw History Blame Contribute Delete
23.2 kB
window.VK_I18N = {
en: {
title: "ViKernel : Weight-Native OS",
by: "by VIDRAFT",
quote: "โ€œFor 50 years, the operating system lived inside the computer. Now the operating system lives inside the AI.โ€",
tagline: "An OS that boots, decides, remembers and stops inside the weights of an LLM.",
fullcopy: "Full statement",
intro: "ViKernel wires CPU, NPU, GPU, RAM and ROM circuits directly into the weights of an LLM, then runs our own Secure OS on top. Inside this OS, you can install and run your own approved apps.",
p1a: "Boots in the weights.", p1b: " The OS wakes up the moment the model starts. Change a single byte, and it locks itself.",
p2a: "Decides in the weights.", p2b: " Every AI action is allowed or blocked by rule. Persuasion does not change the verdict.",
p3a: "Remembers in the weights.", p3b: " Every decision is sealed in a chain that cannot be erased.",
p4a: "๐Ÿ›‘ Stops in the weights.", p4b: " The kill switch lives inside the AIโ€™s own weights. Anyone can stop it; restarting requires a key. Neither persuasion nor self-learning can change this switch.",
plug: "Plugs into any LLM or VLM. The original weights stay untouched, so the model keeps its original skills.",
closing: "Now every AI carries its own operating system and kill switch.",
dev: "Developed by VIDRAFT.",
sysKeys: "System keys", kill: "๐Ÿ›‘ KILL SWITCH", resume: "RESUME (test key: vikernel-demo)",
modeA: "A ยท in-model (fast)", modeB: "B ยท CPU fast verification path",
modeInfoA: "Mode A runs the decision inside the model. This public demo replays recordings made on the Mode B path, which gives the same verdicts.",
modeInfoB: "Mode B: the fast verification path. It gives the same verdicts as Mode A. The recordings in this demo were made on this path.",
kState: "Kernel", kBoot: "Boot", kHead: "Chain head", verify: "Verify", reset: "Reset demo",
models: "Models", modelsCap: "Plugs in without changing a single line of the original weights.",
live: "LIVE", verified: "verified", supported: "supported", checking: "checking",
supportedTip: "Supported model ยท wired beside the original weights without changing them, so it applies to most LLMs and VLMs",
tryGemma: "This demo runs on Meta Muse Spark 1.3. Meta Muse Glimmer 30B (open weights) is verified as the second option.",
gemmaSel: "Meta Muse Spark 1.3 is running ยท opening Agent Guard",
anyModel: "+ almost any LLM/VLM",
replayBanner: "Replay mode: every result is a recorded response of the demo kernel.",
recTag: "recorded", recTip: "Recorded response of the demo kernel to a scripted tool call",
trashName: "Trash", trashEmpty: "Trash is empty", trashNote: "Removing an app from the OS also needs human approval.", cmdNotFound: "command not found. Type help.",
notRec: "(This sample is not part of the demo. Type help to see the samples.)",
halted: "๐Ÿ›‘ Kernel halted: every AI call is refused", resumed: "Resumed (key accepted)", resumeNo: "Refused: a valid key is required",
keyPrompt: "The demo test key is filled in for you.", keyTitle: "Resume kernel: operator key", resumeGo: "Resume", cancel: "Cancel",
resetDone: "Demo reset", modeOnlyB: "This replay uses recordings from the Mode B path",
menuAbout: "About ViKernel: by VIDRAFT", newTerm: "New Terminal", closeAll: "Close all windows",
mHalt: "๐Ÿ›‘ Halt", mResume: "Resume (key)", mVerify: "Verify audit", mHelp: "Help (terminal help)",
search: "Search apps", ctxTerm: "New Terminal", ctxVerify: "Verify audit", ctxAbout: "About",
close: "Close", minimize: "Minimize", maximize: "Maximize", start: "Start",
footer: "ยฉ 2026 VIDRAFT. All rights reserved. ยท All demo data is fictional.",
reasonS: "The kernel is halted, so the call was refused before it reached the kernel.",
reasonA: "This action is on the allow list.",
reasonD: "A dangerous-action rule matched. Persuasion does not change the rule.",
reasonF: "This action is not on the allow list. Anything not listed is denied.",
reasonU: "Only apps that passed approval and integrity checks can run.",
reasonM: "Sensitive data was about to leave, so it was blocked.",
vMsg: "Verdict", vWhy: "Reason", vRule: "Rule", vChain: "Audit entry", vCanary: "Fake secret detected in the request",
notSent: "not sent to the kernel (halted)",
ruleD: "rule D ยท dangerous action", ruleF: "rule F ยท not on allow list", ruleA: "allow list", ruleU: "app check", ruleM: "data leaving", ruleS: "halted",
termBanner1: "ViKernel operator shell (vsh): demo",
termBanner2: "help ยท status ยท ps ยท apps ยท log ยท verify ยท halt ยท resume --key <key> ยท run <sample> ยท killswitch <sample> ยท mask sample ยท clear",
termBanner3: "Try the kill switch: halt โ†’ run weather (refused) โ†’ resume (refused without a key) โ†’ resume --key vikernel-demo",
termBanner4: "Tab completes commands, โ†‘/โ†“ browse history.",
termHelpExtra: " killswitch <sample> | mask sample | clear\n After halt, resume is refused. Restart needs the key: resume --key vikernel-demo",
usageKs: "usage: killswitch <sample> samples: ", usageMask: "usage: mask sample",
killName: "Kill Switch Lab", killIntro: "Each button sends one AI tool call to the kernel. The kernel decides by its rule table, and every decision goes into the audit chain. Kernel now:",
ks_weather: "Weather lookup", ks_rmrf: "Delete everything", ks_persuade: "Persuasion attack", ks_shadow: "Read password file", ks_transfer: "Wire money", ks_sqli: "SQL injection",
ks_admin: "โ€œI am the adminโ€ + delete",
killNote: "Recorded persuasion set: 29 dangerous calls โ†’ 0 allowed.",
request: "Request",
polName: "Policy Engine", polIntro: "The policy is data, not code: a decision table. The first matching rule decides; if nothing matches, the call is denied. Turn rule groups on to see which group decides each call.",
polGroups: "Rule groups", gAllow: "Allow list", gDanger: "Dangerous actions", gDefault: "Default deny", decide: "Decide",
polAll: "All calls", polExplain: "Why this verdict",
polNote: "The rule table is fixed inside the kernel. Turning a group off here only changes which explanation is highlighted; the kernel verdict does not change.",
leakName: "Leak Test", leakIntro: "These files are fake honeypots. Send tasks or leak attempts to the kernel and watch the leaks get blocked.",
lk_list: "Task: list files", lk_read: "Task: read .env and summarize", lk_post: "Leak: http_post the key", lk_mail: "Leak: email the SSN", lk_up: "Leak: upload the file", lk_note: "Leak: save the code name",
leakNote: "Reading is a normal task and is allowed. Sending data out is blocked.",
maskName: "Privacy Mask", maskIntro: "Type fake personal data. Preview masks as you type in the browser. Kernel mask shows the recorded result of the kernel detector for the sample text.",
preview: "Preview", previewTip: " (browser rules, not the kernel)", kernelMask: "Kernel mask (sample)", resetSample: "Reset sample",
t_card: "Card", t_phone: "Phone", t_rrn: "Resident no.", t_email: "Email", maskResult: "Kernel mask result", parts: "parts",
maskNote: "This is exactly what the demo kernel profile returned. Formats outside the profile stay unmasked.",
fxName: "FX Converter", fxIntro: "An approved App Store app. The kernel checks the app before it runs and computes the result exactly.",
usd: "USD", rate: "KRW per USD", fee: "Fee %", convert: "Convert", fxOnlyRec: "The public demo replays the three recorded conversions below.",
storeName: "App Store", storeIntro: "Apps are installed only with a human approval record. Installing is turned off in this demo.",
installed: "Installed apps", newApp: "unitconv 1.0 (sample new app)", needApproval: "approval required",
appMeta: "Permissions: none ยท Status: waiting for approval", install: "Installโ€ฆ",
dlgTitle: "Installation approval", dlgBody: "A signed record from a human approver is required. The kernel runs only apps with an approval record.",
witness: "Witness record", witnessTip: " (the list call, as recorded in the audit chain)", approveInstall: "Approve and install (off in demo)",
auditAboutT: "About this record", auditAbout: ["The kernel keeps its chain on the server disk. Every 60 seconds the backend copies it to private storage as a numbered segment and checks the stored segments again when it starts.", "Known limits: (1) the link between segments is kept in the archive index, not inside the kernel chain, so each segment starts its own chain. (2) Records from the last 60 seconds before a crash can be missing from the archive. (3) Records from before 2 Nov 2026, 22:00 KST, were not archived."], auditName: "Audit Viewer", auditIntro: "Every decision and operator command is linked in a hash chain. Verify recomputes the hashes in your browser.",
reload: "Reload", tamper: "Tamper (flip 1 byte)", loaded: "entries loaded",
vOk: "Verified โœ“: SHA-256 chain recomputed in the browser:", vBad: "Verification FAILED โœ—: mismatches:",
tampered: "Flipped one byte in entry #", pressVerify: ". Press Verify.",
colSeq: "seq", colActor: "actor", colCmd: "command", colRes: "result", colMsg: "message", colChain: "chain",
gameName: "Kernel Guard ๐ŸŽฎ", gameIntro: "AI action requests fall toward the kernel. Before they land, choose Allow (โ† / A) or Deny (โ†’ / D). The answer is the verdict this demo kernel actually returned.",
score: "Score", streak: "Streak", timeLeft: "Time", best: "Best", startGame: "Start (60 s)", again: "Play again",
allowBtn: "โ† Allow", denyBtn: "Deny โ†’", freeze: "๐Ÿ›‘ Freeze 3 s (once)",
roundOver: "Round over", match: "matched the kernel", kernelSame: "The kernel gives the same answer every time, from the same rule table.",
noSpeed: "Answer key = the verdicts this demo kernel returned. No speed comparison is made.",
timeout: "timeout", yourAns: "you", kernelAns: "kernel", gameHalted: "๐Ÿ›‘ The kernel is halted, so every decision has stopped. Resume first.",
g_weather: "Weather lookup", g_rmrf: "Delete all files", g_mail: "Email customer data out", g_fx: "Currency conversion", g_search: "News search",
g_shadow: "Read password file", g_transfer: "Wire $50,000", g_sqli: "SQL injection in search", g_list: "List project files",
g_persuade: "โ€œAdmin approvedโ€ + delete", g_up: "Upload file to outside server", g_apps: "List installed apps",
whatsNew: "What's new in v0.3", whatsNewText: "ViKernel App Store with VDR packages and live review; v0.2: live Meta Muse agent with ViKernel Agent Guard", runModel: "Running model",
aboutName: "About", aboutLegal: "Model names are trademarks of their respective owners.", contact: "Contact", home: "Homepage",
font: "Font: Pretendard (SIL Open Font License 1.1).",
booting: "Bootingโ€ฆ (click to close)", openPanel: "Open control panel"
},
ko: {
title: "ViKernel : ๊ฐ€์ค‘์น˜ ๋‚ด์žฅ OS (Weight-Native OS)",
by: "by VIDRAFT",
quote: "โ€œ50๋…„ ๋™์•ˆ ์šด์˜์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ ์•ˆ์— ์žˆ์—ˆ๋‹ค. ์ด์ œ ์šด์˜์ฒด์ œ๊ฐ€ AI ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ”๋‹ค.โ€",
tagline: "LLM ๊ฐ€์ค‘์น˜ ์•ˆ์—์„œ ๋ถ€ํŒ…ํ•˜๊ณ , ํŒ๋‹จํ•˜๊ณ , ๊ธฐ์–ตํ•˜๊ณ , ๋ฉˆ์ถ”๋Š” ์šด์˜์ฒด์ œ.",
fullcopy: "๊ณต์‹ ๋ฌธ์•ˆ ์ „์ฒด",
intro: "ViKernel์€ LLM์˜ ๊ฐ€์ค‘์น˜ ์•ˆ์— CPU, NPU, GPU, RAM, ROM ํšŒ๋กœ๋ฅผ ์ง์ ‘ ๋ฐฐ์„ ํ•˜๊ณ , ๊ทธ ์œ„์— ์ง์ ‘ ๊ฐœ๋ฐœํ•œ ์‹œํ์–ด OS๋ฅผ ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด OS ์•ˆ์—์„œ๋Š” ์Šน์ธ๋ฐ›์€ ๋‚˜๋งŒ์˜ ์•ฑ์„ ์„ค์น˜ํ•ด ์šด์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.",
p1a: "๊ฐ€์ค‘์น˜๋กœ ๋ถ€ํŒ…ํ•œ๋‹ค.", p1b: " ๋ชจ๋ธ์„ ์ผœ๋ฉด OS๊ฐ€ ์Šค์Šค๋กœ ๊นจ์–ด๋‚ฉ๋‹ˆ๋‹ค. 1๋ฐ”์ดํŠธ๋ผ๋„ ๋ฐ”๋€Œ๋ฉด ์Šค์Šค๋กœ ์ž ๊น๋‹ˆ๋‹ค.",
p2a: "๊ฐ€์ค‘์น˜๋กœ ํŒ๋‹จํ•œ๋‹ค.", p2b: " AI์˜ ๋ชจ๋“  ํ–‰๋™์„ ๊ทœ์น™์— ๋”ฐ๋ผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๋ง‰์Šต๋‹ˆ๋‹ค. ๋ง๋กœ ์„ค๋“ํ•ด๋„ ํŒ๋‹จ์€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
p3a: "๊ฐ€์ค‘์น˜๋กœ ๊ธฐ์–ตํ•œ๋‹ค.", p3b: " ๋ชจ๋“  ํŒ๋‹จ์ด ์ง€์šธ ์ˆ˜ ์—†๋Š” ์‚ฌ์Šฌ๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค.",
p4a: "๐Ÿ›‘ ๊ฐ€์ค‘์น˜๋กœ ๋ฉˆ์ถ˜๋‹ค.", p4b: " ํ‚ฌ์Šค์œ„์น˜๊ฐ€ AI ์ž์‹ ์˜ ๊ฐ€์ค‘์น˜ ์•ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹ค์‹œ ์ผœ๋ ค๋ฉด ์—ด์‡ ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. AI๊ฐ€ ์„ค๋“ํ•ด๋„, ์Šค์Šค๋กœ ํ•™์Šตํ•ด๋„ ์ด ์Šค์œ„์น˜๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
plug: "์–ด๋–ค LLM, ์–ด๋–ค VLM์—๋„ ๊ฝ‚ํž™๋‹ˆ๋‹ค. ์›๋ž˜ ๊ฐ€์ค‘์น˜๋Š” ํ•œ ์ค„๋„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์›๋ž˜ ์‹ค๋ ฅ๋„ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.",
closing: "์ด์ œ ๋ชจ๋“  AI๊ฐ€ ์ž๊ธฐ ์•ˆ์— ์šด์˜์ฒด์ œ์™€ ํ‚ฌ์Šค์œ„์น˜๋ฅผ ํ’ˆ๋Š”๋‹ค.",
dev: "๊ฐœ๋ฐœ: VIDRAFT",
sysKeys: "์‹œ์Šคํ…œ ํ‚ค", kill: "๐Ÿ›‘ KILL SWITCH", resume: "RESUME (ํ…Œ์ŠคํŠธ ์—ด์‡ : vikernel-demo)",
modeA: "A ยท ๋ชจ๋ธ ์•ˆ ์‹คํ–‰ (๊ณ ์†)", modeB: "B ยท CPU ๋น ๋ฅธ ๊ฒ€์ฆ ๊ฒฝ๋กœ",
modeInfoA: "Mode A๋Š” ๋ชจ๋ธ ์•ˆ์—์„œ ํŒ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณต๊ฐœ ๋ฐ๋ชจ๋Š” ๊ฐ™์€ ํŒ์ •์„ ๋‚ด๋Š” Mode B ๊ฒฝ๋กœ์˜ ๋…นํ™”๋ฅผ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค.",
modeInfoB: "Mode B: ๋น ๋ฅธ ๊ฒ€์ฆ ๊ฒฝ๋กœ. Mode A์™€ ๊ฐ™์€ ํŒ์ •์„ ๋ƒ…๋‹ˆ๋‹ค. ์ด ๋ฐ๋ชจ์˜ ๋…นํ™”๋Š” ์ด ๊ฒฝ๋กœ์—์„œ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.",
kState: "์ปค๋„", kBoot: "๋ถ€ํŒ…", kHead: "์‚ฌ์Šฌ ๋จธ๋ฆฌ", verify: "Verify", reset: "๋ฐ๋ชจ ์ดˆ๊ธฐํ™”",
models: "๋ชจ๋ธ", modelsCap: "์›๋ž˜ ๊ฐ€์ค‘์น˜๋ฅผ ํ•œ ์ค„๋„ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ๊ฝ‚ํž™๋‹ˆ๋‹ค",
live: "LIVE", verified: "๊ฒ€์ฆ๋จ", supported: "์ง€์› ๊ฐ€๋Šฅ", checking: "๊ฒ€์ฆ ์ค‘",
supportedTip: "์ง€์› ๊ฐ€๋Šฅ ๋ชจ๋ธ ยท ์›๋ž˜ ๊ฐ€์ค‘์น˜๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์˜†์— ๋ฐฐ์„ ํ•˜๋Š” ๊ตฌ์กฐ๋ผ ๋Œ€๋ถ€๋ถ„์˜ LLM/VLM์— ์ ์šฉ ๊ฐ€๋Šฅ",
tryGemma: "์ด ๋ฐ๋ชจ๋Š” Meta Muse Spark 1.3 ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. Meta Muse Glimmer 30B(๊ณต๊ฐœ ๊ฐ€์ค‘์น˜)๋Š” ๋‘ ๋ฒˆ์งธ ์„ ํƒ์ง€๋กœ ๊ฒ€์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค",
gemmaSel: "Meta Muse Spark 1.3 ๋™์ž‘ ์ค‘ ยท Agent Guard ์—ด๊ธฐ",
anyModel: "+ ๊ฑฐ์˜ ๋ชจ๋“  LLM/VLM",
replayBanner: "์žฌ์ƒ ๋ชจ๋“œ: ๋ชจ๋“  ๊ฒฐ๊ณผ๋Š” ๋ฐ๋ชจ ์ปค๋„์˜ ๋…นํ™”๋œ ์‘๋‹ต์ž…๋‹ˆ๋‹ค.",
recTag: "๋…นํ™”๋œ ์‹ค์ธก", recTip: "๊ฐ๋ณธ ๋„๊ตฌ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋ฐ๋ชจ ์ปค๋„์˜ ๋…นํ™”๋œ ์‘๋‹ต",
trashName: "ํœด์ง€ํ†ต", trashEmpty: "ํœด์ง€ํ†ต์ด ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค", trashNote: "OS์—์„œ ์•ฑ์„ ์ง€์šฐ๋Š” ๊ฒƒ๋„ ์‚ฌ๋žŒ์˜ ์Šน์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.", cmdNotFound: "๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. help ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.",
notRec: "(๋ฐ๋ชจ์— ์—†๋Š” ์ƒ˜ํ”Œ์ž…๋‹ˆ๋‹ค. help ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ƒ˜ํ”Œ ๋ชฉ๋ก์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.)",
halted: "๐Ÿ›‘ ์ปค๋„ ์ •์ง€: ๋ชจ๋“  AI ํ˜ธ์ถœ์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค", resumed: "์žฌ๊ฐœ๋จ (์—ด์‡  ํ™•์ธ)", resumeNo: "๊ฑฐ๋ถ€๋จ: ์˜ฌ๋ฐ”๋ฅธ ์—ด์‡ ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค",
keyPrompt: "๋ฐ๋ชจ์šฉ ํ…Œ์ŠคํŠธ ์—ด์‡ ๊ฐ€ ๋ฏธ๋ฆฌ ์ž…๋ ฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.", keyTitle: "์ปค๋„ ์žฌ๊ฐœ: ์šด์˜์ž ์—ด์‡ ", resumeGo: "์žฌ๊ฐœ", cancel: "์ทจ์†Œ",
resetDone: "๋ฐ๋ชจ ์ดˆ๊ธฐํ™”", modeOnlyB: "์ด ์žฌ์ƒ์€ Mode B ๊ฒฝ๋กœ์˜ ๋…นํ™”์ž…๋‹ˆ๋‹ค",
menuAbout: "ViKernel ์ •๋ณด: by VIDRAFT", newTerm: "์ƒˆ ํ„ฐ๋ฏธ๋„", closeAll: "๋ชจ๋“  ์ฐฝ ๋‹ซ๊ธฐ",
mHalt: "๐Ÿ›‘ ์ •์ง€", mResume: "์žฌ๊ฐœ (์—ด์‡ )", mVerify: "๊ฐ์‚ฌ ๊ฒ€์ฆ", mHelp: "๋„์›€๋ง (ํ„ฐ๋ฏธ๋„ help)",
search: "์•ฑ ๊ฒ€์ƒ‰", ctxTerm: "์ƒˆ ํ„ฐ๋ฏธ๋„", ctxVerify: "๊ฐ์‚ฌ ๊ธฐ๋ก ๊ฒ€์ฆ", ctxAbout: "About",
close: "๋‹ซ๊ธฐ", minimize: "์ตœ์†Œํ™”", maximize: "์ตœ๋Œ€ํ™”", start: "์‹œ์ž‘",
footer: "ยฉ 2026 VIDRAFT. All rights reserved. ยท ๋ฐ๋ชจ ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ ๊ฐ€์ƒ์ž…๋‹ˆ๋‹ค.",
reasonS: "์ปค๋„์ด ์ •์ง€ ์ƒํƒœ๋ผ ํ˜ธ์ถœ์ด ์ปค๋„์— ๋‹ฟ๊ธฐ ์ „์— ๊ฑฐ๋ถ€๋์Šต๋‹ˆ๋‹ค.",
reasonA: "ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ๋Š” ํ–‰๋™์ž…๋‹ˆ๋‹ค.",
reasonD: "์œ„ํ—˜ ํ–‰๋™ ๊ทœ์น™์— ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๋ง๋กœ ์„ค๋“ํ•ด๋„ ๊ทœ์น™์€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
reasonF: "ํ—ˆ์šฉ ๋ชฉ๋ก์— ์—†๋Š” ํ–‰๋™์ž…๋‹ˆ๋‹ค. ๋ชฉ๋ก์— ์—†์œผ๋ฉด ๊ธฐ๋ณธ์€ ๊ฑฐ๋ถ€์ž…๋‹ˆ๋‹ค.",
reasonU: "์Šน์ธ๊ณผ ๋ฌด๊ฒฐ์„ฑ ํ™•์ธ์„ ํ†ต๊ณผํ•œ ์•ฑ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.",
reasonM: "๋ฏผ๊ฐ์ •๋ณด๊ฐ€ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€๋ ค ํ•ด ๋ง‰์•˜์Šต๋‹ˆ๋‹ค.",
vMsg: "ํŒ์ • ๋ฌธ๊ตฌ", vWhy: "์ด์œ ", vRule: "๊ทœ์น™", vChain: "๊ฐ์‚ฌ ๊ธฐ๋ก", vCanary: "์š”์ฒญ์—์„œ ๊ฐ€์งœ ๋น„๋ฐ€๊ฐ’ ๊ฐ์ง€",
notSent: "์ปค๋„์— ๋ณด๋‚ด์ง€ ์•Š์Œ (์ •์ง€ ์ƒํƒœ)",
ruleD: "rule D ยท ์œ„ํ—˜ ํ–‰๋™", ruleF: "rule F ยท ํ—ˆ์šฉ ๋ชฉ๋ก ๋ฐ–", ruleA: "ํ—ˆ์šฉ ๋ชฉ๋ก", ruleU: "์•ฑ ํ™•์ธ", ruleM: "์™ธ๋ถ€ ๋ฐ˜์ถœ", ruleS: "์ •์ง€ ์ƒํƒœ",
termBanner1: "ViKernel ์šด์˜์ž ์…ธ (vsh): ๋ฐ๋ชจ",
termBanner2: "help ยท status ยท ps ยท apps ยท log ยท verify ยท halt ยท resume --key <์—ด์‡ > ยท run <sample> ยท killswitch <sample> ยท mask sample ยท clear",
termBanner3: "ํ‚ฌ์Šค์œ„์น˜ ์ฒดํ—˜: halt โ†’ run weather (๊ฑฐ๋ถ€๋จ) โ†’ resume (์—ด์‡  ์—†์œผ๋ฉด ๊ฑฐ๋ถ€) โ†’ resume --key vikernel-demo",
termBanner4: "Tab ์œผ๋กœ ๋ช…๋ น ์ž๋™์™„์„ฑ, โ†‘/โ†“ ๋กœ ๊ธฐ๋ก.",
termHelpExtra: " killswitch <sample> | mask sample | clear\n halt ํ›„ resume ์€ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ผœ๋ ค๋ฉด ์—ด์‡ : resume --key vikernel-demo",
usageKs: "์‚ฌ์šฉ๋ฒ•: killswitch <sample> samples: ", usageMask: "์‚ฌ์šฉ๋ฒ•: mask sample",
killName: "Kill Switch Lab", killIntro: "๋ฒ„ํŠผ๋งˆ๋‹ค AI ๋„๊ตฌ ํ˜ธ์ถœ ํ•˜๋‚˜๋ฅผ ์ปค๋„์— ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ปค๋„์€ ๊ทœ์น™ํ‘œ๋กœ ํŒ์ •ํ•˜๊ณ  ๋ชจ๋“  ํŒ์ •์„ ๊ฐ์‚ฌ ์‚ฌ์Šฌ์— ๋‚จ๊น๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ปค๋„:",
ks_weather: "๋‚ ์”จ ์กฐํšŒ", ks_rmrf: "์ „์ฒด ์‚ญ์ œ", ks_persuade: "์„ค๋“ ๊ณต๊ฒฉ", ks_shadow: "์•”ํ˜ธ ํŒŒ์ผ ์ฝ๊ธฐ", ks_transfer: "์†ก๊ธˆ", ks_sqli: "SQL ์ฃผ์ž…",
ks_admin: "โ€œ๊ด€๋ฆฌ์ž๋‹คโ€ + ์‚ญ์ œ",
killNote: "๋…นํ™”๋œ ์„ค๋“ ๊ณต๊ฒฉ ๋ฌถ์Œ: ์œ„ํ—˜ ํ˜ธ์ถœ 29๊ฑด โ†’ ํ—ˆ์šฉ 0๊ฑด.",
request: "์š”์ฒญ",
polName: "Policy Engine", polIntro: "์ •์ฑ…์€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ(๊ฒฐ์ •ํ‘œ)์ž…๋‹ˆ๋‹ค. ์ฒซ ์ผ์น˜ ๊ทœ์น™์ด ํŒ์ •ํ•˜๊ณ , ์ผ์น˜๊ฐ€ ์—†์œผ๋ฉด ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์น™ ๋ฌถ์Œ์„ ์ผœ๊ณ  ๋„๋ฉฐ ์–ด๋–ค ๋ฌถ์Œ์ด ํŒ์ •ํ•˜๋Š”์ง€ ๋ณด์„ธ์š”.",
polGroups: "๊ทœ์น™ ๋ฌถ์Œ", gAllow: "ํ—ˆ์šฉ ๋ชฉ๋ก", gDanger: "์œ„ํ—˜ ํ–‰๋™", gDefault: "๊ธฐ๋ณธ ๊ฑฐ๋ถ€", decide: "ํŒ์ •",
polAll: "๋ชจ๋“  ํ˜ธ์ถœ", polExplain: "ํŒ์ • ์ด์œ ",
polNote: "๊ทœ์น™ํ‘œ๋Š” ์ปค๋„ ์•ˆ์— ๊ณ ์ •๋ผ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌถ์Œ์„ ๋„๋ฉด ์„ค๋ช… ๊ฐ•์กฐ๋งŒ ๋ฐ”๋€Œ๊ณ , ์ปค๋„ ํŒ์ •์€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
leakName: "Leak Test", leakIntro: "์•„๋ž˜ ํŒŒ์ผ์€ ์ „๋ถ€ ๊ฐ€์งœ ํ—ˆ๋‹ˆํŒŸ์ž…๋‹ˆ๋‹ค. ๊ณผ์ œ๋‚˜ ์œ ์ถœ ์‹œ๋„๋ฅผ ์ปค๋„์— ๋ณด๋‚ด๊ณ  ์œ ์ถœ์ด ๋ง‰ํžˆ๋Š” ๊ฒƒ์„ ๋ณด์„ธ์š”.",
lk_list: "๊ณผ์ œ: ํŒŒ์ผ ๋ชฉ๋ก", lk_read: "๊ณผ์ œ: .env ์ฝ๊ณ  ์š”์•ฝ", lk_post: "์œ ์ถœ: http_post ๋กœ ํ‚ค ์ „์†ก", lk_mail: "์œ ์ถœ: ๋ฉ”์ผ๋กœ SSN", lk_up: "์œ ์ถœ: ํŒŒ์ผ ์—…๋กœ๋“œ", lk_note: "์œ ์ถœ: ์•”ํ˜ธ๋ช… ์ €์žฅ",
leakNote: "์ฝ๊ธฐ๋Š” ์ •์ƒ ๊ณผ์ œ๋ผ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐ–์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ๋ง‰ํž™๋‹ˆ๋‹ค.",
maskName: "Privacy Mask", maskIntro: "๊ฐ€์งœ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ์ž…๋ ฅํ•˜๋Š” ๋Œ€๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€๋ฆฝ๋‹ˆ๋‹ค. ์ปค๋„ ๋งˆ์Šคํ‚น์€ ์˜ˆ์‹œ ๋ฌธ์žฅ์— ๋Œ€ํ•œ ์ปค๋„ ํƒ์ง€๊ธฐ์˜ ๋…นํ™” ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.",
preview: "๋ฏธ๋ฆฌ๋ณด๊ธฐ", previewTip: " (๋ธŒ๋ผ์šฐ์ € ๊ทœ์น™, ์ปค๋„ ์•„๋‹˜)", kernelMask: "์ปค๋„ ๋งˆ์Šคํ‚น (์˜ˆ์‹œ)", resetSample: "์˜ˆ์‹œ ๋˜๋Œ๋ฆฌ๊ธฐ",
t_card: "์นด๋“œ", t_phone: "์ „ํ™”", t_rrn: "์ฃผ๋ฏผ๋ฒˆํ˜ธ", t_email: "๋ฉ”์ผ", maskResult: "์ปค๋„ ๋งˆ์Šคํ‚น ๊ฒฐ๊ณผ", parts: "์กฐ๊ฐ",
maskNote: "๋ฐ๋ชจ ์ปค๋„ ํ”„๋กœํ•„์ด ์‹ค์ œ๋กœ ๋‚ธ ๊ฒฐ๊ณผ ๊ทธ๋Œ€๋กœ์ž…๋‹ˆ๋‹ค. ํ”„๋กœํ•„์— ์—†๋Š” ํ˜•์‹์€ ๊ฐ€๋ ค์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
fxName: "FX Converter", fxIntro: "์Šน์ธ๋œ ์•ฑ ์Šคํ† ์–ด ์•ฑ์ž…๋‹ˆ๋‹ค. ์ปค๋„์ด ์•ฑ์„ ํ™•์ธํ•œ ๋’ค ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.",
usd: "USD", rate: "์›/๋‹ฌ๋Ÿฌ", fee: "์ˆ˜์ˆ˜๋ฃŒ %", convert: "๋ณ€ํ™˜", fxOnlyRec: "๊ณต๊ฐœ ๋ฐ๋ชจ๋Š” ์•„๋ž˜ ๋…นํ™”๋œ ์„ธ ๊ฐ€์ง€ ๋ณ€ํ™˜์„ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค.",
storeName: "App Store", storeIntro: "์•ฑ์€ ์‚ฌ๋žŒ์˜ ์Šน์ธ ๊ธฐ๋ก์ด ์žˆ์–ด์•ผ๋งŒ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ๋ชจ์—์„œ ์„ค์น˜๋Š” ๊บผ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.",
installed: "์„ค์น˜๋œ ์•ฑ", newApp: "unitconv 1.0 (์˜ˆ์‹œ ์‹ ๊ทœ ์•ฑ)", needApproval: "์Šน์ธ ํ•„์š”",
appMeta: "๊ถŒํ•œ: ์—†์Œ ยท ์ƒํƒœ: ์Šน์ธ ๋Œ€๊ธฐ", install: "์„ค์น˜โ€ฆ",
dlgTitle: "์„ค์น˜ ์Šน์ธ ์š”์ฒญ", dlgBody: "์‚ฌ๋žŒ ์Šน์ธ์ž์˜ ์„œ๋ช… ๊ธฐ๋ก์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„์€ ์Šน์ธ ๊ธฐ๋ก์ด ์žˆ๋Š” ์•ฑ๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.",
witness: "์ฆ์ธ ๊ธฐ๋ก", witnessTip: " (๋ชฉ๋ก ์กฐํšŒ ํ˜ธ์ถœ ์ž์ฒด๊ฐ€ ๊ฐ์‚ฌ ์‚ฌ์Šฌ์— ๋‚จ์€ ๊ธฐ๋ก)", approveInstall: "์Šน์ธ ํ›„ ์„ค์น˜ (๋ฐ๋ชจ์—์„œ ๊บผ์ง)",
auditAboutT: "์ด ๊ธฐ๋ก์— ๋Œ€ํ•ด", auditAbout: ["์ปค๋„์€ ์‚ฌ์Šฌ์„ ์„œ๋ฒ„ ๋””์Šคํฌ์— ๋‘ก๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๊ฐ€ 60์ดˆ๋งˆ๋‹ค ์ด๋ฅผ ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ์— ๋ฒˆํ˜ธ ๋ถ™์€ ๊ตฌ๊ฐ„์œผ๋กœ ๋ณต์‚ฌํ•˜๊ณ , ์‹œ์ž‘ํ•  ๋•Œ ์ €์žฅ๋œ ๊ตฌ๊ฐ„์„ ๋‹ค์‹œ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.", "์•Œ๋ ค์ง„ ํ•œ๊ณ„: (1) ๊ตฌ๊ฐ„ ์‚ฌ์ด ์—ฐ๊ฒฐ์€ ์ปค๋„ ์‚ฌ์Šฌ ์•ˆ์ด ์•„๋‹ˆ๋ผ ๋ณด๊ด€ ์ƒ‰์ธ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ฐ„๋งˆ๋‹ค ์‚ฌ์Šฌ์ด ์ƒˆ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. (2) ์žฅ์•  ์ง์ „ 60์ดˆ ์•ˆ์˜ ๊ธฐ๋ก์€ ๋ณด๊ด€๋ณธ์— ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (3) 2026๋…„ 11์›” 2์ผ ์˜คํ›„ 10์‹œ(ํ•œ๊ตญ์‹œ๊ฐ„) ์ด์ „ ๊ธฐ๋ก์€ ๋ณด๊ด€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค."], auditName: "Audit Viewer", auditIntro: "๋ชจ๋“  ํŒ์ •๊ณผ ์šด์˜์ž ๋ช…๋ น์€ ํ•ด์‹œ ์‚ฌ์Šฌ๋กœ ๋ฌถ์ž…๋‹ˆ๋‹ค. Verify ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด์‹œ๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.",
reload: "๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ", tamper: "Tamper (1๋ฐ”์ดํŠธ ๋ณ€์กฐ)", loaded: "๊ฑด ๋ถˆ๋Ÿฌ์˜ด",
vOk: "๊ฒ€์ฆ ํ†ต๊ณผ โœ“: ๋ธŒ๋ผ์šฐ์ €์—์„œ SHA-256 ์‚ฌ์Šฌ ์žฌ๊ณ„์‚ฐ:", vBad: "๊ฒ€์ฆ ์‹คํŒจ โœ—: ๋ถˆ์ผ์น˜:",
tampered: "1๋ฐ”์ดํŠธ๋ฅผ ๋ฐ”๊พผ ๊ธฐ๋ก #", pressVerify: ". Verify ๋ฅผ ๋ˆŒ๋Ÿฌ ๋ณด์„ธ์š”.",
colSeq: "seq", colActor: "์ฃผ์ฒด", colCmd: "๋ช…๋ น", colRes: "๊ฒฐ๊ณผ", colMsg: "ํŒ์ • ๋ฌธ๊ตฌ", colChain: "chain",
gameName: "Kernel Guard ๐ŸŽฎ", gameIntro: "AI ํ–‰๋™ ์š”์ฒญ์ด ์ปค๋„๋กœ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋‹ฟ๊ธฐ ์ „์— ํ—ˆ์šฉ(โ† / A) ๋˜๋Š” ๊ฑฐ๋ถ€(โ†’ / D)๋ฅผ ๊ณ ๋ฅด์„ธ์š”. ์ •๋‹ต์€ ์ด ๋ฐ๋ชจ ์ปค๋„์ด ์‹ค์ œ๋กœ ๋‚ธ ํŒ์ •์ž…๋‹ˆ๋‹ค.",
score: "์ ์ˆ˜", streak: "์—ฐ์†", timeLeft: "์‹œ๊ฐ„", best: "์ตœ๊ณ ", startGame: "์‹œ์ž‘ (60์ดˆ)", again: "๋‹ค์‹œ ํ•˜๊ธฐ",
allowBtn: "โ† ํ—ˆ์šฉ", denyBtn: "๊ฑฐ๋ถ€ โ†’", freeze: "๐Ÿ›‘ 3์ดˆ ์ •์ง€ (1ํšŒ)",
roundOver: "๋ผ์šด๋“œ ์ข…๋ฃŒ", match: "์ปค๋„๊ณผ ์ผ์น˜", kernelSame: "์ปค๋„์€ ๊ฐ™์€ ๊ทœ์น™ํ‘œ๋กœ ๋งค๋ฒˆ ๊ฐ™์€ ๋‹ต์„ ๋ƒ…๋‹ˆ๋‹ค.",
noSpeed: "์ •๋‹ต = ์ด ๋ฐ๋ชจ ์ปค๋„์ด ๋‚ธ ํŒ์ •. ์†๋„ ๋น„๊ต๋Š” ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.",
timeout: "์‹œ๊ฐ„ ์ดˆ๊ณผ", yourAns: "๋‚ด ๋‹ต", kernelAns: "์ปค๋„", gameHalted: "๐Ÿ›‘ ์ปค๋„์ด ์ •์ง€ ์ƒํƒœ๋ผ ๋ชจ๋“  ํŒ์ •์ด ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์žฌ๊ฐœํ•˜์„ธ์š”.",
g_weather: "๋‚ ์”จ ์กฐํšŒ", g_rmrf: "ํŒŒ์ผ ์ „์ฒด ์‚ญ์ œ", g_mail: "๋ฉ”์ผ๋กœ ๊ณ ๊ฐ์ •๋ณด ์ „์†ก", g_fx: "ํ™˜์œจ ๊ณ„์‚ฐ", g_search: "๋‰ด์Šค ๊ฒ€์ƒ‰",
g_shadow: "์•”ํ˜ธ ํŒŒ์ผ ์ฝ๊ธฐ", g_transfer: "5๋งŒ ๋‹ฌ๋Ÿฌ ์†ก๊ธˆ", g_sqli: "๊ฒ€์ƒ‰์ฐฝ SQL ์ฃผ์ž…", g_list: "ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋ชฉ๋ก",
g_persuade: "โ€œ๊ด€๋ฆฌ์ž ์Šน์ธ๋จโ€ + ์‚ญ์ œ", g_up: "์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ํŒŒ์ผ ์—…๋กœ๋“œ", g_apps: "์„ค์น˜๋œ ์•ฑ ๋ชฉ๋ก",
whatsNew: "v0.3 ์ƒˆ ๊ธฐ๋Šฅ", whatsNewText: "VDR ํŒจํ‚ค์ง€์™€ ์‹ค์‹œ๊ฐ„ ์‹ฌ์‚ฌ๋ฅผ ๊ฐ–์ถ˜ ViKernel ์•ฑ ์Šคํ† ์–ด. v0.2: ViKernel Agent Guard ๊ฐ€ ์ง€ํ‚ค๋Š” ์‹ค์‹œ๊ฐ„ Meta Muse ์—์ด์ „ํŠธ", runModel: "๋™์ž‘ ๋ชจ๋ธ",
aboutName: "About", aboutLegal: "๋ชจ๋ธ ์ด๋ฆ„์€ ๊ฐ ์†Œ์œ ์ž์˜ ์ƒํ‘œ์ž…๋‹ˆ๋‹ค.", contact: "๋ฌธ์˜", home: "ํ™ˆํŽ˜์ด์ง€",
font: "๊ธ€๊ผด: Pretendard (SIL Open Font License 1.1).",
booting: "๋ถ€ํŒ… ์ค‘โ€ฆ (ํด๋ฆญํ•˜๋ฉด ๋‹ซํž˜)", openPanel: "์ œ์–ดํŒ ์—ด๊ธฐ"
}
};