mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-08 22:20:54 +08:00
Use a current WA protocol version, start the sidecar via local tsx with inherited proxy, and stop auto-opening the QR UI on unbound connecting. Co-authored-by: Cursor <cursoragent@cursor.com>
834 lines
43 KiB
JavaScript
834 lines
43 KiB
JavaScript
export default {
|
||
"action.refresh": "Refresh",
|
||
"action.save": "Save",
|
||
"adminAudit.action": "Action",
|
||
"adminAudit.actor": "Actor",
|
||
"adminAudit.jump": "Go",
|
||
"adminAudit.jumpPlaceholder": "Page",
|
||
"adminAudit.status": "Status",
|
||
"adminAudit.title": "Admin Operation Audit",
|
||
"adminAudit.total": "Total {total}",
|
||
"apiGrants.forbidden": "Only the administrator console user with team write permission (or owner role) can manage API access grants.",
|
||
"apiGrants.intro": "Pick a profile below, then grant visibility to the whole team or specific users. Keys and URLs are still edited under Model Management; members bind roles there after they can see the profile.",
|
||
"apiGrants.noShareable": "(No shareable profiles)",
|
||
"apiGrants.openModels": "Go to Model Management",
|
||
"apiGrants.pickApi": "Profile to grant",
|
||
"apiGrants.teamHint": "Everyone in the tenant can then see this profile in their picker; endpoints and secrets stay under Model Management.",
|
||
"apiGrants.teamSection": "Grant to entire team",
|
||
"apiGrants.userHint": "Only that user sees the profile in their picker; they bind roles under Model Management.",
|
||
"apiGrants.userSection": "Grant to one user",
|
||
"attachments.archiveMaxDepth": "Archive max depth",
|
||
"attachments.archiveMaxEntryBytes": "Archive max entry uncompressed bytes",
|
||
"attachments.archiveMaxFileCount": "Archive max file count",
|
||
"attachments.archiveMaxTotalBytes": "Archive max total uncompressed bytes",
|
||
"attachments.archivePolicyHint": "Unified archive_processor budget for zip/tar/tgz/gz: limits depth, file count and uncompressed size.",
|
||
"attachments.card.archive": "Archive budget policy",
|
||
"attachments.card.media": "Image & video policy",
|
||
"attachments.card.policy": "Policy",
|
||
"attachments.card.tableMode": "Tables & tool mode",
|
||
"attachments.excelPolicy": "Excel policy",
|
||
"attachments.excelPolicyHint": "Policy for Excel/tabular attachments parsing and SQL query safeguards. Saved into oclaw.json (lower priority than env vars).",
|
||
"attachments.highPreviewWarn": "Large-table preview rows is above 200, which may significantly increase token usage. Continue?",
|
||
"attachments.imageReplayCapChars": "Image replay cap chars",
|
||
"attachments.imageReplayCapHint": "Replay cap for query_image_attachment OCR/description results in historical context. Range 600..30000, default 4000.",
|
||
"attachments.invalidNumber": "Please enter valid positive integers",
|
||
"attachments.largePreviewRows": "Large-table preview rows",
|
||
"attachments.loadError": "Load failed",
|
||
"attachments.maxCellChars": "Max chars per cell",
|
||
"attachments.maxColumns": "Max columns kept",
|
||
"attachments.maxExcelSheets": "Max Excel sheets",
|
||
"attachments.maxRowsRead": "Max rows read",
|
||
"attachments.resetDefaults": "Reset defaults",
|
||
"attachments.save": "Save",
|
||
"attachments.saved": "Saved",
|
||
"attachments.sqlTimeoutHint": "Hard wall-clock timeout. Range 100..120000, default 8000. Timeout returns structured sql_timeout error.",
|
||
"attachments.sqlTimeoutMs": "SQL timeout (ms)",
|
||
"attachments.subtitle": "Attachment limits, budgets, and replay policy",
|
||
"attachments.title": "Attachments",
|
||
"attachments.toc.archive": "Archives",
|
||
"attachments.toc.media": "Image/Video",
|
||
"attachments.toc.overview": "Overview",
|
||
"attachments.toc.table": "Tables",
|
||
"attachments.toolModeEnabled": "Enable large-table tool mode",
|
||
"attachments.toolModeMaxBytes": "Max file bytes for tool mode",
|
||
"attachments.toolModeMinRows": "Min rows to trigger tool mode",
|
||
"attachments.videoReplayCapChars": "Video replay cap chars",
|
||
"attachments.videoReplayCapHint": "Replay cap for query_video_attachment transcript results in historical context. Range 600..30000, default 4000.",
|
||
"attachments.videoTranscriptChunkHint": "Default chunk parameters used by query_video_attachment(task=transcript) when persisting transcript chunks for query_text_attachment retrieval.",
|
||
"attachments.videoTranscriptChunkOverlap": "Video transcript chunk overlap",
|
||
"attachments.videoTranscriptChunkSize": "Video transcript chunk size",
|
||
"audit.auditTable": "Audit Table",
|
||
"audit.columns": "Columns",
|
||
"audit.empty": "No data",
|
||
"audit.note": "Supports dual view: table + raw JSON.",
|
||
"audit.query": "Query",
|
||
"audit.rawJson": "Raw JSON",
|
||
"audit.result": "Result",
|
||
"audit.sessionIdPlaceholder": "session_id (optional)",
|
||
"audit.specialistSummaryHint": "Specialist-side tool execution and delivery summary (specialist -> core)",
|
||
"audit.title": "Audit & Trace",
|
||
"audit.traceTable": "Trace Table",
|
||
"auth.consoleUsernameHint": "Username and password; menus still follow your permissions.",
|
||
"auth.disabled": "Account is disabled",
|
||
"auth.invalid": "Login failed",
|
||
"auth.login": "Login",
|
||
"auth.loggingIn": "Signing in…",
|
||
"auth.logout": "Logout",
|
||
"auth.password": "Password",
|
||
"auth.username": "Username",
|
||
"auto.after_any_skill_tool_role_prompt_change_run_prewarm_imme": "After any skill/tool/role/prompt/MCP change, run prewarm immediately (syncs enabled MCP tools/list, then freezes the tool wire); restart for complex changes. System also auto-prewarms every 10 minutes.",
|
||
"auto.prewarm_running_in_background_refreshing_this_page_when_": "[prewarm] running in background; refreshing this page when finished…",
|
||
"boot.loadFailed": "Failed to load admin scripts",
|
||
"boot.loadFailedHint": "Confirm /admin/assets/app.js and /admin/assets/js/ are reachable.",
|
||
"boot.loading": "Loading admin console…",
|
||
"boot.loadingHint": "If this stays too long, check whether the network/proxy blocks assets.",
|
||
"brand.title": "oliver",
|
||
"chat.empty": "No messages yet",
|
||
"chat.error": "Request failed",
|
||
"chat.loading": "Loading…",
|
||
"chat.newSession": "New chat",
|
||
"chat.noSessions": "No sessions yet. Create one to start.",
|
||
"chat.placeholder": "Message…",
|
||
"chat.send": "Send",
|
||
"chat.sending": "Sending…",
|
||
"chat.sessions": "Sessions",
|
||
"common.admin": "Admin",
|
||
"common.all": "All",
|
||
"common.auto": "Auto",
|
||
"common.blacklist": "Blacklist",
|
||
"common.chinese": "Chinese",
|
||
"common.delete": "Delete",
|
||
"common.deleteFailed": "Delete failed",
|
||
"common.english": "English",
|
||
"common.error": "Error",
|
||
"common.forbidden": "You do not have access to this page.",
|
||
"common.mode": "Mode",
|
||
"common.notFound": "Not found",
|
||
"common.notLoggedIn": "Not logged in or session expired. Please log in again.",
|
||
"common.pageRemoved": "This admin page was removed in the product simplification pass.",
|
||
"common.remove": "Remove",
|
||
"common.requestFailed": "Request failed",
|
||
"common.selectType": "Please select a type",
|
||
"common.update": "Update",
|
||
"common.updateFailed": "Update failed",
|
||
"common.whitelist": "Whitelist",
|
||
"lang.switch": "中文",
|
||
"memory.applyFilters": "Apply Filters",
|
||
"memory.avgScore": "Average Score",
|
||
"memory.backend": "Backend",
|
||
"memory.cleanup": "Cleanup low-confidence",
|
||
"memory.clearFilters": "Clear Filters",
|
||
"memory.config": "Vector Config",
|
||
"memory.delete": "Delete",
|
||
"memory.enabled": "Enable vector retrieval",
|
||
"memory.filters": "Filters",
|
||
"memory.hitCount": "Hit Count",
|
||
"memory.hits": "Recent Hits",
|
||
"memory.itemCount": "Memory Items",
|
||
"memory.items": "Memory Items",
|
||
"memory.minConfidence": "Min write confidence",
|
||
"memory.noData": "No memory data",
|
||
"memory.openPlugins": "Open plugins page",
|
||
"memory.reindex": "Reindex vectors",
|
||
"memory.save": "Save Config",
|
||
"memory.stats": "Stats",
|
||
"memory.tenantId": "team ID / tenant_id (optional)",
|
||
"memory.title": "Memory Governance",
|
||
"memory.topSources": "Recent Sources",
|
||
"memory.topk": "TopK",
|
||
"memory.userId": "user_id (optional)",
|
||
"memory.wikiCard": "Wiki",
|
||
"memory.wikiPluginFound": "Installed: {name} v{version}",
|
||
"memory.wikiPluginMissing": "memory-wiki plugin not found",
|
||
"memory.wikiStatus": "Plugin status",
|
||
"memory.writerEnabled": "Enable auto write",
|
||
"models.agentBindingHelp": "Optional per-role profile; leave empty to use the global selection above.",
|
||
"models.apiKey": "API key",
|
||
"models.baseUrl": "Base URL",
|
||
"models.baseUrlPlaceholder": "Optional",
|
||
"models.bindingsExtraHint": "Profiles shared via user or team grants appear in the picker above; each member binds roles here themselves.",
|
||
"models.bindingsScopeHint": "Pickers only include built-in profiles, ones you created, and those granted by an admin (team-wide or to you)—the same set your account can see.",
|
||
"models.builtinLocked": "Built-in Ollama profile: mode is fixed; you can edit URL/model.",
|
||
"models.cannotDeleteBuiltin": "Cannot delete the built-in Ollama profile.",
|
||
"models.chatModelSelector": "Chat model selector",
|
||
"models.chatModelSelectorHint": "Control whether the model dropdown is visible on the Chat page.",
|
||
"models.createBtn": "Create",
|
||
"models.createNamePlaceholder": "Display name",
|
||
"models.dbPath": "SQLite file in use",
|
||
"models.delete": "Delete profile",
|
||
"models.deleteConfirm": "Delete this profile? This cannot be undone.",
|
||
"models.evalDownloadCsv": "Download full CSV",
|
||
"models.evalDownloadJson": "Download full JSON",
|
||
"models.evalLogs": "Recent eval logs",
|
||
"models.evalLogsPreview": "Preview",
|
||
"models.evalP95": "P95 latency",
|
||
"models.evalSuccess": "Success rate",
|
||
"models.evalToggle": "Agent Evaluation · click to expand (preview up to 100 rows)",
|
||
"models.evalTotal": "Samples",
|
||
"models.grantTenantBtn": "Entire team",
|
||
"models.grantsEmpty": "No per-user grants yet.",
|
||
"models.grantsGrantBtn": "Grant",
|
||
"models.grantsHint": "Only the administrator account can manage grants. Granted users see and can select this profile (shared API key).",
|
||
"models.grantsNavHint": "Control who can see and select shareable profiles (keys and endpoints are edited on Model Management).",
|
||
"models.grantsRevoke": "Revoke",
|
||
"models.grantsTitle": "Grant other users access to the selected profile",
|
||
"models.grantsUserHint": "Grant to one user:",
|
||
"models.labelApiProfile": "API profile",
|
||
"models.labelSpecialist": "Specialist",
|
||
"models.linkApiGrants": "Open API access grants",
|
||
"models.loadFailed": "Load failed; see error below.",
|
||
"models.membersTitle": "Model profiles visible to each member",
|
||
"models.mode": "Mode",
|
||
"models.mode.anthropic": "Anthropic",
|
||
"models.mode.google": "Google (Gemini)",
|
||
"models.mode.ollama": "Ollama",
|
||
"models.mode.openai": "OpenAI-compatible",
|
||
"models.mode.openai_responses": "OpenAI Responses",
|
||
"models.mode.rule": "Rule (no LLM)",
|
||
"models.model": "Model",
|
||
"models.newProfileDefault": "New profile",
|
||
"models.noEvalLogs": "No evaluation logs yet",
|
||
"models.noProfiles": "No LLM profiles.",
|
||
"models.ollamaHint": "Local Ollama defaults to http://127.0.0.1:11434; API key is usually empty.",
|
||
"models.openaiKeyHint": "Without a key, OPENAI_API_KEY from the environment may be used.",
|
||
"models.opsAiHint": "For v1 / expert mode: pick a specialist and bind an API profile.",
|
||
"models.opsAiTitle": "Internal API model config",
|
||
"models.phNameZh": "Chinese name (optional)",
|
||
"models.pickModel": "Profile",
|
||
"models.profileName": "Name",
|
||
"models.profileReadonlyHint": "This profile is shared by an administrator: you may select it for chat but cannot edit name, endpoint, or secret.",
|
||
"models.readonly": "Read-only: missing admin:tenant:write.",
|
||
"models.reasoningEffort": "Reasoning effort",
|
||
"models.reasoningEffortDefault": "Default",
|
||
"models.reasoningEffortHigh": "High",
|
||
"models.reasoningEffortLow": "Low",
|
||
"models.reasoningEffortMedium": "Medium",
|
||
"models.rememberKey": "Remember key (encrypted in DB)",
|
||
"models.revokeTenantGrant": "Revoke team",
|
||
"models.role.generalist": "Generalist",
|
||
"models.role.image": "Image",
|
||
"models.role.memory": "Memory Curator",
|
||
"models.role.ops": "Network ops",
|
||
"models.save": "Save",
|
||
"models.sectionActive": "Active profile",
|
||
"models.sectionApi": "API & secret",
|
||
"models.sectionBindings": "Agent ↔ profile bindings",
|
||
"models.sectionEval": "Agent Evaluation",
|
||
"models.sectionNew": "New profile",
|
||
"models.subtitle": "Model switching, bindings, and evaluation",
|
||
"models.tenantGrantOff": "Team: not granted",
|
||
"models.tenantGrantOn": "Team: granted",
|
||
"models.thinkMode": "Think mode (this API profile only)",
|
||
"models.thinkModeHint": "When on, replay full assistant reasoning_content for this profile only (default off).",
|
||
"models.toc.api": "API config",
|
||
"models.toc.bindings": "Bindings",
|
||
"models.toc.eval": "Eval",
|
||
"models.toc.opsAi": "Internal API",
|
||
"models.toc.overview": "Overview",
|
||
"models.useGlobal": "(use global)",
|
||
"models.vis.builtin": "Built-in",
|
||
"models.vis.global": "Global",
|
||
"models.vis.grantTenant": "Team grant",
|
||
"models.vis.grantUser": "User grant",
|
||
"models.vis.otherUser": "Other user",
|
||
"models.vis.owned": "Mine",
|
||
"models.warnKeyInDb": "A key exists in DB: empty field won’t overwrite until you enter a new key or uncheck remember.",
|
||
"nav.adminAudit": "Admin Audit",
|
||
"nav.apiGrants": "API access",
|
||
"nav.attachments": "Attachments",
|
||
"nav.audit": "Audit & Trace",
|
||
"nav.chat": "Chat",
|
||
"nav.group.governance": "Governance & audit",
|
||
"nav.group.models": "Models & plugins",
|
||
"nav.group.system": "System & runtime",
|
||
"nav.group.users": "Users & settings",
|
||
"nav.memory": "Memory",
|
||
"nav.models": "Models",
|
||
"nav.plugins": "Plugins",
|
||
"nav.profile": "User Info",
|
||
"nav.scheduledJobs": "Scheduled Jobs",
|
||
"nav.sessionMonitor": "Session Monitor",
|
||
"nav.skills": "Skills",
|
||
"nav.stack": "Runtime",
|
||
"nav.users": "Users",
|
||
"nav.workspacePaths": "Workspace paths",
|
||
"notice.noLogin": "v2 login enabled: internal network only",
|
||
"plugins.colBoundMcp": "Bound MCPs",
|
||
"plugins.colSpecialist": "Specialist",
|
||
"plugins.colTools": "tools (sum across servers)",
|
||
"plugins.fold.bindingDash": "[4] Specialist MCP binding board (auto)",
|
||
"plugins.fold.bindingDashHint": "Summarizes current binding draft vs installed MCP tools; specialists come from SPECIALISTS and mapping keys.",
|
||
"plugins.fold.bindingEdit": "[5] MCP specialist binding (edit)",
|
||
"plugins.fold.install": "[2] Install from Cursor JSON",
|
||
"plugins.fold.installCursor": "[2] Install from Cursor JSON",
|
||
"plugins.fold.installCursorHint": "Paste a Cursor mcp.json document with mcpServers, then Install. Export downloads the same shape for migration.",
|
||
"plugins.fold.installHint": "Paste Cursor mcpServers JSON, then Install.",
|
||
"plugins.fold.installed": "[3] Installed MCP servers ({n})",
|
||
"plugins.fold.migrateHint": "After install/config/uninstall, writes oclaw/_local/mcp_registry_migrated.json (Cursor mcpServers) for migration.",
|
||
"plugins.fold.toolPolicy": "[1] Tool policy & registered plugins ({n})",
|
||
"plugins.fold.toolPolicyHint": "Tool policy (concurrency / rounds / MCP·plugin toggles) and Python tool plugins",
|
||
"plugins.nextPage": "Next",
|
||
"plugins.noData": "No data",
|
||
"plugins.pageRange": "{start}–{end} of {total}",
|
||
"plugins.prevPage": "Prev",
|
||
"plugins.subtitle": "Grouped by feature, collapsed by default; tables paginate ({n}/page).",
|
||
"plugins.title": "Tool Plugins",
|
||
"plugins.toc.binding": "Bindings",
|
||
"plugins.toc.install": "Install",
|
||
"plugins.toc.instances": "Instances",
|
||
"plugins.toc.policy": "Policy",
|
||
"plugins.action.cancel": "Cancel",
|
||
"plugins.action.clear": "Clear",
|
||
"plugins.action.delete": "Delete",
|
||
"plugins.action.disable": "Disable",
|
||
"plugins.action.edit": "Edit",
|
||
"plugins.action.enable": "Enable",
|
||
"plugins.action.exportJson": "Export JSON",
|
||
"plugins.action.exportJsonTitle": "Download Cursor mcpServers snapshot for reinstall / migration",
|
||
"plugins.action.health": "Health",
|
||
"plugins.action.install": "Install",
|
||
"plugins.action.locate": "Locate",
|
||
"plugins.action.save": "Save",
|
||
"plugins.action.saveBinding": "Save Binding",
|
||
"plugins.action.saveToolPolicy": "Save Tool Policy",
|
||
"plugins.action.selectAll": "Select All",
|
||
"plugins.action.syncTools": "Sync Tools",
|
||
"plugins.binding.empty": "No MCP servers installed yet.",
|
||
"plugins.binding.hint": "Bind MCP servers to specialists (many-to-many).",
|
||
"plugins.binding.reverse": "Reverse view: server -> specialists",
|
||
"plugins.binding.specialist": "Specialist",
|
||
"plugins.col.action": "action",
|
||
"plugins.col.boundSpecialists": "bound specialists",
|
||
"plugins.col.commandUrl": "command / url",
|
||
"plugins.col.enabled": "enabled",
|
||
"plugins.col.health": "health",
|
||
"plugins.col.serverId": "server_id",
|
||
"plugins.col.tools": "tools",
|
||
"plugins.confirm.delete": "Delete {sid} from MCP registry?",
|
||
"plugins.edit.configHint": "Cursor server config (single mcpServers value)",
|
||
"plugins.edit.enabled": "Enabled",
|
||
"plugins.edit.title": "Edit MCP server",
|
||
"plugins.edit.titleNamed": "Edit MCP: {sid}",
|
||
"profile.avatar": "Avatar",
|
||
"profile.avatarHint": "PNG, JPEG, WebP, or GIF, up to 2 MB.",
|
||
"profile.chatPrefs": "Chat Preferences",
|
||
"profile.chooseImage": "Choose image",
|
||
"profile.createdAt": "Created at",
|
||
"profile.displayName": "Display name",
|
||
"profile.help": "Adjust display name, avatar, and account identifiers here. In chat, avatars are circular; the assistant uses the site logo.",
|
||
"profile.loadError": "Load failed",
|
||
"profile.memoryCurator": "Memory curator specialist",
|
||
"profile.memoryCuratorDisabled": "Disabled",
|
||
"profile.memoryCuratorEnabled": "Enabled",
|
||
"profile.memoryMode": "Memory mode",
|
||
"profile.memoryModeDefault": "Default (inject allowed)",
|
||
"profile.memoryModeStoreOnly": "Store only (no inject)",
|
||
"profile.openChat": "Open chat",
|
||
"profile.removeAvatar": "Remove avatar",
|
||
"profile.role": "Role",
|
||
"profile.save": "Save settings",
|
||
"profile.saved": "Saved",
|
||
"profile.tenantId": "Team ID",
|
||
"profile.uploadError": "Upload failed",
|
||
"profile.userId": "User ID",
|
||
"profile.username": "Username",
|
||
"scheduledJobs.all": "All",
|
||
"scheduledJobs.attentionTitle": "Needs attention",
|
||
"scheduledJobs.cancel": "Cancel",
|
||
"scheduledJobs.colActions": "actions",
|
||
"scheduledJobs.colDelivery": "delivery",
|
||
"scheduledJobs.colError": "error",
|
||
"scheduledJobs.colFailClass": "class",
|
||
"scheduledJobs.colFinished": "finished",
|
||
"scheduledJobs.colJob": "job",
|
||
"scheduledJobs.colLastRun": "last_run",
|
||
"scheduledJobs.colName": "name",
|
||
"scheduledJobs.colNextRun": "next_run",
|
||
"scheduledJobs.colPlaybook": "playbook",
|
||
"scheduledJobs.colRunStatus": "run status",
|
||
"scheduledJobs.colSchedule": "schedule",
|
||
"scheduledJobs.colSpecialist": "specialist",
|
||
"scheduledJobs.colStatus": "status",
|
||
"scheduledJobs.count": "{count} job(s)",
|
||
"scheduledJobs.create": "Create",
|
||
"scheduledJobs.createTitle": "Create job",
|
||
"scheduledJobs.delete": "Delete",
|
||
"scheduledJobs.deleteConfirm": "Delete this scheduled job?",
|
||
"scheduledJobs.deliveryWeixin": "WeChat",
|
||
"scheduledJobs.deliveryWhatsapp": "WhatsApp",
|
||
"scheduledJobs.edit": "Edit",
|
||
"scheduledJobs.editTitle": "Edit job",
|
||
"scheduledJobs.failClass.auth": "auth",
|
||
"scheduledJobs.failClass.cancelled": "cancelled",
|
||
"scheduledJobs.failClass.delivery": "delivery",
|
||
"scheduledJobs.failClass.mcp": "mcp/tool",
|
||
"scheduledJobs.failClass.overlap": "overlap skip",
|
||
"scheduledJobs.failClass.runtime": "runtime",
|
||
"scheduledJobs.failClass.stale": "stale clear",
|
||
"scheduledJobs.failClass.timeout": "timeout",
|
||
"scheduledJobs.fieldExpr": "Expression",
|
||
"scheduledJobs.fieldKind": "Kind",
|
||
"scheduledJobs.fieldName": "Name",
|
||
"scheduledJobs.fieldPrompt": "Prompt",
|
||
"scheduledJobs.fieldSchedule": "Schedule",
|
||
"scheduledJobs.fieldSpecialist": "Specialist",
|
||
"scheduledJobs.fieldWhatsapp": "WhatsApp chat_id",
|
||
"scheduledJobs.loading": "Loading…",
|
||
"scheduledJobs.menuTitle": "Job actions",
|
||
"scheduledJobs.noRuns": "No runs yet",
|
||
"scheduledJobs.pause": "Pause",
|
||
"scheduledJobs.phExpr": "cron / ISO time / seconds",
|
||
"scheduledJobs.phName": "Job name",
|
||
"scheduledJobs.phPrompt": "Prompt to run when due",
|
||
"scheduledJobs.phSpecialist": "e.g. generalist",
|
||
"scheduledJobs.phWhatsapp": "Optional group or DM chat_id",
|
||
"scheduledJobs.playbookNo": "reminder",
|
||
"scheduledJobs.playbookPartial": "recipe · {n} steps",
|
||
"scheduledJobs.playbookYes": "playbook · {n} steps",
|
||
"scheduledJobs.requiredFields": "name, prompt_text, and schedule_expr are required",
|
||
"scheduledJobs.resume": "Resume",
|
||
"scheduledJobs.runHistory": "Run history",
|
||
"scheduledJobs.runHistoryHint": "Recent runs (auto refresh)",
|
||
"scheduledJobs.runNow": "Run now",
|
||
"scheduledJobs.skippedOverlap": "Skipped (overlapping)",
|
||
"scheduledJobs.statsClasses": "Failure classes",
|
||
"scheduledJobs.statsFailRate": "Recent fail rate {pct}% ({failed} failed / {finished} finished)",
|
||
"scheduledJobs.statsJobsFailed": "Jobs last-failed: {n}",
|
||
"scheduledJobs.statsNone": "No failures in recent window",
|
||
"scheduledJobs.statsTitle": "Failure board",
|
||
"scheduledJobs.statusActive": "active",
|
||
"scheduledJobs.statusPaused": "paused",
|
||
"scheduledJobs.triggered": "Triggered.",
|
||
"scheduledJobs.updated": "Saved.",
|
||
"scheduledJobs.viewRuns": "View runs",
|
||
"scheduledJobs.weixinFixed": "Weixin fixed target: {id}",
|
||
"scheduledJobs.weixinMissing": "Weixin binding not found (administrator channel identity required)",
|
||
"secrets.migrateBtn": "Migrate now",
|
||
"secrets.migrateDone": "Migration done: settings={s}, profiles={p}",
|
||
"secrets.migrateForbidden": "Requires admin:tenant:write permission.",
|
||
"secrets.migrateHint": "Legacy b64-encoded secrets detected (weak protection). Set AIA_ASSISTANT_MASTER_KEY and migrate to a stronger encrypted format.",
|
||
"secrets.migrateNeedKey": "AIA_ASSISTANT_MASTER_KEY is not set; cannot migrate.",
|
||
"secrets.migrateNoop": "No legacy secrets found.",
|
||
"secrets.migrateTitle": "Secret migration",
|
||
"sessionMonitor.activeLogins30m": "Active logins (30m)",
|
||
"sessionMonitor.activeSessions30m": "Active sessions (30m)",
|
||
"sessionMonitor.closeDetail": "Close details",
|
||
"sessionMonitor.exportJson": "Export JSON",
|
||
"sessionMonitor.exportMd": "Export MD",
|
||
"sessionMonitor.filterSession": "Filter sessions",
|
||
"sessionMonitor.filterUser": "Filter users",
|
||
"sessionMonitor.messages": "Messages",
|
||
"sessionMonitor.noMessages": "No messages in this session.",
|
||
"sessionMonitor.onlyAdministrator": "This page is available to administrator only.",
|
||
"sessionMonitor.pageInfo": "Page {page} / {totalPages}",
|
||
"sessionMonitor.pageNext": "Next",
|
||
"sessionMonitor.pagePrev": "Prev",
|
||
"sessionMonitor.roleAll": "All",
|
||
"sessionMonitor.roleAssistant": "Assistant",
|
||
"sessionMonitor.roleFilter": "Role filter",
|
||
"sessionMonitor.roleTool": "Tool",
|
||
"sessionMonitor.roleUser": "User",
|
||
"sessionMonitor.selectUserFirst": "Select a user to view sessions.",
|
||
"sessionMonitor.sessions": "Sessions",
|
||
"sessionMonitor.totalTokensEst": "Total tokens (est)",
|
||
"sessionMonitor.totals": "Overview",
|
||
"sessionMonitor.userStats": "User stats",
|
||
"sessionMonitor.usersCount": "Users",
|
||
"sessionMonitor.viewAudit": "Open audit",
|
||
"sessionMonitor.viewDetail": "View details",
|
||
"skills.action.cancel": "Cancel",
|
||
"skills.action.clearCache": "Clear cache",
|
||
"skills.action.close": "Close",
|
||
"skills.action.create": "Create skill",
|
||
"skills.action.detail": "Detail",
|
||
"skills.action.disable": "Disable",
|
||
"skills.action.enable": "Enable",
|
||
"skills.action.exportSelfCheck": "Export self-check JSON",
|
||
"skills.action.exportSkillHealth": "Export skills self-check JSON",
|
||
"skills.action.failedOnly": "Only failed items",
|
||
"skills.action.install": "Install",
|
||
"skills.action.installLocal": "Install local dir",
|
||
"skills.action.installRegistry": "Install from registry",
|
||
"skills.action.installing": "Installing...",
|
||
"skills.action.latest": "Latest",
|
||
"skills.action.menuTitle": "Skill actions",
|
||
"skills.action.preview": "Preview",
|
||
"skills.action.refresh": "Refresh",
|
||
"skills.action.repairAllDeps": "Repair all deps",
|
||
"skills.action.repairDeps": "Repair deps",
|
||
"skills.action.repairing": "Repairing...",
|
||
"skills.action.retry": "Retry",
|
||
"skills.action.retryableOnly": "Only retryable failures",
|
||
"skills.action.run": "Run",
|
||
"skills.action.runSelfCheck": "Run self-check",
|
||
"skills.action.runSkillHealth": "Run skills self-check",
|
||
"skills.action.save": "Save",
|
||
"skills.action.saveBinding": "Save skill role binding",
|
||
"skills.action.saveTrace": "Save trace setting",
|
||
"skills.action.search": "Search",
|
||
"skills.action.testRun": "Test run...",
|
||
"skills.action.testRunArgs": "Test-run with args...",
|
||
"skills.action.toggleRawWired": "Toggle raw/wired",
|
||
"skills.action.traceExposure": "Trace exposure plan",
|
||
"skills.action.uninstall": "Uninstall",
|
||
"skills.col.action": "action",
|
||
"skills.col.code": "code",
|
||
"skills.col.count": "count",
|
||
"skills.col.description": "description",
|
||
"skills.col.detail": "detail",
|
||
"skills.col.details": "details",
|
||
"skills.col.directBind": "direct bind",
|
||
"skills.col.directSkills": "direct skills",
|
||
"skills.col.docsOnlyNames": "docs-only names",
|
||
"skills.col.effective": "effective",
|
||
"skills.col.enabled": "enabled",
|
||
"skills.col.errorCode": "error_code",
|
||
"skills.col.health": "health",
|
||
"skills.col.internal": "internal",
|
||
"skills.col.kind": "kind",
|
||
"skills.col.mcpConverted": "mcp converted",
|
||
"skills.col.mode": "mode",
|
||
"skills.col.name": "name",
|
||
"skills.col.namesPreview": "names preview",
|
||
"skills.col.otherTools": "other tools",
|
||
"skills.col.outputTruncated": "output_truncated",
|
||
"skills.col.parameters": "parameters",
|
||
"skills.col.path": "path",
|
||
"skills.col.raw": "raw",
|
||
"skills.col.readOnly": "read_only",
|
||
"skills.col.removedMcp": "removed mcp",
|
||
"skills.col.retry": "retry",
|
||
"skills.col.risk": "risk",
|
||
"skills.col.role": "role",
|
||
"skills.col.runtimeEntry": "runtime entry",
|
||
"skills.col.skill": "skill",
|
||
"skills.col.slug": "slug",
|
||
"skills.col.source": "source",
|
||
"skills.col.status": "status",
|
||
"skills.col.tags": "tags",
|
||
"skills.col.target": "target",
|
||
"skills.col.timestamp": "timestamp",
|
||
"skills.col.totalEffective": "total effective",
|
||
"skills.col.type": "type",
|
||
"skills.col.version": "version",
|
||
"skills.col.wired": "wired",
|
||
"skills.col.workspace": "workspace",
|
||
"skills.col.workspaceDocsOnly": "workspace docs-only",
|
||
"skills.col.workspaceResolved": "workspace resolved",
|
||
"skills.confirm.uninstall": "Uninstall skill \"{name}\"?",
|
||
"skills.docsTitle": "oclaw docs quick links:",
|
||
"skills.docsTraceTaxonomy": "- oclaw/docs/oclaw-trace-taxonomy.md (trace fields and stages)",
|
||
"skills.docsTroubleshooting": "- oclaw/docs/oclaw-skill-troubleshooting.md (install/runtime troubleshooting)",
|
||
"skills.fold.audit": "Install audit",
|
||
"skills.fold.binding": "[4] Skill role binding",
|
||
"skills.fold.bindingDash": "Role binding dashboard",
|
||
"skills.fold.bindingHint": "When enabled, the skills catalog is filtered per role: each role sees only skills bound to that role, plus skills under skills/_workspace/public/. Unbound non-public skills stay hidden.",
|
||
"skills.fold.create": "Create skill",
|
||
"skills.fold.diagnostics": "[5] Diagnostics",
|
||
"skills.fold.effective": "Effective skills (binding + MCP + tools)",
|
||
"skills.fold.health": "Skills health self-check",
|
||
"skills.fold.install": "[2] Install",
|
||
"skills.fold.installHint": "Install from ClawHub market, local dir / registry archive, or create a new skill.",
|
||
"skills.fold.installed": "[3] Installed skills ({n})",
|
||
"skills.fold.internalTools": "Internal tools preview",
|
||
"skills.fold.llmTools": "LLM tools preview",
|
||
"skills.fold.localRegistry": "Local dir / registry",
|
||
"skills.fold.market": "ClawHub market",
|
||
"skills.fold.mode": "[1] Mode",
|
||
"skills.fold.modeHint": "Prompt mode injects SKILL.md into the system prompt. Market provider is ClawHub.",
|
||
"skills.fold.toolsSelfCheck": "Tools self-check",
|
||
"skills.hint.bindingEnv": "Process env AIA_SKILL_ROLE_BINDING_ENABLED is set: it overrides the Admin/SQLite value at runtime. The checkbox reflects the effective (env) value. Remove or unset that variable on the oclaw process to use Admin only. (stored in DB: {stored}, effective: {effective}).",
|
||
"skills.hint.bindingPersist": "Checkboxes and per-role skill lists are not saved until you click Save skill role binding.",
|
||
"skills.hint.diffDiag": "Diff / diagnostics",
|
||
"skills.hint.expandToLoad": "Expand this section to load preview",
|
||
"skills.hint.expandToSelfCheck": "Expand this section to run self-check",
|
||
"skills.hint.internalTools": "Preview dynamically loaded builtin tools for a role (public shared + expert-scoped).",
|
||
"skills.hint.llmTools": "Preview the final tools injected to the model for a role (internal + MCP + role_mode + MCP specialist binding).",
|
||
"skills.hint.noSkills": "No installed skills yet.",
|
||
"skills.hint.rawWiredDiff": "raw vs wired diff (added/removed/changed)",
|
||
"skills.hint.skillHealth": "Run executable skill diagnostics and show failure code distribution.",
|
||
"skills.hint.skippedModules": "Skipped modules / factory errors",
|
||
"skills.hint.testRunArgs": "Input JSON args passed to the executable skill runtime.",
|
||
"skills.hint.toolsSelfCheck": "Run one-shot diagnostics across roles for internal/wired tools, role mode and permanent bans.",
|
||
"skills.hintLocalDir": "Local dir: directory must contain SKILL.md (absolute paths OK).",
|
||
"skills.hintRegistry": "Registry: zip/tar URL (file:// local URI supported).",
|
||
"skills.label.enableBinding": "Enable role binding (AIA_SKILL_ROLE_BINDING_ENABLED)",
|
||
"skills.label.promptMode": "Prompt mode (inject SKILL.md)",
|
||
"skills.label.role": "Role",
|
||
"skills.modal.install": "Skill installation",
|
||
"skills.modal.installFail": "Skill installation failed",
|
||
"skills.modal.installOk": "Skill installation success",
|
||
"skills.modal.testRun": "Skill test run",
|
||
"skills.modal.testRunNamed": "Test run: {name}",
|
||
"skills.ph.body": "SKILL.md body markdown",
|
||
"skills.ph.description": "description",
|
||
"skills.ph.limit": "limit",
|
||
"skills.ph.localDir": "local skill dir (contains SKILL.md)",
|
||
"skills.ph.marketSearch": "search skills (keyword)",
|
||
"skills.ph.name": "skill name",
|
||
"skills.ph.registry": "registry archive URL (zip/tar)",
|
||
"skills.subtitle": "Mode, install, installed list, role binding, and diagnostics — collapsed by default.",
|
||
"skills.title": "Skills",
|
||
"skills.toc.binding": "Binding",
|
||
"skills.toc.diagnostics": "Diagnostics",
|
||
"skills.toc.install": "Install",
|
||
"skills.toc.installed": "Installed",
|
||
"skills.toc.mode": "Mode",
|
||
"stack.alerts": "Alerts",
|
||
"stack.allRoles": "all roles",
|
||
"stack.cleanup": "Cleanup orphan workers",
|
||
"stack.cleanupDone": "Cleanup completed. Killed orphan processes: {count}",
|
||
"stack.cleanupNone": "No orphan processes found.",
|
||
"stack.clearByPolicy": "Clear by policy",
|
||
"stack.clearScanCache": "Clear scan cache",
|
||
"stack.configChangedPrewarm": "Config changed. Please run prewarm now (or restart).",
|
||
"stack.down": "stack down",
|
||
"stack.missingRequired": "Required services are not running. Start the stack first.",
|
||
"stack.missingServices": "Missing services: {services}",
|
||
"stack.mustCleanup": "Duplicate workers detected. Cleanup is required before continuing.",
|
||
"stack.noAlerts": "No anomalies detected.",
|
||
"stack.prewarmHistory": "Prewarm History (latest 20)",
|
||
"stack.prewarmNow": "Run prewarm now",
|
||
"stack.prewarmSubmitting": "[prewarm] submitting…",
|
||
"stack.prewarmTitle": "Prompt/Tool Prewarm",
|
||
"stack.prewarmedPrompts": "Prewarmed Prompts by Role",
|
||
"stack.prewarmedPromptsHint": "Shows prewarmed prompt content for specialists.",
|
||
"stack.reloadPrompts": "Reload prompts",
|
||
"stack.roleFilter": "Role filter",
|
||
"stack.scanCacheSubtitle": "{dir} · only clears history_entries_*.json and state_scan_*.json",
|
||
"stack.scanCacheTitle": "Scan cache files",
|
||
"stack.title": "Stack",
|
||
"stack.up": "stack up",
|
||
"status.running": "running",
|
||
"status.stopped": "stopped",
|
||
"table.action": "action",
|
||
"table.activeLogins30m": "active_logins(30m)",
|
||
"table.activeSessions30m": "active_sessions(30m)",
|
||
"table.channel": "channel",
|
||
"table.createdAt": "created_at",
|
||
"table.durationMs": "duration(ms)",
|
||
"table.enabled": "enabled",
|
||
"table.entryPoint": "entry_point",
|
||
"table.eventType": "event_type",
|
||
"table.externalUserId": "external_user_id",
|
||
"table.id": "id",
|
||
"table.inputAttachmentIds": "input_attachment_ids",
|
||
"table.name": "name",
|
||
"table.noOutputAttachment": "no_output_attachment",
|
||
"table.outputAttachmentIds": "output_attachment_ids",
|
||
"table.outputAttachmentUrls": "output_attachment_urls",
|
||
"table.parentSpanId": "parent_span_id",
|
||
"table.payload": "payload",
|
||
"table.pid": "pid",
|
||
"table.provider": "provider",
|
||
"table.reason": "reason",
|
||
"table.routeAttachmentIds": "route_attachment_ids",
|
||
"table.service": "service",
|
||
"table.sessionsCount": "sessions",
|
||
"table.spanId": "span_id",
|
||
"table.specialist": "specialist",
|
||
"table.status": "status",
|
||
"table.statusText": "status",
|
||
"table.timestamp": "timestamp",
|
||
"table.totalTokensEst": "total_tokens(est)",
|
||
"table.traceId": "trace_id",
|
||
"table.user": "user",
|
||
"table.userId": "user_id",
|
||
"table.username": "username",
|
||
"table.version": "version",
|
||
"tenants.allTenantsHint": "With multiple teams: “Logged-in team” is informational; the selected team in the dropdown is what you edit.",
|
||
"tenants.bindCodes": "Bind Codes",
|
||
"tenants.bindings": "Channel Bindings",
|
||
"tenants.chatLogin": "Web login",
|
||
"tenants.chatLoginNo": "No",
|
||
"tenants.chatLoginYes": "Yes (password set)",
|
||
"tenants.codeDeleteConfirm": "Delete this bind code?",
|
||
"tenants.codeDeleted": "Bind code deleted: {code}",
|
||
"tenants.codeOptional": "Code (optional, auto-generated if blank)",
|
||
"tenants.codeStatus": "Status",
|
||
"tenants.codeUnused": "Unused",
|
||
"tenants.codeUsed": "Used",
|
||
"tenants.codeUsedBy": "Used By",
|
||
"tenants.colScope": "Session marker",
|
||
"tenants.colTenantId": "Team ID",
|
||
"tenants.colTenantName": "Team name",
|
||
"tenants.create": "Create Team",
|
||
"tenants.createCode": "Create Bind Code",
|
||
"tenants.createPlaceholder": "Team name (default Team)",
|
||
"tenants.deleteCode": "Delete",
|
||
"tenants.deleteDisabledCurrent": "You cannot delete your current session team; log in with another team UUID on the login page first.",
|
||
"tenants.deleteDisabledLast": "At least one team must remain.",
|
||
"tenants.deleteTenant": "Delete team",
|
||
"tenants.deleteTenantConfirm": "Delete team “{name}”? All users, bindings, and data under it will be removed. This cannot be undone.",
|
||
"tenants.deleteUnbound": "Delete Unbound Users",
|
||
"tenants.deleteUnboundResult": "Unbound cleanup: deleted={deleted}, orphan={orphan}, bound={bound}, total={total}",
|
||
"tenants.deleted": "Deleted unbound users: {count}",
|
||
"tenants.errCannotDeleteCurrentTenant": "You cannot delete the team of your current session. Switch to another team first or use another account.",
|
||
"tenants.errLastTenant": "At least one team must remain.",
|
||
"tenants.errTenantDeleteMiss": "Delete had no effect (constraints may have blocked it). Check server logs.",
|
||
"tenants.noBindings": "No channel bindings under this team.",
|
||
"tenants.noSessionTenant": "Missing team in session. Please sign in again.",
|
||
"tenants.noTenants": "No teams found. Create one via bind flow or bootstrap script first.",
|
||
"tenants.noUsers": "No users under this team.",
|
||
"tenants.role": "Role",
|
||
"tenants.rowActions": "Actions",
|
||
"tenants.saved": "Configuration saved",
|
||
"tenants.scopeHint": "The team selector controls which team’s users, bindings, and bind codes are shown below. Accounts named administrator may switch and manage any team. The last column marks the team your login session was issued for.",
|
||
"tenants.scopeLoginHome": "Logged-in team",
|
||
"tenants.select": "Select Team",
|
||
"tenants.sessionTenantMissing": "The team for this session is not in the list. Sign in again or contact an admin.",
|
||
"tenants.sourceChannel": "Other channel",
|
||
"tenants.sourceConsole": "Console",
|
||
"tenants.sourceWecom": "WeCom",
|
||
"tenants.title": "Teams",
|
||
"tenants.userSource": "Source",
|
||
"tenants.users": "Users",
|
||
"theme.catppuccin": "Catppuccin Mocha",
|
||
"theme.deepseek": "DeepSeek",
|
||
"theme.dracula": "Dracula",
|
||
"theme.forest": "Forest",
|
||
"theme.github": "GitHub Dark",
|
||
"theme.label": "Color theme",
|
||
"theme.light": "Light",
|
||
"theme.netx": "NetX Dark",
|
||
"theme.nord": "Nord",
|
||
"title.adminAudit": "Admin Audit",
|
||
"title.apiGrants": "API access grants",
|
||
"title.attachments": "Attachments",
|
||
"title.audit": "Audit & Trace",
|
||
"title.memory": "Memory",
|
||
"title.models": "Model Management",
|
||
"title.plugins": "Plugins",
|
||
"title.profile": "User Info",
|
||
"title.scheduledJobs": "Scheduled Jobs",
|
||
"title.sessionMonitor": "Session Monitor",
|
||
"title.skills": "Skills",
|
||
"title.stack": "Runtime",
|
||
"title.users": "Users",
|
||
"title.workspacePaths": "Workspace paths (per user)",
|
||
"users.accountActions": "Account Actions",
|
||
"users.accountActive": "Active",
|
||
"users.accountDelete": "Delete Account",
|
||
"users.accountId": "Account ID",
|
||
"users.accountLoadHint": "After selecting a user, the table lists bindings and instances. Click “Load into form” to edit, then fill Bot Secret and save (no auto-fill).",
|
||
"users.accountModeExpert": "Current account mode: expert ({specialist})",
|
||
"users.accountName": "Name",
|
||
"users.accountSave": "Save Account",
|
||
"users.botIdRequired": "Bot ID is required",
|
||
"users.clearBotSecret": "Clear bot secret",
|
||
"users.colActive": "Active",
|
||
"users.colSetRole": "Set role",
|
||
"users.colUser": "User",
|
||
"users.create": "Create User",
|
||
"users.createNamePlaceholder": "Name (login id, unique)",
|
||
"users.createNameRequired": "Enter a name.",
|
||
"users.delete": "Delete",
|
||
"users.deleteConfirm": "Delete this user? This cannot be undone.",
|
||
"users.disable": "Disable",
|
||
"users.enable": "Enable",
|
||
"users.hasBotSecret": "Bot secret set",
|
||
"users.loadForm": "Load into form",
|
||
"users.needUserRead": "admin:user:read is required to view and edit the user list.",
|
||
"users.noBindingsForUser": "No WeCom binding or saved instance yet; after the user binds on WeChat, a row appears—fill secrets and save.",
|
||
"users.noTenant": "Sign in first and choose a team scope",
|
||
"users.passwordOptional": "New password (optional)",
|
||
"users.search": "Search users",
|
||
"users.title": "User Management",
|
||
"users.update": "Update",
|
||
"users.wecomAccounts": "WeCom instances (named, multiple per user)",
|
||
"users.wecomBotId": "Bot ID",
|
||
"users.wecomBotSecret": "Bot Secret",
|
||
"users.wecomInstanceName": "Instance name",
|
||
"users.wecomUserEmpty": "Click a user row in the table above",
|
||
"users.wecomUserLabel": "User",
|
||
"wa.accessHint": "Default blacklist mode: unauthorized users go to Pending; denied users go to blacklist/denied list and can be whitelisted.",
|
||
"wa.accessTitle": "WhatsApp access control",
|
||
"wa.addContact": "Add contact",
|
||
"wa.addFailed": "Add failed",
|
||
"wa.addWhitelist": "Whitelist",
|
||
"wa.alertGroupHint": "NetX key alerts go to this group; independent of chat sessions.",
|
||
"wa.alertGroupTitle": "WhatsApp alert group",
|
||
"wa.approve": "Approve",
|
||
"wa.bindFailed": "Bind failed",
|
||
"wa.bindSpecialist": "Bind specialist",
|
||
"wa.blacklistMode": "Blacklist mode (deny by default)",
|
||
"wa.channelExpertOnly": "Channels are expert-only; pick the default specialist.",
|
||
"wa.colAction": "Action",
|
||
"wa.colDeniedAt": "Denied at",
|
||
"wa.colMessage": "Message",
|
||
"wa.colName": "Name",
|
||
"wa.colPhone": "Phone",
|
||
"wa.colTime": "Time",
|
||
"wa.colType": "Type",
|
||
"wa.contactNotFound": "Contact not found",
|
||
"wa.deniedHint": "Denied users are blacklisted and listed here; use Whitelist to restore access.",
|
||
"wa.deniedTitle": "Denied / blacklist records",
|
||
"wa.deny": "Deny",
|
||
"wa.filter": "Filter",
|
||
"wa.lang": "Lang",
|
||
"wa.messageLang": "Message lang",
|
||
"wa.mode": "Mode",
|
||
"wa.namePlaceholder": "Display name (optional)",
|
||
"wa.noAlertGroup": "No alert group bound",
|
||
"wa.noContacts": "No contacts",
|
||
"wa.noneDenied": "None",
|
||
"wa.nonePending": "None",
|
||
"wa.pendingTitle": "Pending requests",
|
||
"wa.phonePlaceholder": "Phone, e.g. +8615601877957",
|
||
"wa.pickPending": "Pick from pending requests…",
|
||
"wa.saveBinding": "Save binding",
|
||
"wa.saveConfig": "Save config",
|
||
"wa.selectGroup": "Select group…",
|
||
"wa.specialist": "Specialist",
|
||
"wa.testPush": "Test push",
|
||
"wa.whitelistMode": "Whitelist mode (allow by default)",
|
||
"wa.sessionTitle": "WhatsApp device session",
|
||
"wa.sessionHint": "Show online status; scan to bind or clear the local WhatsApp Web session.",
|
||
"wa.sessionRefresh": "Refresh",
|
||
"wa.sessionStart": "Start sidecar",
|
||
"wa.sessionStop": "Stop sidecar",
|
||
"wa.sessionBind": "Scan to bind",
|
||
"wa.sessionRebind": "Re-scan bind",
|
||
"wa.sessionUnbind": "Unbind device",
|
||
"wa.sessionUnbindConfirm": "Stop sidecar and delete local WhatsApp auth (state/auth). You must scan again to rebind. Continue?",
|
||
"wa.sessionRebindConfirm": "Clear the old session and show a new QR code. Continue?",
|
||
"wa.sessionNotInstalled": "Sidecar not installed. Run whatsapp_install.ps1 first.",
|
||
"wa.sessionScanHint": "On your phone: WhatsApp → Linked devices → Link a device, then scan the QR below. Codes expire in about 20s; this page auto-refreshes to the latest one.",
|
||
"wa.sessionQrWaiting": "Waiting for QR…",
|
||
"wa.sessionQrStale": "This QR may have expired. Waiting for a new one…",
|
||
"wa.lifecycle.unbound": "Not bound",
|
||
"wa.lifecycle.bound_stopped": "Bound (sidecar stopped)",
|
||
"wa.lifecycle.bound_offline": "Bound (offline / reconnecting)",
|
||
"wa.lifecycle.online": "Online",
|
||
"wa.lifecycle.awaiting_scan": "Awaiting scan",
|
||
"wa.lifecycle.logged_out": "Logged out (rebind required)",
|
||
"wa.lifecycle.connecting": "Connecting",
|
||
"wa.lifecycle.needs_rebind": "Session invalid (re-scan required)",
|
||
"wa.sessionPolling": "Refreshing status…",
|
||
"wa.sessionNeedsRebind": "WhatsApp rejected the stored session (e.g. disconnect=405). Click Re-scan bind, or remove the old oclaw linked device on your phone first.",
|
||
"wa.sessionPairingFail": "WhatsApp rejected pairing before a QR (often 405). Retrying with fresh keys; if it keeps failing, check proxy/DNS then click Scan to bind.",
|
||
"wa.sessionNetworkFail": "Cannot reach WhatsApp Web (certificate/timeout/ECONNRESET). Clash fake-ip is a common cause. Set HTTPS_PROXY or AIA_WHATSAPP_PROXY_URL to your local mixed-port proxy, then start the sidecar again.",
|
||
"wa.sessionRunnerWaiting": "Sidecar process is up, but Baileys has not written status yet (npx hang or missing proxy). Wait a bit, or check data/logs/whatsapp_sidecar.log.",
|
||
"wecom.autoBind": "Auto bind on first message",
|
||
"wecom.autoBindRole": "Auto bind role",
|
||
"wecom.autoBindTenant": "Auto bind team",
|
||
"wecom.botId": "Bot ID",
|
||
"wecom.botSecret": "Bot Secret",
|
||
"wecom.title": "WeCom Config",
|
||
"wecom.unbind": "Unbind WeCom",
|
||
"wecom.unbindConfirm": "Clear local WeCom config and all WeCom bindings/sessions?",
|
||
"wecom.unbindDone": "WeCom unbound. identities={ident}, sessions={sess}",
|
||
"workspacePaths.allowAny": "Allow any path (high risk)",
|
||
"workspacePaths.allowAnyHint": "Applies only to built-in workspace tools (read_file / glob, etc.); it does not unlock MCP filesystem or auto-mount whole disks for MCP. List directories you need in “Extra roots” or AIA_WORKSPACE_EXTRA_ROOTS.",
|
||
"workspacePaths.allowHighTools": "Allow high-risk public tools (global)",
|
||
"workspacePaths.allowHighToolsHint": "When enabled, high-risk public tools (run_command / write_file / edit_file, etc.) become model-visible (equivalent to AIA_PUBLIC_TOOLS_ALLOW_HIGH=1).",
|
||
"workspacePaths.extraRoots": "Extra roots (| separated)",
|
||
"workspacePaths.fromDb": "Saved in database",
|
||
"workspacePaths.help": "Per-user extra absolute roots (besides AIA_WORKSPACE_ROOT / project root). Use | as separator, e.g. D:\\\\|E:\\\\repos\\\\other. Merged with gateway env AIA_WORKSPACE_EXTRA_ROOTS. These roots are enforced for built-in workspace tools and, for this user’s chat sessions, appended to the official @modelcontextprotocol/server-filesystem process argv.",
|
||
"workspacePaths.load": "Load",
|
||
"workspacePaths.save": "Save",
|
||
"workspacePaths.selfOnly": "You can only view and edit your own workspace path policy (not other users).",
|
||
"workspacePaths.status": "Status",
|
||
"workspacePaths.tenant": "Team",
|
||
"workspacePaths.user": "User",
|
||
};
|