feat: update analytics components and add automation translations

This commit is contained in:
Rotimi Best
2026-03-13 09:53:05 +01:00
parent c532b2e33f
commit fe75771d25
22 changed files with 1096 additions and 202 deletions
@@ -643,6 +643,7 @@
"audience": "Audience",
"media": "Media",
"setup": "Setup",
"automation": "Automation",
"help": "Help",
"settings": "Settings",
"early_adopter": "Become an Early Adopter",
@@ -2110,6 +2111,74 @@
"enterprise_required": "This feature requires an Enterprise plan."
},
"automation": {
"title": "Automation",
"subtitle": "Connect MCP clients now, with Zapier and the public API following on the same org-scoped key system.",
"coming_soon": "Coming soon",
"overview": {
"title": "Automation access",
"description": "Create org-scoped automation keys, connect supported clients, and keep all machine access tied back to this organization."
},
"permissions": {
"disabled_title": "Read-only access",
"disabled_description": "Only organization admins can create, rotate, or revoke automation keys. Teachers can review the setup instructions here."
},
"tabs": {
"mcp": "MCP",
"zapier": "Zapier",
"api": "API"
},
"clients": {
"claude_code": "Claude Code",
"codex": "Codex",
"cursor": "Cursor"
},
"keys": {
"active": "Active",
"revoked": "Revoked",
"rotate": "Rotate",
"revoke": "Revoke",
"empty_title": "No MCP keys yet",
"empty_description": "Create the first org-scoped MCP key to connect Claude Code, Codex, or Cursor.",
"created_at_label": "Created:",
"last_used_label": "Last used:",
"never_used": "Never",
"scopes_label": "Scopes:",
"revoke_confirm": "Revoke this automation key?",
"rotate_confirm": "Rotate this automation key?"
},
"mcp": {
"keys": {
"title": "MCP keys",
"description": "These keys authenticate the current organization when an MCP client calls ClassroomIO through `@cio/mcp`.",
"generate": "Generate MCP key",
"scope_badge": "Draft create/read/update/publish",
"secret_once": "This secret is shown once. Copy it into your MCP client now."
},
"setup": {
"title": "Client setup",
"description": "Use one org-scoped key per integration. If a key is rotated or revoked, the client stops working until the new secret is configured.",
"claude_code_description": "Registers `@cio/mcp` with Claude Code using the generated org-scoped key.",
"codex_description": "Adds the ClassroomIO MCP server to Codex with the same org-scoped key.",
"cursor_description": "Paste this into `~/.cursor/mcp.json` or your workspace MCP config."
},
"flows": {
"title": "Typical flows",
"description": "The agent owns reasoning and structure. ClassroomIO only accepts normalized course payloads, saves drafts, and publishes on request.",
"prompt_title": "Prompt to draft",
"prompt_description": "The user asks for a course, the agent structures it, then `create_course_draft` saves it into ClassroomIO before any publish step.",
"pdf_title": "PDF to draft",
"pdf_description": "The agent reads the PDF externally, restructures it into sections and lessons, then sends the normalized draft into ClassroomIO.",
"review_title": "Review to publish",
"review_description": "The user asks for changes, the agent updates the draft, and publish only happens after explicit approval."
},
"architecture": {
"title": "Architecture",
"description": "The MCP client and ClassroomIO API are separate trust boundaries. The org-scoped automation key authenticates the client, and the API remains the source of truth for validation and persistence."
}
}
},
"lms_navigation": {
"home": "Home",
"my_learning": "My Learning",
@@ -2151,6 +2220,11 @@
"success_update": "Updated successfully",
"success_delete": "Deleted successfully",
"error_update": "Failed to update",
"automation": {
"created": "Automation key created. Save it now because the full secret is only shown once.",
"rotated": "Automation key rotated. Save the new secret now because it will not be shown again.",
"revoked": "Automation key revoked."
},
"token_auth": {
"created": "Signing secret created. Save it now—it won't be shown again.",
"rotated": "Signing secret rotated. Save the new secret—it won't be shown again.",
@@ -2390,6 +2464,24 @@
"course_tag": "Specialization"
},
"invite": {
"organization": {
"page_title": "Join {orgName} on ClassroomIO",
"role_label": "Role: {role}",
"email_label": "Invited email: {email}",
"join_button": "Join Organization",
"messages": {
"email_mismatch": "You are logged in with a different email from this invite.",
"expired": "This invite link has expired.",
"revoked": "This invite link has been revoked.",
"accepted": "This invite has already been used.",
"invalid": "This invite link is not valid.",
"joined": "Joined organization",
"join_failed": "Failed to join organization"
}
}
},
"content": {
"heading": "Internationalization in SvelteKit",
"toggle_label": "Select Preferred Language"