zam-core 0.10.2 → 0.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/skills/zam/SKILL.md +31 -5
- package/.agents/skills/zam/SKILL.md +31 -5
- package/.claude/skills/zam/SKILL.md +31 -5
- package/dist/cli/app.js +960 -298
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands/mcp.js +1130 -114
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/copilot-extension/host.bundle.js +1 -1
- package/dist/copilot-extension/manifest.json +1 -1
- package/dist/copilot-extension/mcp-client.bundle.mjs +1 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/ui/recall-panel.html +1 -1
- package/dist/ui/studio-panel.html +1 -1
- package/dist/vscode-extension/ZAM_Companion_0.10.4.vsix +0 -0
- package/dist/vscode-extension/extension.cjs +109 -0
- package/dist/vscode-extension/host.bundle.js +5331 -0
- package/dist/vscode-extension/manifest.json +5 -0
- package/package.json +3 -2
|
@@ -577,7 +577,7 @@ Boolean requesting whether a visible border and background is provided by the ho
|
|
|
577
577
|
- omitted: host decides border`)}),P({method:z(`ui/request-display-mode`),params:P({mode:_v.describe(`The display mode being requested.`)})});var Nv=P({mode:_v.describe(`The display mode that was actually set. May differ from requested if not supported.`)}).passthrough(),Pv=I([z(`model`),z(`app`)]).describe(`Tool visibility scope - who can access the tool.`);P({resourceUri:k().optional(),visibility:N(Pv).optional().describe(`Who can access this tool. Default: ["model", "app"]
|
|
578
578
|
- "model": Tool visible to and callable by the agent
|
|
579
579
|
- "app": Tool callable by the app from this server only`),csp:Xf().optional(),permissions:Xf().optional()}),P({mimeTypes:N(k()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')}),P({method:z(`ui/download-file`),params:P({contents:N(I([o_,s_])).describe(`Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.`)})}),P({method:z(`ui/message`),params:P({role:z(`user`).describe(`Message role, currently only "user" is supported.`),content:N(c_).describe(`Message content blocks (text, image, etc.).`)})}),P({method:z(`ui/notifications/sandbox-resource-ready`),params:P({html:k().describe(`HTML content to load into the inner iframe.`),sandbox:k().optional().describe(`Optional override for the inner iframe's sandbox attribute.`),csp:Sv.optional().describe(`CSP configuration from resource metadata.`),permissions:Cv.optional().describe(`Sandbox permissions from resource metadata.`)})});var Fv=P({method:z(`ui/notifications/tool-result`),params:__.describe(`Standard MCP tool execution result.`)}),Iv=P({toolInfo:P({id:Lh.optional().describe(`JSON-RPC id of the tools/call request.`),tool:m_.describe(`Tool definition including name, inputSchema, etc.`)}).optional().describe(`Metadata of the tool call that instantiated this App.`),theme:gv.optional().describe(`Current color theme preference.`),styles:Ov.optional().describe(`Style configuration for theming the app.`),displayMode:_v.optional().describe(`How the UI is currently displayed.`),availableDisplayModes:N(_v).optional().describe(`Display modes the host supports.`),containerDimensions:I([P({height:A().describe(`Fixed container height in pixels.`)}),P({maxHeight:I([A(),qf()]).optional().describe(`Maximum container height in pixels.`)})]).and(I([P({width:A().describe(`Fixed container width in pixels.`)}),P({maxWidth:I([A(),qf()]).optional().describe(`Maximum container width in pixels.`)})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other
|
|
580
|
-
container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:k().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:k().optional().describe(`User's timezone in IANA format.`),userAgent:k().optional().describe(`Host application identifier.`),platform:I([z(`web`),z(`desktop`),z(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:P({touch:j().optional().describe(`Whether the device supports touch input.`),hover:j().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:P({top:A().describe(`Top safe area inset in pixels.`),right:A().describe(`Right safe area inset in pixels.`),bottom:A().describe(`Bottom safe area inset in pixels.`),left:A().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough(),Lv=P({method:z(`ui/notifications/host-context-changed`),params:Iv.describe(`Partial context update containing only changed fields.`)});P({method:z(`ui/update-model-context`),params:P({content:N(c_).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:L(k(),M().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),P({method:z(`ui/initialize`),params:P({appInfo:Qh.describe(`App identification (name and version).`),appCapabilities:Mv.describe(`Features and capabilities this app provides.`),protocolVersion:k().describe(`Protocol version this app supports.`)})});var Rv=P({protocolVersion:k().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:Qh.describe(`Host application identification and version.`),hostCapabilities:jv.describe(`Features and capabilities provided by the host.`),hostContext:Iv.describe(`Rich context about the host environment.`)}).passthrough(),zv={target:`draft-2020-12`};async function Bv(e,t){let n=e[`~standard`];if(n.jsonSchema)return n.jsonSchema[t](zv);if(n.vendor===`zod`){let{z:n}=await fv(async()=>{let{z:e}=await Promise.resolve().then(()=>(Th(),Ch));return{z:e}},void 0,import.meta.url);return n.toJSONSchema(e,{io:t})}throw Error(`Schema (vendor: ${n.vendor}) does not implement Standard JSON Schema (~standard.jsonSchema). Use a library that does (zod v4, ArkType, Valibot) or wrap your schema accordingly.`)}async function Vv(e,t,n=``){let r=await e[`~standard`].validate(t);if(r.issues){let e=r.issues.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `);throw Error(n+e)}return r.value}var Hv=class e extends pv{_appInfo;_capabilities;options;_hostCapabilities;_hostInfo;_hostContext;_registeredTools={};_initializedSent=!1;_assertInitialized(e){if(this._initializedSent)return;let t=`[ext-apps] App.${e}() called before connect() completed the ui/initialize handshake. Await app.connect() before calling this method, or move data loading to an ontoolresult handler.`;if(this.options?.strict)throw Error(t);console.warn(`${t}. This will throw in a future release.`)}eventSchemas={toolinput:wv,toolinputpartial:Tv,toolresult:Fv,toolcancelled:Ev,hostcontextchanged:Lv};static ONE_SHOT_EVENTS=new Set([`toolinput`,`toolinputpartial`,`toolresult`,`toolcancelled`]);_everHadListener=new Set;_assertHandlerTiming(t){if(!e.ONE_SHOT_EVENTS.has(t)||this._everHadListener.has(t)||(this._everHadListener.add(t),!this._initializedSent))return;let n=`[ext-apps] "${String(t)}" handler registered after connect() completed the ui/initialize handshake. The host may have already sent this notification. Register handlers before calling app.connect().`;if(this.options?.strict)throw Error(n);console.warn(n)}setEventHandler(e,t){t&&this._assertHandlerTiming(e),super.setEventHandler(e,t)}addEventListener(e,t){this._assertHandlerTiming(e),super.addEventListener(e,t)}onEventDispatch(e,t){e===`hostcontextchanged`&&(this._hostContext={...this._hostContext,...t})}constructor(e,t={},n={autoResize:!0}){super(n),this._appInfo=e,this._capabilities=t,this.options=n,n.allowUnsafeEval||a({jitless:!0}),this.setRequestHandler(cg,e=>(console.log(`Received ping:`,e.params),{})),this.setEventHandler(`hostcontextchanged`,void 0)}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after transport is established`);this._capabilities=cv(this._capabilities,e)}registerTool(e,t,n){if(this._registeredTools[e])throw Error(`Tool ${e} is already registered`);let r=this,i=()=>{r._initializedSent&&r._capabilities.tools?.listChanged&&r.sendToolListChanged()},a=t.inputSchema!==void 0,o={title:t.title,description:t.description,inputSchema:t.inputSchema,outputSchema:t.outputSchema,annotations:t.annotations,_meta:t._meta,enabled:!0,enable(){this.enabled=!0,i()},disable(){this.enabled=!1,i()},update(e){Object.assign(this,e),i()},remove(){r._registeredTools[e]===o&&(delete r._registeredTools[e],i())},handler:async(t,r)=>{if(!o.enabled)throw Error(`Tool ${e} is disabled`);let i;if(a){let a=o.inputSchema;i=await n(a?await Vv(a,t??{},`Invalid input for tool ${e}: `):t??{},r)}else i=await n(r);return o.outputSchema&&!i.isError&&(i.structuredContent=await Vv(o.outputSchema,i.structuredContent,`Invalid output for tool ${e}: `)),i}};return this._registeredTools[e]=o,!this._capabilities.tools&&!this.transport&&this.registerCapabilities({tools:{listChanged:!0}}),this.ensureToolHandlersInitialized(),i(),o}_toolHandlersInitialized=!1;ensureToolHandlersInitialized(){this._toolHandlersInitialized||(this._toolHandlersInitialized=!0,this.oncalltool=async(e,t)=>{let n=this._registeredTools[e.name];if(!n)throw Error(`Tool ${e.name} not found`);return n.handler(e.arguments,t)},this.onlisttools=async(e,t)=>({tools:await Promise.all(Object.entries(this._registeredTools).filter(([e,t])=>t.enabled).map(async([e,t])=>{let n={name:e,title:t.title,description:t.description,inputSchema:t.inputSchema?await Bv(t.inputSchema,`input`):{type:`object`,properties:{}}};return t.outputSchema&&(n.outputSchema=await Bv(t.outputSchema,`output`)),t.annotations&&(n.annotations=t.annotations),t._meta&&(n._meta=t._meta),n}))}))}async sendToolListChanged(e={}){this._assertInitialized(`sendToolListChanged`),await this.notification({method:`notifications/tools/list_changed`,params:e})}getHostCapabilities(){return this._hostCapabilities}getHostVersion(){return this._hostInfo}getHostContext(){return this._hostContext}get ontoolinput(){return this.getEventHandler(`toolinput`)}set ontoolinput(e){this.setEventHandler(`toolinput`,e)}get ontoolinputpartial(){return this.getEventHandler(`toolinputpartial`)}set ontoolinputpartial(e){this.setEventHandler(`toolinputpartial`,e)}get ontoolresult(){return this.getEventHandler(`toolresult`)}set ontoolresult(e){this.setEventHandler(`toolresult`,e)}get ontoolcancelled(){return this.getEventHandler(`toolcancelled`)}set ontoolcancelled(e){this.setEventHandler(`toolcancelled`,e)}get onhostcontextchanged(){return this.getEventHandler(`hostcontextchanged`)}set onhostcontextchanged(e){this.setEventHandler(`hostcontextchanged`,e)}_onteardown;get onteardown(){return this._onteardown}set onteardown(e){this.warnIfRequestHandlerReplaced(`onteardown`,this._onteardown,e),this._onteardown=e,this.replaceRequestHandler(kv,(e,t)=>{if(!this._onteardown)throw Error(`No onteardown handler set`);return this._onteardown(e.params,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.replaceRequestHandler(y_,(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}_onlisttools;get onlisttools(){return this._onlisttools}set onlisttools(e){this.warnIfRequestHandlerReplaced(`onlisttools`,this._onlisttools,e),this._onlisttools=e,this.replaceRequestHandler(h_,(e,t)=>{if(!this._onlisttools)throw Error(`No onlisttools handler set`);return this._onlisttools(e.params,t)})}assertCapabilityForMethod(e){switch(e){case`sampling/createMessage`:if(!this._hostCapabilities?.sampling)throw Error(`Host does not support sampling (required for ${e})`);break}}assertRequestHandlerCapability(e){switch(e){case`tools/call`:case`tools/list`:if(!this._capabilities.tools)throw Error(`Client does not support tool capability (required for ${e})`);return;case`ping`:case`ui/resource-teardown`:return;default:throw Error(`No handler for method ${e} registered`)}}assertNotificationCapability(e){}assertTaskCapability(e){throw Error(`Tasks are not supported in MCP Apps`)}assertTaskHandlerCapability(e){throw Error(`Task handlers are not supported in MCP Apps`)}async callServerTool(e,t){if(this._assertInitialized(`callServerTool`),typeof e==`string`)throw Error(`callServerTool() expects an object as its first argument, but received a string ("${e}"). Did you mean: callServerTool({ name: "${e}", arguments: { ... } })?`);return await this.request({method:`tools/call`,params:e},__,{onprogress:()=>{},resetTimeoutOnProgress:!0,...t})}async readServerResource(e,t){return this._assertInitialized(`readServerResource`),await this.request({method:`resources/read`,params:e},Hg,t)}async listServerResources(e,t){return this._assertInitialized(`listServerResources`),await this.request({method:`resources/list`,params:e},Ig,t)}async createSamplingMessage(e,t){this._assertInitialized(`createSamplingMessage`);let n=e.tools?F_:P_;return await this.request({method:`sampling/createMessage`,params:e},n,t)}sendMessage(e,t){return this._assertInitialized(`sendMessage`),this.request({method:`ui/message`,params:e},xv,t)}sendLog(e){return this.notification({method:`notifications/message`,params:e})}updateModelContext(e,t){return this._assertInitialized(`updateModelContext`),this.request({method:`ui/update-model-context`,params:e},qh,t)}openLink(e,t){return this._assertInitialized(`openLink`),this.request({method:`ui/open-link`,params:e},yv,t)}sendOpenLink=this.openLink;downloadFile(e,t){return this._assertInitialized(`downloadFile`),this.request({method:`ui/download-file`,params:e},bv,t)}requestTeardown(e={}){return this.notification({method:`ui/notifications/request-teardown`,params:e})}requestDisplayMode(e,t){return this._assertInitialized(`requestDisplayMode`),this.request({method:`ui/request-display-mode`,params:e},Nv,t)}sendSizeChanged(e){return this.notification({method:`ui/notifications/size-changed`,params:e})}setupSizeChangedNotifications(){let e=!1,t=0,n=0,r=()=>{e||(e=!0,requestAnimationFrame(()=>{e=!1;let r=document.documentElement,i=r.style.height;r.style.height=`max-content`;let a=Math.ceil(r.getBoundingClientRect().height);r.style.height=i;let o=Math.ceil(window.innerWidth);(o!==t||a!==n)&&(t=o,n=a,this.sendSizeChanged({width:o,height:a}))}))};r();let i=new ResizeObserver(r);return i.observe(document.documentElement),i.observe(document.body),()=>i.disconnect()}async connect(e=new hv(window.parent,window.parent),t){if(this.transport)throw Error(`App is already connected. Call close() before connecting again.`);this._initializedSent=!1,await super.connect(e);try{let e=await this.request({method:`ui/initialize`,params:{appCapabilities:this._capabilities,appInfo:this._appInfo,protocolVersion:mv}},Rv,t);if(e===void 0)throw Error(`Server sent invalid initialize result: ${e}`);this._hostCapabilities=e.hostCapabilities,this._hostInfo=e.hostInfo,this._hostContext=e.hostContext,await this.notification({method:`ui/notifications/initialized`}),this._initializedSent=!0,this.options?.autoResize&&this.setupSizeChangedNotifications()}catch(e){throw this.close(),e}}},Uv=null;function Wv(e){Uv=e}async function X(e,t=[]){if(!Uv)throw Error(`Bridge transport not initialized`);try{return await Uv(e,t)}catch(t){throw console.error(`Bridge Error [${e}]:`,t),t}}var Gv={en:{ai_status_offline:`AI Offline`,ai_status_online:`Local AI Online`,ai_status_cloud_online:`Cloud AI · {model}`,ai_status_cloud_offline:`Cloud AI offline · {model}`,ai_status_starting:`Checking AI...`,ai_status_model_missing:`AI: model not found`,study_question_original:`Original`,study_evaluation_model:`{model}`,nav_dashboard:`Dashboard`,nav_settings:`Settings`,dashboard_kicker:`Today in ZAM`,dashboard_title:`Learn deliberately.`,dashboard_subtitle:`Review what is due, open your knowledge map, or configure local AI and workspaces in Settings.`,lbl_due_reviews:`Due Reviews`,lbl_caught_up:`You're all caught up!`,dashboard_error:`Could not load your data`,lbl_domains:`Active Domains`,btn_start_session:`Start Learning Session`,lbl_translating:`Translating dynamically...`,placeholder_answer:`Type your conceptual answer here... (Ctrl+Enter to submit)`,btn_reveal_answer:`Submit & Reveal Answer`,lbl_ai_evaluating:`Reviewing your answer and generating feedback...`,lbl_ai_working:`(This may take a moment.)`,lbl_wait_warn:`⚠ Evaluation is taking longer than expected.`,btn_wait_keep:`Keep Waiting`,btn_wait_skip:`Skip Offline`,lbl_question_wait_warn:`⚠ Generating this question is taking longer than expected.`,btn_question_use_saved:`Use Saved Question`,lbl_ai_feedback_title:`ZAM Feedback`,lbl_reveal_title:`Reference Answer`,lbl_rating_instruction:`Rate your active recall honestly:`,lbl_rate_1:`Again`,lbl_rate_2:`Hard`,lbl_rate_3:`Good`,lbl_rate_4:`Easy`,btn_recall_reveal:`Reveal`,btn_recall_check:`Check answer`,btn_recall_finish:`End session`,lbl_recall_focus:`Focus: {domain}`,lbl_recall_summary:`{done} of {total} reviewed`,lbl_recall_summary_title:`Session summary`,lbl_recall_empty_title:`Nothing due`,btn_pause_session:`Pause & Exit Session`,lbl_generating_question:`Generating dynamic question...`,token:`Token`,concept:`Concept`,context:`Context`,source:`Source Reference`,bloom_level:`Bloom Level`,rating_again_shortcut:`(Shortcut: 1)`,rating_hard_shortcut:`(Shortcut: 2)`,rating_good_shortcut:`(Shortcut: 3)`,rating_easy_shortcut:`(Shortcut: 4)`,session_completed:`Learning Session Completed!`,session_completed_sub:`Great job completing this session! Your memory traces have been updated.`,btn_back_to_dashboard:`Back to Dashboard`,btn_open_graph:`Knowledge Map (3D)`,btn_open_settings:`Settings`,observer_title:`UI Observer`,observer_idle:`Load windows and choose one application window to observe.`,observer_loading:`Loading observable windows...`,observer_ready:`Selected: {title}`,observer_vision_checking:`Checking vision observation settings...`,observer_analyzing:`Capturing snapshot and asking the vision model...`,observer_done:`Observation saved. Latest report confidence: {confidence}`,observer_canceled:`Observation canceled.`,observer_error:`Observer error: {message}`,observer_vision_disabled:`Vision observation is disabled. Enable it with: zam settings set llm.vision.enabled true`,observer_vision_offline:`Vision endpoint is offline: {url}`,observer_vision_model_missing:`Vision model is not available: {model}`,observer_privacy_paused:`Privacy pause: this window is blocked by the privacy filter ({reason}).`,observer_privacy_option:`privacy pause`,observer_refresh:`Load Windows`,observer_analyze:`Snapshot & Analyze`,observer_cancel:`Cancel`,observer_empty:`No observable windows found.`,observer_select_initial:`No windows loaded yet`,observer_select_placeholder:`Select a window`,observer_history_title:`Observation Reports`,observer_history_refresh:`Refresh Reports`,observer_history_empty:`No observation reports yet.`,observer_history_loaded:`Loaded {count} observation report(s).`,observer_loop_start:`Start Loop`,observer_loop_stop:`Stop Loop`,observer_loop_idle:`Manual snapshots only.`,observer_loop_running:`Observer loop running. One snapshot at a time.`,observer_loop_waiting:`Observer loop running. Next snapshot in {seconds}s.`,observer_loop_stopped:`Observer loop stopped.`,observer_watch_start:`Start Watch`,observer_watch_stop:`Stop Watch`,observer_watch_idle:`Continuous watch is off.`,observer_watch_starting:`Starting continuous watch...`,observer_watch_running:`Watching {title} — {count} event(s).`,observer_watch_stopping:`Stopping continuous watch...`,observer_watch_stopped:`Continuous watch stopped.`,observer_watch_error:`Watch error: {message}`,graph_title:`Knowledge Graph (3D)`,graph_hint:`Drag to rotate • Click nodes to focus • Scroll to zoom`,graph_focus:`Focus`,graph_prereqs:`Bases (Prerequisites)`,graph_dependents:`Higher Abilities (Dependents)`,graph_no_card:`no personal card yet`,graph_refresh:`Refresh`,graph_domain_token_list_title:`All tokens in this domain`,setup_title:`Setup & Data`,settings_kicker:`Local configuration`,settings_title:`Settings`,settings_subtitle:`Configure this machine without forcing the same choices onto every workspace or device.`,settings_back:`Back to dashboard`,settings_system_title:`System`,settings_ai_title:`AI models`,settings_workspace_title:`Workspaces`,workspaces_help:`Register personal, team, family, or community work directories for this machine.`,settings_appearance_title:`Appearance`,settings_data_title:`Data`,settings_database:`Database`,settings_learning_profile:`Learning profile`,database_checking:`Checking…`,database_status_local:`Local SQLite · connected`,database_status_turso:`Turso · connected`,database_status_error:`Connection unavailable`,database_detail:`{location} · profile {profile} · {count} cards`,database_no_profile:`No active profile`,database_profile_option:`{profile} — {count} cards`,database_profile_switch_confirm:`Switch the active learning profile to "{profile}"?`,database_profile_switched:`Active profile: {profile} ({count} cards)`,database_refresh:`Refresh status`,settings_theme:`Theme`,theme_light:`Light`,theme_dark:`Dark`,btn_open_data_folder:`Open data folder`,btn_backup_db:`Back up database`,setup_backing_up:`Backing up database…`,setup_backed_up:`Backed up to {path}`,setup_remote_no_backup:`Your database syncs to the cloud ({target}) — no separate local backup needed.`,setup_backup_failed:`Backup failed: {message}`,setup_backup_failed_generic:`Backup failed.`,setup_open_folder_failed:`Could not open the data folder: {message}`,lbl_workspace:`Workspace`,btn_choose_workspace:`+ Add workspace…`,btn_open_terminal:`Open Terminal`,terminal_opening:`Opening terminal...`,terminal_opened:`Opened terminal in {workspace}`,terminal_open_failed:`Could not open terminal: {message}`,workspace_active:`active`,workspace_default_label:`Default workspace`,workspace_empty:`No workspace registered yet.`,workspace_kind:`{kind} workspace`,workspace_kind_personal:`Personal workspace`,workspace_kind_team:`Team workspace`,workspace_kind_family:`Family workspace`,workspace_kind_community:`Community workspace`,workspace_kind_organization:`Organization workspace`,workspace_kind_custom:`Custom workspace`,workspace_more:`{count} more workspace(s) hidden. Use the CLI for the full list.`,workspace_use:`Use`,workspace_open:`Terminal`,workspace_default_suffix:`(default)`,workspace_set:`Workspace set to {path}`,workspace_added:`Workspace added: {path}`,workspace_pick_failed:`Could not set workspace: {message}`,workspace_remove:`Remove`,workspace_remove_confirm:`Remove "{label}" from ZAM? Files and links in the folder will stay unchanged.`,workspace_removed:`Workspace removed: {label}`,workspace_remove_failed:`Could not remove workspace: {message}`,workspace_link_ok:`Skill link OK`,workspace_link_broken:`Skill link broken`,workspace_link_unmanaged:`Foreign skill folder`,workspace_repair:`Repair skill link`,workspace_repair_confirm:`The folder for "{label}" contains a skills/zam directory that ZAM did not create. Repair deletes it and replaces it with a link. Continue?`,workspace_repairing:`Repairing skill link…`,workspace_repaired:`Skill link repaired: {label}`,workspace_repair_failed:`Could not repair skill link: {message}`,lbl_app_version:`Version`,lbl_learning_model:`Learning model`,lbl_observer_model:`Observer model`,provider_ready:`ready`,provider_disabled:`disabled`,provider_offline:`offline`,provider_model_missing:`model missing`,provider_unsupported:`unsupported provider`,provider_local:`local`,provider_cloud:`cloud`,provider_unknown:`unknown`,btn_ai_config_open:`Configure`,btn_ai_config_close:`Close`,btn_add_ai_provider:`+ Add provider`,ai_config_loading:`Loading provider configuration...`,ai_config_failed:`Could not load provider configuration: {message}`,ai_provider_empty:`No providers configured yet.`,ai_provider_section_local:`Local`,ai_provider_section_cloud:`Cloud`,ai_provider_kind:`Provider type`,ai_provider_kind_local:`Local`,ai_provider_kind_cloud:`Cloud`,ai_provider_local_badge:`local`,ai_provider_cloud_badge:`cloud`,ai_provider_key_set:`key set`,ai_provider_key_missing:`key missing`,ai_provider_key_none:`no key`,ai_provider_edit:`Edit`,ai_provider_remove:`Remove`,ai_provider_remove_confirm:`Remove provider "{name}"?`,ai_provider_removed:`Removed provider "{name}"`,ai_provider_saved:`Saved provider "{name}"`,ai_provider_save_failed:`Could not save provider: {message}`,ai_provider_form_add_title:`Add provider`,ai_provider_form_edit_title:`Edit provider`,ai_provider_display_name:`Name`,ai_provider_url:`URL`,ai_provider_model:`Model`,ai_provider_model_local_hint:`Type the model name. If the endpoint lists models, you can pick one below.`,ai_provider_models_pick:`Pick from endpoint`,ai_provider_flavor:`API flavor`,ai_provider_local:`Runs on this computer`,ai_provider_local_hint:`Local model servers (FastFlowLM, Ollama, …) usually need no API key. ZAM can try to start the server automatically.`,ai_provider_cloud_hint_key:`Cloud APIs need an API key. Local providers do not use the key field.`,ai_provider_runner:`Local model server`,ai_provider_runner_hint:`The program that serves the model on this PC — not your coding agent.`,ai_provider_runner_auto:`Auto-detect`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`not detected`,ai_provider_api_key:`API key`,ai_provider_api_key_hint:`Write-only — stored locally, never synced`,ai_provider_cloud_hint:`Suggested model: {model}`,ai_provider_models_loading:`Loading models...`,ai_provider_models_empty:`No models listed by endpoint`,btn_ai_provider_save:`Save`,btn_ai_provider_cancel:`Cancel`,ai_role_bindings_title:`Role bindings`,ai_role_recall:`Learning (recall)`,ai_role_vision:`Observer (vision)`,ai_role_primary:`Primary`,ai_role_fallback:`Fallback`,ai_role_none:`(none)`,btn_ai_role_apply:`Apply`,ai_role_bound:`Role {role} updated`,ai_role_bind_failed:`Could not bind role: {message}`,ai_recall_anthropic_warn:`Anthropic Messages providers are not supported for learning sessions yet. Bind anyway?`,ai_vision_cloud_confirm:`Screenshots will be sent to {endpoint}. Enable vision observation and bind this cloud provider?`,ai_provider_referenced:`Still used by: {roles}`,btn_check_updates:`Check for updates`,btn_open_releases:`Releases`,version_unknown:`unknown`,update_checking:`Checking for updates...`,update_available:`Update available: {version}`,update_none:`You are on the latest version.`,update_failed:`Update check failed: {message}`,release_link_failed:`Could not open releases: {message}`,nav_content:`Learning Content`,content_title:`Learning Content Studio`,content_subtitle:`Manage your personal learning cards, search tokens, and curate active recall prompts.`,btn_new_card:`New Card`,lbl_search_placeholder:`Search questions, answers, categories, keys...`,lbl_category_filter:`Category`,lbl_all_categories:`All Categories`,lbl_all_contexts:`All Contexts`,lbl_no_context_default:`No context default`,lbl_no_context_assignment:`No context assignment`,lbl_empty_content:`No learning cards found. Create your first card!`,lbl_empty_content_btn:`Create First Card`,lbl_question:`Question`,lbl_answer:`Answer / Concept`,lbl_category:`Category`,lbl_title:`Title (display name)`,lbl_source_link:`Source Link`,lbl_more_settings:`More Settings`,lbl_context:`Context`,lbl_bloom_level:`Bloom Level`,lbl_symbiosis_mode:`Symbiosis Mode`,lbl_slug:`Technical Key (Slug)`,lbl_slug_hint:`Automatically generated after creation`,btn_save:`Save Card`,btn_remove:`Remove Card`,btn_delete:`Hard Delete Token`,lbl_confirm_remove_title:`Confirm Card Removal`,lbl_confirm_remove_desc:`Removing this card will clear your personal FSRS learning state and history for this token. Other users or the global token catalog remain unaffected.`,lbl_confirm_delete_title:`Confirm Global Token Deletion`,lbl_confirm_delete_desc:`Permanently deleting this token will destroy the knowledge concept, the personal cards of all users, and all review history across the database.`,lbl_delete_impact:`This action affects:`,lbl_impact_cards:`{count} card(s)`,lbl_impact_reviews:`{count} review log(s)`,lbl_impact_steps:`{count} session step(s)`,lbl_impact_skills:`{count} agent skill(s) updated`,lbl_confirm_action:`Confirm`,lbl_cancel_action:`Cancel`,lbl_card_saved_toast:`Card saved successfully!`,lbl_card_removed_toast:`Card removed successfully!`,lbl_card_deleted_toast:`Token deleted successfully!`,lbl_error_saving:`Failed to save card`,lbl_error_loading:`Failed to load learning content`,lbl_card_status_new:`New`,lbl_card_status_learning:`Learning`,lbl_card_status_review:`Review`,lbl_card_status_relearning:`Relearning`,lbl_card_status_not_started:`Not Started`,lbl_card_due:`Due`,lbl_card_not_due:`Not Due`,btn_import_curriculum:`Import Curriculum`,lbl_import_modal_title:`Import Curriculum Standard`,lbl_import_text:`Curriculum Text`,placeholder_import_text:`Paste curriculum text or syllabus bullets here...`,lbl_import_source:`Source URL / Reference`,lbl_import_category:`Target Category`,lbl_import_progress_status:`Generating cards...`,lbl_import_progress_detail:`This may take up to a minute depending on your local LLM speed.`,btn_import_submit:`Import`,toast_import_success:`Successfully imported {createdCount} new tokens and ensured {ensuredCount} cards!`,lbl_error_importing:`Failed to import curriculum`,btn_curriculum_wizard:`Curriculum Wizard`,lbl_curriculum_wizard_title:`Curriculum Wizard`,wizard_step_country:`Country`,wizard_step_region:`Region`,wizard_step_schoolType:`School Type`,wizard_step_grade:`Grade`,wizard_step_subject:`Subject`,wizard_step_track:`Track`,wizard_step_topic:`Topics`,wizard_btn_back:`Back`,wizard_btn_next:`Next`,wizard_no_options:`No options available yet for this selection.`,wizard_err_select_option:`Please select an option to continue.`,wizard_err_no_topics:`Please select at least one topic.`,wizard_topic_scope_note:`Cards are generated from the complete curriculum page for this subject (all of its topics). Precise per-topic import is coming in a future update — for now, topic selection helps you track what to cover next.`,wizard_resume_prompt:`Continue where you left off:`,wizard_btn_resume:`Continue`,wizard_btn_restart:`Start over`,lbl_curriculum_wizard_loading:`Loading…`,wizard_hours:`{hours} hrs`,btn_split:`Split`,lbl_split_modal_title:`Split Card`,lbl_original_card_title:`Original Card (Summarized application question)`,lbl_split_original_question:`Question`,lbl_split_original_concept:`Answer / Concept`,lbl_split_action_title:`After split completed:`,lbl_action_block:`Keep original card and block it (requires new cards first)`,lbl_action_remove:`Remove original card`,lbl_split_progress_status:`Generating atomic proposals...`,lbl_split_progress_detail:`This may take up to a minute depending on your local LLM speed.`,lbl_atomic_proposals_title:`Atomic Card Proposals (Minimum 2)`,btn_split_modal_submit:`Confirm Split`,btn_content_foundations_card:`Foundations`,lbl_foundations_modal_title:`Import Foundations`,lbl_foundations_progress_status:`Generating foundational proposals...`,lbl_foundations_progress_detail:`This may take up to a minute depending on your local LLM speed.`,lbl_foundations_atomic_title:`Foundational Card Proposals`,btn_foundations_modal_submit:`Confirm Import`,lbl_import_source_type:`Source Type`,lbl_import_source_uri:`File Path or URL`,btn_import_source_analyze:`Analyze`,lbl_source_extracted_preview:`Extracted Plain Text Preview`,lbl_delete:`Delete`,lbl_proposal_number:`Proposal #{n}`,lbl_foundational_proposal_number:`Foundational Proposal #{n}`,lbl_foundation_existing_badge:`Existing card will be linked`,lbl_foundation_new_badge:`New card suggestion`,lbl_include:`Include`,lbl_err_analyze_source_first:`Please analyze a source file, web link, or OCR scan first.`,lbl_err_min_split_proposals:`At least 2 complete card proposals are required to split a card.`,lbl_err_select_foundation:`Please select at least one prerequisite proposal card to import.`,lbl_err_enter_path_or_url:`Please enter a file path or URL to analyze.`,lbl_analyzing_source:`Analyzing source content, please wait…`,lbl_err_analysis_failed:`Analysis failed`,lbl_err_analysis_prefix:`Analysis error`,lbl_err_concept_required:`Answer / concept is required.`,lbl_err_category_required:`Category is required.`,lbl_err_import_context_required:`Curriculum text is required.`,lbl_err_original_context_required:`Question and answer are required for the original card.`,settings_context_title:`Knowledge Context`,settings_context_help:`Select the default knowledge context for this device.`,settings_context_label:`Default Context`,wizard_context_label:`Assign imported cards to context:`},de:{ai_status_offline:`KI offline`,ai_status_online:`Lokale KI online`,ai_status_cloud_online:`Cloud-KI · {model}`,ai_status_cloud_offline:`Cloud-KI offline · {model}`,ai_status_starting:`Prüfe KI...`,ai_status_model_missing:`KI: Modell fehlt`,study_question_original:`Urtext`,study_evaluation_model:`{model}`,nav_dashboard:`Übersicht`,nav_settings:`Einstellungen`,dashboard_kicker:`Heute in ZAM`,dashboard_title:`Bewusst lernen.`,dashboard_subtitle:`Wiederhole, was fällig ist, öffne dein Wissensnetz oder konfiguriere lokale KI und Arbeitsbereiche in den Einstellungen.`,lbl_due_reviews:`Anstehende Wiederholungen`,lbl_caught_up:`Du bist voll auf dem Laufenden!`,dashboard_error:`Deine Daten konnten nicht geladen werden`,lbl_domains:`Aktive Wissensbereiche`,btn_start_session:`Lernsitzung starten`,lbl_translating:`Übersetze dynamisch...`,placeholder_answer:`Schreibe deine konzeptionelle Antwort... (Strg+Eingabe zum Absenden)`,btn_reveal_answer:`Antwort aufdecken & absenden`,lbl_ai_evaluating:`Deine Antwort wird geprüft und Feedback wird erstellt...`,lbl_ai_working:`(Das kann einen Moment dauern.)`,lbl_wait_warn:`⚠ Die Bewertung dauert ungewöhnlich lange...`,btn_wait_keep:`Weiter warten`,btn_wait_skip:`Offline fortfahren`,lbl_question_wait_warn:`⚠ Das Erstellen der Frage dauert ungewöhnlich lange.`,btn_question_use_saved:`Gespeicherte Frage verwenden`,lbl_ai_feedback_title:`ZAM Feedback`,lbl_reveal_title:`Musterlösung`,lbl_rating_instruction:`Bewerte deine aktive Erinnerung ehrlich:`,lbl_rate_1:`Nochmal`,lbl_rate_2:`Schwer`,lbl_rate_3:`Gut`,lbl_rate_4:`Einfach`,btn_recall_reveal:`Aufdecken`,btn_recall_check:`Antwort prüfen`,btn_recall_finish:`Sitzung beenden`,lbl_recall_focus:`Fokus: {domain}`,lbl_recall_summary:`{done} von {total} bearbeitet`,lbl_recall_summary_title:`Zusammenfassung`,lbl_recall_empty_title:`Nichts fällig`,btn_pause_session:`Pause & Sitzung beenden`,lbl_generating_question:`Erstelle dynamische Frage...`,token:`Token`,concept:`Konzept`,context:`Kontext`,source:`Quellen-Referenz`,bloom_level:`Bloom-Stufe`,rating_again_shortcut:`(Shortcut: 1)`,rating_hard_shortcut:`(Shortcut: 2)`,rating_good_shortcut:`(Shortcut: 3)`,rating_easy_shortcut:`(Shortcut: 4)`,session_completed:`Lernsitzung erfolgreich abgeschlossen!`,session_completed_sub:`Hervorragende Arbeit! Deine Gedächtnispfade wurden aktualisiert.`,btn_back_to_dashboard:`Zurück zur Übersicht`,btn_open_graph:`Wissensnetz (3D)`,btn_open_settings:`Einstellungen`,observer_title:`UI Observer`,observer_idle:`Fenster laden und ein Anwendungsfenster zur Beobachtung auswählen.`,observer_loading:`Beobachtbare Fenster werden geladen...`,observer_ready:`Ausgewählt: {title}`,observer_vision_checking:`Prüfe Vision-Beobachtungseinstellungen...`,observer_analyzing:`Erzeuge Snapshot und frage das Vision-Modell...`,observer_done:`Beobachtung gespeichert. Confidence des letzten Reports: {confidence}`,observer_canceled:`Beobachtung abgebrochen.`,observer_error:`Observer-Fehler: {message}`,observer_vision_disabled:`Vision-Beobachtung ist deaktiviert. Aktiviere sie mit: zam settings set llm.vision.enabled true`,observer_vision_offline:`Vision-Endpunkt ist offline: {url}`,observer_vision_model_missing:`Vision-Modell ist nicht verfügbar: {model}`,observer_privacy_paused:`Privacy-Pause: Dieses Fenster wird durch den Privacy-Filter blockiert ({reason}).`,observer_privacy_option:`Privacy-Pause`,observer_refresh:`Fenster laden`,observer_analyze:`Snapshot analysieren`,observer_cancel:`Abbrechen`,observer_empty:`Keine beobachtbaren Fenster gefunden.`,observer_select_initial:`Noch keine Fenster geladen`,observer_select_placeholder:`Fenster auswählen`,observer_history_title:`Beobachtungsberichte`,observer_history_refresh:`Berichte aktualisieren`,observer_history_empty:`Noch keine Beobachtungsberichte.`,observer_history_loaded:`{count} Beobachtungsbericht(e) geladen.`,observer_loop_start:`Loop starten`,observer_loop_stop:`Loop stoppen`,observer_loop_idle:`Nur manuelle Snapshots.`,observer_loop_running:`Observer-Loop läuft. Immer nur ein Snapshot gleichzeitig.`,observer_loop_waiting:`Observer-Loop läuft. Nächster Snapshot in {seconds}s.`,observer_loop_stopped:`Observer-Loop gestoppt.`,observer_watch_start:`Watch starten`,observer_watch_stop:`Watch stoppen`,observer_watch_idle:`Kontinuierliche Beobachtung ist aus.`,observer_watch_starting:`Kontinuierliche Beobachtung wird gestartet...`,observer_watch_running:`Beobachte {title} — {count} Ereignis(se).`,observer_watch_stopping:`Kontinuierliche Beobachtung wird gestoppt...`,observer_watch_stopped:`Kontinuierliche Beobachtung gestoppt.`,observer_watch_error:`Watch-Fehler: {message}`,graph_title:`Wissensnetz (3D)`,graph_hint:`Ziehen zum Drehen • Knoten klicken = Fokus • Scroll = Zoomen`,graph_focus:`Fokus`,graph_prereqs:`Basis (Voraussetzungen)`,graph_dependents:`Höhere Fähigkeiten (Darauf aufbauend)`,graph_no_card:`noch keine persönliche Karte`,graph_refresh:`Neu laden`,graph_domain_token_list_title:`Alle Tokens in diesem Bereich`,setup_title:`Einrichtung & Daten`,settings_kicker:`Lokale Konfiguration`,settings_title:`Einstellungen`,settings_subtitle:`Konfiguriere diesen Rechner, ohne dieselben Entscheidungen auf jeden Arbeitsbereich oder jedes Gerät zu übertragen.`,settings_back:`Zurück zur Übersicht`,settings_system_title:`System`,settings_ai_title:`KI-Modelle`,settings_workspace_title:`Arbeitsbereiche`,workspaces_help:`Registriere persönliche, Team-, Familien- oder Community-Arbeitsverzeichnisse für diesen Rechner.`,settings_appearance_title:`Darstellung`,settings_data_title:`Daten`,settings_database:`Datenbank`,settings_learning_profile:`Lernprofil`,database_checking:`Wird geprüft…`,database_status_local:`Lokales SQLite · verbunden`,database_status_turso:`Turso · verbunden`,database_status_error:`Verbindung nicht verfügbar`,database_detail:`{location} · Profil {profile} · {count} Karten`,database_no_profile:`Kein aktives Profil`,database_profile_option:`{profile} — {count} Karten`,database_profile_switch_confirm:`Aktives Lernprofil zu „{profile}“ wechseln?`,database_profile_switched:`Aktives Profil: {profile} ({count} Karten)`,database_refresh:`Status aktualisieren`,settings_theme:`Theme`,theme_light:`Hell`,theme_dark:`Dunkel`,btn_open_data_folder:`Datenordner öffnen`,btn_backup_db:`Datenbank sichern`,setup_backing_up:`Datenbank wird gesichert…`,setup_backed_up:`Gesichert nach {path}`,setup_remote_no_backup:`Deine Datenbank synchronisiert in die Cloud ({target}) — kein separates lokales Backup nötig.`,setup_backup_failed:`Sicherung fehlgeschlagen: {message}`,setup_backup_failed_generic:`Sicherung fehlgeschlagen.`,setup_open_folder_failed:`Datenordner konnte nicht geöffnet werden: {message}`,btn_choose_workspace:`+ Arbeitsbereich hinzufügen…`,btn_open_terminal:`Terminal öffnen`,terminal_opening:`Terminal wird geöffnet...`,terminal_opened:`Terminal in {workspace} geöffnet`,terminal_open_failed:`Terminal konnte nicht geöffnet werden: {message}`,workspace_active:`aktiv`,workspace_default_label:`Standard-Arbeitsbereich`,workspace_empty:`Noch kein Arbeitsbereich registriert.`,workspace_kind:`{kind}-Arbeitsbereich`,workspace_kind_personal:`Persönlicher Arbeitsbereich`,workspace_kind_team:`Team-Arbeitsbereich`,workspace_kind_family:`Familien-Arbeitsbereich`,workspace_kind_community:`Community-Arbeitsbereich`,workspace_kind_organization:`Organisations-Arbeitsbereich`,workspace_kind_custom:`Benutzerdefinierter Arbeitsbereich`,workspace_more:`{count} weitere Arbeitsbereiche ausgeblendet. Die vollständige Liste ist in der CLI.`,workspace_use:`Nutzen`,workspace_open:`Terminal`,workspace_default_suffix:`(Standard)`,workspace_set:`Arbeitsbereich gesetzt: {path}`,workspace_added:`Arbeitsbereich hinzugefügt: {path}`,workspace_pick_failed:`Arbeitsbereich konnte nicht gesetzt werden: {message}`,workspace_remove:`Entfernen`,workspace_remove_confirm:`"{label}" aus ZAM entfernen? Dateien und Verknüpfungen im Ordner bleiben unverändert.`,workspace_removed:`Arbeitsbereich entfernt: {label}`,workspace_remove_failed:`Arbeitsbereich konnte nicht entfernt werden: {message}`,workspace_link_ok:`Skill-Link OK`,workspace_link_broken:`Skill-Link defekt`,workspace_link_unmanaged:`Fremder Skill-Ordner`,workspace_repair:`Skill-Link reparieren`,workspace_repair_confirm:`Im Ordner von "{label}" liegt ein skills/zam-Verzeichnis, das nicht von ZAM stammt. Beim Reparieren wird es gelöscht und durch eine Verknüpfung ersetzt. Fortfahren?`,workspace_repairing:`Skill-Link wird repariert…`,workspace_repaired:`Skill-Link repariert: {label}`,workspace_repair_failed:`Skill-Link konnte nicht repariert werden: {message}`,lbl_app_version:`Version`,lbl_learning_model:`Lernmodell`,lbl_observer_model:`Observer-Modell`,provider_ready:`bereit`,provider_disabled:`deaktiviert`,provider_offline:`offline`,provider_model_missing:`Modell fehlt`,provider_unsupported:`Provider nicht unterstützt`,provider_local:`lokal`,provider_cloud:`Cloud`,provider_unknown:`unbekannt`,btn_ai_config_open:`Konfigurieren`,btn_ai_config_close:`Schließen`,btn_add_ai_provider:`+ Provider hinzufügen`,ai_config_loading:`Provider-Konfiguration wird geladen...`,ai_config_failed:`Provider-Konfiguration konnte nicht geladen werden: {message}`,ai_provider_empty:`Noch keine Provider konfiguriert.`,ai_provider_section_local:`Lokal`,ai_provider_section_cloud:`Cloud`,ai_provider_kind:`Provider-Typ`,ai_provider_kind_local:`Lokal`,ai_provider_kind_cloud:`Cloud`,ai_provider_local_badge:`lokal`,ai_provider_cloud_badge:`Cloud`,ai_provider_key_set:`Schlüssel gesetzt`,ai_provider_key_missing:`Schlüssel fehlt`,ai_provider_key_none:`kein Schlüssel`,ai_provider_edit:`Bearbeiten`,ai_provider_remove:`Entfernen`,ai_provider_remove_confirm:`Provider "{name}" entfernen?`,ai_provider_removed:`Provider "{name}" entfernt`,ai_provider_saved:`Provider "{name}" gespeichert`,ai_provider_save_failed:`Provider konnte nicht gespeichert werden: {message}`,ai_provider_form_add_title:`Provider hinzufügen`,ai_provider_form_edit_title:`Provider bearbeiten`,ai_provider_display_name:`Name`,ai_provider_url:`URL`,ai_provider_model:`Modell`,ai_provider_model_local_hint:`Modellnamen eintippen. Listet der Endpunkt Modelle, kannst du unten eines wählen.`,ai_provider_models_pick:`Vom Endpunkt übernehmen`,ai_provider_flavor:`API-Variante`,ai_provider_local:`Läuft auf diesem Rechner`,ai_provider_local_hint:`Lokale Modell-Server (FastFlowLM, Ollama, …) brauchen meist keinen API-Schlüssel. ZAM kann den Server automatisch starten.`,ai_provider_cloud_hint_key:`Cloud-APIs brauchen einen API-Schlüssel. Lokale Provider nutzen das Schlüsselfeld nicht.`,ai_provider_runner:`Lokaler Modell-Server`,ai_provider_runner_hint:`Das Programm, das das Modell auf diesem PC bereitstellt — nicht der Coding-Agent.`,ai_provider_runner_auto:`Automatisch erkennen`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`nicht erkannt`,ai_provider_api_key:`API-Schlüssel`,ai_provider_api_key_hint:`Nur Schreiben — lokal gespeichert, nie synchronisiert`,ai_provider_cloud_hint:`Vorgeschlagenes Modell: {model}`,ai_provider_models_loading:`Modelle werden geladen...`,ai_provider_models_empty:`Endpunkt listet keine Modelle`,btn_ai_provider_save:`Speichern`,btn_ai_provider_cancel:`Abbrechen`,ai_role_bindings_title:`Rollen-Zuordnung`,ai_role_recall:`Lernen (recall)`,ai_role_vision:`Observer (vision)`,ai_role_primary:`Primär`,ai_role_fallback:`Fallback`,ai_role_none:`(keiner)`,btn_ai_role_apply:`Anwenden`,ai_role_bound:`Rolle {role} aktualisiert`,ai_role_bind_failed:`Rolle konnte nicht zugeordnet werden: {message}`,ai_recall_anthropic_warn:`Anthropic-Messages-Provider werden für Lernsitzungen noch nicht unterstützt. Trotzdem zuordnen?`,ai_vision_cloud_confirm:`Screenshots werden an {endpoint} gesendet. Vision-Beobachtung aktivieren und diesen Cloud-Provider zuordnen?`,ai_provider_referenced:`Noch verwendet von: {roles}`,btn_check_updates:`Nach Updates suchen`,btn_open_releases:`Releases`,version_unknown:`unbekannt`,update_checking:`Suche nach Updates...`,update_available:`Update verfügbar: {version}`,update_none:`Du nutzt die aktuelle Version.`,update_failed:`Update-Prüfung fehlgeschlagen: {message}`,release_link_failed:`Releases konnten nicht geöffnet werden: {message}`,nav_content:`Lerninhalte`,content_title:`Lerninhalt-Studio`,content_subtitle:`Verwalte deine persönlichen Lernkarten, durchsuche Tokens und pflege aktive Erinnerungsfragen.`,btn_new_card:`Neue Karte`,lbl_search_placeholder:`Fragen, Antworten, Kategorien, Keys suchen...`,lbl_category_filter:`Kategorie`,lbl_all_categories:`Alle Kategorien`,lbl_all_contexts:`Alle Kontexte`,lbl_no_context_default:`Kein Kontextstandard`,lbl_no_context_assignment:`Keine Kontextzuordnung`,lbl_empty_content:`Keine Lernkarten gefunden. Erstelle deine erste karte!`,lbl_empty_content_btn:`Erste Karte erstellen`,lbl_question:`Frage`,lbl_answer:`Antwort / Konzept`,lbl_category:`Kategorie`,lbl_title:`Titel (Anzeigename)`,lbl_source_link:`Quell-Link`,lbl_more_settings:`Mehr Einstellungen`,lbl_context:`Kontext`,lbl_bloom_level:`Bloom-Level`,lbl_symbiosis_mode:`Symbiose-Modus`,lbl_slug:`Technischer Key (Slug)`,lbl_slug_hint:`Wird nach Erstellung automatisch generiert`,btn_save:`Karte speichern`,btn_remove:`Karte entfernen`,btn_delete:`Token dauerhaft löschen`,lbl_confirm_remove_title:`Kartenentfernung bestätigen`,lbl_confirm_remove_desc:`Das Entfernen dieser Karte löscht deinen persönlichen FSRS-Lernstatus und -Verlauf für diesen Token. Andere Benutzer oder der globale Token-Katalog bleiben unberührt.`,lbl_confirm_delete_title:`Globale Token-Löschung bestätigen`,lbl_confirm_delete_desc:`Das dauerhafte Löschen dieses Tokens zerstört das Wissenskonzept, die persönlichen Karten aller Benutzer und den gesamten Bewertungsverlauf in der Datenbank.`,lbl_delete_impact:`Diese Aktion betrifft:`,lbl_impact_cards:`{count} Karte(n)`,lbl_impact_reviews:`{count} Bewertungsprotokoll(e)`,lbl_impact_steps:`{count} Sessionschritt(e)`,lbl_impact_skills:`{count} Agenten-Skill(s) aktualisiert`,lbl_confirm_action:`Bestätigen`,lbl_cancel_action:`Abbrechen`,lbl_card_saved_toast:`Karte erfolgreich gespeichert!`,lbl_card_removed_toast:`Karte erfolgreich entfernt!`,lbl_card_deleted_toast:`Token erfolgreich gelöscht!`,lbl_error_saving:`Karte konnte nicht gespeichert werden`,lbl_error_loading:`Lerninhalte konnten nicht geladen werden`,lbl_card_status_new:`Neu`,lbl_card_status_learning:`Lernen`,lbl_card_status_review:`Wiederholen`,lbl_card_status_relearning:`Wiederlernen`,lbl_card_status_not_started:`Nicht gestartet`,lbl_card_due:`Fällig`,lbl_card_not_due:`Nicht fällig`,btn_import_curriculum:`Lehrplan importieren`,lbl_import_modal_title:`Lehrplan-Standard importieren`,lbl_import_text:`Lehrplantext`,placeholder_import_text:`Lehrplantext oder Lehrplanpunkte hier einfügen...`,lbl_import_source:`Quell-URL / Referenz`,lbl_import_category:`Zielkategorie`,lbl_import_progress_status:`Karten werden generiert...`,lbl_import_progress_detail:`Dies kann je nach Geschwindigkeit der lokalen KI bis zu einer Minute dauern.`,btn_import_submit:`Importieren`,toast_import_success:`Erfolgreich {createdCount} neue Token importiert und {ensuredCount} Karten sichergestellt!`,lbl_error_importing:`Lehrplan konnte nicht importiert werden`,btn_curriculum_wizard:`Lehrplan-Assistent`,lbl_curriculum_wizard_title:`Lehrplan-Assistent`,wizard_step_country:`Land`,wizard_step_region:`Bundesland`,wizard_step_schoolType:`Schulform`,wizard_step_grade:`Jahrgangsstufe`,wizard_step_subject:`Fach`,wizard_step_track:`Ausprägung`,wizard_step_topic:`Themen`,wizard_btn_back:`Zurück`,wizard_btn_next:`Weiter`,wizard_no_options:`Für diese Auswahl sind noch keine Optionen verfügbar.`,wizard_err_select_option:`Bitte wähle eine Option, um fortzufahren.`,wizard_err_no_topics:`Bitte wähle mindestens ein Thema aus.`,wizard_topic_scope_note:`Die Karten werden aus der vollständigen Lehrplanseite dieses Fachs erstellt (alle Themen). Die präzise Auswahl nur der markierten Themen kommt mit einem künftigen Update — bis dahin hilft dir die Auswahl, den Überblick zu behalten, was als Nächstes drankommt.`,wizard_resume_prompt:`Dort weitermachen, wo du aufgehört hast:`,wizard_btn_resume:`Fortfahren`,wizard_btn_restart:`Neu beginnen`,lbl_curriculum_wizard_loading:`Lädt…`,wizard_hours:`{hours} Std.`,btn_split:`Aufteilen`,lbl_split_modal_title:`Karte aufteilen`,lbl_original_card_title:`Originalkarte (Zusammenfassende Anwendungsfrage)`,lbl_split_original_question:`Frage`,lbl_split_original_concept:`Antwort / Konzept`,lbl_split_action_title:`Nach dem Aufteilen:`,lbl_action_block:`Originalkarte behalten und blockieren (erfordert zuerst neue Karten)`,lbl_action_remove:`Originalkarte entfernen`,lbl_split_progress_status:`Atomare Vorschläge werden generiert...`,lbl_split_progress_detail:`Dies kann je nach Geschwindigkeit der lokalen KI bis zu einer Minute dauern.`,lbl_atomic_proposals_title:`Atomare Kartenvorschläge (Mindestens 2)`,btn_split_modal_submit:`Aufteilung bestätigen`,btn_content_foundations_card:`Fundamente`,lbl_foundations_modal_title:`Fundamente importieren`,lbl_foundations_progress_status:`Fundamentvorschläge werden generiert...`,lbl_foundations_progress_detail:`Dies kann je nach Geschwindigkeit der lokalen KI bis zu einer Minute dauern.`,lbl_foundations_atomic_title:`Fundamentale Kartenvorschläge`,btn_foundations_modal_submit:`Import bestätigen`,lbl_import_source_type:`Quelltyp`,lbl_import_source_uri:`Dateipfad oder URL`,btn_import_source_analyze:`Analysieren`,lbl_source_extracted_preview:`Extrahierte Textvorschau`,lbl_delete:`Löschen`,lbl_proposal_number:`Vorschlag Nr. {n}`,lbl_foundational_proposal_number:`Grundlagen-Vorschlag Nr. {n}`,lbl_foundation_existing_badge:`Bestehende Karte wird verknüpft`,lbl_foundation_new_badge:`Neuer Kartenvorschlag`,lbl_include:`Einschließen`,lbl_err_analyze_source_first:`Bitte zuerst eine Quelldatei, einen Weblink oder einen OCR-Scan analysieren.`,lbl_err_min_split_proposals:`Für das Aufteilen einer Karte sind mindestens 2 vollständige Kartenvorschläge erforderlich.`,lbl_err_select_foundation:`Bitte wähle mindestens eine Grundlagen-Vorschlagskarte zum Importieren aus.`,lbl_err_enter_path_or_url:`Bitte gib einen Dateipfad oder eine URL zur Analyse ein.`,lbl_analyzing_source:`Quellinhalt wird analysiert, bitte warten…`,lbl_err_analysis_failed:`Analyse fehlgeschlagen`,lbl_err_analysis_prefix:`Analysefehler`,lbl_err_concept_required:`Antwort / Lerninhalt ist erforderlich.`,lbl_err_category_required:`Kategorie ist erforderlich.`,lbl_err_import_context_required:`Lehrplantext ist erforderlich.`,lbl_err_original_context_required:`Frage und Antwort sind für die Originalkarte erforderlich.`,settings_context_title:`Wissenskontext`,settings_context_help:`Wähle den Standard-Wissenskontext für dieses Gerät.`,settings_context_label:`Standard-Kontext`,wizard_context_label:`Importierte Karten dem Kontext zuweisen:`},es:{ai_status_offline:`IA desconectada`,ai_status_online:`IA local en línea`,ai_status_cloud_online:`IA en la nube · {model}`,ai_status_cloud_offline:`IA en la nube desconectada · {model}`,ai_status_starting:`Comprobando IA...`,ai_status_model_missing:`IA: modelo no encontrado`,study_question_original:`Original`,study_evaluation_model:`{model}`,nav_dashboard:`Panel`,nav_settings:`Ajustes`,dashboard_kicker:`Hoy en ZAM`,dashboard_title:`Aprende con intención.`,dashboard_subtitle:`Repasa lo que toca, abre tu mapa de conocimiento o configura la IA local y los espacios de trabajo en Ajustes.`,lbl_due_reviews:`Repasos pendientes`,lbl_caught_up:`¡Estás al día!`,dashboard_error:`No se pudieron cargar tus datos`,lbl_domains:`Dominios activos`,btn_start_session:`Iniciar sesión de aprendizaje`,lbl_translating:`Traduciendo dinámicamente...`,placeholder_answer:`Escribe aquí tu respuesta conceptual... (Ctrl+Intro para enviar)`,btn_reveal_answer:`Enviar y mostrar respuesta`,lbl_ai_evaluating:`Revisando tu respuesta y generando comentarios...`,lbl_ai_working:`(Esto puede tardar un momento.)`,lbl_wait_warn:`⚠ La evaluación está tardando más de lo esperado.`,btn_wait_keep:`Seguir esperando`,btn_wait_skip:`Omitir sin conexión`,lbl_question_wait_warn:`⚠ La generación de la pregunta está tardando más de lo esperado.`,btn_question_use_saved:`Usar pregunta guardada`,lbl_ai_feedback_title:`Comentarios de ZAM`,lbl_reveal_title:`Respuesta de referencia`,lbl_rating_instruction:`Califica tu recuerdo activo con honestidad:`,lbl_rate_1:`Otra vez`,lbl_rate_2:`Difícil`,lbl_rate_3:`Bien`,lbl_rate_4:`Fácil`,btn_recall_reveal:`Mostrar`,btn_recall_check:`Comprobar respuesta`,btn_recall_finish:`Finalizar sesión`,lbl_recall_focus:`Enfoque: {domain}`,lbl_recall_summary:`{done} de {total} revisadas`,lbl_recall_summary_title:`Resumen de la sesión`,lbl_recall_empty_title:`Nada pendiente`,btn_pause_session:`Pausar y salir de la sesión`,lbl_generating_question:`Generando pregunta dinámica...`,token:`Token`,concept:`Concepto`,context:`Contexto`,source:`Referencia de origen`,bloom_level:`Nivel Bloom`,rating_again_shortcut:`(Atajo: 1)`,rating_hard_shortcut:`(Atajo: 2)`,rating_good_shortcut:`(Atajo: 3)`,rating_easy_shortcut:`(Atajo: 4)`,session_completed:`¡Sesión de aprendizaje completada!`,session_completed_sub:`¡Buen trabajo al completar esta sesión! Tus trazas de memoria se han actualizado.`,btn_back_to_dashboard:`Volver al panel`,btn_open_graph:`Mapa de conocimiento (3D)`,btn_open_settings:`Ajustes`,observer_title:`Observador de IU`,observer_idle:`Carga las ventanas y elige una ventana de aplicación para observar.`,observer_loading:`Cargando ventanas observables...`,observer_ready:`Seleccionada: {title}`,observer_vision_checking:`Comprobando los ajustes de observación por visión...`,observer_analyzing:`Capturando una instantánea y consultando al modelo de visión...`,observer_done:`Observación guardada. Confianza del último informe: {confidence}`,observer_canceled:`Observación cancelada.`,observer_error:`Error del observador: {message}`,observer_vision_disabled:`La observación por visión está desactivada. Actívala con: zam settings set llm.vision.enabled true`,observer_vision_offline:`El punto de conexión de visión está fuera de línea: {url}`,observer_vision_model_missing:`El modelo de visión no está disponible: {model}`,observer_privacy_paused:`Pausa de privacidad: el filtro de privacidad bloquea esta ventana ({reason}).`,observer_privacy_option:`pausa de privacidad`,observer_refresh:`Cargar ventanas`,observer_analyze:`Instantánea y análisis`,observer_cancel:`Cancelar`,observer_empty:`No se encontraron ventanas observables.`,observer_select_initial:`Aún no hay ventanas cargadas`,observer_select_placeholder:`Selecciona una ventana`,observer_history_title:`Informes de observación`,observer_history_refresh:`Actualizar informes`,observer_history_empty:`Aún no hay informes de observación.`,observer_history_loaded:`Se cargaron {count} informe(s) de observación.`,observer_loop_start:`Iniciar bucle`,observer_loop_stop:`Detener bucle`,observer_loop_idle:`Solo instantáneas manuales.`,observer_loop_running:`Bucle del observador en marcha. Una instantánea cada vez.`,observer_loop_waiting:`Bucle del observador en marcha. Próxima instantánea en {seconds}s.`,observer_loop_stopped:`Bucle del observador detenido.`,observer_watch_start:`Iniciar vigilancia`,observer_watch_stop:`Detener vigilancia`,observer_watch_idle:`La vigilancia continua está desactivada.`,observer_watch_starting:`Iniciando vigilancia continua...`,observer_watch_running:`Vigilando {title} — {count} evento(s).`,observer_watch_stopping:`Deteniendo vigilancia continua...`,observer_watch_stopped:`Vigilancia continua detenida.`,observer_watch_error:`Error de vigilancia: {message}`,graph_title:`Grafo de conocimiento (3D)`,graph_hint:`Arrastra para rotar • Clic en los nodos para enfocar • Desplázate para hacer zoom`,graph_focus:`Enfoque`,graph_prereqs:`Bases (requisitos previos)`,graph_dependents:`Capacidades superiores (dependientes)`,graph_no_card:`aún sin tarjeta personal`,graph_refresh:`Actualizar`,graph_domain_token_list_title:`Todos los tokens de este dominio`,setup_title:`Configuración y datos`,settings_kicker:`Configuración local`,settings_title:`Ajustes`,settings_subtitle:`Configura este equipo sin imponer las mismas decisiones a cada espacio de trabajo o dispositivo.`,settings_back:`Volver al panel`,settings_system_title:`Sistema`,settings_ai_title:`Modelos de IA`,settings_workspace_title:`Espacios de trabajo`,workspaces_help:`Registra directorios de trabajo personales, de equipo, familiares o de comunidad para este equipo.`,settings_appearance_title:`Apariencia`,settings_data_title:`Datos`,settings_database:`Base de datos`,settings_learning_profile:`Perfil de aprendizaje`,database_checking:`Comprobando…`,database_status_local:`SQLite local · conectado`,database_status_turso:`Turso · conectado`,database_status_error:`Conexión no disponible`,database_detail:`{location} · perfil {profile} · {count} tarjetas`,database_no_profile:`Sin perfil activo`,database_profile_option:`{profile} — {count} tarjetas`,database_profile_switch_confirm:`¿Cambiar el perfil de aprendizaje activo a «{profile}»?`,database_profile_switched:`Perfil activo: {profile} ({count} tarjetas)`,database_refresh:`Actualizar estado`,settings_theme:`Tema`,theme_light:`Claro`,theme_dark:`Oscuro`,btn_open_data_folder:`Abrir carpeta de datos`,btn_backup_db:`Hacer copia de la base de datos`,setup_backing_up:`Haciendo copia de la base de datos…`,setup_backed_up:`Copia guardada en {path}`,setup_remote_no_backup:`Tu base de datos se sincroniza con la nube ({target}); no hace falta una copia local aparte.`,setup_backup_failed:`La copia falló: {message}`,setup_backup_failed_generic:`La copia falló.`,setup_open_folder_failed:`No se pudo abrir la carpeta de datos: {message}`,lbl_workspace:`Espacio de trabajo`,btn_choose_workspace:`+ Añadir espacio de trabajo…`,btn_open_terminal:`Abrir terminal`,terminal_opening:`Abriendo terminal...`,terminal_opened:`Terminal abierta en {workspace}`,terminal_open_failed:`No se pudo abrir la terminal: {message}`,workspace_active:`activo`,workspace_default_label:`Espacio de trabajo predeterminado`,workspace_empty:`Aún no hay ningún espacio de trabajo registrado.`,workspace_kind:`Espacio de trabajo {kind}`,workspace_kind_personal:`Espacio de trabajo personal`,workspace_kind_team:`Espacio de trabajo de equipo`,workspace_kind_family:`Espacio de trabajo familiar`,workspace_kind_community:`Espacio de trabajo de comunidad`,workspace_kind_organization:`Espacio de trabajo de organización`,workspace_kind_custom:`Espacio de trabajo personalizado`,workspace_more:`{count} espacio(s) de trabajo más ocultos. Usa la CLI para ver la lista completa.`,workspace_use:`Usar`,workspace_open:`Terminal`,workspace_default_suffix:`(predeterminado)`,workspace_set:`Espacio de trabajo establecido en {path}`,workspace_added:`Espacio de trabajo añadido: {path}`,workspace_pick_failed:`No se pudo establecer el espacio de trabajo: {message}`,workspace_remove:`Quitar`,workspace_remove_confirm:`¿Quitar "{label}" de ZAM? Los archivos y enlaces de la carpeta permanecerán sin cambios.`,workspace_removed:`Espacio de trabajo quitado: {label}`,workspace_remove_failed:`No se pudo quitar el espacio de trabajo: {message}`,workspace_link_ok:`Enlace de skill correcto`,workspace_link_broken:`Enlace de skill roto`,workspace_link_unmanaged:`Carpeta de skill externa`,workspace_repair:`Reparar enlace de skill`,workspace_repair_confirm:`La carpeta de "{label}" contiene un directorio skills/zam que ZAM no creó. Reparar lo elimina y lo reemplaza por un enlace. ¿Continuar?`,workspace_repairing:`Reparando enlace de skill…`,workspace_repaired:`Enlace de skill reparado: {label}`,workspace_repair_failed:`No se pudo reparar el enlace de skill: {message}`,lbl_app_version:`Versión`,lbl_learning_model:`Modelo de aprendizaje`,lbl_observer_model:`Modelo del observador`,provider_ready:`listo`,provider_disabled:`desactivado`,provider_offline:`sin conexión`,provider_model_missing:`falta el modelo`,provider_unsupported:`proveedor no compatible`,provider_local:`local`,provider_cloud:`nube`,provider_unknown:`desconocido`,btn_ai_config_open:`Configurar`,btn_ai_config_close:`Cerrar`,btn_add_ai_provider:`+ Añadir proveedor`,ai_config_loading:`Cargando la configuración del proveedor...`,ai_config_failed:`No se pudo cargar la configuración del proveedor: {message}`,ai_provider_empty:`Aún no hay proveedores configurados.`,ai_provider_section_local:`Local`,ai_provider_section_cloud:`Nube`,ai_provider_kind:`Tipo de proveedor`,ai_provider_kind_local:`Local`,ai_provider_kind_cloud:`Nube`,ai_provider_local_badge:`local`,ai_provider_cloud_badge:`nube`,ai_provider_key_set:`clave definida`,ai_provider_key_missing:`falta la clave`,ai_provider_key_none:`sin clave`,ai_provider_edit:`Editar`,ai_provider_remove:`Quitar`,ai_provider_remove_confirm:`¿Quitar el proveedor "{name}"?`,ai_provider_removed:`Proveedor "{name}" quitado`,ai_provider_saved:`Proveedor "{name}" guardado`,ai_provider_save_failed:`No se pudo guardar el proveedor: {message}`,ai_provider_form_add_title:`Añadir proveedor`,ai_provider_form_edit_title:`Editar proveedor`,ai_provider_display_name:`Nombre`,ai_provider_url:`URL`,ai_provider_model:`Modelo`,ai_provider_model_local_hint:`Escribe el nombre del modelo. Si el punto de conexión lista modelos, puedes elegir uno abajo.`,ai_provider_models_pick:`Elegir del punto de conexión`,ai_provider_flavor:`Variante de API`,ai_provider_local:`Se ejecuta en este equipo`,ai_provider_local_hint:`Los servidores de modelos locales (FastFlowLM, Ollama, …) normalmente no necesitan clave de API. ZAM puede intentar iniciar el servidor automáticamente.`,ai_provider_cloud_hint_key:`Las API en la nube necesitan una clave de API. Los proveedores locales no usan el campo de clave.`,ai_provider_runner:`Servidor de modelo local`,ai_provider_runner_hint:`El programa que sirve el modelo en este PC, no tu agente de programación.`,ai_provider_runner_auto:`Detección automática`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`no detectado`,ai_provider_api_key:`Clave de API`,ai_provider_api_key_hint:`Solo escritura — se guarda localmente, nunca se sincroniza`,ai_provider_cloud_hint:`Modelo sugerido: {model}`,ai_provider_models_loading:`Cargando modelos...`,ai_provider_models_empty:`El punto de conexión no lista modelos`,btn_ai_provider_save:`Guardar`,btn_ai_provider_cancel:`Cancelar`,ai_role_bindings_title:`Asignación de roles`,ai_role_recall:`Aprendizaje (recuerdo)`,ai_role_vision:`Observador (visión)`,ai_role_primary:`Principal`,ai_role_fallback:`Alternativo`,ai_role_none:`(ninguno)`,btn_ai_role_apply:`Aplicar`,ai_role_bound:`Rol {role} actualizado`,ai_role_bind_failed:`No se pudo asignar el rol: {message}`,ai_recall_anthropic_warn:`Los proveedores de Anthropic Messages aún no son compatibles con las sesiones de aprendizaje. ¿Asignar de todos modos?`,ai_vision_cloud_confirm:`Se enviarán capturas de pantalla a {endpoint}. ¿Activar la observación por visión y asignar este proveedor de nube?`,ai_provider_referenced:`Aún en uso por: {roles}`,btn_check_updates:`Buscar actualizaciones`,btn_open_releases:`Versiones`,version_unknown:`desconocida`,update_checking:`Buscando actualizaciones...`,update_available:`Actualización disponible: {version}`,update_none:`Tienes la versión más reciente.`,update_failed:`La búsqueda de actualizaciones falló: {message}`,release_link_failed:`No se pudieron abrir las versiones: {message}`,nav_content:`Contenido`,content_title:`Estudio de Contenido`,content_subtitle:`Gestiona tus tarjetas personales, busca tokens y mejora las preguntas de recuerdo activo.`,btn_new_card:`Nueva tarjeta`,lbl_search_placeholder:`Buscar preguntas, respuestas, categorías...`,lbl_category_filter:`Categoría`,lbl_all_categories:`Todas las categorías`,lbl_all_contexts:`Todos los contextos`,lbl_no_context_default:`Sin contexto predeterminado`,lbl_no_context_assignment:`Sin asignación de contexto`,lbl_empty_content:`No se encontraron tarjetas. ¡Crea tu primera tarjeta!`,lbl_empty_content_btn:`Crear primera tarjeta`,lbl_question:`Pregunta`,lbl_answer:`Respuesta / Concepto`,lbl_category:`Categoría`,lbl_source_link:`Enlace de origen`,lbl_more_settings:`Más ajustes`,lbl_context:`Contexto`,lbl_bloom_level:`Nivel Bloom`,lbl_symbiosis_mode:`Modo de simbiosis`,lbl_slug:`Clave técnica (Slug)`,lbl_slug_hint:`Generada automáticamente tras crear`,btn_save:`Guardar tarjeta`,btn_remove:`Eliminar tarjeta`,btn_delete:`Borrar token global`,lbl_confirm_remove_title:`Confirmar eliminación`,lbl_confirm_remove_desc:`Esto borrará tu estado y registro de FSRS personal. El token global no se verá afectado.`,lbl_confirm_delete_title:`Confirmar borrado global`,lbl_confirm_delete_desc:`Esto borrará permanentemente el concepto y todas las tarjetas de todos los usuarios.`,lbl_delete_impact:`Esta acción afecta:`,lbl_impact_cards:`{count} tarjeta(s)`,lbl_impact_reviews:`{count} registro(s) de repaso`,lbl_impact_steps:`{count} paso(s) de sesión`,lbl_impact_skills:`{count} habilidades de agente actualizadas`,lbl_confirm_action:`Confirmar`,lbl_cancel_action:`Cancelar`,lbl_card_saved_toast:`¡Tarjeta guardada!`,lbl_card_removed_toast:`¡Tarjeta eliminada!`,lbl_card_deleted_toast:`¡Token borrado!`,lbl_error_saving:`Error al guardar`,lbl_error_loading:`Error al cargar contenido`,lbl_card_status_new:`Nueva`,lbl_card_status_learning:`Aprendizaje`,lbl_card_status_review:`Repaso`,lbl_card_status_relearning:`Reaprendizaje`,lbl_card_status_not_started:`No iniciado`,lbl_card_due:`Vence`,lbl_card_not_due:`No vence`,btn_import_curriculum:`Importar currículo`,lbl_import_modal_title:`Importar estándar de currículo`,lbl_import_text:`Texto del currículo`,placeholder_import_text:`Pegue el texto del currículo o viñetas del plan de estudios aquí...`,lbl_import_source:`URL de origen / Referencia`,lbl_import_category:`Categoría de destino`,lbl_import_progress_status:`Generando tarjetas...`,lbl_import_progress_detail:`Esto puede tardar hasta un minuto dependiendo de la velocidad de su IA local.`,btn_import_submit:`Importar`,toast_import_success:`¡Se importaron correctamente {createdCount} nuevos tokens y se aseguraron {ensuredCount} tarjetas!`,lbl_error_importing:`Error al importar el currículo`,btn_curriculum_wizard:`Asistente de plan de estudios`,lbl_curriculum_wizard_title:`Asistente de plan de estudios`,wizard_step_country:`País`,wizard_step_region:`Región`,wizard_step_schoolType:`Tipo de escuela`,wizard_step_grade:`Curso`,wizard_step_subject:`Asignatura`,wizard_step_track:`Modalidad`,wizard_step_topic:`Temas`,wizard_btn_back:`Atrás`,wizard_btn_next:`Siguiente`,wizard_no_options:`Aún no hay opciones disponibles para esta selección.`,wizard_err_select_option:`Selecciona una opción para continuar.`,wizard_err_no_topics:`Selecciona al menos un tema.`,wizard_topic_scope_note:`Las tarjetas se generan a partir de la página completa del plan de estudios de esta asignatura (todos sus temas). La importación precisa por tema llegará en una futura actualización; por ahora, la selección de temas te ayuda a hacer seguimiento de lo que hay que cubrir a continuación.`,wizard_resume_prompt:`Continuar donde lo dejaste:`,wizard_btn_resume:`Continuar`,wizard_btn_restart:`Empezar de nuevo`,lbl_curriculum_wizard_loading:`Cargando…`,wizard_hours:`{hours} h`,btn_split:`Dividir`,lbl_split_modal_title:`Dividir tarjeta`,lbl_original_card_title:`Tarjeta original (Pregunta de aplicación resumida)`,lbl_split_original_question:`Pregunta`,lbl_split_original_concept:`Respuesta / Concepto`,lbl_split_action_title:`Después de completar la división:`,lbl_action_block:`Conservar la tarjeta original y bloquearla (requiere nuevas tarjetas primero)`,lbl_action_remove:`Eliminar la tarjeta original`,lbl_split_progress_status:`Generando propuestas atómicas...`,lbl_split_progress_detail:`Esto puede tardar hasta un minuto dependiendo de la velocidad de su IA local.`,lbl_atomic_proposals_title:`Propuestas de tarjetas atómicas (Mínimo 2)`,btn_split_modal_submit:`Confirmar división`,btn_content_foundations_card:`Fundamentos`,lbl_foundations_modal_title:`Importar fundamentos`,lbl_foundations_progress_status:`Generando propuestas fundamentales...`,lbl_foundations_progress_detail:`Esto puede tardar hasta un minuto dependiendo de la velocidad de su IA local.`,lbl_foundations_atomic_title:`Propuestas de tarjetas fundamentales`,btn_foundations_modal_submit:`Confirmar importación`,lbl_import_source_type:`Tipo de origen`,lbl_import_source_uri:`Ruta del archivo o URL`,btn_import_source_analyze:`Analizar`,lbl_source_extracted_preview:`Vista previa del texto extraído`,lbl_delete:`Eliminar`,lbl_proposal_number:`Propuesta n.º {n}`,lbl_foundational_proposal_number:`Propuesta fundamental n.º {n}`,lbl_foundation_existing_badge:`Se vinculará la tarjeta existente`,lbl_foundation_new_badge:`Sugerencia de nueva tarjeta`,lbl_include:`Incluir`,lbl_err_analyze_source_first:`Primero analiza un archivo de origen, un enlace web o un escaneo OCR.`,lbl_err_min_split_proposals:`Se requieren al menos 2 propuestas de tarjeta completas para dividir una tarjeta.`,lbl_err_select_foundation:`Selecciona al menos una tarjeta de propuesta de prerrequisito para importar.`,lbl_err_enter_path_or_url:`Introduce una ruta de archivo o URL para analizar.`,lbl_analyzing_source:`Analizando el contenido de la fuente, espera…`,lbl_err_analysis_failed:`Error en el análisis`,lbl_err_analysis_prefix:`Error de análisis`,lbl_err_concept_required:`La respuesta o el concepto es obligatorio.`,lbl_err_category_required:`La categoría es obligatoria.`,lbl_err_import_context_required:`El texto del plan de estudios es obligatorio.`,lbl_err_original_context_required:`La pregunta y la respuesta son obligatorias para la tarjeta original.`,settings_context_title:`Contexto de conocimiento`,settings_context_help:`Selecciona el contexto de conocimiento predeterminado para este dispositivo.`,settings_context_label:`Contexto predeterminado`,wizard_context_label:`Asignar tarjetas importadas al contexto:`},fr:{ai_status_offline:`IA hors ligne`,ai_status_online:`IA locale en ligne`,ai_status_cloud_online:`IA cloud · {model}`,ai_status_cloud_offline:`IA cloud hors ligne · {model}`,ai_status_starting:`Vérification de l'IA...`,ai_status_model_missing:`IA : modèle introuvable`,study_question_original:`Original`,study_evaluation_model:`{model}`,nav_dashboard:`Tableau de bord`,nav_settings:`Paramètres`,dashboard_kicker:`Aujourd'hui dans ZAM`,dashboard_title:`Apprenez délibérément.`,dashboard_subtitle:`Révisez ce qui est dû, ouvrez votre carte des connaissances ou configurez l'IA locale et les espaces de travail dans les Paramètres.`,lbl_due_reviews:`Révisions dues`,lbl_caught_up:`Vous êtes à jour !`,dashboard_error:`Impossible de charger vos données`,lbl_domains:`Domaines actifs`,btn_start_session:`Démarrer la session d'apprentissage`,lbl_translating:`Traduction dynamique...`,placeholder_answer:`Saisissez ici votre réponse conceptuelle... (Ctrl+Entrée pour envoyer)`,btn_reveal_answer:`Envoyer et révéler la réponse`,lbl_ai_evaluating:`Analyse de votre réponse et génération du retour...`,lbl_ai_working:`(Cela peut prendre un moment.)`,lbl_wait_warn:`⚠ L'évaluation prend plus de temps que prévu.`,btn_wait_keep:`Continuer à attendre`,btn_wait_skip:`Ignorer hors ligne`,lbl_question_wait_warn:`⚠ La génération de la question prend plus de temps que prévu.`,btn_question_use_saved:`Utiliser la question enregistrée`,lbl_ai_feedback_title:`Retour de ZAM`,lbl_reveal_title:`Réponse de référence`,lbl_rating_instruction:`Évaluez honnêtement votre rappel actif :`,lbl_rate_1:`À revoir`,lbl_rate_2:`Difficile`,lbl_rate_3:`Bien`,lbl_rate_4:`Facile`,btn_recall_reveal:`Révéler`,btn_recall_check:`Vérifier la réponse`,btn_recall_finish:`Terminer la session`,lbl_recall_focus:`Focus : {domain}`,lbl_recall_summary:`{done} sur {total} révisées`,lbl_recall_summary_title:`Résumé de la session`,lbl_recall_empty_title:`Rien à réviser`,btn_pause_session:`Mettre en pause et quitter`,lbl_generating_question:`Génération d'une question dynamique...`,token:`Token`,concept:`Concept`,context:`Contexte`,source:`Référence source`,bloom_level:`Niveau Bloom`,rating_again_shortcut:`(Raccourci : 1)`,rating_hard_shortcut:`(Raccourci : 2)`,rating_good_shortcut:`(Raccourci : 3)`,rating_easy_shortcut:`(Raccourci : 4)`,session_completed:`Session d'apprentissage terminée !`,session_completed_sub:`Bravo d'avoir terminé cette session ! Vos traces mémorielles ont été mises à jour.`,btn_back_to_dashboard:`Retour au tableau de bord`,btn_open_graph:`Carte des connaissances (3D)`,btn_open_settings:`Paramètres`,observer_title:`Observateur d'IU`,observer_idle:`Chargez les fenêtres et choisissez une fenêtre d'application à observer.`,observer_loading:`Chargement des fenêtres observables...`,observer_ready:`Sélectionnée : {title}`,observer_vision_checking:`Vérification des paramètres d'observation visuelle...`,observer_analyzing:`Capture d'un instantané et interrogation du modèle de vision...`,observer_done:`Observation enregistrée. Confiance du dernier rapport : {confidence}`,observer_canceled:`Observation annulée.`,observer_error:`Erreur de l'observateur : {message}`,observer_vision_disabled:`L'observation visuelle est désactivée. Activez-la avec : zam settings set llm.vision.enabled true`,observer_vision_offline:`Le point de terminaison de vision est hors ligne : {url}`,observer_vision_model_missing:`Le modèle de vision n'est pas disponible : {model}`,observer_privacy_paused:`Pause de confidentialité : cette fenêtre est bloquée par le filtre de confidentialité ({reason}).`,observer_privacy_option:`pause de confidentialité`,observer_refresh:`Charger les fenêtres`,observer_analyze:`Instantané et analyse`,observer_cancel:`Annuler`,observer_empty:`Aucune fenêtre observable trouvée.`,observer_select_initial:`Aucune fenêtre chargée pour l'instant`,observer_select_placeholder:`Sélectionnez une fenêtre`,observer_history_title:`Rapports d'observation`,observer_history_refresh:`Actualiser les rapports`,observer_history_empty:`Aucun rapport d'observation pour l'instant.`,observer_history_loaded:`{count} rapport(s) d'observation chargé(s).`,observer_loop_start:`Démarrer la boucle`,observer_loop_stop:`Arrêter la boucle`,observer_loop_idle:`Instantanés manuels uniquement.`,observer_loop_running:`Boucle de l'observateur en cours. Un instantané à la fois.`,observer_loop_waiting:`Boucle de l'observateur en cours. Prochain instantané dans {seconds} s.`,observer_loop_stopped:`Boucle de l'observateur arrêtée.`,observer_watch_start:`Démarrer la surveillance`,observer_watch_stop:`Arrêter la surveillance`,observer_watch_idle:`La surveillance continue est désactivée.`,observer_watch_starting:`Démarrage de la surveillance continue...`,observer_watch_running:`Surveillance de {title} — {count} événement(s).`,observer_watch_stopping:`Arrêt de la surveillance continue...`,observer_watch_stopped:`Surveillance continue arrêtée.`,observer_watch_error:`Erreur de surveillance : {message}`,graph_title:`Graphe de connaissances (3D)`,graph_hint:`Glissez pour pivoter • Cliquez sur les nœuds pour cibler • Défilez pour zoomer`,graph_focus:`Cible`,graph_prereqs:`Bases (prérequis)`,graph_dependents:`Compétences supérieures (dépendantes)`,graph_no_card:`pas encore de carte personnelle`,graph_refresh:`Actualiser`,graph_domain_token_list_title:`Tous les tokens de ce domaine`,setup_title:`Configuration et données`,settings_kicker:`Configuration locale`,settings_title:`Paramètres`,settings_subtitle:`Configurez cette machine sans imposer les mêmes choix à chaque espace de travail ou appareil.`,settings_back:`Retour au tableau de bord`,settings_system_title:`Système`,settings_ai_title:`Modèles d'IA`,settings_workspace_title:`Espaces de travail`,workspaces_help:`Enregistrez des répertoires de travail personnels, d'équipe, familiaux ou communautaires pour cette machine.`,settings_appearance_title:`Apparence`,settings_data_title:`Données`,settings_database:`Base de données`,settings_learning_profile:`Profil d’apprentissage`,database_checking:`Vérification…`,database_status_local:`SQLite local · connecté`,database_status_turso:`Turso · connecté`,database_status_error:`Connexion indisponible`,database_detail:`{location} · profil {profile} · {count} cartes`,database_no_profile:`Aucun profil actif`,database_profile_option:`{profile} — {count} cartes`,database_profile_switch_confirm:`Passer au profil d’apprentissage « {profile} » ?`,database_profile_switched:`Profil actif : {profile} ({count} cartes)`,database_refresh:`Actualiser l’état`,settings_theme:`Thème`,theme_light:`Clair`,theme_dark:`Sombre`,btn_open_data_folder:`Ouvrir le dossier de données`,btn_backup_db:`Sauvegarder la base de données`,setup_backing_up:`Sauvegarde de la base de données…`,setup_backed_up:`Sauvegardé dans {path}`,setup_remote_no_backup:`Votre base de données se synchronise avec le cloud ({target}) — aucune sauvegarde locale séparée n'est nécessaire.`,setup_backup_failed:`Échec de la sauvegarde : {message}`,setup_backup_failed_generic:`Échec de la sauvegarde.`,setup_open_folder_failed:`Impossible d'ouvrir le dossier de données : {message}`,lbl_workspace:`Espace de travail`,btn_choose_workspace:`+ Ajouter un espace de travail…`,btn_open_terminal:`Ouvrir le terminal`,terminal_opening:`Ouverture du terminal...`,terminal_opened:`Terminal ouvert dans {workspace}`,terminal_open_failed:`Impossible d'ouvrir le terminal : {message}`,workspace_active:`actif`,workspace_default_label:`Espace de travail par défaut`,workspace_empty:`Aucun espace de travail enregistré pour l'instant.`,workspace_kind:`Espace de travail {kind}`,workspace_kind_personal:`Espace de travail personnel`,workspace_kind_team:`Espace de travail d'équipe`,workspace_kind_family:`Espace de travail familial`,workspace_kind_community:`Espace de travail communautaire`,workspace_kind_organization:`Espace de travail d'organisation`,workspace_kind_custom:`Espace de travail personnalisé`,workspace_more:`{count} espace(s) de travail masqué(s). Utilisez la CLI pour la liste complète.`,workspace_use:`Utiliser`,workspace_open:`Terminal`,workspace_default_suffix:`(par défaut)`,workspace_set:`Espace de travail défini sur {path}`,workspace_added:`Espace de travail ajouté : {path}`,workspace_pick_failed:`Impossible de définir l'espace de travail : {message}`,workspace_remove:`Retirer`,workspace_remove_confirm:`Retirer « {label} » de ZAM ? Les fichiers et liens du dossier resteront inchangés.`,workspace_removed:`Espace de travail retiré : {label}`,workspace_remove_failed:`Impossible de retirer l'espace de travail : {message}`,workspace_link_ok:`Lien de skill OK`,workspace_link_broken:`Lien de skill rompu`,workspace_link_unmanaged:`Dossier de skill externe`,workspace_repair:`Réparer le lien de skill`,workspace_repair_confirm:`Le dossier de « {label} » contient un répertoire skills/zam que ZAM n'a pas créé. La réparation le supprime et le remplace par un lien. Continuer ?`,workspace_repairing:`Réparation du lien de skill…`,workspace_repaired:`Lien de skill réparé : {label}`,workspace_repair_failed:`Impossible de réparer le lien de skill : {message}`,lbl_app_version:`Version`,lbl_learning_model:`Modèle d'apprentissage`,lbl_observer_model:`Modèle de l'observateur`,provider_ready:`prêt`,provider_disabled:`désactivé`,provider_offline:`hors ligne`,provider_model_missing:`modèle manquant`,provider_unsupported:`fournisseur non pris en charge`,provider_local:`local`,provider_cloud:`cloud`,provider_unknown:`inconnu`,btn_ai_config_open:`Configurer`,btn_ai_config_close:`Fermer`,btn_add_ai_provider:`+ Ajouter un fournisseur`,ai_config_loading:`Chargement de la configuration du fournisseur...`,ai_config_failed:`Impossible de charger la configuration du fournisseur : {message}`,ai_provider_empty:`Aucun fournisseur configuré pour l'instant.`,ai_provider_section_local:`Local`,ai_provider_section_cloud:`Cloud`,ai_provider_kind:`Type de fournisseur`,ai_provider_kind_local:`Local`,ai_provider_kind_cloud:`Cloud`,ai_provider_local_badge:`local`,ai_provider_cloud_badge:`cloud`,ai_provider_key_set:`clé définie`,ai_provider_key_missing:`clé manquante`,ai_provider_key_none:`pas de clé`,ai_provider_edit:`Modifier`,ai_provider_remove:`Retirer`,ai_provider_remove_confirm:`Retirer le fournisseur « {name} » ?`,ai_provider_removed:`Fournisseur « {name} » retiré`,ai_provider_saved:`Fournisseur « {name} » enregistré`,ai_provider_save_failed:`Impossible d'enregistrer le fournisseur : {message}`,ai_provider_form_add_title:`Ajouter un fournisseur`,ai_provider_form_edit_title:`Modifier le fournisseur`,ai_provider_display_name:`Nom`,ai_provider_url:`URL`,ai_provider_model:`Modèle`,ai_provider_model_local_hint:`Saisissez le nom du modèle. Si le point de terminaison liste des modèles, vous pouvez en choisir un ci-dessous.`,ai_provider_models_pick:`Choisir depuis le point de terminaison`,ai_provider_flavor:`Variante d'API`,ai_provider_local:`S'exécute sur cet ordinateur`,ai_provider_local_hint:`Les serveurs de modèles locaux (FastFlowLM, Ollama, …) n'ont généralement pas besoin de clé d'API. ZAM peut tenter de démarrer le serveur automatiquement.`,ai_provider_cloud_hint_key:`Les API cloud nécessitent une clé d'API. Les fournisseurs locaux n'utilisent pas le champ de clé.`,ai_provider_runner:`Serveur de modèle local`,ai_provider_runner_hint:`Le programme qui sert le modèle sur ce PC — pas votre agent de codage.`,ai_provider_runner_auto:`Détection automatique`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`non détecté`,ai_provider_api_key:`Clé d'API`,ai_provider_api_key_hint:`En écriture seule — stockée localement, jamais synchronisée`,ai_provider_cloud_hint:`Modèle suggéré : {model}`,ai_provider_models_loading:`Chargement des modèles...`,ai_provider_models_empty:`Aucun modèle listé par le point de terminaison`,btn_ai_provider_save:`Enregistrer`,btn_ai_provider_cancel:`Annuler`,ai_role_bindings_title:`Affectation des rôles`,ai_role_recall:`Apprentissage (rappel)`,ai_role_vision:`Observateur (vision)`,ai_role_primary:`Principal`,ai_role_fallback:`Secours`,ai_role_none:`(aucun)`,btn_ai_role_apply:`Appliquer`,ai_role_bound:`Rôle {role} mis à jour`,ai_role_bind_failed:`Impossible d'affecter le rôle : {message}`,ai_recall_anthropic_warn:`Les fournisseurs Anthropic Messages ne sont pas encore pris en charge pour les sessions d'apprentissage. Affecter quand même ?`,ai_vision_cloud_confirm:`Des captures d'écran seront envoyées à {endpoint}. Activer l'observation visuelle et affecter ce fournisseur cloud ?`,ai_provider_referenced:`Encore utilisé par : {roles}`,btn_check_updates:`Rechercher des mises à jour`,btn_open_releases:`Versions`,version_unknown:`inconnue`,update_checking:`Recherche de mises à jour...`,update_available:`Mise à jour disponible : {version}`,update_none:`Vous utilisez la version la plus récente.`,update_failed:`Échec de la recherche de mises à jour : {message}`,release_link_failed:`Impossible d'ouvrir les versions : {message}`,nav_content:`Contenu`,content_title:`Studio de Contenu`,content_subtitle:`Gérez vos cartes personnelles, recherchez des tokens et affinez les questions de rappel actif.`,btn_new_card:`Nouvelle carte`,lbl_search_placeholder:`Rechercher des questions, réponses, catégories...`,lbl_category_filter:`Catégorie`,lbl_all_categories:`Toutes les catégories`,lbl_all_contexts:`Tous les contextes`,lbl_no_context_default:`Aucun contexte par défaut`,lbl_no_context_assignment:`Aucune affectation de contexte`,lbl_empty_content:`Aucune carte trouvée. Créez votre première carte !`,lbl_empty_content_btn:`Créer la première carte`,lbl_question:`Question`,lbl_answer:`Réponse / Concept`,lbl_category:`Catégorie`,lbl_source_link:`Lien source`,lbl_more_settings:`Plus de paramètres`,lbl_context:`Contexte`,lbl_bloom_level:`Niveau Bloom`,lbl_symbiosis_mode:`Mode de symbiose`,lbl_slug:`Clé technique (Slug)`,lbl_slug_hint:`Générée automatiquement après création`,btn_save:`Enregistrer la carte`,btn_remove:`Supprimer la carte`,btn_delete:`Supprimer le token global`,lbl_confirm_remove_title:`Confirmer la suppression`,lbl_confirm_remove_desc:`Cela effacera votre état FSRS personnel. Le token global ne sera pas affecté.`,lbl_confirm_delete_title:`Confirmer la suppression globale`,lbl_confirm_delete_desc:`Cela supprimera définitivement le concept et toutes les cartes de tous les utilisateurs.`,lbl_delete_impact:`Cette action affecte :`,lbl_impact_cards:`{count} carte(s)`,lbl_impact_reviews:`{count} journal(journaux) de révision`,lbl_impact_steps:`{count} étape(s) de session`,lbl_impact_skills:`{count} compétences d'agent mises à jour`,lbl_confirm_action:`Confirmer`,lbl_cancel_action:`Annuler`,lbl_card_saved_toast:`Carte enregistrée !`,lbl_card_removed_toast:`Carte supprimée !`,lbl_card_deleted_toast:`Token supprimé !`,lbl_error_saving:`Échec de l'enregistrement`,lbl_error_loading:`Échec du chargement du contenu`,lbl_card_status_new:`Nouveau`,lbl_card_status_learning:`Apprentissage`,lbl_card_status_review:`Révision`,lbl_card_status_relearning:`Réapprentissage`,lbl_card_status_not_started:`Non démarré`,lbl_card_due:`Dû`,lbl_card_not_due:`Non dû`,btn_import_curriculum:`Importer le programme`,lbl_import_modal_title:`Importer la norme de programme`,lbl_import_text:`Texte du programme`,placeholder_import_text:`Collez le texte du programme ou les puces du syllabus ici...`,lbl_import_source:`URL source / Référence`,lbl_import_category:`Catégorie cible`,lbl_import_progress_status:`Génération de cartes...`,lbl_import_progress_detail:`Cela peut prendre jusqu'à une minute selon la vitesse de votre IA locale.`,btn_import_submit:`Importer`,toast_import_success:`Importation réussie de {createdCount} nouveaux jetons et assurance de {ensuredCount} cartes !`,lbl_error_importing:`Échec de l'importation du programme`,btn_curriculum_wizard:`Assistant de programme`,lbl_curriculum_wizard_title:`Assistant de programme`,wizard_step_country:`Pays`,wizard_step_region:`Région`,wizard_step_schoolType:`Type d'établissement`,wizard_step_grade:`Niveau`,wizard_step_subject:`Matière`,wizard_step_track:`Filière`,wizard_step_topic:`Sujets`,wizard_btn_back:`Retour`,wizard_btn_next:`Suivant`,wizard_no_options:`Aucune option disponible pour le moment pour cette sélection.`,wizard_err_select_option:`Veuillez sélectionner une option pour continuer.`,wizard_err_no_topics:`Veuillez sélectionner au moins un sujet.`,wizard_topic_scope_note:`Les cartes sont générées à partir de la page complète du programme de cette matière (tous ses sujets). L'importation précise par sujet arrivera dans une prochaine mise à jour — pour l'instant, la sélection des sujets vous aide à suivre ce qu'il reste à couvrir.`,wizard_resume_prompt:`Continuer là où vous vous étiez arrêté :`,wizard_btn_resume:`Continuer`,wizard_btn_restart:`Recommencer`,lbl_curriculum_wizard_loading:`Chargement…`,wizard_hours:`{hours} h`,btn_split:`Diviser`,lbl_split_modal_title:`Diviser la carte`,lbl_original_card_title:`Carte originale (Question d'application résumée)`,lbl_split_original_question:`Question`,lbl_split_original_concept:`Réponse / Concept`,lbl_split_action_title:`Après la division terminée :`,lbl_action_block:`Conserver la carte originale et la bloquer (requiert d'abord les nouvelles cartes)`,lbl_action_remove:`Supprimer la carte originale`,lbl_split_progress_status:`Génération de propositions atomiques...`,lbl_split_progress_detail:`Cela peut prendre jusqu'à une minute selon la vitesse de votre IA locale.`,lbl_atomic_proposals_title:`Propositions de cartes atomiques (Minimum 2)`,btn_split_modal_submit:`Confirmer la division`,btn_content_foundations_card:`Fondations`,lbl_foundations_modal_title:`Importer des fondations`,lbl_foundations_progress_status:`Génération de propositions fondamentales...`,lbl_foundations_progress_detail:`Cela peut prendre jusqu'à une minute selon la vitesse de votre IA locale.`,lbl_foundations_atomic_title:`Propositions de cartes fondamentales`,btn_foundations_modal_submit:`Confirmer l'importation`,lbl_import_source_type:`Type de source`,lbl_import_source_uri:`Chemin du fichier ou URL`,btn_import_source_analyze:`Analyser`,lbl_source_extracted_preview:`Aperçu du texte extrait`,lbl_delete:`Supprimer`,lbl_proposal_number:`Proposition n° {n}`,lbl_foundational_proposal_number:`Proposition fondamentale n° {n}`,lbl_foundation_existing_badge:`La carte existante sera liée`,lbl_foundation_new_badge:`Suggestion de nouvelle carte`,lbl_include:`Inclure`,lbl_err_analyze_source_first:`Veuillez d'abord analyser un fichier source, un lien web ou une numérisation OCR.`,lbl_err_min_split_proposals:`Au moins 2 propositions de carte complètes sont nécessaires pour diviser une carte.`,lbl_err_select_foundation:`Veuillez sélectionner au moins une carte de proposition de prérequis à importer.`,lbl_err_enter_path_or_url:`Veuillez saisir un chemin de fichier ou une URL à analyser.`,lbl_analyzing_source:`Analyse du contenu source en cours, veuillez patienter…`,lbl_err_analysis_failed:`Échec de l'analyse`,lbl_err_analysis_prefix:`Erreur d'analyse`,lbl_err_concept_required:`La réponse ou le concept est obligatoire.`,lbl_err_category_required:`La catégorie est obligatoire.`,lbl_err_import_context_required:`Le texte du programme est obligatoire.`,lbl_err_original_context_required:`La question et la réponse sont obligatoires pour la carte originale.`,settings_context_title:`Contexte de connaissances`,settings_context_help:`Sélectionnez le contexte de connaissances par défaut pour cet appareil.`,settings_context_label:`Contexte par défaut`,wizard_context_label:`Assigner les cartes importées au contexte :`},pt:{ai_status_offline:`IA offline`,ai_status_online:`IA local online`,ai_status_cloud_online:`IA na nuvem · {model}`,ai_status_cloud_offline:`IA na nuvem offline · {model}`,ai_status_starting:`Verificando IA...`,ai_status_model_missing:`IA: modelo não encontrado`,study_question_original:`Original`,study_evaluation_model:`{model}`,nav_dashboard:`Painel`,nav_settings:`Configurações`,dashboard_kicker:`Hoje no ZAM`,dashboard_title:`Aprenda com intenção.`,dashboard_subtitle:`Revise o que está pendente, abra seu mapa de conhecimento ou configure a IA local e os espaços de trabalho nas Configurações.`,lbl_due_reviews:`Revisões pendentes`,lbl_caught_up:`Você está em dia!`,dashboard_error:`Não foi possível carregar seus dados`,lbl_domains:`Domínios ativos`,btn_start_session:`Iniciar sessão de aprendizado`,lbl_translating:`Traduzindo dinamicamente...`,placeholder_answer:`Digite aqui sua resposta conceitual... (Ctrl+Enter para enviar)`,btn_reveal_answer:`Enviar e revelar resposta`,lbl_ai_evaluating:`Revisando sua resposta e gerando feedback...`,lbl_ai_working:`(Isso pode levar um momento.)`,lbl_wait_warn:`⚠ A avaliação está demorando mais que o esperado.`,btn_wait_keep:`Continuar esperando`,btn_wait_skip:`Pular offline`,lbl_question_wait_warn:`⚠ A geração da pergunta está demorando mais que o esperado.`,btn_question_use_saved:`Usar pergunta salva`,lbl_ai_feedback_title:`Feedback do ZAM`,lbl_reveal_title:`Resposta de referência`,lbl_rating_instruction:`Avalie sua recordação ativa com honestidade:`,lbl_rate_1:`De novo`,lbl_rate_2:`Difícil`,lbl_rate_3:`Bom`,lbl_rate_4:`Fácil`,btn_recall_reveal:`Revelar`,btn_recall_check:`Verificar resposta`,btn_recall_finish:`Encerrar sessão`,lbl_recall_focus:`Foco: {domain}`,lbl_recall_summary:`{done} de {total} revisadas`,lbl_recall_summary_title:`Resumo da sessão`,lbl_recall_empty_title:`Nada pendente`,btn_pause_session:`Pausar e sair da sessão`,lbl_generating_question:`Gerando pergunta dinâmica...`,token:`Token`,concept:`Conceito`,context:`Contexto`,source:`Referência de origem`,bloom_level:`Nível Bloom`,rating_again_shortcut:`(Atalho: 1)`,rating_hard_shortcut:`(Atalho: 2)`,rating_good_shortcut:`(Atalho: 3)`,rating_easy_shortcut:`(Atalho: 4)`,session_completed:`Sessão de aprendizado concluída!`,session_completed_sub:`Ótimo trabalho ao concluir esta sessão! Seus traços de memória foram atualizados.`,btn_back_to_dashboard:`Voltar ao painel`,btn_open_graph:`Mapa de conhecimento (3D)`,btn_open_settings:`Configurações`,observer_title:`Observador de IU`,observer_idle:`Carregue as janelas e escolha uma janela de aplicativo para observar.`,observer_loading:`Carregando janelas observáveis...`,observer_ready:`Selecionada: {title}`,observer_vision_checking:`Verificando as configurações de observação por visão...`,observer_analyzing:`Capturando um instantâneo e consultando o modelo de visão...`,observer_done:`Observação salva. Confiança do último relatório: {confidence}`,observer_canceled:`Observação cancelada.`,observer_error:`Erro do observador: {message}`,observer_vision_disabled:`A observação por visão está desativada. Ative-a com: zam settings set llm.vision.enabled true`,observer_vision_offline:`O endpoint de visão está offline: {url}`,observer_vision_model_missing:`O modelo de visão não está disponível: {model}`,observer_privacy_paused:`Pausa de privacidade: esta janela está bloqueada pelo filtro de privacidade ({reason}).`,observer_privacy_option:`pausa de privacidade`,observer_refresh:`Carregar janelas`,observer_analyze:`Instantâneo e análise`,observer_cancel:`Cancelar`,observer_empty:`Nenhuma janela observável encontrada.`,observer_select_initial:`Nenhuma janela carregada ainda`,observer_select_placeholder:`Selecione uma janela`,observer_history_title:`Relatórios de observação`,observer_history_refresh:`Atualizar relatórios`,observer_history_empty:`Ainda não há relatórios de observação.`,observer_history_loaded:`{count} relatório(s) de observação carregado(s).`,observer_loop_start:`Iniciar laço`,observer_loop_stop:`Parar laço`,observer_loop_idle:`Apenas instantâneos manuais.`,observer_loop_running:`Laço do observador em execução. Um instantâneo por vez.`,observer_loop_waiting:`Laço do observador em execução. Próximo instantâneo em {seconds}s.`,observer_loop_stopped:`Laço do observador parado.`,observer_watch_start:`Iniciar monitoramento`,observer_watch_stop:`Parar monitoramento`,observer_watch_idle:`O monitoramento contínuo está desligado.`,observer_watch_starting:`Iniciando monitoramento contínuo...`,observer_watch_running:`Monitorando {title} — {count} evento(s).`,observer_watch_stopping:`Parando monitoramento contínuo...`,observer_watch_stopped:`Monitoramento contínuo parado.`,observer_watch_error:`Erro de monitoramento: {message}`,graph_title:`Grafo de conhecimento (3D)`,graph_hint:`Arraste para girar • Clique nos nós para focar • Role para aplicar zoom`,graph_focus:`Foco`,graph_prereqs:`Bases (pré-requisitos)`,graph_dependents:`Habilidades superiores (dependentes)`,graph_no_card:`ainda sem cartão pessoal`,graph_refresh:`Atualizar`,graph_domain_token_list_title:`Todos os tokens deste domínio`,setup_title:`Configuração e dados`,settings_kicker:`Configuração local`,settings_title:`Configurações`,settings_subtitle:`Configure esta máquina sem impor as mesmas escolhas a cada espaço de trabalho ou dispositivo.`,settings_back:`Voltar ao painel`,settings_system_title:`Sistema`,settings_ai_title:`Modelos de IA`,settings_workspace_title:`Espaços de trabalho`,workspaces_help:`Registre diretórios de trabalho pessoais, de equipe, familiares ou de comunidade para esta máquina.`,settings_appearance_title:`Aparência`,settings_data_title:`Dados`,settings_database:`Banco de dados`,settings_learning_profile:`Perfil de aprendizagem`,database_checking:`Verificando…`,database_status_local:`SQLite local · conectado`,database_status_turso:`Turso · conectado`,database_status_error:`Conexão indisponível`,database_detail:`{location} · perfil {profile} · {count} cartões`,database_no_profile:`Nenhum perfil ativo`,database_profile_option:`{profile} — {count} cartões`,database_profile_switch_confirm:`Mudar o perfil de aprendizagem ativo para “{profile}”?`,database_profile_switched:`Perfil ativo: {profile} ({count} cartões)`,database_refresh:`Atualizar status`,settings_theme:`Tema`,theme_light:`Claro`,theme_dark:`Escuro`,btn_open_data_folder:`Abrir pasta de dados`,btn_backup_db:`Fazer backup do banco de dados`,setup_backing_up:`Fazendo backup do banco de dados…`,setup_backed_up:`Backup salvo em {path}`,setup_remote_no_backup:`Seu banco de dados sincroniza com a nuvem ({target}) — nenhum backup local separado é necessário.`,setup_backup_failed:`Falha no backup: {message}`,setup_backup_failed_generic:`Falha no backup.`,setup_open_folder_failed:`Não foi possível abrir a pasta de dados: {message}`,lbl_workspace:`Espaço de trabalho`,btn_choose_workspace:`+ Adicionar espaço de trabalho…`,btn_open_terminal:`Abrir terminal`,terminal_opening:`Abrindo terminal...`,terminal_opened:`Terminal aberto em {workspace}`,terminal_open_failed:`Não foi possível abrir o terminal: {message}`,workspace_active:`ativo`,workspace_default_label:`Espaço de trabalho padrão`,workspace_empty:`Nenhum espaço de trabalho registrado ainda.`,workspace_kind:`Espaço de trabalho {kind}`,workspace_kind_personal:`Espaço de trabalho pessoal`,workspace_kind_team:`Espaço de trabalho de equipe`,workspace_kind_family:`Espaço de trabalho familiar`,workspace_kind_community:`Espaço de trabalho de comunidade`,workspace_kind_organization:`Espaço de trabalho de organização`,workspace_kind_custom:`Espaço de trabalho personalizado`,workspace_more:`{count} espaço(s) de trabalho oculto(s). Use a CLI para a lista completa.`,workspace_use:`Usar`,workspace_open:`Terminal`,workspace_default_suffix:`(padrão)`,workspace_set:`Espaço de trabalho definido para {path}`,workspace_added:`Espaço de trabalho adicionado: {path}`,workspace_pick_failed:`Não foi possível definir o espaço de trabalho: {message}`,workspace_remove:`Remover`,workspace_remove_confirm:`Remover "{label}" do ZAM? Os arquivos e links na pasta permanecerão inalterados.`,workspace_removed:`Espaço de trabalho removido: {label}`,workspace_remove_failed:`Não foi possível remover o espaço de trabalho: {message}`,workspace_link_ok:`Link de skill OK`,workspace_link_broken:`Link de skill quebrado`,workspace_link_unmanaged:`Pasta de skill externa`,workspace_repair:`Reparar link de skill`,workspace_repair_confirm:`A pasta de "{label}" contém um diretório skills/zam que o ZAM não criou. Reparar o exclui e o substitui por um link. Continuar?`,workspace_repairing:`Reparando link de skill…`,workspace_repaired:`Link de skill reparado: {label}`,workspace_repair_failed:`Não foi possível reparar o link de skill: {message}`,lbl_app_version:`Versão`,lbl_learning_model:`Modelo de aprendizado`,lbl_observer_model:`Modelo do observador`,provider_ready:`pronto`,provider_disabled:`desativado`,provider_offline:`offline`,provider_model_missing:`modelo ausente`,provider_unsupported:`provedor não compatível`,provider_local:`local`,provider_cloud:`nuvem`,provider_unknown:`desconhecido`,btn_ai_config_open:`Configurar`,btn_ai_config_close:`Fechar`,btn_add_ai_provider:`+ Adicionar provedor`,ai_config_loading:`Carregando configuração do provedor...`,ai_config_failed:`Não foi possível carregar a configuração do provedor: {message}`,ai_provider_empty:`Nenhum provedor configurado ainda.`,ai_provider_section_local:`Local`,ai_provider_section_cloud:`Nuvem`,ai_provider_kind:`Tipo de provedor`,ai_provider_kind_local:`Local`,ai_provider_kind_cloud:`Nuvem`,ai_provider_local_badge:`local`,ai_provider_cloud_badge:`nuvem`,ai_provider_key_set:`chave definida`,ai_provider_key_missing:`chave ausente`,ai_provider_key_none:`sem chave`,ai_provider_edit:`Editar`,ai_provider_remove:`Remover`,ai_provider_remove_confirm:`Remover o provedor "{name}"?`,ai_provider_removed:`Provedor "{name}" removido`,ai_provider_saved:`Provedor "{name}" salvo`,ai_provider_save_failed:`Não foi possível salvar o provedor: {message}`,ai_provider_form_add_title:`Adicionar provedor`,ai_provider_form_edit_title:`Editar provedor`,ai_provider_display_name:`Nome`,ai_provider_url:`URL`,ai_provider_model:`Modelo`,ai_provider_model_local_hint:`Digite o nome do modelo. Se o endpoint listar modelos, você pode escolher um abaixo.`,ai_provider_models_pick:`Escolher do endpoint`,ai_provider_flavor:`Variante de API`,ai_provider_local:`Executa neste computador`,ai_provider_local_hint:`Servidores de modelo locais (FastFlowLM, Ollama, …) geralmente não precisam de chave de API. O ZAM pode tentar iniciar o servidor automaticamente.`,ai_provider_cloud_hint_key:`As APIs na nuvem precisam de uma chave de API. Provedores locais não usam o campo de chave.`,ai_provider_runner:`Servidor de modelo local`,ai_provider_runner_hint:`O programa que serve o modelo neste PC — não o seu agente de codificação.`,ai_provider_runner_auto:`Detecção automática`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`não detectado`,ai_provider_api_key:`Chave de API`,ai_provider_api_key_hint:`Somente gravação — armazenada localmente, nunca sincronizada`,ai_provider_cloud_hint:`Modelo sugerido: {model}`,ai_provider_models_loading:`Carregando modelos...`,ai_provider_models_empty:`O endpoint não lista modelos`,btn_ai_provider_save:`Salvar`,btn_ai_provider_cancel:`Cancelar`,ai_role_bindings_title:`Atribuição de papéis`,ai_role_recall:`Aprendizado (recordação)`,ai_role_vision:`Observador (visão)`,ai_role_primary:`Principal`,ai_role_fallback:`Reserva`,ai_role_none:`(nenhum)`,btn_ai_role_apply:`Aplicar`,ai_role_bound:`Papel {role} atualizado`,ai_role_bind_failed:`Não foi possível atribuir o papel: {message}`,ai_recall_anthropic_warn:`Provedores Anthropic Messages ainda não são compatíveis com sessões de aprendizado. Atribuir mesmo assim?`,ai_vision_cloud_confirm:`Capturas de tela serão enviadas para {endpoint}. Ativar a observação por visão e atribuir este provedor de nuvem?`,ai_provider_referenced:`Ainda usado por: {roles}`,btn_check_updates:`Verificar atualizações`,btn_open_releases:`Versões`,version_unknown:`desconhecida`,update_checking:`Verificando atualizações...`,update_available:`Atualização disponível: {version}`,update_none:`Você está na versão mais recente.`,update_failed:`Falha na verificação de atualizações: {message}`,release_link_failed:`Não foi possível abrir as versões: {message}`,nav_content:`Conteúdo`,content_title:`Estúdio de Conteúdo`,content_subtitle:`Gerencie seus cartões pessoais, pesquise tokens e refine perguntas de recordação ativa.`,btn_new_card:`Nova carta`,lbl_search_placeholder:`Buscar perguntas, respostas, categorias...`,lbl_category_filter:`Categoria`,lbl_all_categories:`Todas as categorias`,lbl_all_contexts:`Todos os contextos`,lbl_no_context_default:`Sem contexto padrão`,lbl_no_context_assignment:`Sem atribuição de contexto`,lbl_empty_content:`Nenhuma carta encontrada. Crie sua primeira carta !`,lbl_empty_content_btn:`Crie a primeira carta`,lbl_question:`Pergunta`,lbl_answer:`Resposta / Concepto`,lbl_category:`Categoria`,lbl_source_link:`Link de origem`,lbl_more_settings:`Mais configurações`,lbl_context:`Contexto`,lbl_bloom_level:`Nível Bloom`,lbl_symbiosis_mode:`Modo de simbiose`,lbl_slug:`Chave técnica (Slug)`,lbl_slug_hint:`Gerada automaticamente após a criação`,btn_save:`Salvar carta`,btn_remove:`Remover carta`,btn_delete:`Excluir token global`,lbl_confirm_remove_title:`Confirmar remoção`,lbl_confirm_remove_desc:`Isso limpará seu estado FSRS pessoal. O token global não será afetado.`,lbl_confirm_delete_title:`Confirmar exclusão global`,lbl_confirm_delete_desc:`Isso excluirá permanentemente o conceito e todas as cartas de todos os usuários.`,lbl_delete_impact:`Esta ação afeta:`,lbl_impact_cards:`{count} carta(s)`,lbl_impact_reviews:`{count} registro(s) de revisão`,lbl_impact_steps:`{count} etapa(s) de sessão`,lbl_impact_skills:`{count} habilidades de agente atualizadas`,lbl_confirm_action:`Confirmar`,lbl_cancel_action:`Cancelar`,lbl_card_saved_toast:`Carta salva!`,lbl_card_removed_toast:`Carta removida!`,lbl_card_deleted_toast:`Token excluído!`,lbl_error_saving:`Erro ao salvar`,lbl_error_loading:`Erro ao carregar conteúdo`,lbl_card_status_new:`Nova`,lbl_card_status_learning:`Aprendizado`,lbl_card_status_review:`Revisão`,lbl_card_status_relearning:`Reaprendizado`,lbl_card_status_not_started:`Não iniciado`,lbl_card_due:`Vence`,lbl_card_not_due:`Não vence`,btn_import_curriculum:`Importar currículo`,lbl_import_modal_title:`Importar padrão de currículo`,lbl_import_text:`Texto do currículo`,placeholder_import_text:`Cole o texto do currículo ou tópicos do programa aqui...`,lbl_import_source:`URL de origem / Referência`,lbl_import_category:`Categoria de destino`,lbl_import_progress_status:`Gerando cartas...`,lbl_import_progress_detail:`Isso pode levar até um minuto, dependendo da velocidade do seu IA local.`,btn_import_submit:`Importar`,toast_import_success:`{createdCount} novos tokens importados com sucesso e {ensuredCount} cartas garantidas!`,lbl_error_importing:`Falha ao importar o currículo`,btn_curriculum_wizard:`Assistente de currículo`,lbl_curriculum_wizard_title:`Assistente de currículo`,wizard_step_country:`País`,wizard_step_region:`Região`,wizard_step_schoolType:`Tipo de escola`,wizard_step_grade:`Ano escolar`,wizard_step_subject:`Disciplina`,wizard_step_track:`Modalidade`,wizard_step_topic:`Tópicos`,wizard_btn_back:`Voltar`,wizard_btn_next:`Avançar`,wizard_no_options:`Ainda não há opções disponíveis para esta seleção.`,wizard_err_select_option:`Selecione uma opção para continuar.`,wizard_err_no_topics:`Selecione pelo menos um tópico.`,wizard_topic_scope_note:`Os cartões são gerados a partir da página completa do currículo desta disciplina (todos os seus tópicos). A importação precisa por tópico chegará em uma atualização futura — por enquanto, a seleção de tópicos ajuda você a acompanhar o que cobrir a seguir.`,wizard_resume_prompt:`Continuar de onde você parou:`,wizard_btn_resume:`Continuar`,wizard_btn_restart:`Começar de novo`,lbl_curriculum_wizard_loading:`Carregando…`,wizard_hours:`{hours} h`,btn_split:`Dividir`,lbl_split_modal_title:`Dividir carta`,lbl_original_card_title:`Carta original (Pergunta de aplicação resumida)`,lbl_split_original_question:`Pergunta`,lbl_split_original_concept:`Resposta / Conceito`,lbl_split_action_title:`Após a divisão concluída:`,lbl_action_block:`Manter a carta original e bloqueá-la (requer novas cartas primeiro)`,lbl_action_remove:`Remover a carta original`,lbl_split_progress_status:`Gerando propostas atômicas...`,lbl_split_progress_detail:`Isso pode levar até um minuto, dependendo da velocidade do seu IA local.`,lbl_atomic_proposals_title:`Propostas de cartas atômicas (Mínimo 2)`,btn_split_modal_submit:`Confirmar divisão`,btn_content_foundations_card:`Fundamentos`,lbl_foundations_modal_title:`Importar fundamentos`,lbl_foundations_progress_status:`Gerando propostas fundamentais...`,lbl_foundations_progress_detail:`Isso pode levar até um minuto, dependendo da velocidade do seu IA local.`,lbl_foundations_atomic_title:`Propostas de cartas fundamentais`,btn_foundations_modal_submit:`Confirmar importação`,lbl_import_source_type:`Tipo de fonte`,lbl_import_source_uri:`Caminho do arquivo ou URL`,btn_import_source_analyze:`Analisar`,lbl_source_extracted_preview:`Visualização do texto extraído`,lbl_delete:`Excluir`,lbl_proposal_number:`Proposta n.º {n}`,lbl_foundational_proposal_number:`Proposta fundamental n.º {n}`,lbl_foundation_existing_badge:`O cartão existente será vinculado`,lbl_foundation_new_badge:`Sugestão de novo cartão`,lbl_include:`Incluir`,lbl_err_analyze_source_first:`Primeiro analise um arquivo de origem, um link da web ou uma digitalização OCR.`,lbl_err_min_split_proposals:`São necessárias pelo menos 2 propostas de cartão completas para dividir um cartão.`,lbl_err_select_foundation:`Selecione pelo menos um cartão de proposta de pré-requisito para importar.`,lbl_err_enter_path_or_url:`Insira um caminho de arquivo ou URL para analisar.`,lbl_analyzing_source:`Analisando o conteúdo de origem, aguarde…`,lbl_err_analysis_failed:`Falha na análise`,lbl_err_analysis_prefix:`Erro de análise`,lbl_err_concept_required:`A resposta ou o conceito é obrigatório.`,lbl_err_category_required:`A categoria é obrigatória.`,lbl_err_import_context_required:`O texto do currículo é obrigatório.`,lbl_err_original_context_required:`A pergunta e a resposta são obrigatórias para o cartão original.`,settings_context_title:`Contexto de conhecimento`,settings_context_help:`Selecione o contexto de conhecimento padrão para este dispositivo.`,settings_context_label:`Contexto padrão`,wizard_context_label:`Atribuir cartões importados ao contexto:`},zh:{ai_status_offline:`AI 已离线`,ai_status_online:`本地 AI 在线`,ai_status_cloud_online:`云端 AI · {model}`,ai_status_cloud_offline:`云端 AI 离线 · {model}`,ai_status_starting:`正在检查 AI...`,ai_status_model_missing:`AI:未找到模型`,study_question_original:`原文`,study_evaluation_model:`{model}`,nav_dashboard:`仪表板`,nav_settings:`设置`,dashboard_kicker:`今日 ZAM`,dashboard_title:`有意识地学习。`,dashboard_subtitle:`复习到期内容、打开知识图谱,或在设置中配置本地 AI 与工作区。`,lbl_due_reviews:`待复习`,lbl_caught_up:`你已全部复习完毕!`,dashboard_error:`无法加载你的数据`,lbl_domains:`活跃领域`,btn_start_session:`开始学习课`,lbl_translating:`正在动态翻译...`,placeholder_answer:`在此输入你的概念性回答...(Ctrl+Enter 提交)`,btn_reveal_answer:`提交并揭晓答案`,lbl_ai_evaluating:`正在审阅你的回答并生成反馈...`,lbl_ai_working:`(这可能需要一点时间。)`,lbl_wait_warn:`⚠ 评估耗时比预期更长。`,btn_wait_keep:`继续等待`,btn_wait_skip:`离线跳过`,lbl_question_wait_warn:`⚠ 问题生成耗时比预期更长。`,btn_question_use_saved:`使用已保存的问题`,lbl_ai_feedback_title:`ZAM 反馈`,lbl_reveal_title:`参考答案`,lbl_rating_instruction:`请如实评估你的主动回忆:`,lbl_rate_1:`重来`,lbl_rate_2:`困难`,lbl_rate_3:`良好`,lbl_rate_4:`容易`,btn_recall_reveal:`揭晓`,btn_recall_check:`检查答案`,btn_recall_finish:`结束会话`,lbl_recall_focus:`聚焦:{domain}`,lbl_recall_summary:`已复习 {done}/{total}`,lbl_recall_summary_title:`会话小结`,lbl_recall_empty_title:`暂无到期`,btn_pause_session:`暂停并退出学习课`,lbl_generating_question:`正在生成动态问题...`,token:`Token`,concept:`概念`,context:`上下文`,source:`来源引用`,bloom_level:`Bloom 层级`,rating_again_shortcut:`(快捷键:1)`,rating_hard_shortcut:`(快捷键:2)`,rating_good_shortcut:`(快捷键:3)`,rating_easy_shortcut:`(快捷键:4)`,session_completed:`学习课已完成!`,session_completed_sub:`出色地完成了这节学习课!你的记忆痕迹已更新。`,btn_back_to_dashboard:`返回仪表板`,btn_open_graph:`知识图谱(3D)`,btn_open_settings:`设置`,observer_title:`界面观察器`,observer_idle:`加载窗口并选择一个应用窗口进行观察。`,observer_loading:`正在加载可观察的窗口...`,observer_ready:`已选择:{title}`,observer_vision_checking:`正在检查视觉观察设置...`,observer_analyzing:`正在捕获快照并询问视觉模型...`,observer_done:`观察已保存。最新报告置信度:{confidence}`,observer_canceled:`观察已取消。`,observer_error:`观察器错误:{message}`,observer_vision_disabled:`视觉观察已禁用。使用以下命令启用:zam settings set llm.vision.enabled true`,observer_vision_offline:`视觉端点已离线:{url}`,observer_vision_model_missing:`视觉模型不可用:{model}`,observer_privacy_paused:`隐私暂停:此窗口被隐私过滤器拦截({reason})。`,observer_privacy_option:`隐私暂停`,observer_refresh:`加载窗口`,observer_analyze:`快照并分析`,observer_cancel:`取消`,observer_empty:`未找到可观察的窗口。`,observer_select_initial:`尚未加载窗口`,observer_select_placeholder:`选择一个窗口`,observer_history_title:`观察报告`,observer_history_refresh:`刷新报告`,observer_history_empty:`暂无观察报告。`,observer_history_loaded:`已加载 {count} 份观察报告。`,observer_loop_start:`开始循环`,observer_loop_stop:`停止循环`,observer_loop_idle:`仅手动快照。`,observer_loop_running:`观察器循环运行中。一次一张快照。`,observer_loop_waiting:`观察器循环运行中。下一张快照将在 {seconds} 秒后。`,observer_loop_stopped:`观察器循环已停止。`,observer_watch_start:`开始监视`,observer_watch_stop:`停止监视`,observer_watch_idle:`持续监视已关闭。`,observer_watch_starting:`正在启动持续监视...`,observer_watch_running:`正在监视 {title} — {count} 个事件。`,observer_watch_stopping:`正在停止持续监视...`,observer_watch_stopped:`持续监视已停止。`,observer_watch_error:`监视错误:{message}`,graph_title:`知识图谱(3D)`,graph_hint:`拖动旋转 • 点击节点聚焦 • 滚动缩放`,graph_focus:`聚焦`,graph_prereqs:`基础(前置条件)`,graph_dependents:`进阶能力(依赖项)`,graph_no_card:`尚无个人卡片`,graph_refresh:`刷新`,graph_domain_token_list_title:`此领域中的所有 Token`,setup_title:`设置与数据`,settings_kicker:`本地配置`,settings_title:`设置`,settings_subtitle:`配置这台机器,而不会把相同的选择强加到每个工作区或设备上。`,settings_back:`返回仪表板`,settings_system_title:`系统`,settings_ai_title:`AI 模型`,settings_workspace_title:`工作区`,workspaces_help:`为这台机器注册个人、团队、家庭或社区的工作目录。`,settings_appearance_title:`外观`,settings_data_title:`数据`,settings_database:`数据库`,settings_learning_profile:`学习档案`,database_checking:`正在检查…`,database_status_local:`本地 SQLite · 已连接`,database_status_turso:`Turso · 已连接`,database_status_error:`连接不可用`,database_detail:`{location} · 档案 {profile} · {count} 张卡片`,database_no_profile:`无活动档案`,database_profile_option:`{profile} — {count} 张卡片`,database_profile_switch_confirm:`切换活动学习档案为“{profile}”吗?`,database_profile_switched:`活动档案:{profile}({count} 张卡片)`,database_refresh:`刷新状态`,settings_theme:`主题`,theme_light:`浅色`,theme_dark:`深色`,btn_open_data_folder:`打开数据文件夹`,btn_backup_db:`备份数据库`,setup_backing_up:`正在备份数据库…`,setup_backed_up:`已备份到 {path}`,setup_remote_no_backup:`你的数据库会同步到云端({target})——无需单独的本地备份。`,setup_backup_failed:`备份失败:{message}`,setup_backup_failed_generic:`备份失败。`,setup_open_folder_failed:`无法打开数据文件夹:{message}`,lbl_workspace:`工作区`,btn_choose_workspace:`+ 添加工作区…`,btn_open_terminal:`打开终端`,terminal_opening:`正在打开终端...`,terminal_opened:`已在 {workspace} 中打开终端`,terminal_open_failed:`无法打开终端:{message}`,workspace_active:`活跃`,workspace_default_label:`默认工作区`,workspace_empty:`尚未注册工作区。`,workspace_kind:`{kind} 工作区`,workspace_kind_personal:`个人工作区`,workspace_kind_team:`团队工作区`,workspace_kind_family:`家庭工作区`,workspace_kind_community:`社区工作区`,workspace_kind_organization:`组织工作区`,workspace_kind_custom:`自定义工作区`,workspace_more:`另有 {count} 个工作区已隐藏。使用 CLI 查看完整列表。`,workspace_use:`使用`,workspace_open:`终端`,workspace_default_suffix:`(默认)`,workspace_set:`工作区已设为 {path}`,workspace_added:`已添加工作区:{path}`,workspace_pick_failed:`无法设置工作区:{message}`,workspace_remove:`移除`,workspace_remove_confirm:`从 ZAM 中移除“{label}”?文件夹中的文件和链接将保持不变。`,workspace_removed:`已移除工作区:{label}`,workspace_remove_failed:`无法移除工作区:{message}`,workspace_link_ok:`Skill 链接正常`,workspace_link_broken:`Skill 链接已损坏`,workspace_link_unmanaged:`外部 Skill 文件夹`,workspace_repair:`修复 Skill 链接`,workspace_repair_confirm:`“{label}”的文件夹中包含一个并非由 ZAM 创建的 skills/zam 目录。修复会将其删除并替换为链接。是否继续?`,workspace_repairing:`正在修复 Skill 链接…`,workspace_repaired:`Skill 链接已修复:{label}`,workspace_repair_failed:`无法修复 Skill 链接:{message}`,lbl_app_version:`版本`,lbl_learning_model:`学习模型`,lbl_observer_model:`观察器模型`,provider_ready:`就绪`,provider_disabled:`已禁用`,provider_offline:`离线`,provider_model_missing:`缺少模型`,provider_unsupported:`不支持的提供方`,provider_local:`本地`,provider_cloud:`云端`,provider_unknown:`未知`,btn_ai_config_open:`配置`,btn_ai_config_close:`关闭`,btn_add_ai_provider:`+ 添加提供方`,ai_config_loading:`正在加载提供方配置...`,ai_config_failed:`无法加载提供方配置:{message}`,ai_provider_empty:`尚未配置提供方。`,ai_provider_section_local:`本地`,ai_provider_section_cloud:`云端`,ai_provider_kind:`提供方类型`,ai_provider_kind_local:`本地`,ai_provider_kind_cloud:`云端`,ai_provider_local_badge:`本地`,ai_provider_cloud_badge:`云端`,ai_provider_key_set:`已设置密钥`,ai_provider_key_missing:`缺少密钥`,ai_provider_key_none:`无密钥`,ai_provider_edit:`编辑`,ai_provider_remove:`移除`,ai_provider_remove_confirm:`移除提供方“{name}”?`,ai_provider_removed:`已移除提供方“{name}”`,ai_provider_saved:`已保存提供方“{name}”`,ai_provider_save_failed:`无法保存提供方:{message}`,ai_provider_form_add_title:`添加提供方`,ai_provider_form_edit_title:`编辑提供方`,ai_provider_display_name:`名称`,ai_provider_url:`URL`,ai_provider_model:`模型`,ai_provider_model_local_hint:`输入模型名称。如果端点列出了模型,你可以在下面选择一个。`,ai_provider_models_pick:`从端点选取`,ai_provider_flavor:`API 变体`,ai_provider_local:`在这台计算机上运行`,ai_provider_local_hint:`本地模型服务器(FastFlowLM、Ollama 等)通常无需 API 密钥。ZAM 可以尝试自动启动服务器。`,ai_provider_cloud_hint_key:`云端 API 需要 API 密钥。本地提供方不使用密钥字段。`,ai_provider_runner:`本地模型服务器`,ai_provider_runner_hint:`在这台 PC 上提供模型的程序——不是你的编码代理。`,ai_provider_runner_auto:`自动检测`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`未检测到`,ai_provider_api_key:`API 密钥`,ai_provider_api_key_hint:`仅写入——存储在本地,绝不同步`,ai_provider_cloud_hint:`建议的模型:{model}`,ai_provider_models_loading:`正在加载模型...`,ai_provider_models_empty:`端点未列出任何模型`,btn_ai_provider_save:`保存`,btn_ai_provider_cancel:`取消`,ai_role_bindings_title:`角色绑定`,ai_role_recall:`学习(回忆)`,ai_role_vision:`观察器(视觉)`,ai_role_primary:`主要`,ai_role_fallback:`备用`,ai_role_none:`(无)`,btn_ai_role_apply:`应用`,ai_role_bound:`角色 {role} 已更新`,ai_role_bind_failed:`无法绑定角色:{message}`,ai_recall_anthropic_warn:`Anthropic Messages 提供方尚不支持学习课。仍要绑定吗?`,ai_vision_cloud_confirm:`屏幕截图将发送至 {endpoint}。启用视觉观察并绑定此云端提供方吗?`,ai_provider_referenced:`仍被以下角色使用:{roles}`,btn_check_updates:`检查更新`,btn_open_releases:`发行版`,version_unknown:`未知`,update_checking:`正在检查更新...`,update_available:`有可用更新:{version}`,update_none:`你已是最新版本。`,update_failed:`检查更新失败:{message}`,release_link_failed:`无法打开发行版:{message}`,nav_content:`学习内容`,content_title:`学习内容工作室`,content_subtitle:`管理个人学习卡片、搜索知识单元并完善主动回忆问题。`,btn_new_card:`新建卡片`,lbl_search_placeholder:`搜索问题、答案、分类...`,lbl_category_filter:`分类`,lbl_all_categories:`所有分类`,lbl_all_contexts:`所有上下文`,lbl_no_context_default:`无默认上下文`,lbl_no_context_assignment:`不分配上下文`,lbl_empty_content:`未找到学习卡片。创建你的第一张卡片!`,lbl_empty_content_btn:`创建第一张卡片`,lbl_question:`问题`,lbl_answer:`答案 / 概念`,lbl_category:`分类`,lbl_source_link:`来源链接`,lbl_more_settings:`更多设置`,lbl_context:`上下文`,lbl_bloom_level:`布鲁姆认知层级`,lbl_symbiosis_mode:`共生模式`,lbl_slug:`技术键 (Slug)`,lbl_slug_hint:`创建后自动生成`,btn_save:`保存卡片`,btn_remove:`移除卡片`,btn_delete:`全局彻底删除`,lbl_confirm_remove_title:`确认移除卡片`,lbl_confirm_remove_desc:`移除卡片将清除您对此概念的个人学习状态和历史。全局目录不受影响。`,lbl_confirm_delete_title:`确认全局彻底删除`,lbl_confirm_delete_desc:`全局彻底删除此概念将从数据库中永久销毁该概念、所有用户的个人卡片以及相关的评估历史。`,lbl_delete_impact:`此操作将影响:`,lbl_impact_cards:`{count} 张卡片`,lbl_impact_reviews:`{count} 条评估日志`,lbl_impact_steps:`{count} 个会话步骤`,lbl_impact_skills:`更新了 {count} 个智能体技能`,lbl_confirm_action:`确认`,lbl_cancel_action:`取消`,lbl_card_saved_toast:`卡片保存成功!`,lbl_card_removed_toast:`卡片移除成功!`,lbl_card_deleted_toast:`卡片彻底删除成功!`,lbl_error_saving:`保存卡片失败`,lbl_error_loading:`加载内容失败`,lbl_card_status_new:`新学习`,lbl_card_status_learning:`学习中`,lbl_card_status_review:`复习中`,lbl_card_status_relearning:`重新学习`,lbl_card_status_not_started:`未开始`,lbl_card_due:`到期`,lbl_card_not_due:`未到期`,btn_import_curriculum:`导入课程大纲`,lbl_import_modal_title:`导入课程标准`,lbl_import_text:`课程内容文本`,placeholder_import_text:`在此粘贴课程大纲、教学要求或笔记要点...`,lbl_import_source:`来源 URL / 参考`,lbl_import_category:`目标分类`,lbl_import_progress_status:`正在生成卡片...`,lbl_import_progress_detail:`这可能需要长达一分钟,具体取决于您的本地 AI 速度。`,btn_import_submit:`导入`,toast_import_success:`成功导入 {createdCount} 个新概念并生成 {ensuredCount} 张卡片!`,lbl_error_importing:`导入课程大纲失败`,btn_curriculum_wizard:`课程向导`,lbl_curriculum_wizard_title:`课程向导`,wizard_step_country:`国家`,wizard_step_region:`地区`,wizard_step_schoolType:`学校类型`,wizard_step_grade:`年级`,wizard_step_subject:`科目`,wizard_step_track:`分组`,wizard_step_topic:`主题`,wizard_btn_back:`上一步`,wizard_btn_next:`下一步`,wizard_no_options:`此选择暂无可用选项。`,wizard_err_select_option:`请选择一个选项以继续。`,wizard_err_no_topics:`请至少选择一个主题。`,wizard_topic_scope_note:`卡片是根据该科目完整的课程大纲页面生成的(包含其所有主题)。精确的按主题导入将在未来的更新中提供——目前,主题选择可帮助你跟踪接下来要学习的内容。`,wizard_resume_prompt:`从你上次停下的地方继续:`,wizard_btn_resume:`继续`,wizard_btn_restart:`重新开始`,lbl_curriculum_wizard_loading:`加载中…`,wizard_hours:`{hours} 小时`,btn_split:`拆分`,lbl_split_modal_title:`拆分卡片`,lbl_original_card_title:`原始卡片 (总结性的应用问题)`,lbl_split_original_question:`问题`,lbl_split_original_concept:`回答 / 概念`,lbl_split_action_title:`拆分完成后:`,lbl_action_block:`保留原始卡片并将其阻碍 (需要先掌握新卡片)`,lbl_action_remove:`移除原始卡片`,lbl_split_progress_status:`正在生成微型知识卡片建议...`,lbl_split_progress_detail:`这可能需要长达一分钟,具体取决于您的本地 AI 速度。`,lbl_atomic_proposals_title:`微型卡片建议 (最少 2 张)`,btn_split_modal_submit:`确认拆分`,btn_content_foundations_card:`前置知识`,lbl_foundations_modal_title:`导入前置基础知识`,lbl_foundations_progress_status:`正在生成前置知识建议...`,lbl_foundations_progress_detail:`这可能需要长达一分钟,具体取决于您的本地 AI 速度。`,lbl_foundations_atomic_title:`前置基础卡片建议`,btn_foundations_modal_submit:`确认导入`,lbl_import_source_type:`来源类型`,lbl_import_source_uri:`文件路径或网址`,btn_import_source_analyze:`分析`,lbl_source_extracted_preview:`提取文本预览`,lbl_delete:`删除`,lbl_proposal_number:`提案 #{n}`,lbl_foundational_proposal_number:`基础提案 #{n}`,lbl_foundation_existing_badge:`将关联现有卡片`,lbl_foundation_new_badge:`新卡片建议`,lbl_include:`包含`,lbl_err_analyze_source_first:`请先分析源文件、网页链接或OCR扫描。`,lbl_err_min_split_proposals:`拆分卡片至少需要2个完整的卡片提案。`,lbl_err_select_foundation:`请至少选择一个先决条件提案卡片进行导入。`,lbl_err_enter_path_or_url:`请输入要分析的文件路径或网址。`,lbl_analyzing_source:`正在分析源内容,请稍候…`,lbl_err_analysis_failed:`分析失败`,lbl_err_analysis_prefix:`分析错误`,lbl_err_concept_required:`答案或概念为必填项。`,lbl_err_category_required:`类别为必填项。`,lbl_err_import_context_required:`课程文本为必填项。`,lbl_err_original_context_required:`原始卡片必须填写问题和答案。`,settings_context_title:`知识上下文`,settings_context_help:`选择此设备的默认知识上下文。`,settings_context_label:`默认上下文`,wizard_context_label:`将导入的卡片分配到上下文:`},ja:{ai_status_offline:`AI オフライン`,ai_status_online:`ローカル AI オンライン`,ai_status_cloud_online:`クラウド AI · {model}`,ai_status_cloud_offline:`クラウド AI オフライン · {model}`,ai_status_starting:`AI を確認中...`,ai_status_model_missing:`AI: モデルが見つかりません`,study_question_original:`原文`,study_evaluation_model:`{model}`,nav_dashboard:`ダッシュボード`,nav_settings:`設定`,dashboard_kicker:`今日の ZAM`,dashboard_title:`意識的に学ぶ。`,dashboard_subtitle:`期限の来た項目を復習し、ナレッジマップを開き、または設定でローカル AI とワークスペースを構成します。`,lbl_due_reviews:`復習予定`,lbl_caught_up:`すべて完了しています!`,dashboard_error:`データを読み込めませんでした`,lbl_domains:`アクティブな領域`,btn_start_session:`学習セッションを開始`,lbl_translating:`動的に翻訳中...`,placeholder_answer:`ここに概念的な回答を入力...(Ctrl+Enter で送信)`,btn_reveal_answer:`送信して回答を表示`,lbl_ai_evaluating:`回答を確認し、フィードバックを生成しています...`,lbl_ai_working:`(少し時間がかかる場合があります。)`,lbl_wait_warn:`⚠ 評価に予想以上の時間がかかっています。`,btn_wait_keep:`待ち続ける`,btn_wait_skip:`オフラインでスキップ`,lbl_question_wait_warn:`⚠ 質問の生成に予想以上の時間がかかっています。`,btn_question_use_saved:`保存済みの質問を使用`,lbl_ai_feedback_title:`ZAM フィードバック`,lbl_reveal_title:`参考解答`,lbl_rating_instruction:`アクティブリコールを正直に評価してください:`,lbl_rate_1:`もう一度`,lbl_rate_2:`難しい`,lbl_rate_3:`良い`,lbl_rate_4:`簡単`,btn_recall_reveal:`表示`,btn_recall_check:`回答を確認`,btn_recall_finish:`セッションを終了`,lbl_recall_focus:`フォーカス:{domain}`,lbl_recall_summary:`{done} / {total} 件を復習`,lbl_recall_summary_title:`セッションの概要`,lbl_recall_empty_title:`対象なし`,btn_pause_session:`一時停止して終了`,lbl_generating_question:`動的な質問を生成中...`,token:`トークン`,concept:`概念`,context:`コンテキスト`,source:`出典`,bloom_level:`Bloom レベル`,rating_again_shortcut:`(ショートカット: 1)`,rating_hard_shortcut:`(ショートカット: 2)`,rating_good_shortcut:`(ショートカット: 3)`,rating_easy_shortcut:`(ショートカット: 4)`,session_completed:`学習セッションが完了しました!`,session_completed_sub:`このセッションをやり遂げました!記憶の痕跡が更新されました。`,btn_back_to_dashboard:`ダッシュボードに戻る`,btn_open_graph:`ナレッジマップ(3D)`,btn_open_settings:`設定`,observer_title:`UI オブザーバー`,observer_idle:`ウィンドウを読み込み、観察するアプリケーションウィンドウを 1 つ選択してください。`,observer_loading:`観察可能なウィンドウを読み込み中...`,observer_ready:`選択中: {title}`,observer_vision_checking:`ビジョン観察の設定を確認中...`,observer_analyzing:`スナップショットを取得し、ビジョンモデルに問い合わせ中...`,observer_done:`観察を保存しました。最新レポートの信頼度: {confidence}`,observer_canceled:`観察をキャンセルしました。`,observer_error:`オブザーバーエラー: {message}`,observer_vision_disabled:`ビジョン観察は無効です。次のコマンドで有効化してください: zam settings set llm.vision.enabled true`,observer_vision_offline:`ビジョンエンドポイントがオフラインです: {url}`,observer_vision_model_missing:`ビジョンモデルが利用できません: {model}`,observer_privacy_paused:`プライバシー一時停止: このウィンドウはプライバシーフィルターによってブロックされています({reason})。`,observer_privacy_option:`プライバシー一時停止`,observer_refresh:`ウィンドウを読み込む`,observer_analyze:`スナップショットと分析`,observer_cancel:`キャンセル`,observer_empty:`観察可能なウィンドウが見つかりません。`,observer_select_initial:`ウィンドウはまだ読み込まれていません`,observer_select_placeholder:`ウィンドウを選択`,observer_history_title:`観察レポート`,observer_history_refresh:`レポートを更新`,observer_history_empty:`観察レポートはまだありません。`,observer_history_loaded:`{count} 件の観察レポートを読み込みました。`,observer_loop_start:`ループを開始`,observer_loop_stop:`ループを停止`,observer_loop_idle:`手動スナップショットのみ。`,observer_loop_running:`オブザーバーループが実行中です。一度に 1 つのスナップショット。`,observer_loop_waiting:`オブザーバーループが実行中です。次のスナップショットは {seconds} 秒後。`,observer_loop_stopped:`オブザーバーループを停止しました。`,observer_watch_start:`監視を開始`,observer_watch_stop:`監視を停止`,observer_watch_idle:`継続的な監視はオフです。`,observer_watch_starting:`継続的な監視を開始中...`,observer_watch_running:`{title} を監視中 — {count} 件のイベント。`,observer_watch_stopping:`継続的な監視を停止中...`,observer_watch_stopped:`継続的な監視を停止しました。`,observer_watch_error:`監視エラー: {message}`,graph_title:`ナレッジグラフ(3D)`,graph_hint:`ドラッグで回転 • ノードをクリックでフォーカス • スクロールでズーム`,graph_focus:`フォーカス`,graph_prereqs:`基礎(前提条件)`,graph_dependents:`上位スキル(依存項目)`,graph_no_card:`まだ個人カードがありません`,graph_refresh:`更新`,graph_domain_token_list_title:`この領域のすべてのトークン`,setup_title:`セットアップとデータ`,settings_kicker:`ローカル設定`,settings_title:`設定`,settings_subtitle:`すべてのワークスペースやデバイスに同じ選択を強制することなく、このマシンを構成します。`,settings_back:`ダッシュボードに戻る`,settings_system_title:`システム`,settings_ai_title:`AI モデル`,settings_workspace_title:`ワークスペース`,workspaces_help:`このマシン用に、個人・チーム・家族・コミュニティの作業ディレクトリを登録します。`,settings_appearance_title:`外観`,settings_data_title:`データ`,settings_database:`データベース`,settings_learning_profile:`学習プロフィール`,database_checking:`確認中…`,database_status_local:`ローカル SQLite · 接続済み`,database_status_turso:`Turso · 接続済み`,database_status_error:`接続を利用できません`,database_detail:`{location} · プロフィール {profile} · {count} 枚`,database_no_profile:`有効なプロフィールなし`,database_profile_option:`{profile} — {count} 枚`,database_profile_switch_confirm:`有効な学習プロフィールを「{profile}」に切り替えますか?`,database_profile_switched:`有効なプロフィール:{profile}({count} 枚)`,database_refresh:`状態を更新`,settings_theme:`テーマ`,theme_light:`ライト`,theme_dark:`ダーク`,btn_open_data_folder:`データフォルダーを開く`,btn_backup_db:`データベースをバックアップ`,setup_backing_up:`データベースをバックアップ中…`,setup_backed_up:`{path} にバックアップしました`,setup_remote_no_backup:`データベースはクラウド({target})に同期されます — 個別のローカルバックアップは不要です。`,setup_backup_failed:`バックアップに失敗しました: {message}`,setup_backup_failed_generic:`バックアップに失敗しました。`,setup_open_folder_failed:`データフォルダーを開けませんでした: {message}`,lbl_workspace:`ワークスペース`,btn_choose_workspace:`+ ワークスペースを追加…`,btn_open_terminal:`ターミナルを開く`,terminal_opening:`ターミナルを開いています...`,terminal_opened:`{workspace} でターミナルを開きました`,terminal_open_failed:`ターミナルを開けませんでした: {message}`,workspace_active:`アクティブ`,workspace_default_label:`既定のワークスペース`,workspace_empty:`登録済みのワークスペースはまだありません。`,workspace_kind:`{kind} ワークスペース`,workspace_kind_personal:`個人ワークスペース`,workspace_kind_team:`チームワークスペース`,workspace_kind_family:`家族ワークスペース`,workspace_kind_community:`コミュニティワークスペース`,workspace_kind_organization:`組織ワークスペース`,workspace_kind_custom:`カスタムワークスペース`,workspace_more:`他に {count} 件のワークスペースが非表示です。完全な一覧は CLI を使用してください。`,workspace_use:`使用`,workspace_open:`ターミナル`,workspace_default_suffix:`(既定)`,workspace_set:`ワークスペースを {path} に設定しました`,workspace_added:`ワークスペースを追加しました: {path}`,workspace_pick_failed:`ワークスペースを設定できませんでした: {message}`,workspace_remove:`削除`,workspace_remove_confirm:`「{label}」を ZAM から削除しますか?フォルダー内のファイルとリンクは変更されません。`,workspace_removed:`ワークスペースを削除しました: {label}`,workspace_remove_failed:`ワークスペースを削除できませんでした: {message}`,workspace_link_ok:`スキルリンク正常`,workspace_link_broken:`スキルリンク破損`,workspace_link_unmanaged:`外部スキルフォルダー`,workspace_repair:`スキルリンクを修復`,workspace_repair_confirm:`「{label}」のフォルダーには、ZAM が作成していない skills/zam ディレクトリがあります。修復するとそれを削除し、リンクに置き換えます。続行しますか?`,workspace_repairing:`スキルリンクを修復中…`,workspace_repaired:`スキルリンクを修復しました: {label}`,workspace_repair_failed:`スキルリンクを修復できませんでした: {message}`,lbl_app_version:`バージョン`,lbl_learning_model:`学習モデル`,lbl_observer_model:`オブザーバーモデル`,provider_ready:`準備完了`,provider_disabled:`無効`,provider_offline:`オフライン`,provider_model_missing:`モデルがありません`,provider_unsupported:`未対応のプロバイダー`,provider_local:`ローカル`,provider_cloud:`クラウド`,provider_unknown:`不明`,btn_ai_config_open:`構成`,btn_ai_config_close:`閉じる`,btn_add_ai_provider:`+ プロバイダーを追加`,ai_config_loading:`プロバイダー構成を読み込み中...`,ai_config_failed:`プロバイダー構成を読み込めませんでした: {message}`,ai_provider_empty:`構成済みのプロバイダーはまだありません。`,ai_provider_section_local:`ローカル`,ai_provider_section_cloud:`クラウド`,ai_provider_kind:`プロバイダーの種類`,ai_provider_kind_local:`ローカル`,ai_provider_kind_cloud:`クラウド`,ai_provider_local_badge:`ローカル`,ai_provider_cloud_badge:`クラウド`,ai_provider_key_set:`キー設定済み`,ai_provider_key_missing:`キーがありません`,ai_provider_key_none:`キーなし`,ai_provider_edit:`編集`,ai_provider_remove:`削除`,ai_provider_remove_confirm:`プロバイダー「{name}」を削除しますか?`,ai_provider_removed:`プロバイダー「{name}」を削除しました`,ai_provider_saved:`プロバイダー「{name}」を保存しました`,ai_provider_save_failed:`プロバイダーを保存できませんでした: {message}`,ai_provider_form_add_title:`プロバイダーを追加`,ai_provider_form_edit_title:`プロバイダーを編集`,ai_provider_display_name:`名前`,ai_provider_url:`URL`,ai_provider_model:`モデル`,ai_provider_model_local_hint:`モデル名を入力してください。エンドポイントがモデルを列挙する場合は、下から選択できます。`,ai_provider_models_pick:`エンドポイントから選択`,ai_provider_flavor:`API の種類`,ai_provider_local:`このコンピューターで実行`,ai_provider_local_hint:`ローカルモデルサーバー(FastFlowLM、Ollama など)は通常 API キーを必要としません。ZAM がサーバーの自動起動を試みることができます。`,ai_provider_cloud_hint_key:`クラウド API には API キーが必要です。ローカルプロバイダーはキー欄を使用しません。`,ai_provider_runner:`ローカルモデルサーバー`,ai_provider_runner_hint:`この PC でモデルを提供するプログラムです — コーディングエージェントではありません。`,ai_provider_runner_auto:`自動検出`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`検出されません`,ai_provider_api_key:`API キー`,ai_provider_api_key_hint:`書き込み専用 — ローカルに保存され、同期されません`,ai_provider_cloud_hint:`推奨モデル: {model}`,ai_provider_models_loading:`モデルを読み込み中...`,ai_provider_models_empty:`エンドポイントにモデルがありません`,btn_ai_provider_save:`保存`,btn_ai_provider_cancel:`キャンセル`,ai_role_bindings_title:`ロールの割り当て`,ai_role_recall:`学習(想起)`,ai_role_vision:`オブザーバー(ビジョン)`,ai_role_primary:`プライマリ`,ai_role_fallback:`フォールバック`,ai_role_none:`(なし)`,btn_ai_role_apply:`適用`,ai_role_bound:`ロール {role} を更新しました`,ai_role_bind_failed:`ロールを割り当てられませんでした: {message}`,ai_recall_anthropic_warn:`Anthropic Messages プロバイダーは学習セッションにまだ対応していません。それでも割り当てますか?`,ai_vision_cloud_confirm:`スクリーンショットが {endpoint} に送信されます。ビジョン観察を有効にして、このクラウドプロバイダーを割り当てますか?`,ai_provider_referenced:`まだ次のロールで使用中: {roles}`,btn_check_updates:`更新を確認`,btn_open_releases:`リリース`,version_unknown:`不明`,update_checking:`更新を確認中...`,update_available:`更新が利用可能: {version}`,update_none:`最新バージョンを使用しています。`,update_failed:`更新の確認に失敗しました: {message}`,release_link_failed:`リリースを開けませんでした: {message}`,nav_content:`学習コンテンツ`,content_title:`コンテンツスタジオ`,content_subtitle:`個人の学習カードを管理し、トークンを検索して、能動的想起の質問を整えます。`,btn_new_card:`新規カード`,lbl_search_placeholder:`質問、回答、カテゴリを検索...`,lbl_category_filter:`カテゴリ`,lbl_all_categories:`すべてのカテゴリ`,lbl_all_contexts:`すべてのコンテキスト`,lbl_no_context_default:`既定のコンテキストなし`,lbl_no_context_assignment:`コンテキストを割り当てない`,lbl_empty_content:`学習カードが見つかりません。最初のカードを作成しましょう!`,lbl_empty_content_btn:`最初のカードを作成`,lbl_question:`質問`,lbl_answer:`回答 / 概念`,lbl_category:`カテゴリ`,lbl_source_link:`ソースリンク`,lbl_more_settings:`詳細設定`,lbl_context:`コンテキスト`,lbl_bloom_level:`ブルーム分類レベル`,lbl_symbiosis_mode:`共生モード`,lbl_slug:`技術キー (Slug)`,lbl_slug_hint:`作成後に自動生成されます`,btn_save:`カードを保存`,btn_remove:`カードを削除`,btn_delete:`グローバルトークンを完全削除`,lbl_confirm_remove_title:`カード削除の確認`,lbl_confirm_remove_desc:`このカードを削除すると、このトークンに対する個人の学習状態と履歴がクリアされます。グローバルカタログには影響しません。`,lbl_confirm_delete_title:`グローバルトークン完全削除の確認`,lbl_confirm_delete_desc:`このトークンを完全に削除すると、この概念、すべてのユーザーの個人カード、およびデータベース全体の学習履歴が永久に消去されます。`,lbl_delete_impact:`このアクションの影響:`,lbl_impact_cards:`{count} 枚のカード`,lbl_impact_reviews:`{count} 件の復習ログ`,lbl_impact_steps:`{count} 件のセッションステップ`,lbl_impact_skills:`{count} 件のエージェントスキルを更新`,lbl_confirm_action:`確認`,lbl_cancel_action:`キャンセル`,lbl_card_saved_toast:`カードが正常に保存されました!`,lbl_card_removed_toast:`カードが正常に削除されました!`,lbl_card_deleted_toast:`トークンが正常に削除されました!`,lbl_error_saving:`カードの保存に失敗しました`,lbl_error_loading:`コンテンツの読み込みに失敗しました`,lbl_card_status_new:`新規`,lbl_card_status_learning:`学習中`,lbl_card_status_review:`復習中`,lbl_card_status_relearning:`再学習中`,lbl_card_status_not_started:`未着手`,lbl_card_due:`期限`,lbl_card_not_due:`期限前`,btn_import_curriculum:`カリキュラムインポート`,lbl_import_modal_title:`カリキュラム標準のインポート`,lbl_import_text:`カリキュラムテキスト`,placeholder_import_text:`カリキュラムのテキストやシラバスの要点をここに貼り付けます...`,lbl_import_source:`ソースURL / 参照`,lbl_import_category:`対象カテゴリ`,lbl_import_progress_status:`カードを生成中...`,lbl_import_progress_detail:`ローカルAIの速度によっては、最大1分かかる場合があります。`,btn_import_submit:`インポート`,toast_import_success:`{createdCount} 件の新しいトークンをインポートし、{ensuredCount} 件のカードを生成しました!`,lbl_error_importing:`カリキュラムのインポートに失敗しました`,btn_curriculum_wizard:`カリキュラムウィザード`,lbl_curriculum_wizard_title:`カリキュラムウィザード`,wizard_step_country:`国`,wizard_step_region:`地域`,wizard_step_schoolType:`学校の種類`,wizard_step_grade:`学年`,wizard_step_subject:`教科`,wizard_step_track:`コース`,wizard_step_topic:`トピック`,wizard_btn_back:`戻る`,wizard_btn_next:`次へ`,wizard_no_options:`この選択にはまだ利用可能なオプションがありません。`,wizard_err_select_option:`続行するにはオプションを選択してください。`,wizard_err_no_topics:`少なくとも1つのトピックを選択してください。`,wizard_topic_scope_note:`カードはこの教科の完全なカリキュラムページ(すべてのトピックを含む)から生成されます。トピックごとの正確なインポートは今後のアップデートで提供される予定です。現時点では、トピックの選択は次に取り組む内容を把握するのに役立ちます。`,wizard_resume_prompt:`前回の続きから:`,wizard_btn_resume:`続ける`,wizard_btn_restart:`最初からやり直す`,lbl_curriculum_wizard_loading:`読み込み中…`,wizard_hours:`{hours}時間`,btn_split:`分割`,lbl_split_modal_title:`カードの分割`,lbl_original_card_title:`元のカード (要約された応用問題)`,lbl_split_original_question:`質問`,lbl_split_original_concept:`回答 / コンセプト`,lbl_split_action_title:`分割完了後:`,lbl_action_block:`元のカードを保持しブロックする (先に新規カードが必要)`,lbl_action_remove:`元のカードを削除する`,lbl_split_progress_status:`アトミックな提案を生成中...`,lbl_split_progress_detail:`ローカルAIの速度によっては、最大1分かかる場合があります。`,lbl_atomic_proposals_title:`アトミックカードの提案 (最低2枚)`,btn_split_modal_submit:`分割の確認`,btn_content_foundations_card:`前提知識`,lbl_foundations_modal_title:`前提知識のインポート`,lbl_foundations_progress_status:`前提知識の提案を生成中...`,lbl_foundations_progress_detail:`ローカルAIの速度によっては、最大1分かかる場合があります。`,lbl_foundations_atomic_title:`前提知識カードの提案`,btn_foundations_modal_submit:`インポートの確認`,lbl_import_source_type:`ソースタイプ`,lbl_import_source_uri:`ファイルパスまたはURL`,btn_import_source_analyze:`解析する`,lbl_source_extracted_preview:`抽出テキストのプレビュー`,lbl_delete:`削除`,lbl_proposal_number:`提案 #{n}`,lbl_foundational_proposal_number:`基礎提案 #{n}`,lbl_foundation_existing_badge:`既存のカードがリンクされます`,lbl_foundation_new_badge:`新しいカードの提案`,lbl_include:`含める`,lbl_err_analyze_source_first:`まずソースファイル、ウェブリンク、またはOCRスキャンを解析してください。`,lbl_err_min_split_proposals:`カードを分割するには、少なくとも2件の完全なカード提案が必要です。`,lbl_err_select_foundation:`インポートする前提条件の提案カードを少なくとも1件選択してください。`,lbl_err_enter_path_or_url:`解析するファイルパスまたはURLを入力してください。`,lbl_analyzing_source:`ソースコンテンツを解析しています。しばらくお待ちください…`,lbl_err_analysis_failed:`解析に失敗しました`,lbl_err_analysis_prefix:`解析エラー`,lbl_err_concept_required:`回答または概念は必須です。`,lbl_err_category_required:`カテゴリーは必須です。`,lbl_err_import_context_required:`カリキュラムのテキストは必須です。`,lbl_err_original_context_required:`元のカードには質問と回答が必要です。`,settings_context_title:`知識コンテキスト`,settings_context_help:`このデバイスのデフォルトの知識コンテキストを選択します。`,settings_context_label:`デフォルトコンテキスト`,wizard_context_label:`インポートされたカードをコンテキストに割り当てる:`}},Kv=`en`;function qv(e){Kv=e}function Z(e){return Gv[Kv]?.[e]||Gv.en?.[e]||e}function Jv(e,t){return Object.entries(t).reduce((e,[t,n])=>e.split(`{${t}}`).join(String(n)),Z(e))}var Yv=[],Q=null,Xv=!1,Zv=!1,Qv,$v,ey,ty,ny,ry,iy,ay,oy,sy,cy,ly,uy,dy,fy,py,my,hy,gy=`text`,_y,vy,yy,by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,Ny,Py=[],Fy=[],Iy,Ly,Ry,zy,By,Vy,Hy,Uy,Wy,Gy,Ky,qy,Jy,Yy,Xy,Zy,Qy,$y,eb,tb,nb,rb,ib,ab,ob,sb,cb,lb,ub,db,fb,pb,mb=null,hb=null;function $(e){return e.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e])}function gb(){Qv=document.getElementById(`content-studio-layout`),Iy=document.getElementById(`content-studio-card-list`),Ly=document.getElementById(`content-search-input`),Ry=document.getElementById(`content-context-filter`),zy=document.getElementById(`content-category-filter`),By=document.getElementById(`editor-empty-state`),Vy=document.getElementById(`editor-form-container`),Hy=document.getElementById(`btn-content-new-card`),Uy=document.getElementById(`btn-create-first-card`),Wy=document.getElementById(`editor-field-question`),Gy=document.getElementById(`editor-field-concept`),Ky=document.getElementById(`editor-field-title`),qy=document.getElementById(`editor-field-domain`),Jy=document.getElementById(`editor-field-source-link`),Yy=document.getElementById(`editor-field-context`),Xy=document.getElementById(`editor-field-bloom`),Zy=document.getElementById(`editor-field-mode`),Qy=document.getElementById(`editor-field-slug`),$y=document.getElementById(`btn-content-save-card`),eb=document.getElementById(`btn-content-delete-card`),tb=document.getElementById(`btn-content-cancel-edit`),nb=document.getElementById(`editor-toggle-advanced`),rb=document.getElementById(`editor-advanced-content`),ib=document.getElementById(`editor-toggle-arrow`),ab=document.getElementById(`content-modal-overlay`),ob=document.getElementById(`lbl-modal-title`),sb=document.getElementById(`lbl-modal-desc`),cb=document.getElementById(`modal-impact-container`),lb=document.getElementById(`modal-impact-list-el`),ub=document.getElementById(`modal-delete-choice`),db=document.getElementById(`btn-modal-cancel`),fb=document.getElementById(`btn-modal-confirm`),pb=document.getElementById(`btn-modal-hard-delete`),$v=document.getElementById(`btn-content-import`),ey=document.getElementById(`import-modal-overlay`),ty=document.getElementById(`import-field-text`),ny=document.getElementById(`import-field-source`),ry=document.getElementById(`import-field-category`),iy=document.getElementById(`import-progress-container`),ay=document.getElementById(`btn-import-modal-cancel`),oy=document.getElementById(`btn-import-modal-submit`),sy=document.getElementById(`btn-import-tab-text`),cy=document.getElementById(`btn-import-tab-source`),ly=document.getElementById(`import-view-text`),uy=document.getElementById(`import-view-source`),dy=document.getElementById(`import-source-type`),fy=document.getElementById(`import-source-uri`),py=document.getElementById(`btn-import-source-analyze`),my=document.getElementById(`import-source-preview`),hy=document.getElementById(`import-source-id`),_y=document.getElementById(`btn-content-split-card`),vy=document.getElementById(`split-modal-overlay`),yy=document.getElementById(`split-original-question`),by=document.getElementById(`split-original-concept`),xy=document.getElementById(`split-progress-container`),Sy=document.getElementById(`split-proposals-section`),Cy=document.getElementById(`split-proposals-container`),wy=document.getElementById(`btn-split-add-proposal`),Ty=document.getElementById(`btn-split-modal-cancel`),Ey=document.getElementById(`btn-split-modal-submit`),Dy=document.getElementById(`btn-content-foundations-card`),Oy=document.getElementById(`foundations-modal-overlay`),ky=document.getElementById(`foundations-progress-container`),Ay=document.getElementById(`foundations-proposals-section`),jy=document.getElementById(`foundations-proposals-container`),My=document.getElementById(`btn-foundations-modal-cancel`),Ny=document.getElementById(`btn-foundations-modal-submit`),Ly.addEventListener(`input`,()=>yb()),Ry.addEventListener(`change`,()=>{vb()}),zy.addEventListener(`change`,()=>yb()),Hy.addEventListener(`click`,()=>xb()),Uy.addEventListener(`click`,()=>xb()),$v?.addEventListener(`click`,()=>Ab()),ay.addEventListener(`click`,()=>jb()),oy.addEventListener(`click`,()=>{Mb()}),sy.addEventListener(`click`,()=>Ub(`text`)),cy.addEventListener(`click`,()=>Ub(`source`)),py.addEventListener(`click`,()=>{Wb()}),_y?.addEventListener(`click`,()=>{Nb()}),wy.addEventListener(`click`,()=>Ib()),Ty.addEventListener(`click`,()=>Pb()),Ey.addEventListener(`click`,()=>{Rb()}),Dy?.addEventListener(`click`,()=>{zb()}),My.addEventListener(`click`,()=>Bb()),Ny.addEventListener(`click`,()=>{Hb()}),tb.addEventListener(`click`,()=>Sb()),$y.addEventListener(`click`,()=>Tb()),eb.addEventListener(`click`,()=>Eb()),nb.addEventListener(`click`,()=>wb()),db.addEventListener(`click`,()=>kb()),fb.addEventListener(`click`,()=>{mb&&(mb(),kb())}),pb.addEventListener(`click`,()=>{hb&&(hb(),kb())});let e=[Wy,Gy,Ky,qy,Jy,Yy];for(let t of e)t.addEventListener(`keydown`,e=>{let t=e;t.key===`Enter`&&(t.ctrlKey||t.metaKey)&&(e.preventDefault(),Tb())});_b()}async function _b(){try{let e=await X(`list-knowledge-contexts`),t=await X(`get-active-knowledge-context`);Ry.innerHTML=`<option value="">${Z(`lbl_all_contexts`)}</option>`;for(let t of e.contexts??[]){let e=document.createElement(`option`);e.value=t.name,e.textContent=t.label?`${t.label} (${t.name})`:t.name,Ry.appendChild(e)}Ry.value=t.activeContext??``}catch(e){console.warn(`Failed to load Studio knowledge contexts`,e)}await vb()}async function vb(){try{Yv=(await X(`personal-card-list`,Ry?.value?[`--knowledge-context`,Ry.value]:[])).cards;let e=new Set;for(let t of Yv)t.domain&&e.add(t.domain);let t=Array.from(e).sort(),n=zy.value;zy.innerHTML=`<option value="all">${Z(`lbl_all_categories`)}</option>`;for(let e of t){let t=document.createElement(`option`);t.value=e,t.textContent=e,zy.appendChild(t)}zy.value=n||`all`,yb(),Cb()}catch(e){console.error(`Failed to load cards list`,e),alert(`${Z(`lbl_error_loading`)}: ${e instanceof Error?e.message:String(e)}`)}}function yb(){let e=Ly.value.toLowerCase().trim(),t=zy.value,n=Yv.filter(n=>{if(t!==`all`&&n.domain!==t)return!1;if(e){let t=n.title?.toLowerCase().includes(e),r=n.slug?.toLowerCase().includes(e),i=n.concept?.toLowerCase().includes(e),a=n.domain?.toLowerCase().includes(e),o=n.question?.toLowerCase().includes(e);return t||r||i||a||o}return!0});if(Iy.innerHTML=``,n.length===0){Iy.innerHTML=`<p class="observer-history-empty" style="padding: 20px; text-align: center;">${Z(`lbl_empty_content`)}</p>`;return}for(let e of n){let t=document.createElement(`div`);t.className=`content-list-item`,Q&&Q.slug===e.slug&&t.classList.add(`selected`);let n=Z(`lbl_card_status_not_started`),r=`not-started`;e.state&&(n=Z(`lbl_card_status_${e.state}`),r=e.state);let i=e.dueAt&&new Date(e.dueAt)<=new Date?`<span class="card-status-badge again" style="font-size: 0.7rem; padding: 1px 4px; background: rgba(239, 68, 68, 0.1); color: #ef4444; margin-left: 5px;">${$(Z(`lbl_card_due`))}</span>`:``;t.innerHTML=`
|
|
580
|
+
container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:k().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:k().optional().describe(`User's timezone in IANA format.`),userAgent:k().optional().describe(`Host application identifier.`),platform:I([z(`web`),z(`desktop`),z(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:P({touch:j().optional().describe(`Whether the device supports touch input.`),hover:j().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:P({top:A().describe(`Top safe area inset in pixels.`),right:A().describe(`Right safe area inset in pixels.`),bottom:A().describe(`Bottom safe area inset in pixels.`),left:A().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough(),Lv=P({method:z(`ui/notifications/host-context-changed`),params:Iv.describe(`Partial context update containing only changed fields.`)});P({method:z(`ui/update-model-context`),params:P({content:N(c_).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:L(k(),M().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),P({method:z(`ui/initialize`),params:P({appInfo:Qh.describe(`App identification (name and version).`),appCapabilities:Mv.describe(`Features and capabilities this app provides.`),protocolVersion:k().describe(`Protocol version this app supports.`)})});var Rv=P({protocolVersion:k().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:Qh.describe(`Host application identification and version.`),hostCapabilities:jv.describe(`Features and capabilities provided by the host.`),hostContext:Iv.describe(`Rich context about the host environment.`)}).passthrough(),zv={target:`draft-2020-12`};async function Bv(e,t){let n=e[`~standard`];if(n.jsonSchema)return n.jsonSchema[t](zv);if(n.vendor===`zod`){let{z:n}=await fv(async()=>{let{z:e}=await Promise.resolve().then(()=>(Th(),Ch));return{z:e}},void 0,import.meta.url);return n.toJSONSchema(e,{io:t})}throw Error(`Schema (vendor: ${n.vendor}) does not implement Standard JSON Schema (~standard.jsonSchema). Use a library that does (zod v4, ArkType, Valibot) or wrap your schema accordingly.`)}async function Vv(e,t,n=``){let r=await e[`~standard`].validate(t);if(r.issues){let e=r.issues.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `);throw Error(n+e)}return r.value}var Hv=class e extends pv{_appInfo;_capabilities;options;_hostCapabilities;_hostInfo;_hostContext;_registeredTools={};_initializedSent=!1;_assertInitialized(e){if(this._initializedSent)return;let t=`[ext-apps] App.${e}() called before connect() completed the ui/initialize handshake. Await app.connect() before calling this method, or move data loading to an ontoolresult handler.`;if(this.options?.strict)throw Error(t);console.warn(`${t}. This will throw in a future release.`)}eventSchemas={toolinput:wv,toolinputpartial:Tv,toolresult:Fv,toolcancelled:Ev,hostcontextchanged:Lv};static ONE_SHOT_EVENTS=new Set([`toolinput`,`toolinputpartial`,`toolresult`,`toolcancelled`]);_everHadListener=new Set;_assertHandlerTiming(t){if(!e.ONE_SHOT_EVENTS.has(t)||this._everHadListener.has(t)||(this._everHadListener.add(t),!this._initializedSent))return;let n=`[ext-apps] "${String(t)}" handler registered after connect() completed the ui/initialize handshake. The host may have already sent this notification. Register handlers before calling app.connect().`;if(this.options?.strict)throw Error(n);console.warn(n)}setEventHandler(e,t){t&&this._assertHandlerTiming(e),super.setEventHandler(e,t)}addEventListener(e,t){this._assertHandlerTiming(e),super.addEventListener(e,t)}onEventDispatch(e,t){e===`hostcontextchanged`&&(this._hostContext={...this._hostContext,...t})}constructor(e,t={},n={autoResize:!0}){super(n),this._appInfo=e,this._capabilities=t,this.options=n,n.allowUnsafeEval||a({jitless:!0}),this.setRequestHandler(cg,e=>(console.log(`Received ping:`,e.params),{})),this.setEventHandler(`hostcontextchanged`,void 0)}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after transport is established`);this._capabilities=cv(this._capabilities,e)}registerTool(e,t,n){if(this._registeredTools[e])throw Error(`Tool ${e} is already registered`);let r=this,i=()=>{r._initializedSent&&r._capabilities.tools?.listChanged&&r.sendToolListChanged()},a=t.inputSchema!==void 0,o={title:t.title,description:t.description,inputSchema:t.inputSchema,outputSchema:t.outputSchema,annotations:t.annotations,_meta:t._meta,enabled:!0,enable(){this.enabled=!0,i()},disable(){this.enabled=!1,i()},update(e){Object.assign(this,e),i()},remove(){r._registeredTools[e]===o&&(delete r._registeredTools[e],i())},handler:async(t,r)=>{if(!o.enabled)throw Error(`Tool ${e} is disabled`);let i;if(a){let a=o.inputSchema;i=await n(a?await Vv(a,t??{},`Invalid input for tool ${e}: `):t??{},r)}else i=await n(r);return o.outputSchema&&!i.isError&&(i.structuredContent=await Vv(o.outputSchema,i.structuredContent,`Invalid output for tool ${e}: `)),i}};return this._registeredTools[e]=o,!this._capabilities.tools&&!this.transport&&this.registerCapabilities({tools:{listChanged:!0}}),this.ensureToolHandlersInitialized(),i(),o}_toolHandlersInitialized=!1;ensureToolHandlersInitialized(){this._toolHandlersInitialized||(this._toolHandlersInitialized=!0,this.oncalltool=async(e,t)=>{let n=this._registeredTools[e.name];if(!n)throw Error(`Tool ${e.name} not found`);return n.handler(e.arguments,t)},this.onlisttools=async(e,t)=>({tools:await Promise.all(Object.entries(this._registeredTools).filter(([e,t])=>t.enabled).map(async([e,t])=>{let n={name:e,title:t.title,description:t.description,inputSchema:t.inputSchema?await Bv(t.inputSchema,`input`):{type:`object`,properties:{}}};return t.outputSchema&&(n.outputSchema=await Bv(t.outputSchema,`output`)),t.annotations&&(n.annotations=t.annotations),t._meta&&(n._meta=t._meta),n}))}))}async sendToolListChanged(e={}){this._assertInitialized(`sendToolListChanged`),await this.notification({method:`notifications/tools/list_changed`,params:e})}getHostCapabilities(){return this._hostCapabilities}getHostVersion(){return this._hostInfo}getHostContext(){return this._hostContext}get ontoolinput(){return this.getEventHandler(`toolinput`)}set ontoolinput(e){this.setEventHandler(`toolinput`,e)}get ontoolinputpartial(){return this.getEventHandler(`toolinputpartial`)}set ontoolinputpartial(e){this.setEventHandler(`toolinputpartial`,e)}get ontoolresult(){return this.getEventHandler(`toolresult`)}set ontoolresult(e){this.setEventHandler(`toolresult`,e)}get ontoolcancelled(){return this.getEventHandler(`toolcancelled`)}set ontoolcancelled(e){this.setEventHandler(`toolcancelled`,e)}get onhostcontextchanged(){return this.getEventHandler(`hostcontextchanged`)}set onhostcontextchanged(e){this.setEventHandler(`hostcontextchanged`,e)}_onteardown;get onteardown(){return this._onteardown}set onteardown(e){this.warnIfRequestHandlerReplaced(`onteardown`,this._onteardown,e),this._onteardown=e,this.replaceRequestHandler(kv,(e,t)=>{if(!this._onteardown)throw Error(`No onteardown handler set`);return this._onteardown(e.params,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.replaceRequestHandler(y_,(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}_onlisttools;get onlisttools(){return this._onlisttools}set onlisttools(e){this.warnIfRequestHandlerReplaced(`onlisttools`,this._onlisttools,e),this._onlisttools=e,this.replaceRequestHandler(h_,(e,t)=>{if(!this._onlisttools)throw Error(`No onlisttools handler set`);return this._onlisttools(e.params,t)})}assertCapabilityForMethod(e){switch(e){case`sampling/createMessage`:if(!this._hostCapabilities?.sampling)throw Error(`Host does not support sampling (required for ${e})`);break}}assertRequestHandlerCapability(e){switch(e){case`tools/call`:case`tools/list`:if(!this._capabilities.tools)throw Error(`Client does not support tool capability (required for ${e})`);return;case`ping`:case`ui/resource-teardown`:return;default:throw Error(`No handler for method ${e} registered`)}}assertNotificationCapability(e){}assertTaskCapability(e){throw Error(`Tasks are not supported in MCP Apps`)}assertTaskHandlerCapability(e){throw Error(`Task handlers are not supported in MCP Apps`)}async callServerTool(e,t){if(this._assertInitialized(`callServerTool`),typeof e==`string`)throw Error(`callServerTool() expects an object as its first argument, but received a string ("${e}"). Did you mean: callServerTool({ name: "${e}", arguments: { ... } })?`);return await this.request({method:`tools/call`,params:e},__,{onprogress:()=>{},resetTimeoutOnProgress:!0,...t})}async readServerResource(e,t){return this._assertInitialized(`readServerResource`),await this.request({method:`resources/read`,params:e},Hg,t)}async listServerResources(e,t){return this._assertInitialized(`listServerResources`),await this.request({method:`resources/list`,params:e},Ig,t)}async createSamplingMessage(e,t){this._assertInitialized(`createSamplingMessage`);let n=e.tools?F_:P_;return await this.request({method:`sampling/createMessage`,params:e},n,t)}sendMessage(e,t){return this._assertInitialized(`sendMessage`),this.request({method:`ui/message`,params:e},xv,t)}sendLog(e){return this.notification({method:`notifications/message`,params:e})}updateModelContext(e,t){return this._assertInitialized(`updateModelContext`),this.request({method:`ui/update-model-context`,params:e},qh,t)}openLink(e,t){return this._assertInitialized(`openLink`),this.request({method:`ui/open-link`,params:e},yv,t)}sendOpenLink=this.openLink;downloadFile(e,t){return this._assertInitialized(`downloadFile`),this.request({method:`ui/download-file`,params:e},bv,t)}requestTeardown(e={}){return this.notification({method:`ui/notifications/request-teardown`,params:e})}requestDisplayMode(e,t){return this._assertInitialized(`requestDisplayMode`),this.request({method:`ui/request-display-mode`,params:e},Nv,t)}sendSizeChanged(e){return this.notification({method:`ui/notifications/size-changed`,params:e})}setupSizeChangedNotifications(){let e=!1,t=0,n=0,r=()=>{e||(e=!0,requestAnimationFrame(()=>{e=!1;let r=document.documentElement,i=r.style.height;r.style.height=`max-content`;let a=Math.ceil(r.getBoundingClientRect().height);r.style.height=i;let o=Math.ceil(window.innerWidth);(o!==t||a!==n)&&(t=o,n=a,this.sendSizeChanged({width:o,height:a}))}))};r();let i=new ResizeObserver(r);return i.observe(document.documentElement),i.observe(document.body),()=>i.disconnect()}async connect(e=new hv(window.parent,window.parent),t){if(this.transport)throw Error(`App is already connected. Call close() before connecting again.`);this._initializedSent=!1,await super.connect(e);try{let e=await this.request({method:`ui/initialize`,params:{appCapabilities:this._capabilities,appInfo:this._appInfo,protocolVersion:mv}},Rv,t);if(e===void 0)throw Error(`Server sent invalid initialize result: ${e}`);this._hostCapabilities=e.hostCapabilities,this._hostInfo=e.hostInfo,this._hostContext=e.hostContext,await this.notification({method:`ui/notifications/initialized`}),this._initializedSent=!0,this.options?.autoResize&&this.setupSizeChangedNotifications()}catch(e){throw this.close(),e}}},Uv=null;function Wv(e){Uv=e}async function X(e,t=[]){if(!Uv)throw Error(`Bridge transport not initialized`);try{return await Uv(e,t)}catch(t){throw console.error(`Bridge Error [${e}]:`,t),t}}var Gv={en:{ai_status_offline:`AI Offline`,ai_status_online:`Local AI Online`,ai_status_cloud_online:`Cloud AI · {model}`,ai_status_cloud_offline:`Cloud AI offline · {model}`,ai_status_starting:`Checking AI...`,ai_status_model_missing:`AI: model not found`,study_question_original:`Original`,study_evaluation_model:`{model}`,nav_dashboard:`Dashboard`,nav_settings:`Settings`,dashboard_kicker:`Today in ZAM`,dashboard_title:`Learn deliberately.`,dashboard_subtitle:`Review what is due, open your knowledge map, or configure local AI and workspaces in Settings.`,lbl_due_reviews:`Due Reviews`,lbl_caught_up:`You're all caught up!`,dashboard_error:`Could not load your data`,lbl_domains:`Active Domains`,btn_start_session:`Start Learning Session`,lbl_translating:`Translating dynamically...`,placeholder_answer:`Type your conceptual answer here... (Ctrl+Enter to submit)`,placeholder_discussion:`Ask a follow-up about this card... (Enter to send)`,btn_discussion_send:`Send`,discussion_error:`No reply from the AI. Please try again.`,btn_reveal_answer:`Submit & Reveal Answer`,lbl_ai_evaluating:`Reviewing your answer and generating feedback...`,lbl_ai_working:`(This may take a moment.)`,lbl_wait_warn:`⚠ Evaluation is taking longer than expected.`,btn_wait_keep:`Keep Waiting`,btn_wait_skip:`Skip Offline`,lbl_question_wait_warn:`⚠ Generating this question is taking longer than expected.`,btn_question_use_saved:`Use Saved Question`,lbl_ai_feedback_title:`ZAM Feedback`,lbl_reveal_title:`Reference Answer`,lbl_rating_instruction:`Rate your active recall honestly:`,lbl_rate_1:`Again`,lbl_rate_2:`Hard`,lbl_rate_3:`Good`,lbl_rate_4:`Easy`,btn_recall_reveal:`Reveal`,btn_recall_check:`Check answer`,btn_recall_finish:`End session`,lbl_recall_focus:`Focus: {domain}`,lbl_recall_summary:`{done} of {total} reviewed`,lbl_recall_summary_title:`Session summary`,lbl_recall_empty_title:`Nothing due`,btn_pause_session:`Pause & Exit Session`,lbl_generating_question:`Generating dynamic question...`,token:`Token`,concept:`Concept`,context:`Context`,source:`Source Reference`,bloom_level:`Bloom Level`,rating_again_shortcut:`(Shortcut: 1)`,rating_hard_shortcut:`(Shortcut: 2)`,rating_good_shortcut:`(Shortcut: 3)`,rating_easy_shortcut:`(Shortcut: 4)`,session_completed:`Learning Session Completed!`,session_completed_sub:`Great job completing this session! Your memory traces have been updated.`,btn_back_to_dashboard:`Back to Dashboard`,btn_open_graph:`Knowledge Map (3D)`,btn_open_settings:`Settings`,observer_title:`UI Observer`,observer_idle:`Load windows and choose one application window to observe.`,observer_loading:`Loading observable windows...`,observer_ready:`Selected: {title}`,observer_vision_checking:`Checking vision observation settings...`,observer_analyzing:`Capturing snapshot and asking the vision model...`,observer_done:`Observation saved. Latest report confidence: {confidence}`,observer_canceled:`Observation canceled.`,observer_error:`Observer error: {message}`,observer_vision_disabled:`Vision observation is disabled. Enable it with: zam settings set llm.vision.enabled true`,observer_vision_offline:`Vision endpoint is offline: {url}`,observer_vision_model_missing:`Vision model is not available: {model}`,observer_privacy_paused:`Privacy pause: this window is blocked by the privacy filter ({reason}).`,observer_privacy_option:`privacy pause`,observer_refresh:`Load Windows`,observer_analyze:`Snapshot & Analyze`,observer_cancel:`Cancel`,observer_empty:`No observable windows found.`,observer_select_initial:`No windows loaded yet`,observer_select_placeholder:`Select a window`,observer_history_title:`Observation Reports`,observer_history_refresh:`Refresh Reports`,observer_history_empty:`No observation reports yet.`,observer_history_loaded:`Loaded {count} observation report(s).`,observer_loop_start:`Start Loop`,observer_loop_stop:`Stop Loop`,observer_loop_idle:`Manual snapshots only.`,observer_loop_running:`Observer loop running. One snapshot at a time.`,observer_loop_waiting:`Observer loop running. Next snapshot in {seconds}s.`,observer_loop_stopped:`Observer loop stopped.`,observer_watch_start:`Start Watch`,observer_watch_stop:`Stop Watch`,observer_watch_idle:`Continuous watch is off.`,observer_watch_starting:`Starting continuous watch...`,observer_watch_running:`Watching {title} — {count} event(s).`,observer_watch_stopping:`Stopping continuous watch...`,observer_watch_stopped:`Continuous watch stopped.`,observer_watch_error:`Watch error: {message}`,graph_title:`Knowledge Graph (3D)`,graph_hint:`Drag to rotate • Click nodes to focus • Scroll to zoom`,graph_focus:`Focus`,graph_prereqs:`Bases (Prerequisites)`,graph_dependents:`Higher Abilities (Dependents)`,graph_no_card:`no personal card yet`,graph_refresh:`Refresh`,graph_domain_token_list_title:`All tokens in this domain`,setup_title:`Setup & Data`,settings_kicker:`Local configuration`,settings_title:`Settings`,settings_subtitle:`Configure this machine without forcing the same choices onto every workspace or device.`,settings_back:`Back to dashboard`,settings_system_title:`System`,settings_ai_title:`AI models`,settings_workspace_title:`Workspaces`,workspaces_help:`Register personal, team, family, or community work directories for this machine.`,settings_appearance_title:`Appearance`,settings_data_title:`Data`,settings_database:`Database`,settings_learning_profile:`Learning profile`,database_checking:`Checking…`,database_status_local:`Local SQLite · connected`,database_status_turso:`Turso · connected`,database_status_error:`Connection unavailable`,database_detail:`{location} · profile {profile} · {count} cards`,database_no_profile:`No active profile`,database_profile_option:`{profile} — {count} cards`,database_profile_switch_confirm:`Switch the active learning profile to "{profile}"?`,database_profile_switched:`Active profile: {profile} ({count} cards)`,database_refresh:`Refresh status`,settings_theme:`Theme`,theme_light:`Light`,theme_dark:`Dark`,btn_open_data_folder:`Open data folder`,btn_backup_db:`Back up database`,setup_backing_up:`Backing up database…`,setup_backed_up:`Backed up to {path}`,setup_remote_no_backup:`Your database syncs to the cloud ({target}) — no separate local backup needed.`,setup_backup_failed:`Backup failed: {message}`,setup_backup_failed_generic:`Backup failed.`,setup_open_folder_failed:`Could not open the data folder: {message}`,lbl_workspace:`Workspace`,btn_choose_workspace:`+ Add workspace…`,btn_open_terminal:`Open Terminal`,terminal_opening:`Opening terminal...`,terminal_opened:`Opened terminal in {workspace}`,terminal_open_failed:`Could not open terminal: {message}`,workspace_active:`active`,workspace_default_label:`Default workspace`,workspace_empty:`No workspace registered yet.`,workspace_kind:`{kind} workspace`,workspace_kind_personal:`Personal workspace`,workspace_kind_team:`Team workspace`,workspace_kind_family:`Family workspace`,workspace_kind_community:`Community workspace`,workspace_kind_organization:`Organization workspace`,workspace_kind_custom:`Custom workspace`,workspace_more:`{count} more workspace(s) hidden. Use the CLI for the full list.`,workspace_use:`Use`,workspace_open:`Terminal`,workspace_default_suffix:`(default)`,workspace_set:`Workspace set to {path}`,workspace_added:`Workspace added: {path}`,workspace_pick_failed:`Could not set workspace: {message}`,workspace_remove:`Remove`,workspace_remove_confirm:`Remove "{label}" from ZAM? Files and links in the folder will stay unchanged.`,workspace_removed:`Workspace removed: {label}`,workspace_remove_failed:`Could not remove workspace: {message}`,workspace_link_ok:`Skill link OK`,workspace_link_broken:`Skill link broken`,workspace_link_unmanaged:`Foreign skill folder`,workspace_repair:`Repair skill link`,workspace_repair_confirm:`The folder for "{label}" contains a skills/zam directory that ZAM did not create. Repair deletes it and replaces it with a link. Continue?`,workspace_repairing:`Repairing skill link…`,workspace_repaired:`Skill link repaired: {label}`,workspace_repair_failed:`Could not repair skill link: {message}`,lbl_app_version:`Version`,lbl_learning_model:`Learning model`,lbl_observer_model:`Observer model`,provider_ready:`ready`,provider_disabled:`disabled`,provider_offline:`offline`,provider_model_missing:`model missing`,provider_unsupported:`unsupported provider`,provider_local:`local`,provider_cloud:`cloud`,provider_unknown:`unknown`,btn_ai_config_open:`Configure`,btn_ai_config_close:`Close`,btn_add_ai_provider:`+ Add provider`,ai_config_loading:`Loading provider configuration...`,ai_config_failed:`Could not load provider configuration: {message}`,ai_provider_empty:`No providers configured yet.`,ai_provider_section_local:`Local`,ai_provider_section_cloud:`Cloud`,ai_provider_kind:`Provider type`,ai_provider_kind_local:`Local`,ai_provider_kind_cloud:`Cloud`,ai_provider_local_badge:`local`,ai_provider_cloud_badge:`cloud`,ai_provider_key_set:`key set`,ai_provider_key_missing:`key missing`,ai_provider_key_none:`no key`,ai_provider_edit:`Edit`,ai_provider_remove:`Remove`,ai_provider_remove_confirm:`Remove provider "{name}"?`,ai_provider_removed:`Removed provider "{name}"`,ai_provider_saved:`Saved provider "{name}"`,ai_provider_save_failed:`Could not save provider: {message}`,ai_provider_form_add_title:`Add provider`,ai_provider_form_edit_title:`Edit provider`,ai_provider_display_name:`Name`,ai_provider_url:`URL`,ai_provider_model:`Model`,ai_provider_model_local_hint:`Type the model name. If the endpoint lists models, you can pick one below.`,ai_provider_models_pick:`Pick from endpoint`,ai_provider_flavor:`API flavor`,ai_provider_local:`Runs on this computer`,ai_provider_local_hint:`Local model servers (FastFlowLM, Ollama, …) usually need no API key. ZAM can try to start the server automatically.`,ai_provider_cloud_hint_key:`Cloud APIs need an API key. Local providers do not use the key field.`,ai_provider_runner:`Local model server`,ai_provider_runner_hint:`The program that serves the model on this PC — not your coding agent.`,ai_provider_runner_auto:`Auto-detect`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`not detected`,ai_provider_api_key:`API key`,ai_provider_api_key_hint:`Write-only — stored locally, never synced`,ai_provider_cloud_hint:`Suggested model: {model}`,ai_provider_models_loading:`Loading models...`,ai_provider_models_empty:`No models listed by endpoint`,btn_ai_provider_save:`Save`,btn_ai_provider_cancel:`Cancel`,ai_role_bindings_title:`Role bindings`,ai_role_recall:`Learning (recall)`,ai_role_vision:`Observer (vision)`,ai_role_primary:`Primary`,ai_role_fallback:`Fallback`,ai_role_none:`(none)`,btn_ai_role_apply:`Apply`,ai_role_bound:`Role {role} updated`,ai_role_bind_failed:`Could not bind role: {message}`,ai_recall_anthropic_warn:`Anthropic Messages providers are not supported for learning sessions yet. Bind anyway?`,ai_vision_cloud_confirm:`Screenshots will be sent to {endpoint}. Enable vision observation and bind this cloud provider?`,ai_provider_referenced:`Still used by: {roles}`,btn_check_updates:`Check for updates`,btn_open_releases:`Releases`,version_unknown:`unknown`,update_checking:`Checking for updates...`,update_available:`Update available: {version}`,update_none:`You are on the latest version.`,update_failed:`Update check failed: {message}`,release_link_failed:`Could not open releases: {message}`,nav_content:`Learning Content`,content_title:`Learning Content Studio`,content_subtitle:`Manage your personal learning cards, search tokens, and curate active recall prompts.`,btn_new_card:`New Card`,lbl_search_placeholder:`Search questions, answers, categories, keys...`,lbl_category_filter:`Category`,lbl_all_categories:`All Categories`,lbl_all_contexts:`All Contexts`,lbl_no_context_default:`No context default`,lbl_no_context_assignment:`No context assignment`,lbl_empty_content:`No learning cards found. Create your first card!`,lbl_empty_content_btn:`Create First Card`,lbl_question:`Question`,lbl_answer:`Answer / Concept`,lbl_category:`Category`,lbl_title:`Title (display name)`,lbl_source_link:`Source Link`,lbl_more_settings:`More Settings`,lbl_context:`Context`,lbl_bloom_level:`Bloom Level`,lbl_symbiosis_mode:`Symbiosis Mode`,lbl_slug:`Technical Key (Slug)`,lbl_slug_hint:`Automatically generated after creation`,btn_save:`Save Card`,btn_remove:`Remove Card`,btn_delete:`Hard Delete Token`,lbl_confirm_remove_title:`Confirm Card Removal`,lbl_confirm_remove_desc:`Removing this card will clear your personal FSRS learning state and history for this token. Other users or the global token catalog remain unaffected.`,lbl_confirm_delete_title:`Confirm Global Token Deletion`,lbl_confirm_delete_desc:`Permanently deleting this token will destroy the knowledge concept, the personal cards of all users, and all review history across the database.`,lbl_delete_impact:`This action affects:`,lbl_impact_cards:`{count} card(s)`,lbl_impact_reviews:`{count} review log(s)`,lbl_impact_steps:`{count} session step(s)`,lbl_impact_skills:`{count} agent skill(s) updated`,lbl_confirm_action:`Confirm`,lbl_cancel_action:`Cancel`,lbl_card_saved_toast:`Card saved successfully!`,lbl_card_removed_toast:`Card removed successfully!`,lbl_card_deleted_toast:`Token deleted successfully!`,lbl_error_saving:`Failed to save card`,lbl_error_loading:`Failed to load learning content`,lbl_card_status_new:`New`,lbl_card_status_learning:`Learning`,lbl_card_status_review:`Review`,lbl_card_status_relearning:`Relearning`,lbl_card_status_not_started:`Not Started`,lbl_card_due:`Due`,lbl_card_not_due:`Not Due`,btn_import_curriculum:`Import Curriculum`,lbl_import_modal_title:`Import Curriculum Standard`,lbl_import_text:`Curriculum Text`,placeholder_import_text:`Paste curriculum text or syllabus bullets here...`,lbl_import_source:`Source URL / Reference`,lbl_import_category:`Target Category`,lbl_import_progress_status:`Generating cards...`,lbl_import_progress_detail:`This may take up to a minute depending on your local LLM speed.`,btn_import_submit:`Import`,toast_import_success:`Successfully imported {createdCount} new tokens and ensured {ensuredCount} cards!`,lbl_error_importing:`Failed to import curriculum`,btn_curriculum_wizard:`Curriculum Wizard`,lbl_curriculum_wizard_title:`Curriculum Wizard`,wizard_step_country:`Country`,wizard_step_region:`Region`,wizard_step_schoolType:`School Type`,wizard_step_grade:`Grade`,wizard_step_subject:`Subject`,wizard_step_track:`Track`,wizard_step_topic:`Topics`,wizard_btn_back:`Back`,wizard_btn_next:`Next`,wizard_no_options:`No options available yet for this selection.`,wizard_err_select_option:`Please select an option to continue.`,wizard_err_no_topics:`Please select at least one topic.`,wizard_topic_scope_note:`Cards are generated from the complete curriculum page for this subject (all of its topics). Precise per-topic import is coming in a future update — for now, topic selection helps you track what to cover next.`,wizard_resume_prompt:`Continue where you left off:`,wizard_btn_resume:`Continue`,wizard_btn_restart:`Start over`,lbl_curriculum_wizard_loading:`Loading…`,wizard_hours:`{hours} hrs`,btn_split:`Split`,lbl_split_modal_title:`Split Card`,lbl_original_card_title:`Original Card (Summarized application question)`,lbl_split_original_question:`Question`,lbl_split_original_concept:`Answer / Concept`,lbl_split_action_title:`After split completed:`,lbl_action_block:`Keep original card and block it (requires new cards first)`,lbl_action_remove:`Remove original card`,lbl_split_progress_status:`Generating atomic proposals...`,lbl_split_progress_detail:`This may take up to a minute depending on your local LLM speed.`,lbl_atomic_proposals_title:`Atomic Card Proposals (Minimum 2)`,btn_split_modal_submit:`Confirm Split`,btn_content_foundations_card:`Foundations`,lbl_foundations_modal_title:`Import Foundations`,lbl_foundations_progress_status:`Generating foundational proposals...`,lbl_foundations_progress_detail:`This may take up to a minute depending on your local LLM speed.`,lbl_foundations_atomic_title:`Foundational Card Proposals`,btn_foundations_modal_submit:`Confirm Import`,lbl_import_source_type:`Source Type`,lbl_import_source_uri:`File Path or URL`,btn_import_source_analyze:`Analyze`,lbl_source_extracted_preview:`Extracted Plain Text Preview`,lbl_delete:`Delete`,lbl_proposal_number:`Proposal #{n}`,lbl_foundational_proposal_number:`Foundational Proposal #{n}`,lbl_foundation_existing_badge:`Existing card will be linked`,lbl_foundation_new_badge:`New card suggestion`,lbl_include:`Include`,lbl_err_analyze_source_first:`Please analyze a source file, web link, or OCR scan first.`,lbl_err_min_split_proposals:`At least 2 complete card proposals are required to split a card.`,lbl_err_select_foundation:`Please select at least one prerequisite proposal card to import.`,lbl_err_enter_path_or_url:`Please enter a file path or URL to analyze.`,lbl_analyzing_source:`Analyzing source content, please wait…`,lbl_err_analysis_failed:`Analysis failed`,lbl_err_analysis_prefix:`Analysis error`,lbl_err_concept_required:`Answer / concept is required.`,lbl_err_category_required:`Category is required.`,lbl_err_import_context_required:`Curriculum text is required.`,lbl_err_original_context_required:`Question and answer are required for the original card.`,settings_context_title:`Knowledge Context`,settings_context_help:`Select the default knowledge context for this device.`,settings_context_label:`Default Context`,wizard_context_label:`Assign imported cards to context:`,settings_agents_title:`AI agents`,settings_agents_help:`Connect installed agent harnesses to ZAM via MCP. Safe to repeat anytime.`,btn_agents_connect_all:`Connect all detected`,btn_agent_connect:`Connect`,agent_status_loading:`Detecting installed harnesses...`,agent_status_not_installed:`Not installed`,agent_status_installed:`Installed`,agent_status_connected:`Connected`,agent_connect_running:`Connecting...`,agent_connect_done:`Connected {n} harness(es). Global ZAM skill refreshed.`,agent_connect_none:`No supported harness detected. Install Codex, VS Code, Copilot, or another host first.`,agent_connect_error:`Connection failed — see console for details.`},de:{ai_status_offline:`KI offline`,ai_status_online:`Lokale KI online`,ai_status_cloud_online:`Cloud-KI · {model}`,ai_status_cloud_offline:`Cloud-KI offline · {model}`,ai_status_starting:`Prüfe KI...`,ai_status_model_missing:`KI: Modell fehlt`,study_question_original:`Urtext`,study_evaluation_model:`{model}`,nav_dashboard:`Übersicht`,nav_settings:`Einstellungen`,dashboard_kicker:`Heute in ZAM`,dashboard_title:`Bewusst lernen.`,dashboard_subtitle:`Wiederhole, was fällig ist, öffne dein Wissensnetz oder konfiguriere lokale KI und Arbeitsbereiche in den Einstellungen.`,lbl_due_reviews:`Anstehende Wiederholungen`,lbl_caught_up:`Du bist voll auf dem Laufenden!`,dashboard_error:`Deine Daten konnten nicht geladen werden`,lbl_domains:`Aktive Wissensbereiche`,btn_start_session:`Lernsitzung starten`,lbl_translating:`Übersetze dynamisch...`,placeholder_answer:`Schreibe deine konzeptionelle Antwort... (Strg+Eingabe zum Absenden)`,placeholder_discussion:`Stelle eine Rückfrage zu dieser Karte... (Enter zum Senden)`,btn_discussion_send:`Senden`,discussion_error:`Keine Antwort von der KI. Bitte erneut versuchen.`,btn_reveal_answer:`Antwort aufdecken & absenden`,lbl_ai_evaluating:`Deine Antwort wird geprüft und Feedback wird erstellt...`,lbl_ai_working:`(Das kann einen Moment dauern.)`,lbl_wait_warn:`⚠ Die Bewertung dauert ungewöhnlich lange...`,btn_wait_keep:`Weiter warten`,btn_wait_skip:`Offline fortfahren`,lbl_question_wait_warn:`⚠ Das Erstellen der Frage dauert ungewöhnlich lange.`,btn_question_use_saved:`Gespeicherte Frage verwenden`,lbl_ai_feedback_title:`ZAM Feedback`,lbl_reveal_title:`Musterlösung`,lbl_rating_instruction:`Bewerte deine aktive Erinnerung ehrlich:`,lbl_rate_1:`Nochmal`,lbl_rate_2:`Schwer`,lbl_rate_3:`Gut`,lbl_rate_4:`Einfach`,btn_recall_reveal:`Aufdecken`,btn_recall_check:`Antwort prüfen`,btn_recall_finish:`Sitzung beenden`,lbl_recall_focus:`Fokus: {domain}`,lbl_recall_summary:`{done} von {total} bearbeitet`,lbl_recall_summary_title:`Zusammenfassung`,lbl_recall_empty_title:`Nichts fällig`,btn_pause_session:`Pause & Sitzung beenden`,lbl_generating_question:`Erstelle dynamische Frage...`,token:`Token`,concept:`Konzept`,context:`Kontext`,source:`Quellen-Referenz`,bloom_level:`Bloom-Stufe`,rating_again_shortcut:`(Shortcut: 1)`,rating_hard_shortcut:`(Shortcut: 2)`,rating_good_shortcut:`(Shortcut: 3)`,rating_easy_shortcut:`(Shortcut: 4)`,session_completed:`Lernsitzung erfolgreich abgeschlossen!`,session_completed_sub:`Hervorragende Arbeit! Deine Gedächtnispfade wurden aktualisiert.`,btn_back_to_dashboard:`Zurück zur Übersicht`,btn_open_graph:`Wissensnetz (3D)`,btn_open_settings:`Einstellungen`,observer_title:`UI Observer`,observer_idle:`Fenster laden und ein Anwendungsfenster zur Beobachtung auswählen.`,observer_loading:`Beobachtbare Fenster werden geladen...`,observer_ready:`Ausgewählt: {title}`,observer_vision_checking:`Prüfe Vision-Beobachtungseinstellungen...`,observer_analyzing:`Erzeuge Snapshot und frage das Vision-Modell...`,observer_done:`Beobachtung gespeichert. Confidence des letzten Reports: {confidence}`,observer_canceled:`Beobachtung abgebrochen.`,observer_error:`Observer-Fehler: {message}`,observer_vision_disabled:`Vision-Beobachtung ist deaktiviert. Aktiviere sie mit: zam settings set llm.vision.enabled true`,observer_vision_offline:`Vision-Endpunkt ist offline: {url}`,observer_vision_model_missing:`Vision-Modell ist nicht verfügbar: {model}`,observer_privacy_paused:`Privacy-Pause: Dieses Fenster wird durch den Privacy-Filter blockiert ({reason}).`,observer_privacy_option:`Privacy-Pause`,observer_refresh:`Fenster laden`,observer_analyze:`Snapshot analysieren`,observer_cancel:`Abbrechen`,observer_empty:`Keine beobachtbaren Fenster gefunden.`,observer_select_initial:`Noch keine Fenster geladen`,observer_select_placeholder:`Fenster auswählen`,observer_history_title:`Beobachtungsberichte`,observer_history_refresh:`Berichte aktualisieren`,observer_history_empty:`Noch keine Beobachtungsberichte.`,observer_history_loaded:`{count} Beobachtungsbericht(e) geladen.`,observer_loop_start:`Loop starten`,observer_loop_stop:`Loop stoppen`,observer_loop_idle:`Nur manuelle Snapshots.`,observer_loop_running:`Observer-Loop läuft. Immer nur ein Snapshot gleichzeitig.`,observer_loop_waiting:`Observer-Loop läuft. Nächster Snapshot in {seconds}s.`,observer_loop_stopped:`Observer-Loop gestoppt.`,observer_watch_start:`Watch starten`,observer_watch_stop:`Watch stoppen`,observer_watch_idle:`Kontinuierliche Beobachtung ist aus.`,observer_watch_starting:`Kontinuierliche Beobachtung wird gestartet...`,observer_watch_running:`Beobachte {title} — {count} Ereignis(se).`,observer_watch_stopping:`Kontinuierliche Beobachtung wird gestoppt...`,observer_watch_stopped:`Kontinuierliche Beobachtung gestoppt.`,observer_watch_error:`Watch-Fehler: {message}`,graph_title:`Wissensnetz (3D)`,graph_hint:`Ziehen zum Drehen • Knoten klicken = Fokus • Scroll = Zoomen`,graph_focus:`Fokus`,graph_prereqs:`Basis (Voraussetzungen)`,graph_dependents:`Höhere Fähigkeiten (Darauf aufbauend)`,graph_no_card:`noch keine persönliche Karte`,graph_refresh:`Neu laden`,graph_domain_token_list_title:`Alle Tokens in diesem Bereich`,setup_title:`Einrichtung & Daten`,settings_kicker:`Lokale Konfiguration`,settings_title:`Einstellungen`,settings_subtitle:`Konfiguriere diesen Rechner, ohne dieselben Entscheidungen auf jeden Arbeitsbereich oder jedes Gerät zu übertragen.`,settings_back:`Zurück zur Übersicht`,settings_system_title:`System`,settings_ai_title:`KI-Modelle`,settings_workspace_title:`Arbeitsbereiche`,workspaces_help:`Registriere persönliche, Team-, Familien- oder Community-Arbeitsverzeichnisse für diesen Rechner.`,settings_appearance_title:`Darstellung`,settings_data_title:`Daten`,settings_database:`Datenbank`,settings_learning_profile:`Lernprofil`,database_checking:`Wird geprüft…`,database_status_local:`Lokales SQLite · verbunden`,database_status_turso:`Turso · verbunden`,database_status_error:`Verbindung nicht verfügbar`,database_detail:`{location} · Profil {profile} · {count} Karten`,database_no_profile:`Kein aktives Profil`,database_profile_option:`{profile} — {count} Karten`,database_profile_switch_confirm:`Aktives Lernprofil zu „{profile}“ wechseln?`,database_profile_switched:`Aktives Profil: {profile} ({count} Karten)`,database_refresh:`Status aktualisieren`,settings_theme:`Theme`,theme_light:`Hell`,theme_dark:`Dunkel`,btn_open_data_folder:`Datenordner öffnen`,btn_backup_db:`Datenbank sichern`,setup_backing_up:`Datenbank wird gesichert…`,setup_backed_up:`Gesichert nach {path}`,setup_remote_no_backup:`Deine Datenbank synchronisiert in die Cloud ({target}) — kein separates lokales Backup nötig.`,setup_backup_failed:`Sicherung fehlgeschlagen: {message}`,setup_backup_failed_generic:`Sicherung fehlgeschlagen.`,setup_open_folder_failed:`Datenordner konnte nicht geöffnet werden: {message}`,btn_choose_workspace:`+ Arbeitsbereich hinzufügen…`,btn_open_terminal:`Terminal öffnen`,terminal_opening:`Terminal wird geöffnet...`,terminal_opened:`Terminal in {workspace} geöffnet`,terminal_open_failed:`Terminal konnte nicht geöffnet werden: {message}`,workspace_active:`aktiv`,workspace_default_label:`Standard-Arbeitsbereich`,workspace_empty:`Noch kein Arbeitsbereich registriert.`,workspace_kind:`{kind}-Arbeitsbereich`,workspace_kind_personal:`Persönlicher Arbeitsbereich`,workspace_kind_team:`Team-Arbeitsbereich`,workspace_kind_family:`Familien-Arbeitsbereich`,workspace_kind_community:`Community-Arbeitsbereich`,workspace_kind_organization:`Organisations-Arbeitsbereich`,workspace_kind_custom:`Benutzerdefinierter Arbeitsbereich`,workspace_more:`{count} weitere Arbeitsbereiche ausgeblendet. Die vollständige Liste ist in der CLI.`,workspace_use:`Nutzen`,workspace_open:`Terminal`,workspace_default_suffix:`(Standard)`,workspace_set:`Arbeitsbereich gesetzt: {path}`,workspace_added:`Arbeitsbereich hinzugefügt: {path}`,workspace_pick_failed:`Arbeitsbereich konnte nicht gesetzt werden: {message}`,workspace_remove:`Entfernen`,workspace_remove_confirm:`"{label}" aus ZAM entfernen? Dateien und Verknüpfungen im Ordner bleiben unverändert.`,workspace_removed:`Arbeitsbereich entfernt: {label}`,workspace_remove_failed:`Arbeitsbereich konnte nicht entfernt werden: {message}`,workspace_link_ok:`Skill-Link OK`,workspace_link_broken:`Skill-Link defekt`,workspace_link_unmanaged:`Fremder Skill-Ordner`,workspace_repair:`Skill-Link reparieren`,workspace_repair_confirm:`Im Ordner von "{label}" liegt ein skills/zam-Verzeichnis, das nicht von ZAM stammt. Beim Reparieren wird es gelöscht und durch eine Verknüpfung ersetzt. Fortfahren?`,workspace_repairing:`Skill-Link wird repariert…`,workspace_repaired:`Skill-Link repariert: {label}`,workspace_repair_failed:`Skill-Link konnte nicht repariert werden: {message}`,lbl_app_version:`Version`,lbl_learning_model:`Lernmodell`,lbl_observer_model:`Observer-Modell`,provider_ready:`bereit`,provider_disabled:`deaktiviert`,provider_offline:`offline`,provider_model_missing:`Modell fehlt`,provider_unsupported:`Provider nicht unterstützt`,provider_local:`lokal`,provider_cloud:`Cloud`,provider_unknown:`unbekannt`,btn_ai_config_open:`Konfigurieren`,btn_ai_config_close:`Schließen`,btn_add_ai_provider:`+ Provider hinzufügen`,ai_config_loading:`Provider-Konfiguration wird geladen...`,ai_config_failed:`Provider-Konfiguration konnte nicht geladen werden: {message}`,ai_provider_empty:`Noch keine Provider konfiguriert.`,ai_provider_section_local:`Lokal`,ai_provider_section_cloud:`Cloud`,ai_provider_kind:`Provider-Typ`,ai_provider_kind_local:`Lokal`,ai_provider_kind_cloud:`Cloud`,ai_provider_local_badge:`lokal`,ai_provider_cloud_badge:`Cloud`,ai_provider_key_set:`Schlüssel gesetzt`,ai_provider_key_missing:`Schlüssel fehlt`,ai_provider_key_none:`kein Schlüssel`,ai_provider_edit:`Bearbeiten`,ai_provider_remove:`Entfernen`,ai_provider_remove_confirm:`Provider "{name}" entfernen?`,ai_provider_removed:`Provider "{name}" entfernt`,ai_provider_saved:`Provider "{name}" gespeichert`,ai_provider_save_failed:`Provider konnte nicht gespeichert werden: {message}`,ai_provider_form_add_title:`Provider hinzufügen`,ai_provider_form_edit_title:`Provider bearbeiten`,ai_provider_display_name:`Name`,ai_provider_url:`URL`,ai_provider_model:`Modell`,ai_provider_model_local_hint:`Modellnamen eintippen. Listet der Endpunkt Modelle, kannst du unten eines wählen.`,ai_provider_models_pick:`Vom Endpunkt übernehmen`,ai_provider_flavor:`API-Variante`,ai_provider_local:`Läuft auf diesem Rechner`,ai_provider_local_hint:`Lokale Modell-Server (FastFlowLM, Ollama, …) brauchen meist keinen API-Schlüssel. ZAM kann den Server automatisch starten.`,ai_provider_cloud_hint_key:`Cloud-APIs brauchen einen API-Schlüssel. Lokale Provider nutzen das Schlüsselfeld nicht.`,ai_provider_runner:`Lokaler Modell-Server`,ai_provider_runner_hint:`Das Programm, das das Modell auf diesem PC bereitstellt — nicht der Coding-Agent.`,ai_provider_runner_auto:`Automatisch erkennen`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`nicht erkannt`,ai_provider_api_key:`API-Schlüssel`,ai_provider_api_key_hint:`Nur Schreiben — lokal gespeichert, nie synchronisiert`,ai_provider_cloud_hint:`Vorgeschlagenes Modell: {model}`,ai_provider_models_loading:`Modelle werden geladen...`,ai_provider_models_empty:`Endpunkt listet keine Modelle`,btn_ai_provider_save:`Speichern`,btn_ai_provider_cancel:`Abbrechen`,ai_role_bindings_title:`Rollen-Zuordnung`,ai_role_recall:`Lernen (recall)`,ai_role_vision:`Observer (vision)`,ai_role_primary:`Primär`,ai_role_fallback:`Fallback`,ai_role_none:`(keiner)`,btn_ai_role_apply:`Anwenden`,ai_role_bound:`Rolle {role} aktualisiert`,ai_role_bind_failed:`Rolle konnte nicht zugeordnet werden: {message}`,ai_recall_anthropic_warn:`Anthropic-Messages-Provider werden für Lernsitzungen noch nicht unterstützt. Trotzdem zuordnen?`,ai_vision_cloud_confirm:`Screenshots werden an {endpoint} gesendet. Vision-Beobachtung aktivieren und diesen Cloud-Provider zuordnen?`,ai_provider_referenced:`Noch verwendet von: {roles}`,btn_check_updates:`Nach Updates suchen`,btn_open_releases:`Releases`,version_unknown:`unbekannt`,update_checking:`Suche nach Updates...`,update_available:`Update verfügbar: {version}`,update_none:`Du nutzt die aktuelle Version.`,update_failed:`Update-Prüfung fehlgeschlagen: {message}`,release_link_failed:`Releases konnten nicht geöffnet werden: {message}`,nav_content:`Lerninhalte`,content_title:`Lerninhalt-Studio`,content_subtitle:`Verwalte deine persönlichen Lernkarten, durchsuche Tokens und pflege aktive Erinnerungsfragen.`,btn_new_card:`Neue Karte`,lbl_search_placeholder:`Fragen, Antworten, Kategorien, Keys suchen...`,lbl_category_filter:`Kategorie`,lbl_all_categories:`Alle Kategorien`,lbl_all_contexts:`Alle Kontexte`,lbl_no_context_default:`Kein Kontextstandard`,lbl_no_context_assignment:`Keine Kontextzuordnung`,lbl_empty_content:`Keine Lernkarten gefunden. Erstelle deine erste karte!`,lbl_empty_content_btn:`Erste Karte erstellen`,lbl_question:`Frage`,lbl_answer:`Antwort / Konzept`,lbl_category:`Kategorie`,lbl_title:`Titel (Anzeigename)`,lbl_source_link:`Quell-Link`,lbl_more_settings:`Mehr Einstellungen`,lbl_context:`Kontext`,lbl_bloom_level:`Bloom-Level`,lbl_symbiosis_mode:`Symbiose-Modus`,lbl_slug:`Technischer Key (Slug)`,lbl_slug_hint:`Wird nach Erstellung automatisch generiert`,btn_save:`Karte speichern`,btn_remove:`Karte entfernen`,btn_delete:`Token dauerhaft löschen`,lbl_confirm_remove_title:`Kartenentfernung bestätigen`,lbl_confirm_remove_desc:`Das Entfernen dieser Karte löscht deinen persönlichen FSRS-Lernstatus und -Verlauf für diesen Token. Andere Benutzer oder der globale Token-Katalog bleiben unberührt.`,lbl_confirm_delete_title:`Globale Token-Löschung bestätigen`,lbl_confirm_delete_desc:`Das dauerhafte Löschen dieses Tokens zerstört das Wissenskonzept, die persönlichen Karten aller Benutzer und den gesamten Bewertungsverlauf in der Datenbank.`,lbl_delete_impact:`Diese Aktion betrifft:`,lbl_impact_cards:`{count} Karte(n)`,lbl_impact_reviews:`{count} Bewertungsprotokoll(e)`,lbl_impact_steps:`{count} Sessionschritt(e)`,lbl_impact_skills:`{count} Agenten-Skill(s) aktualisiert`,lbl_confirm_action:`Bestätigen`,lbl_cancel_action:`Abbrechen`,lbl_card_saved_toast:`Karte erfolgreich gespeichert!`,lbl_card_removed_toast:`Karte erfolgreich entfernt!`,lbl_card_deleted_toast:`Token erfolgreich gelöscht!`,lbl_error_saving:`Karte konnte nicht gespeichert werden`,lbl_error_loading:`Lerninhalte konnten nicht geladen werden`,lbl_card_status_new:`Neu`,lbl_card_status_learning:`Lernen`,lbl_card_status_review:`Wiederholen`,lbl_card_status_relearning:`Wiederlernen`,lbl_card_status_not_started:`Nicht gestartet`,lbl_card_due:`Fällig`,lbl_card_not_due:`Nicht fällig`,btn_import_curriculum:`Lehrplan importieren`,lbl_import_modal_title:`Lehrplan-Standard importieren`,lbl_import_text:`Lehrplantext`,placeholder_import_text:`Lehrplantext oder Lehrplanpunkte hier einfügen...`,lbl_import_source:`Quell-URL / Referenz`,lbl_import_category:`Zielkategorie`,lbl_import_progress_status:`Karten werden generiert...`,lbl_import_progress_detail:`Dies kann je nach Geschwindigkeit der lokalen KI bis zu einer Minute dauern.`,btn_import_submit:`Importieren`,toast_import_success:`Erfolgreich {createdCount} neue Token importiert und {ensuredCount} Karten sichergestellt!`,lbl_error_importing:`Lehrplan konnte nicht importiert werden`,btn_curriculum_wizard:`Lehrplan-Assistent`,lbl_curriculum_wizard_title:`Lehrplan-Assistent`,wizard_step_country:`Land`,wizard_step_region:`Bundesland`,wizard_step_schoolType:`Schulform`,wizard_step_grade:`Jahrgangsstufe`,wizard_step_subject:`Fach`,wizard_step_track:`Ausprägung`,wizard_step_topic:`Themen`,wizard_btn_back:`Zurück`,wizard_btn_next:`Weiter`,wizard_no_options:`Für diese Auswahl sind noch keine Optionen verfügbar.`,wizard_err_select_option:`Bitte wähle eine Option, um fortzufahren.`,wizard_err_no_topics:`Bitte wähle mindestens ein Thema aus.`,wizard_topic_scope_note:`Die Karten werden aus der vollständigen Lehrplanseite dieses Fachs erstellt (alle Themen). Die präzise Auswahl nur der markierten Themen kommt mit einem künftigen Update — bis dahin hilft dir die Auswahl, den Überblick zu behalten, was als Nächstes drankommt.`,wizard_resume_prompt:`Dort weitermachen, wo du aufgehört hast:`,wizard_btn_resume:`Fortfahren`,wizard_btn_restart:`Neu beginnen`,lbl_curriculum_wizard_loading:`Lädt…`,wizard_hours:`{hours} Std.`,btn_split:`Aufteilen`,lbl_split_modal_title:`Karte aufteilen`,lbl_original_card_title:`Originalkarte (Zusammenfassende Anwendungsfrage)`,lbl_split_original_question:`Frage`,lbl_split_original_concept:`Antwort / Konzept`,lbl_split_action_title:`Nach dem Aufteilen:`,lbl_action_block:`Originalkarte behalten und blockieren (erfordert zuerst neue Karten)`,lbl_action_remove:`Originalkarte entfernen`,lbl_split_progress_status:`Atomare Vorschläge werden generiert...`,lbl_split_progress_detail:`Dies kann je nach Geschwindigkeit der lokalen KI bis zu einer Minute dauern.`,lbl_atomic_proposals_title:`Atomare Kartenvorschläge (Mindestens 2)`,btn_split_modal_submit:`Aufteilung bestätigen`,btn_content_foundations_card:`Fundamente`,lbl_foundations_modal_title:`Fundamente importieren`,lbl_foundations_progress_status:`Fundamentvorschläge werden generiert...`,lbl_foundations_progress_detail:`Dies kann je nach Geschwindigkeit der lokalen KI bis zu einer Minute dauern.`,lbl_foundations_atomic_title:`Fundamentale Kartenvorschläge`,btn_foundations_modal_submit:`Import bestätigen`,lbl_import_source_type:`Quelltyp`,lbl_import_source_uri:`Dateipfad oder URL`,btn_import_source_analyze:`Analysieren`,lbl_source_extracted_preview:`Extrahierte Textvorschau`,lbl_delete:`Löschen`,lbl_proposal_number:`Vorschlag Nr. {n}`,lbl_foundational_proposal_number:`Grundlagen-Vorschlag Nr. {n}`,lbl_foundation_existing_badge:`Bestehende Karte wird verknüpft`,lbl_foundation_new_badge:`Neuer Kartenvorschlag`,lbl_include:`Einschließen`,lbl_err_analyze_source_first:`Bitte zuerst eine Quelldatei, einen Weblink oder einen OCR-Scan analysieren.`,lbl_err_min_split_proposals:`Für das Aufteilen einer Karte sind mindestens 2 vollständige Kartenvorschläge erforderlich.`,lbl_err_select_foundation:`Bitte wähle mindestens eine Grundlagen-Vorschlagskarte zum Importieren aus.`,lbl_err_enter_path_or_url:`Bitte gib einen Dateipfad oder eine URL zur Analyse ein.`,lbl_analyzing_source:`Quellinhalt wird analysiert, bitte warten…`,lbl_err_analysis_failed:`Analyse fehlgeschlagen`,lbl_err_analysis_prefix:`Analysefehler`,lbl_err_concept_required:`Antwort / Lerninhalt ist erforderlich.`,lbl_err_category_required:`Kategorie ist erforderlich.`,lbl_err_import_context_required:`Lehrplantext ist erforderlich.`,lbl_err_original_context_required:`Frage und Antwort sind für die Originalkarte erforderlich.`,settings_context_title:`Wissenskontext`,settings_context_help:`Wähle den Standard-Wissenskontext für dieses Gerät.`,settings_context_label:`Standard-Kontext`,wizard_context_label:`Importierte Karten dem Kontext zuweisen:`,settings_agents_title:`KI-Agenten`,settings_agents_help:`Verbinde installierte Agent-Harnesses per MCP mit ZAM. Jederzeit gefahrlos wiederholbar.`,btn_agents_connect_all:`Alle erkannten verbinden`,btn_agent_connect:`Verbinden`,agent_status_loading:`Erkenne installierte Harnesses...`,agent_status_not_installed:`Nicht installiert`,agent_status_installed:`Installiert`,agent_status_connected:`Verbunden`,agent_connect_running:`Verbinde...`,agent_connect_done:`{n} Harness(es) verbunden. Globaler ZAM-Skill aktualisiert.`,agent_connect_none:`Kein unterstützter Harness gefunden. Installiere zuerst Codex, VS Code, Copilot o. ä.`,agent_connect_error:`Verbindung fehlgeschlagen — Details in der Konsole.`},es:{ai_status_offline:`IA desconectada`,ai_status_online:`IA local en línea`,ai_status_cloud_online:`IA en la nube · {model}`,ai_status_cloud_offline:`IA en la nube desconectada · {model}`,ai_status_starting:`Comprobando IA...`,ai_status_model_missing:`IA: modelo no encontrado`,study_question_original:`Original`,study_evaluation_model:`{model}`,nav_dashboard:`Panel`,nav_settings:`Ajustes`,dashboard_kicker:`Hoy en ZAM`,dashboard_title:`Aprende con intención.`,dashboard_subtitle:`Repasa lo que toca, abre tu mapa de conocimiento o configura la IA local y los espacios de trabajo en Ajustes.`,lbl_due_reviews:`Repasos pendientes`,lbl_caught_up:`¡Estás al día!`,dashboard_error:`No se pudieron cargar tus datos`,lbl_domains:`Dominios activos`,btn_start_session:`Iniciar sesión de aprendizaje`,lbl_translating:`Traduciendo dinámicamente...`,placeholder_answer:`Escribe aquí tu respuesta conceptual... (Ctrl+Intro para enviar)`,placeholder_discussion:`Haz una pregunta sobre esta tarjeta... (Intro para enviar)`,btn_discussion_send:`Enviar`,discussion_error:`Sin respuesta de la IA. Inténtalo de nuevo.`,btn_reveal_answer:`Enviar y mostrar respuesta`,lbl_ai_evaluating:`Revisando tu respuesta y generando comentarios...`,lbl_ai_working:`(Esto puede tardar un momento.)`,lbl_wait_warn:`⚠ La evaluación está tardando más de lo esperado.`,btn_wait_keep:`Seguir esperando`,btn_wait_skip:`Omitir sin conexión`,lbl_question_wait_warn:`⚠ La generación de la pregunta está tardando más de lo esperado.`,btn_question_use_saved:`Usar pregunta guardada`,lbl_ai_feedback_title:`Comentarios de ZAM`,lbl_reveal_title:`Respuesta de referencia`,lbl_rating_instruction:`Califica tu recuerdo activo con honestidad:`,lbl_rate_1:`Otra vez`,lbl_rate_2:`Difícil`,lbl_rate_3:`Bien`,lbl_rate_4:`Fácil`,btn_recall_reveal:`Mostrar`,btn_recall_check:`Comprobar respuesta`,btn_recall_finish:`Finalizar sesión`,lbl_recall_focus:`Enfoque: {domain}`,lbl_recall_summary:`{done} de {total} revisadas`,lbl_recall_summary_title:`Resumen de la sesión`,lbl_recall_empty_title:`Nada pendiente`,btn_pause_session:`Pausar y salir de la sesión`,lbl_generating_question:`Generando pregunta dinámica...`,token:`Token`,concept:`Concepto`,context:`Contexto`,source:`Referencia de origen`,bloom_level:`Nivel Bloom`,rating_again_shortcut:`(Atajo: 1)`,rating_hard_shortcut:`(Atajo: 2)`,rating_good_shortcut:`(Atajo: 3)`,rating_easy_shortcut:`(Atajo: 4)`,session_completed:`¡Sesión de aprendizaje completada!`,session_completed_sub:`¡Buen trabajo al completar esta sesión! Tus trazas de memoria se han actualizado.`,btn_back_to_dashboard:`Volver al panel`,btn_open_graph:`Mapa de conocimiento (3D)`,btn_open_settings:`Ajustes`,observer_title:`Observador de IU`,observer_idle:`Carga las ventanas y elige una ventana de aplicación para observar.`,observer_loading:`Cargando ventanas observables...`,observer_ready:`Seleccionada: {title}`,observer_vision_checking:`Comprobando los ajustes de observación por visión...`,observer_analyzing:`Capturando una instantánea y consultando al modelo de visión...`,observer_done:`Observación guardada. Confianza del último informe: {confidence}`,observer_canceled:`Observación cancelada.`,observer_error:`Error del observador: {message}`,observer_vision_disabled:`La observación por visión está desactivada. Actívala con: zam settings set llm.vision.enabled true`,observer_vision_offline:`El punto de conexión de visión está fuera de línea: {url}`,observer_vision_model_missing:`El modelo de visión no está disponible: {model}`,observer_privacy_paused:`Pausa de privacidad: el filtro de privacidad bloquea esta ventana ({reason}).`,observer_privacy_option:`pausa de privacidad`,observer_refresh:`Cargar ventanas`,observer_analyze:`Instantánea y análisis`,observer_cancel:`Cancelar`,observer_empty:`No se encontraron ventanas observables.`,observer_select_initial:`Aún no hay ventanas cargadas`,observer_select_placeholder:`Selecciona una ventana`,observer_history_title:`Informes de observación`,observer_history_refresh:`Actualizar informes`,observer_history_empty:`Aún no hay informes de observación.`,observer_history_loaded:`Se cargaron {count} informe(s) de observación.`,observer_loop_start:`Iniciar bucle`,observer_loop_stop:`Detener bucle`,observer_loop_idle:`Solo instantáneas manuales.`,observer_loop_running:`Bucle del observador en marcha. Una instantánea cada vez.`,observer_loop_waiting:`Bucle del observador en marcha. Próxima instantánea en {seconds}s.`,observer_loop_stopped:`Bucle del observador detenido.`,observer_watch_start:`Iniciar vigilancia`,observer_watch_stop:`Detener vigilancia`,observer_watch_idle:`La vigilancia continua está desactivada.`,observer_watch_starting:`Iniciando vigilancia continua...`,observer_watch_running:`Vigilando {title} — {count} evento(s).`,observer_watch_stopping:`Deteniendo vigilancia continua...`,observer_watch_stopped:`Vigilancia continua detenida.`,observer_watch_error:`Error de vigilancia: {message}`,graph_title:`Grafo de conocimiento (3D)`,graph_hint:`Arrastra para rotar • Clic en los nodos para enfocar • Desplázate para hacer zoom`,graph_focus:`Enfoque`,graph_prereqs:`Bases (requisitos previos)`,graph_dependents:`Capacidades superiores (dependientes)`,graph_no_card:`aún sin tarjeta personal`,graph_refresh:`Actualizar`,graph_domain_token_list_title:`Todos los tokens de este dominio`,setup_title:`Configuración y datos`,settings_kicker:`Configuración local`,settings_title:`Ajustes`,settings_subtitle:`Configura este equipo sin imponer las mismas decisiones a cada espacio de trabajo o dispositivo.`,settings_back:`Volver al panel`,settings_system_title:`Sistema`,settings_ai_title:`Modelos de IA`,settings_workspace_title:`Espacios de trabajo`,workspaces_help:`Registra directorios de trabajo personales, de equipo, familiares o de comunidad para este equipo.`,settings_appearance_title:`Apariencia`,settings_data_title:`Datos`,settings_database:`Base de datos`,settings_learning_profile:`Perfil de aprendizaje`,database_checking:`Comprobando…`,database_status_local:`SQLite local · conectado`,database_status_turso:`Turso · conectado`,database_status_error:`Conexión no disponible`,database_detail:`{location} · perfil {profile} · {count} tarjetas`,database_no_profile:`Sin perfil activo`,database_profile_option:`{profile} — {count} tarjetas`,database_profile_switch_confirm:`¿Cambiar el perfil de aprendizaje activo a «{profile}»?`,database_profile_switched:`Perfil activo: {profile} ({count} tarjetas)`,database_refresh:`Actualizar estado`,settings_theme:`Tema`,theme_light:`Claro`,theme_dark:`Oscuro`,btn_open_data_folder:`Abrir carpeta de datos`,btn_backup_db:`Hacer copia de la base de datos`,setup_backing_up:`Haciendo copia de la base de datos…`,setup_backed_up:`Copia guardada en {path}`,setup_remote_no_backup:`Tu base de datos se sincroniza con la nube ({target}); no hace falta una copia local aparte.`,setup_backup_failed:`La copia falló: {message}`,setup_backup_failed_generic:`La copia falló.`,setup_open_folder_failed:`No se pudo abrir la carpeta de datos: {message}`,lbl_workspace:`Espacio de trabajo`,btn_choose_workspace:`+ Añadir espacio de trabajo…`,btn_open_terminal:`Abrir terminal`,terminal_opening:`Abriendo terminal...`,terminal_opened:`Terminal abierta en {workspace}`,terminal_open_failed:`No se pudo abrir la terminal: {message}`,workspace_active:`activo`,workspace_default_label:`Espacio de trabajo predeterminado`,workspace_empty:`Aún no hay ningún espacio de trabajo registrado.`,workspace_kind:`Espacio de trabajo {kind}`,workspace_kind_personal:`Espacio de trabajo personal`,workspace_kind_team:`Espacio de trabajo de equipo`,workspace_kind_family:`Espacio de trabajo familiar`,workspace_kind_community:`Espacio de trabajo de comunidad`,workspace_kind_organization:`Espacio de trabajo de organización`,workspace_kind_custom:`Espacio de trabajo personalizado`,workspace_more:`{count} espacio(s) de trabajo más ocultos. Usa la CLI para ver la lista completa.`,workspace_use:`Usar`,workspace_open:`Terminal`,workspace_default_suffix:`(predeterminado)`,workspace_set:`Espacio de trabajo establecido en {path}`,workspace_added:`Espacio de trabajo añadido: {path}`,workspace_pick_failed:`No se pudo establecer el espacio de trabajo: {message}`,workspace_remove:`Quitar`,workspace_remove_confirm:`¿Quitar "{label}" de ZAM? Los archivos y enlaces de la carpeta permanecerán sin cambios.`,workspace_removed:`Espacio de trabajo quitado: {label}`,workspace_remove_failed:`No se pudo quitar el espacio de trabajo: {message}`,workspace_link_ok:`Enlace de skill correcto`,workspace_link_broken:`Enlace de skill roto`,workspace_link_unmanaged:`Carpeta de skill externa`,workspace_repair:`Reparar enlace de skill`,workspace_repair_confirm:`La carpeta de "{label}" contiene un directorio skills/zam que ZAM no creó. Reparar lo elimina y lo reemplaza por un enlace. ¿Continuar?`,workspace_repairing:`Reparando enlace de skill…`,workspace_repaired:`Enlace de skill reparado: {label}`,workspace_repair_failed:`No se pudo reparar el enlace de skill: {message}`,lbl_app_version:`Versión`,lbl_learning_model:`Modelo de aprendizaje`,lbl_observer_model:`Modelo del observador`,provider_ready:`listo`,provider_disabled:`desactivado`,provider_offline:`sin conexión`,provider_model_missing:`falta el modelo`,provider_unsupported:`proveedor no compatible`,provider_local:`local`,provider_cloud:`nube`,provider_unknown:`desconocido`,btn_ai_config_open:`Configurar`,btn_ai_config_close:`Cerrar`,btn_add_ai_provider:`+ Añadir proveedor`,ai_config_loading:`Cargando la configuración del proveedor...`,ai_config_failed:`No se pudo cargar la configuración del proveedor: {message}`,ai_provider_empty:`Aún no hay proveedores configurados.`,ai_provider_section_local:`Local`,ai_provider_section_cloud:`Nube`,ai_provider_kind:`Tipo de proveedor`,ai_provider_kind_local:`Local`,ai_provider_kind_cloud:`Nube`,ai_provider_local_badge:`local`,ai_provider_cloud_badge:`nube`,ai_provider_key_set:`clave definida`,ai_provider_key_missing:`falta la clave`,ai_provider_key_none:`sin clave`,ai_provider_edit:`Editar`,ai_provider_remove:`Quitar`,ai_provider_remove_confirm:`¿Quitar el proveedor "{name}"?`,ai_provider_removed:`Proveedor "{name}" quitado`,ai_provider_saved:`Proveedor "{name}" guardado`,ai_provider_save_failed:`No se pudo guardar el proveedor: {message}`,ai_provider_form_add_title:`Añadir proveedor`,ai_provider_form_edit_title:`Editar proveedor`,ai_provider_display_name:`Nombre`,ai_provider_url:`URL`,ai_provider_model:`Modelo`,ai_provider_model_local_hint:`Escribe el nombre del modelo. Si el punto de conexión lista modelos, puedes elegir uno abajo.`,ai_provider_models_pick:`Elegir del punto de conexión`,ai_provider_flavor:`Variante de API`,ai_provider_local:`Se ejecuta en este equipo`,ai_provider_local_hint:`Los servidores de modelos locales (FastFlowLM, Ollama, …) normalmente no necesitan clave de API. ZAM puede intentar iniciar el servidor automáticamente.`,ai_provider_cloud_hint_key:`Las API en la nube necesitan una clave de API. Los proveedores locales no usan el campo de clave.`,ai_provider_runner:`Servidor de modelo local`,ai_provider_runner_hint:`El programa que sirve el modelo en este PC, no tu agente de programación.`,ai_provider_runner_auto:`Detección automática`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`no detectado`,ai_provider_api_key:`Clave de API`,ai_provider_api_key_hint:`Solo escritura — se guarda localmente, nunca se sincroniza`,ai_provider_cloud_hint:`Modelo sugerido: {model}`,ai_provider_models_loading:`Cargando modelos...`,ai_provider_models_empty:`El punto de conexión no lista modelos`,btn_ai_provider_save:`Guardar`,btn_ai_provider_cancel:`Cancelar`,ai_role_bindings_title:`Asignación de roles`,ai_role_recall:`Aprendizaje (recuerdo)`,ai_role_vision:`Observador (visión)`,ai_role_primary:`Principal`,ai_role_fallback:`Alternativo`,ai_role_none:`(ninguno)`,btn_ai_role_apply:`Aplicar`,ai_role_bound:`Rol {role} actualizado`,ai_role_bind_failed:`No se pudo asignar el rol: {message}`,ai_recall_anthropic_warn:`Los proveedores de Anthropic Messages aún no son compatibles con las sesiones de aprendizaje. ¿Asignar de todos modos?`,ai_vision_cloud_confirm:`Se enviarán capturas de pantalla a {endpoint}. ¿Activar la observación por visión y asignar este proveedor de nube?`,ai_provider_referenced:`Aún en uso por: {roles}`,btn_check_updates:`Buscar actualizaciones`,btn_open_releases:`Versiones`,version_unknown:`desconocida`,update_checking:`Buscando actualizaciones...`,update_available:`Actualización disponible: {version}`,update_none:`Tienes la versión más reciente.`,update_failed:`La búsqueda de actualizaciones falló: {message}`,release_link_failed:`No se pudieron abrir las versiones: {message}`,nav_content:`Contenido`,content_title:`Estudio de Contenido`,content_subtitle:`Gestiona tus tarjetas personales, busca tokens y mejora las preguntas de recuerdo activo.`,btn_new_card:`Nueva tarjeta`,lbl_search_placeholder:`Buscar preguntas, respuestas, categorías...`,lbl_category_filter:`Categoría`,lbl_all_categories:`Todas las categorías`,lbl_all_contexts:`Todos los contextos`,lbl_no_context_default:`Sin contexto predeterminado`,lbl_no_context_assignment:`Sin asignación de contexto`,lbl_empty_content:`No se encontraron tarjetas. ¡Crea tu primera tarjeta!`,lbl_empty_content_btn:`Crear primera tarjeta`,lbl_question:`Pregunta`,lbl_answer:`Respuesta / Concepto`,lbl_category:`Categoría`,lbl_source_link:`Enlace de origen`,lbl_more_settings:`Más ajustes`,lbl_context:`Contexto`,lbl_bloom_level:`Nivel Bloom`,lbl_symbiosis_mode:`Modo de simbiosis`,lbl_slug:`Clave técnica (Slug)`,lbl_slug_hint:`Generada automáticamente tras crear`,btn_save:`Guardar tarjeta`,btn_remove:`Eliminar tarjeta`,btn_delete:`Borrar token global`,lbl_confirm_remove_title:`Confirmar eliminación`,lbl_confirm_remove_desc:`Esto borrará tu estado y registro de FSRS personal. El token global no se verá afectado.`,lbl_confirm_delete_title:`Confirmar borrado global`,lbl_confirm_delete_desc:`Esto borrará permanentemente el concepto y todas las tarjetas de todos los usuarios.`,lbl_delete_impact:`Esta acción afecta:`,lbl_impact_cards:`{count} tarjeta(s)`,lbl_impact_reviews:`{count} registro(s) de repaso`,lbl_impact_steps:`{count} paso(s) de sesión`,lbl_impact_skills:`{count} habilidades de agente actualizadas`,lbl_confirm_action:`Confirmar`,lbl_cancel_action:`Cancelar`,lbl_card_saved_toast:`¡Tarjeta guardada!`,lbl_card_removed_toast:`¡Tarjeta eliminada!`,lbl_card_deleted_toast:`¡Token borrado!`,lbl_error_saving:`Error al guardar`,lbl_error_loading:`Error al cargar contenido`,lbl_card_status_new:`Nueva`,lbl_card_status_learning:`Aprendizaje`,lbl_card_status_review:`Repaso`,lbl_card_status_relearning:`Reaprendizaje`,lbl_card_status_not_started:`No iniciado`,lbl_card_due:`Vence`,lbl_card_not_due:`No vence`,btn_import_curriculum:`Importar currículo`,lbl_import_modal_title:`Importar estándar de currículo`,lbl_import_text:`Texto del currículo`,placeholder_import_text:`Pegue el texto del currículo o viñetas del plan de estudios aquí...`,lbl_import_source:`URL de origen / Referencia`,lbl_import_category:`Categoría de destino`,lbl_import_progress_status:`Generando tarjetas...`,lbl_import_progress_detail:`Esto puede tardar hasta un minuto dependiendo de la velocidad de su IA local.`,btn_import_submit:`Importar`,toast_import_success:`¡Se importaron correctamente {createdCount} nuevos tokens y se aseguraron {ensuredCount} tarjetas!`,lbl_error_importing:`Error al importar el currículo`,btn_curriculum_wizard:`Asistente de plan de estudios`,lbl_curriculum_wizard_title:`Asistente de plan de estudios`,wizard_step_country:`País`,wizard_step_region:`Región`,wizard_step_schoolType:`Tipo de escuela`,wizard_step_grade:`Curso`,wizard_step_subject:`Asignatura`,wizard_step_track:`Modalidad`,wizard_step_topic:`Temas`,wizard_btn_back:`Atrás`,wizard_btn_next:`Siguiente`,wizard_no_options:`Aún no hay opciones disponibles para esta selección.`,wizard_err_select_option:`Selecciona una opción para continuar.`,wizard_err_no_topics:`Selecciona al menos un tema.`,wizard_topic_scope_note:`Las tarjetas se generan a partir de la página completa del plan de estudios de esta asignatura (todos sus temas). La importación precisa por tema llegará en una futura actualización; por ahora, la selección de temas te ayuda a hacer seguimiento de lo que hay que cubrir a continuación.`,wizard_resume_prompt:`Continuar donde lo dejaste:`,wizard_btn_resume:`Continuar`,wizard_btn_restart:`Empezar de nuevo`,lbl_curriculum_wizard_loading:`Cargando…`,wizard_hours:`{hours} h`,btn_split:`Dividir`,lbl_split_modal_title:`Dividir tarjeta`,lbl_original_card_title:`Tarjeta original (Pregunta de aplicación resumida)`,lbl_split_original_question:`Pregunta`,lbl_split_original_concept:`Respuesta / Concepto`,lbl_split_action_title:`Después de completar la división:`,lbl_action_block:`Conservar la tarjeta original y bloquearla (requiere nuevas tarjetas primero)`,lbl_action_remove:`Eliminar la tarjeta original`,lbl_split_progress_status:`Generando propuestas atómicas...`,lbl_split_progress_detail:`Esto puede tardar hasta un minuto dependiendo de la velocidad de su IA local.`,lbl_atomic_proposals_title:`Propuestas de tarjetas atómicas (Mínimo 2)`,btn_split_modal_submit:`Confirmar división`,btn_content_foundations_card:`Fundamentos`,lbl_foundations_modal_title:`Importar fundamentos`,lbl_foundations_progress_status:`Generando propuestas fundamentales...`,lbl_foundations_progress_detail:`Esto puede tardar hasta un minuto dependiendo de la velocidad de su IA local.`,lbl_foundations_atomic_title:`Propuestas de tarjetas fundamentales`,btn_foundations_modal_submit:`Confirmar importación`,lbl_import_source_type:`Tipo de origen`,lbl_import_source_uri:`Ruta del archivo o URL`,btn_import_source_analyze:`Analizar`,lbl_source_extracted_preview:`Vista previa del texto extraído`,lbl_delete:`Eliminar`,lbl_proposal_number:`Propuesta n.º {n}`,lbl_foundational_proposal_number:`Propuesta fundamental n.º {n}`,lbl_foundation_existing_badge:`Se vinculará la tarjeta existente`,lbl_foundation_new_badge:`Sugerencia de nueva tarjeta`,lbl_include:`Incluir`,lbl_err_analyze_source_first:`Primero analiza un archivo de origen, un enlace web o un escaneo OCR.`,lbl_err_min_split_proposals:`Se requieren al menos 2 propuestas de tarjeta completas para dividir una tarjeta.`,lbl_err_select_foundation:`Selecciona al menos una tarjeta de propuesta de prerrequisito para importar.`,lbl_err_enter_path_or_url:`Introduce una ruta de archivo o URL para analizar.`,lbl_analyzing_source:`Analizando el contenido de la fuente, espera…`,lbl_err_analysis_failed:`Error en el análisis`,lbl_err_analysis_prefix:`Error de análisis`,lbl_err_concept_required:`La respuesta o el concepto es obligatorio.`,lbl_err_category_required:`La categoría es obligatoria.`,lbl_err_import_context_required:`El texto del plan de estudios es obligatorio.`,lbl_err_original_context_required:`La pregunta y la respuesta son obligatorias para la tarjeta original.`,settings_context_title:`Contexto de conocimiento`,settings_context_help:`Selecciona el contexto de conocimiento predeterminado para este dispositivo.`,settings_context_label:`Contexto predeterminado`,wizard_context_label:`Asignar tarjetas importadas al contexto:`,settings_agents_title:`Agentes de IA`,settings_agents_help:`Conecta los agentes instalados con ZAM mediante MCP. Se puede repetir sin riesgo.`,btn_agents_connect_all:`Conectar todos los detectados`,btn_agent_connect:`Conectar`,agent_status_loading:`Detectando agentes instalados...`,agent_status_not_installed:`No instalado`,agent_status_installed:`Instalado`,agent_status_connected:`Conectado`,agent_connect_running:`Conectando...`,agent_connect_done:`{n} agente(s) conectado(s). Skill global de ZAM actualizado.`,agent_connect_none:`No se detectó ningún agente compatible. Instala primero Codex, VS Code o Copilot.`,agent_connect_error:`Error de conexión — consulta la consola para más detalles.`},fr:{ai_status_offline:`IA hors ligne`,ai_status_online:`IA locale en ligne`,ai_status_cloud_online:`IA cloud · {model}`,ai_status_cloud_offline:`IA cloud hors ligne · {model}`,ai_status_starting:`Vérification de l'IA...`,ai_status_model_missing:`IA : modèle introuvable`,study_question_original:`Original`,study_evaluation_model:`{model}`,nav_dashboard:`Tableau de bord`,nav_settings:`Paramètres`,dashboard_kicker:`Aujourd'hui dans ZAM`,dashboard_title:`Apprenez délibérément.`,dashboard_subtitle:`Révisez ce qui est dû, ouvrez votre carte des connaissances ou configurez l'IA locale et les espaces de travail dans les Paramètres.`,lbl_due_reviews:`Révisions dues`,lbl_caught_up:`Vous êtes à jour !`,dashboard_error:`Impossible de charger vos données`,lbl_domains:`Domaines actifs`,btn_start_session:`Démarrer la session d'apprentissage`,lbl_translating:`Traduction dynamique...`,placeholder_answer:`Saisissez ici votre réponse conceptuelle... (Ctrl+Entrée pour envoyer)`,placeholder_discussion:`Posez une question sur cette carte... (Entrée pour envoyer)`,btn_discussion_send:`Envoyer`,discussion_error:`Pas de réponse de l'IA. Veuillez réessayer.`,btn_reveal_answer:`Envoyer et révéler la réponse`,lbl_ai_evaluating:`Analyse de votre réponse et génération du retour...`,lbl_ai_working:`(Cela peut prendre un moment.)`,lbl_wait_warn:`⚠ L'évaluation prend plus de temps que prévu.`,btn_wait_keep:`Continuer à attendre`,btn_wait_skip:`Ignorer hors ligne`,lbl_question_wait_warn:`⚠ La génération de la question prend plus de temps que prévu.`,btn_question_use_saved:`Utiliser la question enregistrée`,lbl_ai_feedback_title:`Retour de ZAM`,lbl_reveal_title:`Réponse de référence`,lbl_rating_instruction:`Évaluez honnêtement votre rappel actif :`,lbl_rate_1:`À revoir`,lbl_rate_2:`Difficile`,lbl_rate_3:`Bien`,lbl_rate_4:`Facile`,btn_recall_reveal:`Révéler`,btn_recall_check:`Vérifier la réponse`,btn_recall_finish:`Terminer la session`,lbl_recall_focus:`Focus : {domain}`,lbl_recall_summary:`{done} sur {total} révisées`,lbl_recall_summary_title:`Résumé de la session`,lbl_recall_empty_title:`Rien à réviser`,btn_pause_session:`Mettre en pause et quitter`,lbl_generating_question:`Génération d'une question dynamique...`,token:`Token`,concept:`Concept`,context:`Contexte`,source:`Référence source`,bloom_level:`Niveau Bloom`,rating_again_shortcut:`(Raccourci : 1)`,rating_hard_shortcut:`(Raccourci : 2)`,rating_good_shortcut:`(Raccourci : 3)`,rating_easy_shortcut:`(Raccourci : 4)`,session_completed:`Session d'apprentissage terminée !`,session_completed_sub:`Bravo d'avoir terminé cette session ! Vos traces mémorielles ont été mises à jour.`,btn_back_to_dashboard:`Retour au tableau de bord`,btn_open_graph:`Carte des connaissances (3D)`,btn_open_settings:`Paramètres`,observer_title:`Observateur d'IU`,observer_idle:`Chargez les fenêtres et choisissez une fenêtre d'application à observer.`,observer_loading:`Chargement des fenêtres observables...`,observer_ready:`Sélectionnée : {title}`,observer_vision_checking:`Vérification des paramètres d'observation visuelle...`,observer_analyzing:`Capture d'un instantané et interrogation du modèle de vision...`,observer_done:`Observation enregistrée. Confiance du dernier rapport : {confidence}`,observer_canceled:`Observation annulée.`,observer_error:`Erreur de l'observateur : {message}`,observer_vision_disabled:`L'observation visuelle est désactivée. Activez-la avec : zam settings set llm.vision.enabled true`,observer_vision_offline:`Le point de terminaison de vision est hors ligne : {url}`,observer_vision_model_missing:`Le modèle de vision n'est pas disponible : {model}`,observer_privacy_paused:`Pause de confidentialité : cette fenêtre est bloquée par le filtre de confidentialité ({reason}).`,observer_privacy_option:`pause de confidentialité`,observer_refresh:`Charger les fenêtres`,observer_analyze:`Instantané et analyse`,observer_cancel:`Annuler`,observer_empty:`Aucune fenêtre observable trouvée.`,observer_select_initial:`Aucune fenêtre chargée pour l'instant`,observer_select_placeholder:`Sélectionnez une fenêtre`,observer_history_title:`Rapports d'observation`,observer_history_refresh:`Actualiser les rapports`,observer_history_empty:`Aucun rapport d'observation pour l'instant.`,observer_history_loaded:`{count} rapport(s) d'observation chargé(s).`,observer_loop_start:`Démarrer la boucle`,observer_loop_stop:`Arrêter la boucle`,observer_loop_idle:`Instantanés manuels uniquement.`,observer_loop_running:`Boucle de l'observateur en cours. Un instantané à la fois.`,observer_loop_waiting:`Boucle de l'observateur en cours. Prochain instantané dans {seconds} s.`,observer_loop_stopped:`Boucle de l'observateur arrêtée.`,observer_watch_start:`Démarrer la surveillance`,observer_watch_stop:`Arrêter la surveillance`,observer_watch_idle:`La surveillance continue est désactivée.`,observer_watch_starting:`Démarrage de la surveillance continue...`,observer_watch_running:`Surveillance de {title} — {count} événement(s).`,observer_watch_stopping:`Arrêt de la surveillance continue...`,observer_watch_stopped:`Surveillance continue arrêtée.`,observer_watch_error:`Erreur de surveillance : {message}`,graph_title:`Graphe de connaissances (3D)`,graph_hint:`Glissez pour pivoter • Cliquez sur les nœuds pour cibler • Défilez pour zoomer`,graph_focus:`Cible`,graph_prereqs:`Bases (prérequis)`,graph_dependents:`Compétences supérieures (dépendantes)`,graph_no_card:`pas encore de carte personnelle`,graph_refresh:`Actualiser`,graph_domain_token_list_title:`Tous les tokens de ce domaine`,setup_title:`Configuration et données`,settings_kicker:`Configuration locale`,settings_title:`Paramètres`,settings_subtitle:`Configurez cette machine sans imposer les mêmes choix à chaque espace de travail ou appareil.`,settings_back:`Retour au tableau de bord`,settings_system_title:`Système`,settings_ai_title:`Modèles d'IA`,settings_workspace_title:`Espaces de travail`,workspaces_help:`Enregistrez des répertoires de travail personnels, d'équipe, familiaux ou communautaires pour cette machine.`,settings_appearance_title:`Apparence`,settings_data_title:`Données`,settings_database:`Base de données`,settings_learning_profile:`Profil d’apprentissage`,database_checking:`Vérification…`,database_status_local:`SQLite local · connecté`,database_status_turso:`Turso · connecté`,database_status_error:`Connexion indisponible`,database_detail:`{location} · profil {profile} · {count} cartes`,database_no_profile:`Aucun profil actif`,database_profile_option:`{profile} — {count} cartes`,database_profile_switch_confirm:`Passer au profil d’apprentissage « {profile} » ?`,database_profile_switched:`Profil actif : {profile} ({count} cartes)`,database_refresh:`Actualiser l’état`,settings_theme:`Thème`,theme_light:`Clair`,theme_dark:`Sombre`,btn_open_data_folder:`Ouvrir le dossier de données`,btn_backup_db:`Sauvegarder la base de données`,setup_backing_up:`Sauvegarde de la base de données…`,setup_backed_up:`Sauvegardé dans {path}`,setup_remote_no_backup:`Votre base de données se synchronise avec le cloud ({target}) — aucune sauvegarde locale séparée n'est nécessaire.`,setup_backup_failed:`Échec de la sauvegarde : {message}`,setup_backup_failed_generic:`Échec de la sauvegarde.`,setup_open_folder_failed:`Impossible d'ouvrir le dossier de données : {message}`,lbl_workspace:`Espace de travail`,btn_choose_workspace:`+ Ajouter un espace de travail…`,btn_open_terminal:`Ouvrir le terminal`,terminal_opening:`Ouverture du terminal...`,terminal_opened:`Terminal ouvert dans {workspace}`,terminal_open_failed:`Impossible d'ouvrir le terminal : {message}`,workspace_active:`actif`,workspace_default_label:`Espace de travail par défaut`,workspace_empty:`Aucun espace de travail enregistré pour l'instant.`,workspace_kind:`Espace de travail {kind}`,workspace_kind_personal:`Espace de travail personnel`,workspace_kind_team:`Espace de travail d'équipe`,workspace_kind_family:`Espace de travail familial`,workspace_kind_community:`Espace de travail communautaire`,workspace_kind_organization:`Espace de travail d'organisation`,workspace_kind_custom:`Espace de travail personnalisé`,workspace_more:`{count} espace(s) de travail masqué(s). Utilisez la CLI pour la liste complète.`,workspace_use:`Utiliser`,workspace_open:`Terminal`,workspace_default_suffix:`(par défaut)`,workspace_set:`Espace de travail défini sur {path}`,workspace_added:`Espace de travail ajouté : {path}`,workspace_pick_failed:`Impossible de définir l'espace de travail : {message}`,workspace_remove:`Retirer`,workspace_remove_confirm:`Retirer « {label} » de ZAM ? Les fichiers et liens du dossier resteront inchangés.`,workspace_removed:`Espace de travail retiré : {label}`,workspace_remove_failed:`Impossible de retirer l'espace de travail : {message}`,workspace_link_ok:`Lien de skill OK`,workspace_link_broken:`Lien de skill rompu`,workspace_link_unmanaged:`Dossier de skill externe`,workspace_repair:`Réparer le lien de skill`,workspace_repair_confirm:`Le dossier de « {label} » contient un répertoire skills/zam que ZAM n'a pas créé. La réparation le supprime et le remplace par un lien. Continuer ?`,workspace_repairing:`Réparation du lien de skill…`,workspace_repaired:`Lien de skill réparé : {label}`,workspace_repair_failed:`Impossible de réparer le lien de skill : {message}`,lbl_app_version:`Version`,lbl_learning_model:`Modèle d'apprentissage`,lbl_observer_model:`Modèle de l'observateur`,provider_ready:`prêt`,provider_disabled:`désactivé`,provider_offline:`hors ligne`,provider_model_missing:`modèle manquant`,provider_unsupported:`fournisseur non pris en charge`,provider_local:`local`,provider_cloud:`cloud`,provider_unknown:`inconnu`,btn_ai_config_open:`Configurer`,btn_ai_config_close:`Fermer`,btn_add_ai_provider:`+ Ajouter un fournisseur`,ai_config_loading:`Chargement de la configuration du fournisseur...`,ai_config_failed:`Impossible de charger la configuration du fournisseur : {message}`,ai_provider_empty:`Aucun fournisseur configuré pour l'instant.`,ai_provider_section_local:`Local`,ai_provider_section_cloud:`Cloud`,ai_provider_kind:`Type de fournisseur`,ai_provider_kind_local:`Local`,ai_provider_kind_cloud:`Cloud`,ai_provider_local_badge:`local`,ai_provider_cloud_badge:`cloud`,ai_provider_key_set:`clé définie`,ai_provider_key_missing:`clé manquante`,ai_provider_key_none:`pas de clé`,ai_provider_edit:`Modifier`,ai_provider_remove:`Retirer`,ai_provider_remove_confirm:`Retirer le fournisseur « {name} » ?`,ai_provider_removed:`Fournisseur « {name} » retiré`,ai_provider_saved:`Fournisseur « {name} » enregistré`,ai_provider_save_failed:`Impossible d'enregistrer le fournisseur : {message}`,ai_provider_form_add_title:`Ajouter un fournisseur`,ai_provider_form_edit_title:`Modifier le fournisseur`,ai_provider_display_name:`Nom`,ai_provider_url:`URL`,ai_provider_model:`Modèle`,ai_provider_model_local_hint:`Saisissez le nom du modèle. Si le point de terminaison liste des modèles, vous pouvez en choisir un ci-dessous.`,ai_provider_models_pick:`Choisir depuis le point de terminaison`,ai_provider_flavor:`Variante d'API`,ai_provider_local:`S'exécute sur cet ordinateur`,ai_provider_local_hint:`Les serveurs de modèles locaux (FastFlowLM, Ollama, …) n'ont généralement pas besoin de clé d'API. ZAM peut tenter de démarrer le serveur automatiquement.`,ai_provider_cloud_hint_key:`Les API cloud nécessitent une clé d'API. Les fournisseurs locaux n'utilisent pas le champ de clé.`,ai_provider_runner:`Serveur de modèle local`,ai_provider_runner_hint:`Le programme qui sert le modèle sur ce PC — pas votre agent de codage.`,ai_provider_runner_auto:`Détection automatique`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`non détecté`,ai_provider_api_key:`Clé d'API`,ai_provider_api_key_hint:`En écriture seule — stockée localement, jamais synchronisée`,ai_provider_cloud_hint:`Modèle suggéré : {model}`,ai_provider_models_loading:`Chargement des modèles...`,ai_provider_models_empty:`Aucun modèle listé par le point de terminaison`,btn_ai_provider_save:`Enregistrer`,btn_ai_provider_cancel:`Annuler`,ai_role_bindings_title:`Affectation des rôles`,ai_role_recall:`Apprentissage (rappel)`,ai_role_vision:`Observateur (vision)`,ai_role_primary:`Principal`,ai_role_fallback:`Secours`,ai_role_none:`(aucun)`,btn_ai_role_apply:`Appliquer`,ai_role_bound:`Rôle {role} mis à jour`,ai_role_bind_failed:`Impossible d'affecter le rôle : {message}`,ai_recall_anthropic_warn:`Les fournisseurs Anthropic Messages ne sont pas encore pris en charge pour les sessions d'apprentissage. Affecter quand même ?`,ai_vision_cloud_confirm:`Des captures d'écran seront envoyées à {endpoint}. Activer l'observation visuelle et affecter ce fournisseur cloud ?`,ai_provider_referenced:`Encore utilisé par : {roles}`,btn_check_updates:`Rechercher des mises à jour`,btn_open_releases:`Versions`,version_unknown:`inconnue`,update_checking:`Recherche de mises à jour...`,update_available:`Mise à jour disponible : {version}`,update_none:`Vous utilisez la version la plus récente.`,update_failed:`Échec de la recherche de mises à jour : {message}`,release_link_failed:`Impossible d'ouvrir les versions : {message}`,nav_content:`Contenu`,content_title:`Studio de Contenu`,content_subtitle:`Gérez vos cartes personnelles, recherchez des tokens et affinez les questions de rappel actif.`,btn_new_card:`Nouvelle carte`,lbl_search_placeholder:`Rechercher des questions, réponses, catégories...`,lbl_category_filter:`Catégorie`,lbl_all_categories:`Toutes les catégories`,lbl_all_contexts:`Tous les contextes`,lbl_no_context_default:`Aucun contexte par défaut`,lbl_no_context_assignment:`Aucune affectation de contexte`,lbl_empty_content:`Aucune carte trouvée. Créez votre première carte !`,lbl_empty_content_btn:`Créer la première carte`,lbl_question:`Question`,lbl_answer:`Réponse / Concept`,lbl_category:`Catégorie`,lbl_source_link:`Lien source`,lbl_more_settings:`Plus de paramètres`,lbl_context:`Contexte`,lbl_bloom_level:`Niveau Bloom`,lbl_symbiosis_mode:`Mode de symbiose`,lbl_slug:`Clé technique (Slug)`,lbl_slug_hint:`Générée automatiquement après création`,btn_save:`Enregistrer la carte`,btn_remove:`Supprimer la carte`,btn_delete:`Supprimer le token global`,lbl_confirm_remove_title:`Confirmer la suppression`,lbl_confirm_remove_desc:`Cela effacera votre état FSRS personnel. Le token global ne sera pas affecté.`,lbl_confirm_delete_title:`Confirmer la suppression globale`,lbl_confirm_delete_desc:`Cela supprimera définitivement le concept et toutes les cartes de tous les utilisateurs.`,lbl_delete_impact:`Cette action affecte :`,lbl_impact_cards:`{count} carte(s)`,lbl_impact_reviews:`{count} journal(journaux) de révision`,lbl_impact_steps:`{count} étape(s) de session`,lbl_impact_skills:`{count} compétences d'agent mises à jour`,lbl_confirm_action:`Confirmer`,lbl_cancel_action:`Annuler`,lbl_card_saved_toast:`Carte enregistrée !`,lbl_card_removed_toast:`Carte supprimée !`,lbl_card_deleted_toast:`Token supprimé !`,lbl_error_saving:`Échec de l'enregistrement`,lbl_error_loading:`Échec du chargement du contenu`,lbl_card_status_new:`Nouveau`,lbl_card_status_learning:`Apprentissage`,lbl_card_status_review:`Révision`,lbl_card_status_relearning:`Réapprentissage`,lbl_card_status_not_started:`Non démarré`,lbl_card_due:`Dû`,lbl_card_not_due:`Non dû`,btn_import_curriculum:`Importer le programme`,lbl_import_modal_title:`Importer la norme de programme`,lbl_import_text:`Texte du programme`,placeholder_import_text:`Collez le texte du programme ou les puces du syllabus ici...`,lbl_import_source:`URL source / Référence`,lbl_import_category:`Catégorie cible`,lbl_import_progress_status:`Génération de cartes...`,lbl_import_progress_detail:`Cela peut prendre jusqu'à une minute selon la vitesse de votre IA locale.`,btn_import_submit:`Importer`,toast_import_success:`Importation réussie de {createdCount} nouveaux jetons et assurance de {ensuredCount} cartes !`,lbl_error_importing:`Échec de l'importation du programme`,btn_curriculum_wizard:`Assistant de programme`,lbl_curriculum_wizard_title:`Assistant de programme`,wizard_step_country:`Pays`,wizard_step_region:`Région`,wizard_step_schoolType:`Type d'établissement`,wizard_step_grade:`Niveau`,wizard_step_subject:`Matière`,wizard_step_track:`Filière`,wizard_step_topic:`Sujets`,wizard_btn_back:`Retour`,wizard_btn_next:`Suivant`,wizard_no_options:`Aucune option disponible pour le moment pour cette sélection.`,wizard_err_select_option:`Veuillez sélectionner une option pour continuer.`,wizard_err_no_topics:`Veuillez sélectionner au moins un sujet.`,wizard_topic_scope_note:`Les cartes sont générées à partir de la page complète du programme de cette matière (tous ses sujets). L'importation précise par sujet arrivera dans une prochaine mise à jour — pour l'instant, la sélection des sujets vous aide à suivre ce qu'il reste à couvrir.`,wizard_resume_prompt:`Continuer là où vous vous étiez arrêté :`,wizard_btn_resume:`Continuer`,wizard_btn_restart:`Recommencer`,lbl_curriculum_wizard_loading:`Chargement…`,wizard_hours:`{hours} h`,btn_split:`Diviser`,lbl_split_modal_title:`Diviser la carte`,lbl_original_card_title:`Carte originale (Question d'application résumée)`,lbl_split_original_question:`Question`,lbl_split_original_concept:`Réponse / Concept`,lbl_split_action_title:`Après la division terminée :`,lbl_action_block:`Conserver la carte originale et la bloquer (requiert d'abord les nouvelles cartes)`,lbl_action_remove:`Supprimer la carte originale`,lbl_split_progress_status:`Génération de propositions atomiques...`,lbl_split_progress_detail:`Cela peut prendre jusqu'à une minute selon la vitesse de votre IA locale.`,lbl_atomic_proposals_title:`Propositions de cartes atomiques (Minimum 2)`,btn_split_modal_submit:`Confirmer la division`,btn_content_foundations_card:`Fondations`,lbl_foundations_modal_title:`Importer des fondations`,lbl_foundations_progress_status:`Génération de propositions fondamentales...`,lbl_foundations_progress_detail:`Cela peut prendre jusqu'à une minute selon la vitesse de votre IA locale.`,lbl_foundations_atomic_title:`Propositions de cartes fondamentales`,btn_foundations_modal_submit:`Confirmer l'importation`,lbl_import_source_type:`Type de source`,lbl_import_source_uri:`Chemin du fichier ou URL`,btn_import_source_analyze:`Analyser`,lbl_source_extracted_preview:`Aperçu du texte extrait`,lbl_delete:`Supprimer`,lbl_proposal_number:`Proposition n° {n}`,lbl_foundational_proposal_number:`Proposition fondamentale n° {n}`,lbl_foundation_existing_badge:`La carte existante sera liée`,lbl_foundation_new_badge:`Suggestion de nouvelle carte`,lbl_include:`Inclure`,lbl_err_analyze_source_first:`Veuillez d'abord analyser un fichier source, un lien web ou une numérisation OCR.`,lbl_err_min_split_proposals:`Au moins 2 propositions de carte complètes sont nécessaires pour diviser une carte.`,lbl_err_select_foundation:`Veuillez sélectionner au moins une carte de proposition de prérequis à importer.`,lbl_err_enter_path_or_url:`Veuillez saisir un chemin de fichier ou une URL à analyser.`,lbl_analyzing_source:`Analyse du contenu source en cours, veuillez patienter…`,lbl_err_analysis_failed:`Échec de l'analyse`,lbl_err_analysis_prefix:`Erreur d'analyse`,lbl_err_concept_required:`La réponse ou le concept est obligatoire.`,lbl_err_category_required:`La catégorie est obligatoire.`,lbl_err_import_context_required:`Le texte du programme est obligatoire.`,lbl_err_original_context_required:`La question et la réponse sont obligatoires pour la carte originale.`,settings_context_title:`Contexte de connaissances`,settings_context_help:`Sélectionnez le contexte de connaissances par défaut pour cet appareil.`,settings_context_label:`Contexte par défaut`,wizard_context_label:`Assigner les cartes importées au contexte :`,settings_agents_title:`Agents IA`,settings_agents_help:`Connectez les agents installés à ZAM via MCP. Répétable sans risque.`,btn_agents_connect_all:`Connecter tous les agents détectés`,btn_agent_connect:`Connecter`,agent_status_loading:`Détection des agents installés...`,agent_status_not_installed:`Non installé`,agent_status_installed:`Installé`,agent_status_connected:`Connecté`,agent_connect_running:`Connexion...`,agent_connect_done:`{n} agent(s) connecté(s). Skill ZAM global actualisé.`,agent_connect_none:`Aucun agent compatible détecté. Installez d'abord Codex, VS Code ou Copilot.`,agent_connect_error:`Échec de la connexion — voir la console pour les détails.`},pt:{ai_status_offline:`IA offline`,ai_status_online:`IA local online`,ai_status_cloud_online:`IA na nuvem · {model}`,ai_status_cloud_offline:`IA na nuvem offline · {model}`,ai_status_starting:`Verificando IA...`,ai_status_model_missing:`IA: modelo não encontrado`,study_question_original:`Original`,study_evaluation_model:`{model}`,nav_dashboard:`Painel`,nav_settings:`Configurações`,dashboard_kicker:`Hoje no ZAM`,dashboard_title:`Aprenda com intenção.`,dashboard_subtitle:`Revise o que está pendente, abra seu mapa de conhecimento ou configure a IA local e os espaços de trabalho nas Configurações.`,lbl_due_reviews:`Revisões pendentes`,lbl_caught_up:`Você está em dia!`,dashboard_error:`Não foi possível carregar seus dados`,lbl_domains:`Domínios ativos`,btn_start_session:`Iniciar sessão de aprendizado`,lbl_translating:`Traduzindo dinamicamente...`,placeholder_answer:`Digite aqui sua resposta conceitual... (Ctrl+Enter para enviar)`,placeholder_discussion:`Faça uma pergunta sobre este cartão... (Enter para enviar)`,btn_discussion_send:`Enviar`,discussion_error:`Sem resposta da IA. Tente novamente.`,btn_reveal_answer:`Enviar e revelar resposta`,lbl_ai_evaluating:`Revisando sua resposta e gerando feedback...`,lbl_ai_working:`(Isso pode levar um momento.)`,lbl_wait_warn:`⚠ A avaliação está demorando mais que o esperado.`,btn_wait_keep:`Continuar esperando`,btn_wait_skip:`Pular offline`,lbl_question_wait_warn:`⚠ A geração da pergunta está demorando mais que o esperado.`,btn_question_use_saved:`Usar pergunta salva`,lbl_ai_feedback_title:`Feedback do ZAM`,lbl_reveal_title:`Resposta de referência`,lbl_rating_instruction:`Avalie sua recordação ativa com honestidade:`,lbl_rate_1:`De novo`,lbl_rate_2:`Difícil`,lbl_rate_3:`Bom`,lbl_rate_4:`Fácil`,btn_recall_reveal:`Revelar`,btn_recall_check:`Verificar resposta`,btn_recall_finish:`Encerrar sessão`,lbl_recall_focus:`Foco: {domain}`,lbl_recall_summary:`{done} de {total} revisadas`,lbl_recall_summary_title:`Resumo da sessão`,lbl_recall_empty_title:`Nada pendente`,btn_pause_session:`Pausar e sair da sessão`,lbl_generating_question:`Gerando pergunta dinâmica...`,token:`Token`,concept:`Conceito`,context:`Contexto`,source:`Referência de origem`,bloom_level:`Nível Bloom`,rating_again_shortcut:`(Atalho: 1)`,rating_hard_shortcut:`(Atalho: 2)`,rating_good_shortcut:`(Atalho: 3)`,rating_easy_shortcut:`(Atalho: 4)`,session_completed:`Sessão de aprendizado concluída!`,session_completed_sub:`Ótimo trabalho ao concluir esta sessão! Seus traços de memória foram atualizados.`,btn_back_to_dashboard:`Voltar ao painel`,btn_open_graph:`Mapa de conhecimento (3D)`,btn_open_settings:`Configurações`,observer_title:`Observador de IU`,observer_idle:`Carregue as janelas e escolha uma janela de aplicativo para observar.`,observer_loading:`Carregando janelas observáveis...`,observer_ready:`Selecionada: {title}`,observer_vision_checking:`Verificando as configurações de observação por visão...`,observer_analyzing:`Capturando um instantâneo e consultando o modelo de visão...`,observer_done:`Observação salva. Confiança do último relatório: {confidence}`,observer_canceled:`Observação cancelada.`,observer_error:`Erro do observador: {message}`,observer_vision_disabled:`A observação por visão está desativada. Ative-a com: zam settings set llm.vision.enabled true`,observer_vision_offline:`O endpoint de visão está offline: {url}`,observer_vision_model_missing:`O modelo de visão não está disponível: {model}`,observer_privacy_paused:`Pausa de privacidade: esta janela está bloqueada pelo filtro de privacidade ({reason}).`,observer_privacy_option:`pausa de privacidade`,observer_refresh:`Carregar janelas`,observer_analyze:`Instantâneo e análise`,observer_cancel:`Cancelar`,observer_empty:`Nenhuma janela observável encontrada.`,observer_select_initial:`Nenhuma janela carregada ainda`,observer_select_placeholder:`Selecione uma janela`,observer_history_title:`Relatórios de observação`,observer_history_refresh:`Atualizar relatórios`,observer_history_empty:`Ainda não há relatórios de observação.`,observer_history_loaded:`{count} relatório(s) de observação carregado(s).`,observer_loop_start:`Iniciar laço`,observer_loop_stop:`Parar laço`,observer_loop_idle:`Apenas instantâneos manuais.`,observer_loop_running:`Laço do observador em execução. Um instantâneo por vez.`,observer_loop_waiting:`Laço do observador em execução. Próximo instantâneo em {seconds}s.`,observer_loop_stopped:`Laço do observador parado.`,observer_watch_start:`Iniciar monitoramento`,observer_watch_stop:`Parar monitoramento`,observer_watch_idle:`O monitoramento contínuo está desligado.`,observer_watch_starting:`Iniciando monitoramento contínuo...`,observer_watch_running:`Monitorando {title} — {count} evento(s).`,observer_watch_stopping:`Parando monitoramento contínuo...`,observer_watch_stopped:`Monitoramento contínuo parado.`,observer_watch_error:`Erro de monitoramento: {message}`,graph_title:`Grafo de conhecimento (3D)`,graph_hint:`Arraste para girar • Clique nos nós para focar • Role para aplicar zoom`,graph_focus:`Foco`,graph_prereqs:`Bases (pré-requisitos)`,graph_dependents:`Habilidades superiores (dependentes)`,graph_no_card:`ainda sem cartão pessoal`,graph_refresh:`Atualizar`,graph_domain_token_list_title:`Todos os tokens deste domínio`,setup_title:`Configuração e dados`,settings_kicker:`Configuração local`,settings_title:`Configurações`,settings_subtitle:`Configure esta máquina sem impor as mesmas escolhas a cada espaço de trabalho ou dispositivo.`,settings_back:`Voltar ao painel`,settings_system_title:`Sistema`,settings_ai_title:`Modelos de IA`,settings_workspace_title:`Espaços de trabalho`,workspaces_help:`Registre diretórios de trabalho pessoais, de equipe, familiares ou de comunidade para esta máquina.`,settings_appearance_title:`Aparência`,settings_data_title:`Dados`,settings_database:`Banco de dados`,settings_learning_profile:`Perfil de aprendizagem`,database_checking:`Verificando…`,database_status_local:`SQLite local · conectado`,database_status_turso:`Turso · conectado`,database_status_error:`Conexão indisponível`,database_detail:`{location} · perfil {profile} · {count} cartões`,database_no_profile:`Nenhum perfil ativo`,database_profile_option:`{profile} — {count} cartões`,database_profile_switch_confirm:`Mudar o perfil de aprendizagem ativo para “{profile}”?`,database_profile_switched:`Perfil ativo: {profile} ({count} cartões)`,database_refresh:`Atualizar status`,settings_theme:`Tema`,theme_light:`Claro`,theme_dark:`Escuro`,btn_open_data_folder:`Abrir pasta de dados`,btn_backup_db:`Fazer backup do banco de dados`,setup_backing_up:`Fazendo backup do banco de dados…`,setup_backed_up:`Backup salvo em {path}`,setup_remote_no_backup:`Seu banco de dados sincroniza com a nuvem ({target}) — nenhum backup local separado é necessário.`,setup_backup_failed:`Falha no backup: {message}`,setup_backup_failed_generic:`Falha no backup.`,setup_open_folder_failed:`Não foi possível abrir a pasta de dados: {message}`,lbl_workspace:`Espaço de trabalho`,btn_choose_workspace:`+ Adicionar espaço de trabalho…`,btn_open_terminal:`Abrir terminal`,terminal_opening:`Abrindo terminal...`,terminal_opened:`Terminal aberto em {workspace}`,terminal_open_failed:`Não foi possível abrir o terminal: {message}`,workspace_active:`ativo`,workspace_default_label:`Espaço de trabalho padrão`,workspace_empty:`Nenhum espaço de trabalho registrado ainda.`,workspace_kind:`Espaço de trabalho {kind}`,workspace_kind_personal:`Espaço de trabalho pessoal`,workspace_kind_team:`Espaço de trabalho de equipe`,workspace_kind_family:`Espaço de trabalho familiar`,workspace_kind_community:`Espaço de trabalho de comunidade`,workspace_kind_organization:`Espaço de trabalho de organização`,workspace_kind_custom:`Espaço de trabalho personalizado`,workspace_more:`{count} espaço(s) de trabalho oculto(s). Use a CLI para a lista completa.`,workspace_use:`Usar`,workspace_open:`Terminal`,workspace_default_suffix:`(padrão)`,workspace_set:`Espaço de trabalho definido para {path}`,workspace_added:`Espaço de trabalho adicionado: {path}`,workspace_pick_failed:`Não foi possível definir o espaço de trabalho: {message}`,workspace_remove:`Remover`,workspace_remove_confirm:`Remover "{label}" do ZAM? Os arquivos e links na pasta permanecerão inalterados.`,workspace_removed:`Espaço de trabalho removido: {label}`,workspace_remove_failed:`Não foi possível remover o espaço de trabalho: {message}`,workspace_link_ok:`Link de skill OK`,workspace_link_broken:`Link de skill quebrado`,workspace_link_unmanaged:`Pasta de skill externa`,workspace_repair:`Reparar link de skill`,workspace_repair_confirm:`A pasta de "{label}" contém um diretório skills/zam que o ZAM não criou. Reparar o exclui e o substitui por um link. Continuar?`,workspace_repairing:`Reparando link de skill…`,workspace_repaired:`Link de skill reparado: {label}`,workspace_repair_failed:`Não foi possível reparar o link de skill: {message}`,lbl_app_version:`Versão`,lbl_learning_model:`Modelo de aprendizado`,lbl_observer_model:`Modelo do observador`,provider_ready:`pronto`,provider_disabled:`desativado`,provider_offline:`offline`,provider_model_missing:`modelo ausente`,provider_unsupported:`provedor não compatível`,provider_local:`local`,provider_cloud:`nuvem`,provider_unknown:`desconhecido`,btn_ai_config_open:`Configurar`,btn_ai_config_close:`Fechar`,btn_add_ai_provider:`+ Adicionar provedor`,ai_config_loading:`Carregando configuração do provedor...`,ai_config_failed:`Não foi possível carregar a configuração do provedor: {message}`,ai_provider_empty:`Nenhum provedor configurado ainda.`,ai_provider_section_local:`Local`,ai_provider_section_cloud:`Nuvem`,ai_provider_kind:`Tipo de provedor`,ai_provider_kind_local:`Local`,ai_provider_kind_cloud:`Nuvem`,ai_provider_local_badge:`local`,ai_provider_cloud_badge:`nuvem`,ai_provider_key_set:`chave definida`,ai_provider_key_missing:`chave ausente`,ai_provider_key_none:`sem chave`,ai_provider_edit:`Editar`,ai_provider_remove:`Remover`,ai_provider_remove_confirm:`Remover o provedor "{name}"?`,ai_provider_removed:`Provedor "{name}" removido`,ai_provider_saved:`Provedor "{name}" salvo`,ai_provider_save_failed:`Não foi possível salvar o provedor: {message}`,ai_provider_form_add_title:`Adicionar provedor`,ai_provider_form_edit_title:`Editar provedor`,ai_provider_display_name:`Nome`,ai_provider_url:`URL`,ai_provider_model:`Modelo`,ai_provider_model_local_hint:`Digite o nome do modelo. Se o endpoint listar modelos, você pode escolher um abaixo.`,ai_provider_models_pick:`Escolher do endpoint`,ai_provider_flavor:`Variante de API`,ai_provider_local:`Executa neste computador`,ai_provider_local_hint:`Servidores de modelo locais (FastFlowLM, Ollama, …) geralmente não precisam de chave de API. O ZAM pode tentar iniciar o servidor automaticamente.`,ai_provider_cloud_hint_key:`As APIs na nuvem precisam de uma chave de API. Provedores locais não usam o campo de chave.`,ai_provider_runner:`Servidor de modelo local`,ai_provider_runner_hint:`O programa que serve o modelo neste PC — não o seu agente de codificação.`,ai_provider_runner_auto:`Detecção automática`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`não detectado`,ai_provider_api_key:`Chave de API`,ai_provider_api_key_hint:`Somente gravação — armazenada localmente, nunca sincronizada`,ai_provider_cloud_hint:`Modelo sugerido: {model}`,ai_provider_models_loading:`Carregando modelos...`,ai_provider_models_empty:`O endpoint não lista modelos`,btn_ai_provider_save:`Salvar`,btn_ai_provider_cancel:`Cancelar`,ai_role_bindings_title:`Atribuição de papéis`,ai_role_recall:`Aprendizado (recordação)`,ai_role_vision:`Observador (visão)`,ai_role_primary:`Principal`,ai_role_fallback:`Reserva`,ai_role_none:`(nenhum)`,btn_ai_role_apply:`Aplicar`,ai_role_bound:`Papel {role} atualizado`,ai_role_bind_failed:`Não foi possível atribuir o papel: {message}`,ai_recall_anthropic_warn:`Provedores Anthropic Messages ainda não são compatíveis com sessões de aprendizado. Atribuir mesmo assim?`,ai_vision_cloud_confirm:`Capturas de tela serão enviadas para {endpoint}. Ativar a observação por visão e atribuir este provedor de nuvem?`,ai_provider_referenced:`Ainda usado por: {roles}`,btn_check_updates:`Verificar atualizações`,btn_open_releases:`Versões`,version_unknown:`desconhecida`,update_checking:`Verificando atualizações...`,update_available:`Atualização disponível: {version}`,update_none:`Você está na versão mais recente.`,update_failed:`Falha na verificação de atualizações: {message}`,release_link_failed:`Não foi possível abrir as versões: {message}`,nav_content:`Conteúdo`,content_title:`Estúdio de Conteúdo`,content_subtitle:`Gerencie seus cartões pessoais, pesquise tokens e refine perguntas de recordação ativa.`,btn_new_card:`Nova carta`,lbl_search_placeholder:`Buscar perguntas, respostas, categorias...`,lbl_category_filter:`Categoria`,lbl_all_categories:`Todas as categorias`,lbl_all_contexts:`Todos os contextos`,lbl_no_context_default:`Sem contexto padrão`,lbl_no_context_assignment:`Sem atribuição de contexto`,lbl_empty_content:`Nenhuma carta encontrada. Crie sua primeira carta !`,lbl_empty_content_btn:`Crie a primeira carta`,lbl_question:`Pergunta`,lbl_answer:`Resposta / Concepto`,lbl_category:`Categoria`,lbl_source_link:`Link de origem`,lbl_more_settings:`Mais configurações`,lbl_context:`Contexto`,lbl_bloom_level:`Nível Bloom`,lbl_symbiosis_mode:`Modo de simbiose`,lbl_slug:`Chave técnica (Slug)`,lbl_slug_hint:`Gerada automaticamente após a criação`,btn_save:`Salvar carta`,btn_remove:`Remover carta`,btn_delete:`Excluir token global`,lbl_confirm_remove_title:`Confirmar remoção`,lbl_confirm_remove_desc:`Isso limpará seu estado FSRS pessoal. O token global não será afetado.`,lbl_confirm_delete_title:`Confirmar exclusão global`,lbl_confirm_delete_desc:`Isso excluirá permanentemente o conceito e todas as cartas de todos os usuários.`,lbl_delete_impact:`Esta ação afeta:`,lbl_impact_cards:`{count} carta(s)`,lbl_impact_reviews:`{count} registro(s) de revisão`,lbl_impact_steps:`{count} etapa(s) de sessão`,lbl_impact_skills:`{count} habilidades de agente atualizadas`,lbl_confirm_action:`Confirmar`,lbl_cancel_action:`Cancelar`,lbl_card_saved_toast:`Carta salva!`,lbl_card_removed_toast:`Carta removida!`,lbl_card_deleted_toast:`Token excluído!`,lbl_error_saving:`Erro ao salvar`,lbl_error_loading:`Erro ao carregar conteúdo`,lbl_card_status_new:`Nova`,lbl_card_status_learning:`Aprendizado`,lbl_card_status_review:`Revisão`,lbl_card_status_relearning:`Reaprendizado`,lbl_card_status_not_started:`Não iniciado`,lbl_card_due:`Vence`,lbl_card_not_due:`Não vence`,btn_import_curriculum:`Importar currículo`,lbl_import_modal_title:`Importar padrão de currículo`,lbl_import_text:`Texto do currículo`,placeholder_import_text:`Cole o texto do currículo ou tópicos do programa aqui...`,lbl_import_source:`URL de origem / Referência`,lbl_import_category:`Categoria de destino`,lbl_import_progress_status:`Gerando cartas...`,lbl_import_progress_detail:`Isso pode levar até um minuto, dependendo da velocidade do seu IA local.`,btn_import_submit:`Importar`,toast_import_success:`{createdCount} novos tokens importados com sucesso e {ensuredCount} cartas garantidas!`,lbl_error_importing:`Falha ao importar o currículo`,btn_curriculum_wizard:`Assistente de currículo`,lbl_curriculum_wizard_title:`Assistente de currículo`,wizard_step_country:`País`,wizard_step_region:`Região`,wizard_step_schoolType:`Tipo de escola`,wizard_step_grade:`Ano escolar`,wizard_step_subject:`Disciplina`,wizard_step_track:`Modalidade`,wizard_step_topic:`Tópicos`,wizard_btn_back:`Voltar`,wizard_btn_next:`Avançar`,wizard_no_options:`Ainda não há opções disponíveis para esta seleção.`,wizard_err_select_option:`Selecione uma opção para continuar.`,wizard_err_no_topics:`Selecione pelo menos um tópico.`,wizard_topic_scope_note:`Os cartões são gerados a partir da página completa do currículo desta disciplina (todos os seus tópicos). A importação precisa por tópico chegará em uma atualização futura — por enquanto, a seleção de tópicos ajuda você a acompanhar o que cobrir a seguir.`,wizard_resume_prompt:`Continuar de onde você parou:`,wizard_btn_resume:`Continuar`,wizard_btn_restart:`Começar de novo`,lbl_curriculum_wizard_loading:`Carregando…`,wizard_hours:`{hours} h`,btn_split:`Dividir`,lbl_split_modal_title:`Dividir carta`,lbl_original_card_title:`Carta original (Pergunta de aplicação resumida)`,lbl_split_original_question:`Pergunta`,lbl_split_original_concept:`Resposta / Conceito`,lbl_split_action_title:`Após a divisão concluída:`,lbl_action_block:`Manter a carta original e bloqueá-la (requer novas cartas primeiro)`,lbl_action_remove:`Remover a carta original`,lbl_split_progress_status:`Gerando propostas atômicas...`,lbl_split_progress_detail:`Isso pode levar até um minuto, dependendo da velocidade do seu IA local.`,lbl_atomic_proposals_title:`Propostas de cartas atômicas (Mínimo 2)`,btn_split_modal_submit:`Confirmar divisão`,btn_content_foundations_card:`Fundamentos`,lbl_foundations_modal_title:`Importar fundamentos`,lbl_foundations_progress_status:`Gerando propostas fundamentais...`,lbl_foundations_progress_detail:`Isso pode levar até um minuto, dependendo da velocidade do seu IA local.`,lbl_foundations_atomic_title:`Propostas de cartas fundamentais`,btn_foundations_modal_submit:`Confirmar importação`,lbl_import_source_type:`Tipo de fonte`,lbl_import_source_uri:`Caminho do arquivo ou URL`,btn_import_source_analyze:`Analisar`,lbl_source_extracted_preview:`Visualização do texto extraído`,lbl_delete:`Excluir`,lbl_proposal_number:`Proposta n.º {n}`,lbl_foundational_proposal_number:`Proposta fundamental n.º {n}`,lbl_foundation_existing_badge:`O cartão existente será vinculado`,lbl_foundation_new_badge:`Sugestão de novo cartão`,lbl_include:`Incluir`,lbl_err_analyze_source_first:`Primeiro analise um arquivo de origem, um link da web ou uma digitalização OCR.`,lbl_err_min_split_proposals:`São necessárias pelo menos 2 propostas de cartão completas para dividir um cartão.`,lbl_err_select_foundation:`Selecione pelo menos um cartão de proposta de pré-requisito para importar.`,lbl_err_enter_path_or_url:`Insira um caminho de arquivo ou URL para analisar.`,lbl_analyzing_source:`Analisando o conteúdo de origem, aguarde…`,lbl_err_analysis_failed:`Falha na análise`,lbl_err_analysis_prefix:`Erro de análise`,lbl_err_concept_required:`A resposta ou o conceito é obrigatório.`,lbl_err_category_required:`A categoria é obrigatória.`,lbl_err_import_context_required:`O texto do currículo é obrigatório.`,lbl_err_original_context_required:`A pergunta e a resposta são obrigatórias para o cartão original.`,settings_context_title:`Contexto de conhecimento`,settings_context_help:`Selecione o contexto de conhecimento padrão para este dispositivo.`,settings_context_label:`Contexto padrão`,wizard_context_label:`Atribuir cartões importados ao contexto:`,settings_agents_title:`Agentes de IA`,settings_agents_help:`Conecte os agentes instalados ao ZAM via MCP. Pode ser repetido com segurança.`,btn_agents_connect_all:`Conectar todos os detectados`,btn_agent_connect:`Conectar`,agent_status_loading:`Detectando agentes instalados...`,agent_status_not_installed:`Não instalado`,agent_status_installed:`Instalado`,agent_status_connected:`Conectado`,agent_connect_running:`Conectando...`,agent_connect_done:`{n} agente(s) conectado(s). Skill global do ZAM atualizado.`,agent_connect_none:`Nenhum agente compatível detectado. Instale primeiro Codex, VS Code ou Copilot.`,agent_connect_error:`Falha na conexão — veja o console para detalhes.`},zh:{ai_status_offline:`AI 已离线`,ai_status_online:`本地 AI 在线`,ai_status_cloud_online:`云端 AI · {model}`,ai_status_cloud_offline:`云端 AI 离线 · {model}`,ai_status_starting:`正在检查 AI...`,ai_status_model_missing:`AI:未找到模型`,study_question_original:`原文`,study_evaluation_model:`{model}`,nav_dashboard:`仪表板`,nav_settings:`设置`,dashboard_kicker:`今日 ZAM`,dashboard_title:`有意识地学习。`,dashboard_subtitle:`复习到期内容、打开知识图谱,或在设置中配置本地 AI 与工作区。`,lbl_due_reviews:`待复习`,lbl_caught_up:`你已全部复习完毕!`,dashboard_error:`无法加载你的数据`,lbl_domains:`活跃领域`,btn_start_session:`开始学习课`,lbl_translating:`正在动态翻译...`,placeholder_answer:`在此输入你的概念性回答...(Ctrl+Enter 提交)`,placeholder_discussion:`就这张卡片继续提问...(Enter 发送)`,btn_discussion_send:`发送`,discussion_error:`AI 未返回回复,请重试。`,btn_reveal_answer:`提交并揭晓答案`,lbl_ai_evaluating:`正在审阅你的回答并生成反馈...`,lbl_ai_working:`(这可能需要一点时间。)`,lbl_wait_warn:`⚠ 评估耗时比预期更长。`,btn_wait_keep:`继续等待`,btn_wait_skip:`离线跳过`,lbl_question_wait_warn:`⚠ 问题生成耗时比预期更长。`,btn_question_use_saved:`使用已保存的问题`,lbl_ai_feedback_title:`ZAM 反馈`,lbl_reveal_title:`参考答案`,lbl_rating_instruction:`请如实评估你的主动回忆:`,lbl_rate_1:`重来`,lbl_rate_2:`困难`,lbl_rate_3:`良好`,lbl_rate_4:`容易`,btn_recall_reveal:`揭晓`,btn_recall_check:`检查答案`,btn_recall_finish:`结束会话`,lbl_recall_focus:`聚焦:{domain}`,lbl_recall_summary:`已复习 {done}/{total}`,lbl_recall_summary_title:`会话小结`,lbl_recall_empty_title:`暂无到期`,btn_pause_session:`暂停并退出学习课`,lbl_generating_question:`正在生成动态问题...`,token:`Token`,concept:`概念`,context:`上下文`,source:`来源引用`,bloom_level:`Bloom 层级`,rating_again_shortcut:`(快捷键:1)`,rating_hard_shortcut:`(快捷键:2)`,rating_good_shortcut:`(快捷键:3)`,rating_easy_shortcut:`(快捷键:4)`,session_completed:`学习课已完成!`,session_completed_sub:`出色地完成了这节学习课!你的记忆痕迹已更新。`,btn_back_to_dashboard:`返回仪表板`,btn_open_graph:`知识图谱(3D)`,btn_open_settings:`设置`,observer_title:`界面观察器`,observer_idle:`加载窗口并选择一个应用窗口进行观察。`,observer_loading:`正在加载可观察的窗口...`,observer_ready:`已选择:{title}`,observer_vision_checking:`正在检查视觉观察设置...`,observer_analyzing:`正在捕获快照并询问视觉模型...`,observer_done:`观察已保存。最新报告置信度:{confidence}`,observer_canceled:`观察已取消。`,observer_error:`观察器错误:{message}`,observer_vision_disabled:`视觉观察已禁用。使用以下命令启用:zam settings set llm.vision.enabled true`,observer_vision_offline:`视觉端点已离线:{url}`,observer_vision_model_missing:`视觉模型不可用:{model}`,observer_privacy_paused:`隐私暂停:此窗口被隐私过滤器拦截({reason})。`,observer_privacy_option:`隐私暂停`,observer_refresh:`加载窗口`,observer_analyze:`快照并分析`,observer_cancel:`取消`,observer_empty:`未找到可观察的窗口。`,observer_select_initial:`尚未加载窗口`,observer_select_placeholder:`选择一个窗口`,observer_history_title:`观察报告`,observer_history_refresh:`刷新报告`,observer_history_empty:`暂无观察报告。`,observer_history_loaded:`已加载 {count} 份观察报告。`,observer_loop_start:`开始循环`,observer_loop_stop:`停止循环`,observer_loop_idle:`仅手动快照。`,observer_loop_running:`观察器循环运行中。一次一张快照。`,observer_loop_waiting:`观察器循环运行中。下一张快照将在 {seconds} 秒后。`,observer_loop_stopped:`观察器循环已停止。`,observer_watch_start:`开始监视`,observer_watch_stop:`停止监视`,observer_watch_idle:`持续监视已关闭。`,observer_watch_starting:`正在启动持续监视...`,observer_watch_running:`正在监视 {title} — {count} 个事件。`,observer_watch_stopping:`正在停止持续监视...`,observer_watch_stopped:`持续监视已停止。`,observer_watch_error:`监视错误:{message}`,graph_title:`知识图谱(3D)`,graph_hint:`拖动旋转 • 点击节点聚焦 • 滚动缩放`,graph_focus:`聚焦`,graph_prereqs:`基础(前置条件)`,graph_dependents:`进阶能力(依赖项)`,graph_no_card:`尚无个人卡片`,graph_refresh:`刷新`,graph_domain_token_list_title:`此领域中的所有 Token`,setup_title:`设置与数据`,settings_kicker:`本地配置`,settings_title:`设置`,settings_subtitle:`配置这台机器,而不会把相同的选择强加到每个工作区或设备上。`,settings_back:`返回仪表板`,settings_system_title:`系统`,settings_ai_title:`AI 模型`,settings_workspace_title:`工作区`,workspaces_help:`为这台机器注册个人、团队、家庭或社区的工作目录。`,settings_appearance_title:`外观`,settings_data_title:`数据`,settings_database:`数据库`,settings_learning_profile:`学习档案`,database_checking:`正在检查…`,database_status_local:`本地 SQLite · 已连接`,database_status_turso:`Turso · 已连接`,database_status_error:`连接不可用`,database_detail:`{location} · 档案 {profile} · {count} 张卡片`,database_no_profile:`无活动档案`,database_profile_option:`{profile} — {count} 张卡片`,database_profile_switch_confirm:`切换活动学习档案为“{profile}”吗?`,database_profile_switched:`活动档案:{profile}({count} 张卡片)`,database_refresh:`刷新状态`,settings_theme:`主题`,theme_light:`浅色`,theme_dark:`深色`,btn_open_data_folder:`打开数据文件夹`,btn_backup_db:`备份数据库`,setup_backing_up:`正在备份数据库…`,setup_backed_up:`已备份到 {path}`,setup_remote_no_backup:`你的数据库会同步到云端({target})——无需单独的本地备份。`,setup_backup_failed:`备份失败:{message}`,setup_backup_failed_generic:`备份失败。`,setup_open_folder_failed:`无法打开数据文件夹:{message}`,lbl_workspace:`工作区`,btn_choose_workspace:`+ 添加工作区…`,btn_open_terminal:`打开终端`,terminal_opening:`正在打开终端...`,terminal_opened:`已在 {workspace} 中打开终端`,terminal_open_failed:`无法打开终端:{message}`,workspace_active:`活跃`,workspace_default_label:`默认工作区`,workspace_empty:`尚未注册工作区。`,workspace_kind:`{kind} 工作区`,workspace_kind_personal:`个人工作区`,workspace_kind_team:`团队工作区`,workspace_kind_family:`家庭工作区`,workspace_kind_community:`社区工作区`,workspace_kind_organization:`组织工作区`,workspace_kind_custom:`自定义工作区`,workspace_more:`另有 {count} 个工作区已隐藏。使用 CLI 查看完整列表。`,workspace_use:`使用`,workspace_open:`终端`,workspace_default_suffix:`(默认)`,workspace_set:`工作区已设为 {path}`,workspace_added:`已添加工作区:{path}`,workspace_pick_failed:`无法设置工作区:{message}`,workspace_remove:`移除`,workspace_remove_confirm:`从 ZAM 中移除“{label}”?文件夹中的文件和链接将保持不变。`,workspace_removed:`已移除工作区:{label}`,workspace_remove_failed:`无法移除工作区:{message}`,workspace_link_ok:`Skill 链接正常`,workspace_link_broken:`Skill 链接已损坏`,workspace_link_unmanaged:`外部 Skill 文件夹`,workspace_repair:`修复 Skill 链接`,workspace_repair_confirm:`“{label}”的文件夹中包含一个并非由 ZAM 创建的 skills/zam 目录。修复会将其删除并替换为链接。是否继续?`,workspace_repairing:`正在修复 Skill 链接…`,workspace_repaired:`Skill 链接已修复:{label}`,workspace_repair_failed:`无法修复 Skill 链接:{message}`,lbl_app_version:`版本`,lbl_learning_model:`学习模型`,lbl_observer_model:`观察器模型`,provider_ready:`就绪`,provider_disabled:`已禁用`,provider_offline:`离线`,provider_model_missing:`缺少模型`,provider_unsupported:`不支持的提供方`,provider_local:`本地`,provider_cloud:`云端`,provider_unknown:`未知`,btn_ai_config_open:`配置`,btn_ai_config_close:`关闭`,btn_add_ai_provider:`+ 添加提供方`,ai_config_loading:`正在加载提供方配置...`,ai_config_failed:`无法加载提供方配置:{message}`,ai_provider_empty:`尚未配置提供方。`,ai_provider_section_local:`本地`,ai_provider_section_cloud:`云端`,ai_provider_kind:`提供方类型`,ai_provider_kind_local:`本地`,ai_provider_kind_cloud:`云端`,ai_provider_local_badge:`本地`,ai_provider_cloud_badge:`云端`,ai_provider_key_set:`已设置密钥`,ai_provider_key_missing:`缺少密钥`,ai_provider_key_none:`无密钥`,ai_provider_edit:`编辑`,ai_provider_remove:`移除`,ai_provider_remove_confirm:`移除提供方“{name}”?`,ai_provider_removed:`已移除提供方“{name}”`,ai_provider_saved:`已保存提供方“{name}”`,ai_provider_save_failed:`无法保存提供方:{message}`,ai_provider_form_add_title:`添加提供方`,ai_provider_form_edit_title:`编辑提供方`,ai_provider_display_name:`名称`,ai_provider_url:`URL`,ai_provider_model:`模型`,ai_provider_model_local_hint:`输入模型名称。如果端点列出了模型,你可以在下面选择一个。`,ai_provider_models_pick:`从端点选取`,ai_provider_flavor:`API 变体`,ai_provider_local:`在这台计算机上运行`,ai_provider_local_hint:`本地模型服务器(FastFlowLM、Ollama 等)通常无需 API 密钥。ZAM 可以尝试自动启动服务器。`,ai_provider_cloud_hint_key:`云端 API 需要 API 密钥。本地提供方不使用密钥字段。`,ai_provider_runner:`本地模型服务器`,ai_provider_runner_hint:`在这台 PC 上提供模型的程序——不是你的编码代理。`,ai_provider_runner_auto:`自动检测`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`未检测到`,ai_provider_api_key:`API 密钥`,ai_provider_api_key_hint:`仅写入——存储在本地,绝不同步`,ai_provider_cloud_hint:`建议的模型:{model}`,ai_provider_models_loading:`正在加载模型...`,ai_provider_models_empty:`端点未列出任何模型`,btn_ai_provider_save:`保存`,btn_ai_provider_cancel:`取消`,ai_role_bindings_title:`角色绑定`,ai_role_recall:`学习(回忆)`,ai_role_vision:`观察器(视觉)`,ai_role_primary:`主要`,ai_role_fallback:`备用`,ai_role_none:`(无)`,btn_ai_role_apply:`应用`,ai_role_bound:`角色 {role} 已更新`,ai_role_bind_failed:`无法绑定角色:{message}`,ai_recall_anthropic_warn:`Anthropic Messages 提供方尚不支持学习课。仍要绑定吗?`,ai_vision_cloud_confirm:`屏幕截图将发送至 {endpoint}。启用视觉观察并绑定此云端提供方吗?`,ai_provider_referenced:`仍被以下角色使用:{roles}`,btn_check_updates:`检查更新`,btn_open_releases:`发行版`,version_unknown:`未知`,update_checking:`正在检查更新...`,update_available:`有可用更新:{version}`,update_none:`你已是最新版本。`,update_failed:`检查更新失败:{message}`,release_link_failed:`无法打开发行版:{message}`,nav_content:`学习内容`,content_title:`学习内容工作室`,content_subtitle:`管理个人学习卡片、搜索知识单元并完善主动回忆问题。`,btn_new_card:`新建卡片`,lbl_search_placeholder:`搜索问题、答案、分类...`,lbl_category_filter:`分类`,lbl_all_categories:`所有分类`,lbl_all_contexts:`所有上下文`,lbl_no_context_default:`无默认上下文`,lbl_no_context_assignment:`不分配上下文`,lbl_empty_content:`未找到学习卡片。创建你的第一张卡片!`,lbl_empty_content_btn:`创建第一张卡片`,lbl_question:`问题`,lbl_answer:`答案 / 概念`,lbl_category:`分类`,lbl_source_link:`来源链接`,lbl_more_settings:`更多设置`,lbl_context:`上下文`,lbl_bloom_level:`布鲁姆认知层级`,lbl_symbiosis_mode:`共生模式`,lbl_slug:`技术键 (Slug)`,lbl_slug_hint:`创建后自动生成`,btn_save:`保存卡片`,btn_remove:`移除卡片`,btn_delete:`全局彻底删除`,lbl_confirm_remove_title:`确认移除卡片`,lbl_confirm_remove_desc:`移除卡片将清除您对此概念的个人学习状态和历史。全局目录不受影响。`,lbl_confirm_delete_title:`确认全局彻底删除`,lbl_confirm_delete_desc:`全局彻底删除此概念将从数据库中永久销毁该概念、所有用户的个人卡片以及相关的评估历史。`,lbl_delete_impact:`此操作将影响:`,lbl_impact_cards:`{count} 张卡片`,lbl_impact_reviews:`{count} 条评估日志`,lbl_impact_steps:`{count} 个会话步骤`,lbl_impact_skills:`更新了 {count} 个智能体技能`,lbl_confirm_action:`确认`,lbl_cancel_action:`取消`,lbl_card_saved_toast:`卡片保存成功!`,lbl_card_removed_toast:`卡片移除成功!`,lbl_card_deleted_toast:`卡片彻底删除成功!`,lbl_error_saving:`保存卡片失败`,lbl_error_loading:`加载内容失败`,lbl_card_status_new:`新学习`,lbl_card_status_learning:`学习中`,lbl_card_status_review:`复习中`,lbl_card_status_relearning:`重新学习`,lbl_card_status_not_started:`未开始`,lbl_card_due:`到期`,lbl_card_not_due:`未到期`,btn_import_curriculum:`导入课程大纲`,lbl_import_modal_title:`导入课程标准`,lbl_import_text:`课程内容文本`,placeholder_import_text:`在此粘贴课程大纲、教学要求或笔记要点...`,lbl_import_source:`来源 URL / 参考`,lbl_import_category:`目标分类`,lbl_import_progress_status:`正在生成卡片...`,lbl_import_progress_detail:`这可能需要长达一分钟,具体取决于您的本地 AI 速度。`,btn_import_submit:`导入`,toast_import_success:`成功导入 {createdCount} 个新概念并生成 {ensuredCount} 张卡片!`,lbl_error_importing:`导入课程大纲失败`,btn_curriculum_wizard:`课程向导`,lbl_curriculum_wizard_title:`课程向导`,wizard_step_country:`国家`,wizard_step_region:`地区`,wizard_step_schoolType:`学校类型`,wizard_step_grade:`年级`,wizard_step_subject:`科目`,wizard_step_track:`分组`,wizard_step_topic:`主题`,wizard_btn_back:`上一步`,wizard_btn_next:`下一步`,wizard_no_options:`此选择暂无可用选项。`,wizard_err_select_option:`请选择一个选项以继续。`,wizard_err_no_topics:`请至少选择一个主题。`,wizard_topic_scope_note:`卡片是根据该科目完整的课程大纲页面生成的(包含其所有主题)。精确的按主题导入将在未来的更新中提供——目前,主题选择可帮助你跟踪接下来要学习的内容。`,wizard_resume_prompt:`从你上次停下的地方继续:`,wizard_btn_resume:`继续`,wizard_btn_restart:`重新开始`,lbl_curriculum_wizard_loading:`加载中…`,wizard_hours:`{hours} 小时`,btn_split:`拆分`,lbl_split_modal_title:`拆分卡片`,lbl_original_card_title:`原始卡片 (总结性的应用问题)`,lbl_split_original_question:`问题`,lbl_split_original_concept:`回答 / 概念`,lbl_split_action_title:`拆分完成后:`,lbl_action_block:`保留原始卡片并将其阻碍 (需要先掌握新卡片)`,lbl_action_remove:`移除原始卡片`,lbl_split_progress_status:`正在生成微型知识卡片建议...`,lbl_split_progress_detail:`这可能需要长达一分钟,具体取决于您的本地 AI 速度。`,lbl_atomic_proposals_title:`微型卡片建议 (最少 2 张)`,btn_split_modal_submit:`确认拆分`,btn_content_foundations_card:`前置知识`,lbl_foundations_modal_title:`导入前置基础知识`,lbl_foundations_progress_status:`正在生成前置知识建议...`,lbl_foundations_progress_detail:`这可能需要长达一分钟,具体取决于您的本地 AI 速度。`,lbl_foundations_atomic_title:`前置基础卡片建议`,btn_foundations_modal_submit:`确认导入`,lbl_import_source_type:`来源类型`,lbl_import_source_uri:`文件路径或网址`,btn_import_source_analyze:`分析`,lbl_source_extracted_preview:`提取文本预览`,lbl_delete:`删除`,lbl_proposal_number:`提案 #{n}`,lbl_foundational_proposal_number:`基础提案 #{n}`,lbl_foundation_existing_badge:`将关联现有卡片`,lbl_foundation_new_badge:`新卡片建议`,lbl_include:`包含`,lbl_err_analyze_source_first:`请先分析源文件、网页链接或OCR扫描。`,lbl_err_min_split_proposals:`拆分卡片至少需要2个完整的卡片提案。`,lbl_err_select_foundation:`请至少选择一个先决条件提案卡片进行导入。`,lbl_err_enter_path_or_url:`请输入要分析的文件路径或网址。`,lbl_analyzing_source:`正在分析源内容,请稍候…`,lbl_err_analysis_failed:`分析失败`,lbl_err_analysis_prefix:`分析错误`,lbl_err_concept_required:`答案或概念为必填项。`,lbl_err_category_required:`类别为必填项。`,lbl_err_import_context_required:`课程文本为必填项。`,lbl_err_original_context_required:`原始卡片必须填写问题和答案。`,settings_context_title:`知识上下文`,settings_context_help:`选择此设备的默认知识上下文。`,settings_context_label:`默认上下文`,wizard_context_label:`将导入的卡片分配到上下文:`,settings_agents_title:`AI 代理`,settings_agents_help:`通过 MCP 将已安装的代理工具连接到 ZAM。可随时安全地重复执行。`,btn_agents_connect_all:`连接所有检测到的代理`,btn_agent_connect:`连接`,agent_status_loading:`正在检测已安装的代理...`,agent_status_not_installed:`未安装`,agent_status_installed:`已安装`,agent_status_connected:`已连接`,agent_connect_running:`连接中...`,agent_connect_done:`已连接 {n} 个代理。全局 ZAM 技能已刷新。`,agent_connect_none:`未检测到受支持的代理。请先安装 Codex、VS Code 或 Copilot。`,agent_connect_error:`连接失败——详情请查看控制台。`},ja:{ai_status_offline:`AI オフライン`,ai_status_online:`ローカル AI オンライン`,ai_status_cloud_online:`クラウド AI · {model}`,ai_status_cloud_offline:`クラウド AI オフライン · {model}`,ai_status_starting:`AI を確認中...`,ai_status_model_missing:`AI: モデルが見つかりません`,study_question_original:`原文`,study_evaluation_model:`{model}`,nav_dashboard:`ダッシュボード`,nav_settings:`設定`,dashboard_kicker:`今日の ZAM`,dashboard_title:`意識的に学ぶ。`,dashboard_subtitle:`期限の来た項目を復習し、ナレッジマップを開き、または設定でローカル AI とワークスペースを構成します。`,lbl_due_reviews:`復習予定`,lbl_caught_up:`すべて完了しています!`,dashboard_error:`データを読み込めませんでした`,lbl_domains:`アクティブな領域`,btn_start_session:`学習セッションを開始`,lbl_translating:`動的に翻訳中...`,placeholder_answer:`ここに概念的な回答を入力...(Ctrl+Enter で送信)`,placeholder_discussion:`このカードについて質問する...(Enter で送信)`,btn_discussion_send:`送信`,discussion_error:`AIから応答がありません。もう一度お試しください。`,btn_reveal_answer:`送信して回答を表示`,lbl_ai_evaluating:`回答を確認し、フィードバックを生成しています...`,lbl_ai_working:`(少し時間がかかる場合があります。)`,lbl_wait_warn:`⚠ 評価に予想以上の時間がかかっています。`,btn_wait_keep:`待ち続ける`,btn_wait_skip:`オフラインでスキップ`,lbl_question_wait_warn:`⚠ 質問の生成に予想以上の時間がかかっています。`,btn_question_use_saved:`保存済みの質問を使用`,lbl_ai_feedback_title:`ZAM フィードバック`,lbl_reveal_title:`参考解答`,lbl_rating_instruction:`アクティブリコールを正直に評価してください:`,lbl_rate_1:`もう一度`,lbl_rate_2:`難しい`,lbl_rate_3:`良い`,lbl_rate_4:`簡単`,btn_recall_reveal:`表示`,btn_recall_check:`回答を確認`,btn_recall_finish:`セッションを終了`,lbl_recall_focus:`フォーカス:{domain}`,lbl_recall_summary:`{done} / {total} 件を復習`,lbl_recall_summary_title:`セッションの概要`,lbl_recall_empty_title:`対象なし`,btn_pause_session:`一時停止して終了`,lbl_generating_question:`動的な質問を生成中...`,token:`トークン`,concept:`概念`,context:`コンテキスト`,source:`出典`,bloom_level:`Bloom レベル`,rating_again_shortcut:`(ショートカット: 1)`,rating_hard_shortcut:`(ショートカット: 2)`,rating_good_shortcut:`(ショートカット: 3)`,rating_easy_shortcut:`(ショートカット: 4)`,session_completed:`学習セッションが完了しました!`,session_completed_sub:`このセッションをやり遂げました!記憶の痕跡が更新されました。`,btn_back_to_dashboard:`ダッシュボードに戻る`,btn_open_graph:`ナレッジマップ(3D)`,btn_open_settings:`設定`,observer_title:`UI オブザーバー`,observer_idle:`ウィンドウを読み込み、観察するアプリケーションウィンドウを 1 つ選択してください。`,observer_loading:`観察可能なウィンドウを読み込み中...`,observer_ready:`選択中: {title}`,observer_vision_checking:`ビジョン観察の設定を確認中...`,observer_analyzing:`スナップショットを取得し、ビジョンモデルに問い合わせ中...`,observer_done:`観察を保存しました。最新レポートの信頼度: {confidence}`,observer_canceled:`観察をキャンセルしました。`,observer_error:`オブザーバーエラー: {message}`,observer_vision_disabled:`ビジョン観察は無効です。次のコマンドで有効化してください: zam settings set llm.vision.enabled true`,observer_vision_offline:`ビジョンエンドポイントがオフラインです: {url}`,observer_vision_model_missing:`ビジョンモデルが利用できません: {model}`,observer_privacy_paused:`プライバシー一時停止: このウィンドウはプライバシーフィルターによってブロックされています({reason})。`,observer_privacy_option:`プライバシー一時停止`,observer_refresh:`ウィンドウを読み込む`,observer_analyze:`スナップショットと分析`,observer_cancel:`キャンセル`,observer_empty:`観察可能なウィンドウが見つかりません。`,observer_select_initial:`ウィンドウはまだ読み込まれていません`,observer_select_placeholder:`ウィンドウを選択`,observer_history_title:`観察レポート`,observer_history_refresh:`レポートを更新`,observer_history_empty:`観察レポートはまだありません。`,observer_history_loaded:`{count} 件の観察レポートを読み込みました。`,observer_loop_start:`ループを開始`,observer_loop_stop:`ループを停止`,observer_loop_idle:`手動スナップショットのみ。`,observer_loop_running:`オブザーバーループが実行中です。一度に 1 つのスナップショット。`,observer_loop_waiting:`オブザーバーループが実行中です。次のスナップショットは {seconds} 秒後。`,observer_loop_stopped:`オブザーバーループを停止しました。`,observer_watch_start:`監視を開始`,observer_watch_stop:`監視を停止`,observer_watch_idle:`継続的な監視はオフです。`,observer_watch_starting:`継続的な監視を開始中...`,observer_watch_running:`{title} を監視中 — {count} 件のイベント。`,observer_watch_stopping:`継続的な監視を停止中...`,observer_watch_stopped:`継続的な監視を停止しました。`,observer_watch_error:`監視エラー: {message}`,graph_title:`ナレッジグラフ(3D)`,graph_hint:`ドラッグで回転 • ノードをクリックでフォーカス • スクロールでズーム`,graph_focus:`フォーカス`,graph_prereqs:`基礎(前提条件)`,graph_dependents:`上位スキル(依存項目)`,graph_no_card:`まだ個人カードがありません`,graph_refresh:`更新`,graph_domain_token_list_title:`この領域のすべてのトークン`,setup_title:`セットアップとデータ`,settings_kicker:`ローカル設定`,settings_title:`設定`,settings_subtitle:`すべてのワークスペースやデバイスに同じ選択を強制することなく、このマシンを構成します。`,settings_back:`ダッシュボードに戻る`,settings_system_title:`システム`,settings_ai_title:`AI モデル`,settings_workspace_title:`ワークスペース`,workspaces_help:`このマシン用に、個人・チーム・家族・コミュニティの作業ディレクトリを登録します。`,settings_appearance_title:`外観`,settings_data_title:`データ`,settings_database:`データベース`,settings_learning_profile:`学習プロフィール`,database_checking:`確認中…`,database_status_local:`ローカル SQLite · 接続済み`,database_status_turso:`Turso · 接続済み`,database_status_error:`接続を利用できません`,database_detail:`{location} · プロフィール {profile} · {count} 枚`,database_no_profile:`有効なプロフィールなし`,database_profile_option:`{profile} — {count} 枚`,database_profile_switch_confirm:`有効な学習プロフィールを「{profile}」に切り替えますか?`,database_profile_switched:`有効なプロフィール:{profile}({count} 枚)`,database_refresh:`状態を更新`,settings_theme:`テーマ`,theme_light:`ライト`,theme_dark:`ダーク`,btn_open_data_folder:`データフォルダーを開く`,btn_backup_db:`データベースをバックアップ`,setup_backing_up:`データベースをバックアップ中…`,setup_backed_up:`{path} にバックアップしました`,setup_remote_no_backup:`データベースはクラウド({target})に同期されます — 個別のローカルバックアップは不要です。`,setup_backup_failed:`バックアップに失敗しました: {message}`,setup_backup_failed_generic:`バックアップに失敗しました。`,setup_open_folder_failed:`データフォルダーを開けませんでした: {message}`,lbl_workspace:`ワークスペース`,btn_choose_workspace:`+ ワークスペースを追加…`,btn_open_terminal:`ターミナルを開く`,terminal_opening:`ターミナルを開いています...`,terminal_opened:`{workspace} でターミナルを開きました`,terminal_open_failed:`ターミナルを開けませんでした: {message}`,workspace_active:`アクティブ`,workspace_default_label:`既定のワークスペース`,workspace_empty:`登録済みのワークスペースはまだありません。`,workspace_kind:`{kind} ワークスペース`,workspace_kind_personal:`個人ワークスペース`,workspace_kind_team:`チームワークスペース`,workspace_kind_family:`家族ワークスペース`,workspace_kind_community:`コミュニティワークスペース`,workspace_kind_organization:`組織ワークスペース`,workspace_kind_custom:`カスタムワークスペース`,workspace_more:`他に {count} 件のワークスペースが非表示です。完全な一覧は CLI を使用してください。`,workspace_use:`使用`,workspace_open:`ターミナル`,workspace_default_suffix:`(既定)`,workspace_set:`ワークスペースを {path} に設定しました`,workspace_added:`ワークスペースを追加しました: {path}`,workspace_pick_failed:`ワークスペースを設定できませんでした: {message}`,workspace_remove:`削除`,workspace_remove_confirm:`「{label}」を ZAM から削除しますか?フォルダー内のファイルとリンクは変更されません。`,workspace_removed:`ワークスペースを削除しました: {label}`,workspace_remove_failed:`ワークスペースを削除できませんでした: {message}`,workspace_link_ok:`スキルリンク正常`,workspace_link_broken:`スキルリンク破損`,workspace_link_unmanaged:`外部スキルフォルダー`,workspace_repair:`スキルリンクを修復`,workspace_repair_confirm:`「{label}」のフォルダーには、ZAM が作成していない skills/zam ディレクトリがあります。修復するとそれを削除し、リンクに置き換えます。続行しますか?`,workspace_repairing:`スキルリンクを修復中…`,workspace_repaired:`スキルリンクを修復しました: {label}`,workspace_repair_failed:`スキルリンクを修復できませんでした: {message}`,lbl_app_version:`バージョン`,lbl_learning_model:`学習モデル`,lbl_observer_model:`オブザーバーモデル`,provider_ready:`準備完了`,provider_disabled:`無効`,provider_offline:`オフライン`,provider_model_missing:`モデルがありません`,provider_unsupported:`未対応のプロバイダー`,provider_local:`ローカル`,provider_cloud:`クラウド`,provider_unknown:`不明`,btn_ai_config_open:`構成`,btn_ai_config_close:`閉じる`,btn_add_ai_provider:`+ プロバイダーを追加`,ai_config_loading:`プロバイダー構成を読み込み中...`,ai_config_failed:`プロバイダー構成を読み込めませんでした: {message}`,ai_provider_empty:`構成済みのプロバイダーはまだありません。`,ai_provider_section_local:`ローカル`,ai_provider_section_cloud:`クラウド`,ai_provider_kind:`プロバイダーの種類`,ai_provider_kind_local:`ローカル`,ai_provider_kind_cloud:`クラウド`,ai_provider_local_badge:`ローカル`,ai_provider_cloud_badge:`クラウド`,ai_provider_key_set:`キー設定済み`,ai_provider_key_missing:`キーがありません`,ai_provider_key_none:`キーなし`,ai_provider_edit:`編集`,ai_provider_remove:`削除`,ai_provider_remove_confirm:`プロバイダー「{name}」を削除しますか?`,ai_provider_removed:`プロバイダー「{name}」を削除しました`,ai_provider_saved:`プロバイダー「{name}」を保存しました`,ai_provider_save_failed:`プロバイダーを保存できませんでした: {message}`,ai_provider_form_add_title:`プロバイダーを追加`,ai_provider_form_edit_title:`プロバイダーを編集`,ai_provider_display_name:`名前`,ai_provider_url:`URL`,ai_provider_model:`モデル`,ai_provider_model_local_hint:`モデル名を入力してください。エンドポイントがモデルを列挙する場合は、下から選択できます。`,ai_provider_models_pick:`エンドポイントから選択`,ai_provider_flavor:`API の種類`,ai_provider_local:`このコンピューターで実行`,ai_provider_local_hint:`ローカルモデルサーバー(FastFlowLM、Ollama など)は通常 API キーを必要としません。ZAM がサーバーの自動起動を試みることができます。`,ai_provider_cloud_hint_key:`クラウド API には API キーが必要です。ローカルプロバイダーはキー欄を使用しません。`,ai_provider_runner:`ローカルモデルサーバー`,ai_provider_runner_hint:`この PC でモデルを提供するプログラムです — コーディングエージェントではありません。`,ai_provider_runner_auto:`自動検出`,ai_provider_runner_flm:`FastFlowLM`,ai_provider_runner_ollama:`Ollama`,ai_provider_runner_foundry:`Foundry Local`,ai_provider_runner_not_installed:`検出されません`,ai_provider_api_key:`API キー`,ai_provider_api_key_hint:`書き込み専用 — ローカルに保存され、同期されません`,ai_provider_cloud_hint:`推奨モデル: {model}`,ai_provider_models_loading:`モデルを読み込み中...`,ai_provider_models_empty:`エンドポイントにモデルがありません`,btn_ai_provider_save:`保存`,btn_ai_provider_cancel:`キャンセル`,ai_role_bindings_title:`ロールの割り当て`,ai_role_recall:`学習(想起)`,ai_role_vision:`オブザーバー(ビジョン)`,ai_role_primary:`プライマリ`,ai_role_fallback:`フォールバック`,ai_role_none:`(なし)`,btn_ai_role_apply:`適用`,ai_role_bound:`ロール {role} を更新しました`,ai_role_bind_failed:`ロールを割り当てられませんでした: {message}`,ai_recall_anthropic_warn:`Anthropic Messages プロバイダーは学習セッションにまだ対応していません。それでも割り当てますか?`,ai_vision_cloud_confirm:`スクリーンショットが {endpoint} に送信されます。ビジョン観察を有効にして、このクラウドプロバイダーを割り当てますか?`,ai_provider_referenced:`まだ次のロールで使用中: {roles}`,btn_check_updates:`更新を確認`,btn_open_releases:`リリース`,version_unknown:`不明`,update_checking:`更新を確認中...`,update_available:`更新が利用可能: {version}`,update_none:`最新バージョンを使用しています。`,update_failed:`更新の確認に失敗しました: {message}`,release_link_failed:`リリースを開けませんでした: {message}`,nav_content:`学習コンテンツ`,content_title:`コンテンツスタジオ`,content_subtitle:`個人の学習カードを管理し、トークンを検索して、能動的想起の質問を整えます。`,btn_new_card:`新規カード`,lbl_search_placeholder:`質問、回答、カテゴリを検索...`,lbl_category_filter:`カテゴリ`,lbl_all_categories:`すべてのカテゴリ`,lbl_all_contexts:`すべてのコンテキスト`,lbl_no_context_default:`既定のコンテキストなし`,lbl_no_context_assignment:`コンテキストを割り当てない`,lbl_empty_content:`学習カードが見つかりません。最初のカードを作成しましょう!`,lbl_empty_content_btn:`最初のカードを作成`,lbl_question:`質問`,lbl_answer:`回答 / 概念`,lbl_category:`カテゴリ`,lbl_source_link:`ソースリンク`,lbl_more_settings:`詳細設定`,lbl_context:`コンテキスト`,lbl_bloom_level:`ブルーム分類レベル`,lbl_symbiosis_mode:`共生モード`,lbl_slug:`技術キー (Slug)`,lbl_slug_hint:`作成後に自動生成されます`,btn_save:`カードを保存`,btn_remove:`カードを削除`,btn_delete:`グローバルトークンを完全削除`,lbl_confirm_remove_title:`カード削除の確認`,lbl_confirm_remove_desc:`このカードを削除すると、このトークンに対する個人の学習状態と履歴がクリアされます。グローバルカタログには影響しません。`,lbl_confirm_delete_title:`グローバルトークン完全削除の確認`,lbl_confirm_delete_desc:`このトークンを完全に削除すると、この概念、すべてのユーザーの個人カード、およびデータベース全体の学習履歴が永久に消去されます。`,lbl_delete_impact:`このアクションの影響:`,lbl_impact_cards:`{count} 枚のカード`,lbl_impact_reviews:`{count} 件の復習ログ`,lbl_impact_steps:`{count} 件のセッションステップ`,lbl_impact_skills:`{count} 件のエージェントスキルを更新`,lbl_confirm_action:`確認`,lbl_cancel_action:`キャンセル`,lbl_card_saved_toast:`カードが正常に保存されました!`,lbl_card_removed_toast:`カードが正常に削除されました!`,lbl_card_deleted_toast:`トークンが正常に削除されました!`,lbl_error_saving:`カードの保存に失敗しました`,lbl_error_loading:`コンテンツの読み込みに失敗しました`,lbl_card_status_new:`新規`,lbl_card_status_learning:`学習中`,lbl_card_status_review:`復習中`,lbl_card_status_relearning:`再学習中`,lbl_card_status_not_started:`未着手`,lbl_card_due:`期限`,lbl_card_not_due:`期限前`,btn_import_curriculum:`カリキュラムインポート`,lbl_import_modal_title:`カリキュラム標準のインポート`,lbl_import_text:`カリキュラムテキスト`,placeholder_import_text:`カリキュラムのテキストやシラバスの要点をここに貼り付けます...`,lbl_import_source:`ソースURL / 参照`,lbl_import_category:`対象カテゴリ`,lbl_import_progress_status:`カードを生成中...`,lbl_import_progress_detail:`ローカルAIの速度によっては、最大1分かかる場合があります。`,btn_import_submit:`インポート`,toast_import_success:`{createdCount} 件の新しいトークンをインポートし、{ensuredCount} 件のカードを生成しました!`,lbl_error_importing:`カリキュラムのインポートに失敗しました`,btn_curriculum_wizard:`カリキュラムウィザード`,lbl_curriculum_wizard_title:`カリキュラムウィザード`,wizard_step_country:`国`,wizard_step_region:`地域`,wizard_step_schoolType:`学校の種類`,wizard_step_grade:`学年`,wizard_step_subject:`教科`,wizard_step_track:`コース`,wizard_step_topic:`トピック`,wizard_btn_back:`戻る`,wizard_btn_next:`次へ`,wizard_no_options:`この選択にはまだ利用可能なオプションがありません。`,wizard_err_select_option:`続行するにはオプションを選択してください。`,wizard_err_no_topics:`少なくとも1つのトピックを選択してください。`,wizard_topic_scope_note:`カードはこの教科の完全なカリキュラムページ(すべてのトピックを含む)から生成されます。トピックごとの正確なインポートは今後のアップデートで提供される予定です。現時点では、トピックの選択は次に取り組む内容を把握するのに役立ちます。`,wizard_resume_prompt:`前回の続きから:`,wizard_btn_resume:`続ける`,wizard_btn_restart:`最初からやり直す`,lbl_curriculum_wizard_loading:`読み込み中…`,wizard_hours:`{hours}時間`,btn_split:`分割`,lbl_split_modal_title:`カードの分割`,lbl_original_card_title:`元のカード (要約された応用問題)`,lbl_split_original_question:`質問`,lbl_split_original_concept:`回答 / コンセプト`,lbl_split_action_title:`分割完了後:`,lbl_action_block:`元のカードを保持しブロックする (先に新規カードが必要)`,lbl_action_remove:`元のカードを削除する`,lbl_split_progress_status:`アトミックな提案を生成中...`,lbl_split_progress_detail:`ローカルAIの速度によっては、最大1分かかる場合があります。`,lbl_atomic_proposals_title:`アトミックカードの提案 (最低2枚)`,btn_split_modal_submit:`分割の確認`,btn_content_foundations_card:`前提知識`,lbl_foundations_modal_title:`前提知識のインポート`,lbl_foundations_progress_status:`前提知識の提案を生成中...`,lbl_foundations_progress_detail:`ローカルAIの速度によっては、最大1分かかる場合があります。`,lbl_foundations_atomic_title:`前提知識カードの提案`,btn_foundations_modal_submit:`インポートの確認`,lbl_import_source_type:`ソースタイプ`,lbl_import_source_uri:`ファイルパスまたはURL`,btn_import_source_analyze:`解析する`,lbl_source_extracted_preview:`抽出テキストのプレビュー`,lbl_delete:`削除`,lbl_proposal_number:`提案 #{n}`,lbl_foundational_proposal_number:`基礎提案 #{n}`,lbl_foundation_existing_badge:`既存のカードがリンクされます`,lbl_foundation_new_badge:`新しいカードの提案`,lbl_include:`含める`,lbl_err_analyze_source_first:`まずソースファイル、ウェブリンク、またはOCRスキャンを解析してください。`,lbl_err_min_split_proposals:`カードを分割するには、少なくとも2件の完全なカード提案が必要です。`,lbl_err_select_foundation:`インポートする前提条件の提案カードを少なくとも1件選択してください。`,lbl_err_enter_path_or_url:`解析するファイルパスまたはURLを入力してください。`,lbl_analyzing_source:`ソースコンテンツを解析しています。しばらくお待ちください…`,lbl_err_analysis_failed:`解析に失敗しました`,lbl_err_analysis_prefix:`解析エラー`,lbl_err_concept_required:`回答または概念は必須です。`,lbl_err_category_required:`カテゴリーは必須です。`,lbl_err_import_context_required:`カリキュラムのテキストは必須です。`,lbl_err_original_context_required:`元のカードには質問と回答が必要です。`,settings_context_title:`知識コンテキスト`,settings_context_help:`このデバイスのデフォルトの知識コンテキストを選択します。`,settings_context_label:`デフォルトコンテキスト`,wizard_context_label:`インポートされたカードをコンテキストに割り当てる:`,settings_agents_title:`AIエージェント`,settings_agents_help:`インストール済みのエージェントをMCP経由でZAMに接続します。何度実行しても安全です。`,btn_agents_connect_all:`検出されたすべてを接続`,btn_agent_connect:`接続`,agent_status_loading:`インストール済みエージェントを検出中...`,agent_status_not_installed:`未インストール`,agent_status_installed:`インストール済み`,agent_status_connected:`接続済み`,agent_connect_running:`接続中...`,agent_connect_done:`{n} 件のエージェントを接続しました。グローバルZAMスキルを更新しました。`,agent_connect_none:`対応エージェントが見つかりません。まずCodex、VS Code、Copilotなどをインストールしてください。`,agent_connect_error:`接続に失敗しました。詳細はコンソールを確認してください。`}},Kv=`en`;function qv(e){Kv=e}function Z(e){return Gv[Kv]?.[e]||Gv.en?.[e]||e}function Jv(e,t){return Object.entries(t).reduce((e,[t,n])=>e.split(`{${t}}`).join(String(n)),Z(e))}var Yv=[],Q=null,Xv=!1,Zv=!1,Qv,$v,ey,ty,ny,ry,iy,ay,oy,sy,cy,ly,uy,dy,fy,py,my,hy,gy=`text`,_y,vy,yy,by,xy,Sy,Cy,wy,Ty,Ey,Dy,Oy,ky,Ay,jy,My,Ny,Py=[],Fy=[],Iy,Ly,Ry,zy,By,Vy,Hy,Uy,Wy,Gy,Ky,qy,Jy,Yy,Xy,Zy,Qy,$y,eb,tb,nb,rb,ib,ab,ob,sb,cb,lb,ub,db,fb,pb,mb=null,hb=null;function $(e){return e.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e])}function gb(){Qv=document.getElementById(`content-studio-layout`),Iy=document.getElementById(`content-studio-card-list`),Ly=document.getElementById(`content-search-input`),Ry=document.getElementById(`content-context-filter`),zy=document.getElementById(`content-category-filter`),By=document.getElementById(`editor-empty-state`),Vy=document.getElementById(`editor-form-container`),Hy=document.getElementById(`btn-content-new-card`),Uy=document.getElementById(`btn-create-first-card`),Wy=document.getElementById(`editor-field-question`),Gy=document.getElementById(`editor-field-concept`),Ky=document.getElementById(`editor-field-title`),qy=document.getElementById(`editor-field-domain`),Jy=document.getElementById(`editor-field-source-link`),Yy=document.getElementById(`editor-field-context`),Xy=document.getElementById(`editor-field-bloom`),Zy=document.getElementById(`editor-field-mode`),Qy=document.getElementById(`editor-field-slug`),$y=document.getElementById(`btn-content-save-card`),eb=document.getElementById(`btn-content-delete-card`),tb=document.getElementById(`btn-content-cancel-edit`),nb=document.getElementById(`editor-toggle-advanced`),rb=document.getElementById(`editor-advanced-content`),ib=document.getElementById(`editor-toggle-arrow`),ab=document.getElementById(`content-modal-overlay`),ob=document.getElementById(`lbl-modal-title`),sb=document.getElementById(`lbl-modal-desc`),cb=document.getElementById(`modal-impact-container`),lb=document.getElementById(`modal-impact-list-el`),ub=document.getElementById(`modal-delete-choice`),db=document.getElementById(`btn-modal-cancel`),fb=document.getElementById(`btn-modal-confirm`),pb=document.getElementById(`btn-modal-hard-delete`),$v=document.getElementById(`btn-content-import`),ey=document.getElementById(`import-modal-overlay`),ty=document.getElementById(`import-field-text`),ny=document.getElementById(`import-field-source`),ry=document.getElementById(`import-field-category`),iy=document.getElementById(`import-progress-container`),ay=document.getElementById(`btn-import-modal-cancel`),oy=document.getElementById(`btn-import-modal-submit`),sy=document.getElementById(`btn-import-tab-text`),cy=document.getElementById(`btn-import-tab-source`),ly=document.getElementById(`import-view-text`),uy=document.getElementById(`import-view-source`),dy=document.getElementById(`import-source-type`),fy=document.getElementById(`import-source-uri`),py=document.getElementById(`btn-import-source-analyze`),my=document.getElementById(`import-source-preview`),hy=document.getElementById(`import-source-id`),_y=document.getElementById(`btn-content-split-card`),vy=document.getElementById(`split-modal-overlay`),yy=document.getElementById(`split-original-question`),by=document.getElementById(`split-original-concept`),xy=document.getElementById(`split-progress-container`),Sy=document.getElementById(`split-proposals-section`),Cy=document.getElementById(`split-proposals-container`),wy=document.getElementById(`btn-split-add-proposal`),Ty=document.getElementById(`btn-split-modal-cancel`),Ey=document.getElementById(`btn-split-modal-submit`),Dy=document.getElementById(`btn-content-foundations-card`),Oy=document.getElementById(`foundations-modal-overlay`),ky=document.getElementById(`foundations-progress-container`),Ay=document.getElementById(`foundations-proposals-section`),jy=document.getElementById(`foundations-proposals-container`),My=document.getElementById(`btn-foundations-modal-cancel`),Ny=document.getElementById(`btn-foundations-modal-submit`),Ly.addEventListener(`input`,()=>yb()),Ry.addEventListener(`change`,()=>{vb()}),zy.addEventListener(`change`,()=>yb()),Hy.addEventListener(`click`,()=>xb()),Uy.addEventListener(`click`,()=>xb()),$v?.addEventListener(`click`,()=>Ab()),ay.addEventListener(`click`,()=>jb()),oy.addEventListener(`click`,()=>{Mb()}),sy.addEventListener(`click`,()=>Ub(`text`)),cy.addEventListener(`click`,()=>Ub(`source`)),py.addEventListener(`click`,()=>{Wb()}),_y?.addEventListener(`click`,()=>{Nb()}),wy.addEventListener(`click`,()=>Ib()),Ty.addEventListener(`click`,()=>Pb()),Ey.addEventListener(`click`,()=>{Rb()}),Dy?.addEventListener(`click`,()=>{zb()}),My.addEventListener(`click`,()=>Bb()),Ny.addEventListener(`click`,()=>{Hb()}),tb.addEventListener(`click`,()=>Sb()),$y.addEventListener(`click`,()=>Tb()),eb.addEventListener(`click`,()=>Eb()),nb.addEventListener(`click`,()=>wb()),db.addEventListener(`click`,()=>kb()),fb.addEventListener(`click`,()=>{mb&&(mb(),kb())}),pb.addEventListener(`click`,()=>{hb&&(hb(),kb())});let e=[Wy,Gy,Ky,qy,Jy,Yy];for(let t of e)t.addEventListener(`keydown`,e=>{let t=e;t.key===`Enter`&&(t.ctrlKey||t.metaKey)&&(e.preventDefault(),Tb())});_b()}async function _b(){try{let e=await X(`list-knowledge-contexts`),t=await X(`get-active-knowledge-context`);Ry.innerHTML=`<option value="">${Z(`lbl_all_contexts`)}</option>`;for(let t of e.contexts??[]){let e=document.createElement(`option`);e.value=t.name,e.textContent=t.label?`${t.label} (${t.name})`:t.name,Ry.appendChild(e)}Ry.value=t.activeContext??``}catch(e){console.warn(`Failed to load Studio knowledge contexts`,e)}await vb()}async function vb(){try{Yv=(await X(`personal-card-list`,Ry?.value?[`--knowledge-context`,Ry.value]:[])).cards;let e=new Set;for(let t of Yv)t.domain&&e.add(t.domain);let t=Array.from(e).sort(),n=zy.value;zy.innerHTML=`<option value="all">${Z(`lbl_all_categories`)}</option>`;for(let e of t){let t=document.createElement(`option`);t.value=e,t.textContent=e,zy.appendChild(t)}zy.value=n||`all`,yb(),Cb()}catch(e){console.error(`Failed to load cards list`,e),alert(`${Z(`lbl_error_loading`)}: ${e instanceof Error?e.message:String(e)}`)}}function yb(){let e=Ly.value.toLowerCase().trim(),t=zy.value,n=Yv.filter(n=>{if(t!==`all`&&n.domain!==t)return!1;if(e){let t=n.title?.toLowerCase().includes(e),r=n.slug?.toLowerCase().includes(e),i=n.concept?.toLowerCase().includes(e),a=n.domain?.toLowerCase().includes(e),o=n.question?.toLowerCase().includes(e);return t||r||i||a||o}return!0});if(Iy.innerHTML=``,n.length===0){Iy.innerHTML=`<p class="observer-history-empty" style="padding: 20px; text-align: center;">${Z(`lbl_empty_content`)}</p>`;return}for(let e of n){let t=document.createElement(`div`);t.className=`content-list-item`,Q&&Q.slug===e.slug&&t.classList.add(`selected`);let n=Z(`lbl_card_status_not_started`),r=`not-started`;e.state&&(n=Z(`lbl_card_status_${e.state}`),r=e.state);let i=e.dueAt&&new Date(e.dueAt)<=new Date?`<span class="card-status-badge again" style="font-size: 0.7rem; padding: 1px 4px; background: rgba(239, 68, 68, 0.1); color: #ef4444; margin-left: 5px;">${$(Z(`lbl_card_due`))}</span>`:``;t.innerHTML=`
|
|
581
581
|
<div class="content-list-item-header">
|
|
582
582
|
<span class="content-list-item-concept">${$(e.concept||Z(`lbl_question`))}</span>
|
|
583
583
|
<span class="card-status-badge ${$(r)}">${$(n)}</span>
|