ProfileSettings reaches zero: api keys, profile, voice, dock, languages and the model defaults. Language names now come from Intl.DisplayNames rather than the catalog. The runtime already knows "German" in English and "alemao" in Portuguese, so 28 names would have been 56 hand-written entries that Intl gets right for free -- including for locales not shipped yet. Same reasoning D7 gives for dates and numbers. The tag LIST stays hardcoded: which languages you may claim to speak is a product choice. ApiKeys had toLocaleDateString(undefined, ...), which followed the BROWSER locale -- the exact contradiction D7 describes. It uses useFormat().date now. Its revoked-key toggle hand-rolled a plural with a ternary on n === 1; that is a real plural entry now. Scanner: an Authorization header value like "Bearer <token>" is not a sentence. Excluded by auth-scheme prefix; verified the delta is exactly the four such credentials across both remaining areas.
349 lines
12 KiB
JSON
349 lines
12 KiB
JSON
{
|
||
"common": {
|
||
"save": "Save",
|
||
"saving": "Saving...",
|
||
"cancel": "Cancel"
|
||
},
|
||
"settings": {
|
||
"profile": {
|
||
"userData": {
|
||
"email": "Email",
|
||
"username": "Username",
|
||
"name": "Name",
|
||
"namePlaceholder": "Your name",
|
||
"updated": "Profile updated",
|
||
"updateFailed": "Failed to update profile",
|
||
"selectImage": "Please select an image file",
|
||
"imageTooLarge": "Image must be smaller than 384KB"
|
||
},
|
||
"apiKeys": {
|
||
"intro": "An API key signs in as you, without a password and without expiring. One key works everywhere — a key is not tied to an app. Giving each device its own is only so you can cut one off without touching the rest. Send it as",
|
||
"loading": "Loading keys…",
|
||
"mintedTitle": "Key for “{{name}}” — shown once",
|
||
"savedIt": "I’ve saved it",
|
||
"copyKey": "Copy key",
|
||
"copied": "Key copied",
|
||
"copyFailed": "Could not copy — select and copy manually",
|
||
"newKey": "New key",
|
||
"namePlaceholder": "iPhone, Music app, laptop CLI…",
|
||
"create": "Create",
|
||
"createFailed": "Could not create the key",
|
||
"noneYet": "No keys yet.",
|
||
"noneInUse": "No keys in use.",
|
||
"revoked": "revoked",
|
||
"expired": "expired",
|
||
"lastUsed": "last used {{date}}",
|
||
"neverUsed": "never used",
|
||
"forget": "Remove this record",
|
||
"forgetFailed": "Could not remove it",
|
||
"revoke": "Revoke",
|
||
"revokeDone": "Revoked — anything using that key is signed out",
|
||
"revokeFailed": "Could not revoke",
|
||
"hideDead": "Hide revoked and expired",
|
||
"showDead": {
|
||
"one": "Show {{count}} revoked or expired key",
|
||
"other": "Show {{count}} revoked or expired keys"
|
||
}
|
||
},
|
||
"voice": {
|
||
"label": "Voice",
|
||
"refresh": "Refresh voices",
|
||
"serverDefault": "Server default",
|
||
"hint": "Choose a voice for text-to-speech. Leave as server default to use the admin-configured voice.",
|
||
"stop": "Stop",
|
||
"listen": "Listen"
|
||
},
|
||
"dock": {
|
||
"visible": "Visible",
|
||
"hidden": "Hidden",
|
||
"dragToShow": "Drag items here to show in dock",
|
||
"allVisible": "All items visible",
|
||
"reset": "Reset to defaults"
|
||
},
|
||
"languages": {
|
||
"spokenLabel": "Languages you speak",
|
||
"addLanguage": "Add a language...",
|
||
"defaultLabel": "Default language",
|
||
"defaultHint": "Used for UI localization.",
|
||
"translateToLabel": "Translate to",
|
||
"translateToHint": "Target language when translating content you don't speak."
|
||
},
|
||
"changePassword": {
|
||
"currentPasswordLabel": "Current Password",
|
||
"currentPasswordPlaceholder": "Current password",
|
||
"newPasswordLabel": "New Password",
|
||
"newPasswordPlaceholder": "New password",
|
||
"confirmPasswordLabel": "Confirm New Password",
|
||
"confirmPasswordPlaceholder": "Confirm new password",
|
||
"changeButton": "Change Password",
|
||
"changingButton": "Changing...",
|
||
"passwordChanged": "Password changed",
|
||
"passwordChangeFailed": "Failed to change password"
|
||
},
|
||
"models": {
|
||
"defaultModel": "Default Model",
|
||
"sameAsChat": "Same as chat default",
|
||
"taskDefaultsSaved": "Task defaults saved",
|
||
"saveFailed": "Failed to save settings",
|
||
"defaultChat": "Default Chat Model",
|
||
"defaultChatHint": "Used when starting a new chat from the home screen",
|
||
"defaultProject": "Default Project Model",
|
||
"defaultProjectHint": "Used when starting a new chat inside a project dashboard",
|
||
"defaultTask": "Default Task Model",
|
||
"defaultTaskHint": "Used when running tasks from the file browser",
|
||
"aiDefaultsSaved": "AI model defaults saved"
|
||
}
|
||
},
|
||
"sections": {
|
||
"profile": {
|
||
"label": "Profile",
|
||
"hint": "avatar, name, email",
|
||
"description": "Avatar, name, and email"
|
||
},
|
||
"changePassword": {
|
||
"label": "Change password",
|
||
"description": "Update your password"
|
||
},
|
||
"apiKeys": {
|
||
"label": "API keys",
|
||
"hint": "keys that sign in as you",
|
||
"description": "Keys that sign in as you, revocable one at a time"
|
||
},
|
||
"languages": {
|
||
"label": "Languages",
|
||
"hint": "spoken and translation",
|
||
"description": "Spoken, default, and translation"
|
||
},
|
||
"voice": {
|
||
"label": "Voice",
|
||
"hint": "text-to-speech",
|
||
"description": "Text-to-speech voice preference"
|
||
},
|
||
"dock": {
|
||
"label": "Dock",
|
||
"hint": "choose and reorder",
|
||
"description": "Choose and reorder dock items"
|
||
},
|
||
"myModels": {
|
||
"label": "My Models",
|
||
"description": "Show or hide models for yourself"
|
||
},
|
||
"channelModels": {
|
||
"label": "Channel Models",
|
||
"description": "Models reachable by non-owner accounts"
|
||
},
|
||
"defaultModels": {
|
||
"label": "Default Models",
|
||
"description": "Default models for chat, projects, and tasks"
|
||
},
|
||
"providers": {
|
||
"label": "Providers",
|
||
"hint": "harnesses",
|
||
"description": "Remote and local AI providers"
|
||
},
|
||
"tts": {
|
||
"label": "Text to Speech",
|
||
"description": "TTS provider and voice"
|
||
},
|
||
"stt": {
|
||
"label": "Speech to Text",
|
||
"description": "Whisper server URL"
|
||
},
|
||
"ocr": {
|
||
"label": "OCR",
|
||
"description": "Vision model for text extraction"
|
||
},
|
||
"maintenance": {
|
||
"label": "Rebuild & restart",
|
||
"hint": "maintenance",
|
||
"description": "Load changes without a terminal"
|
||
},
|
||
"smtp": {
|
||
"label": "SMTP",
|
||
"hint": "outgoing mail",
|
||
"description": "Email delivery provider"
|
||
},
|
||
"googleOauth": {
|
||
"label": "Google OAuth",
|
||
"description": "Client ID and secret for Google APIs"
|
||
},
|
||
"apify": {
|
||
"label": "Apify",
|
||
"description": "API token for web scraping actors"
|
||
},
|
||
"davSync": {
|
||
"label": "Calendar & Contacts sync",
|
||
"hint": "app passwords",
|
||
"description": "Per-device passwords for CalDAV/CardDAV clients"
|
||
},
|
||
"accounts": {
|
||
"label": "Accounts",
|
||
"hint": "users",
|
||
"description": "Who has access, and as what"
|
||
},
|
||
"permissions": {
|
||
"label": "Permissions",
|
||
"description": "What each role can reach"
|
||
}
|
||
},
|
||
"searchPlaceholder": "Search settings…",
|
||
"selectSection": "Select a section",
|
||
"groups": {
|
||
"models": "Models",
|
||
"defaults": "Defaults",
|
||
"providers": "Providers",
|
||
"ai": "AI",
|
||
"maintenance": "Maintenance",
|
||
"email": "Email"
|
||
},
|
||
"nav": {
|
||
"profile": "Profile",
|
||
"ai": "AI",
|
||
"system": "System",
|
||
"integrations": "Integrations",
|
||
"users": "Users"
|
||
},
|
||
"ai": {
|
||
"noModels": "No models available. Configure API keys in Providers.",
|
||
"dragToShow": "Drag models here to show",
|
||
"allVisible": "All models visible",
|
||
"dragToEnable": "Drag models here to enable",
|
||
"allEnabled": "All models enabled",
|
||
"visible": "Visible",
|
||
"hidden": "Hidden",
|
||
"enabled": "Enabled",
|
||
"disabled": "Disabled",
|
||
"refresh": "Refresh models from providers",
|
||
"refreshed": "Models refreshed",
|
||
"refreshFailed": "Failed to refresh models"
|
||
},
|
||
"integrations": {
|
||
"enterprise": "Enterprise",
|
||
"personal": "Personal"
|
||
}
|
||
},
|
||
"header": {
|
||
"userMenu": {
|
||
"profile": "Profile",
|
||
"systemSettings": "System Settings",
|
||
"signOut": "Sign Out",
|
||
"ai": "AI",
|
||
"integrations": "Integrations",
|
||
"userManagement": "User Management"
|
||
},
|
||
"tabName": "Tab name",
|
||
"tabNameHint": "Click to rename this tab — clear it to go back to the page name",
|
||
"logoAlt": "Officer",
|
||
"navigation": "Navigation",
|
||
"jobsRunning": "Running job",
|
||
"jobsNothingRunning": "Nothing running",
|
||
"jobsQueued": "Queued jobs"
|
||
},
|
||
"nav": {
|
||
"home": "Home",
|
||
"files": "Files",
|
||
"chat": "Chat",
|
||
"commandHq": "Command HQ",
|
||
"editor": "Editor",
|
||
"jobs": "Jobs",
|
||
"terminal": "Terminal",
|
||
"browser": "Browser",
|
||
"monitor": "Monitor",
|
||
"activity": "Activity",
|
||
"dashboards": "Dashboards",
|
||
"sendOff": "SendOff",
|
||
"calendar": "Calendar",
|
||
"contacts": "Contacts",
|
||
"appStore": "App store",
|
||
"marketplace": "Marketplace"
|
||
},
|
||
"theme": {
|
||
"pillTitle": "Theme: {{name}} · ctrl+shift+←/→ cycle · ctrl+shift+space browse · ctrl+shift+f {{starAction}}",
|
||
"pillLabel": "Theme: {{name}}",
|
||
"star": "star",
|
||
"unstar": "unstar",
|
||
"cycleHint": "ctrl+shift+←/→ cycle · ctrl+shift+space browse",
|
||
"everyShortcutHint": "ctrl+? for every shortcut",
|
||
"favouritesOnly": "Favourites only ({{count}})",
|
||
"favourites": "Favourites ({{count}})",
|
||
"noFavourites": "No favourites yet — star one with the button on its row.",
|
||
"starNamed": "Star {{name}}",
|
||
"unstarNamed": "Unstar {{name}}",
|
||
"addToFavourites": "Add to favourites",
|
||
"removeFromFavourites": "Remove from favourites",
|
||
"addToFavouritesKey": "Add to favourites (f)",
|
||
"removeFromFavouritesKey": "Remove from favourites (f)",
|
||
"active": "active",
|
||
"browseHint": "j/k or ↑/↓ move · l or → preview · f star · h or ← reset · enter keep · esc cancel"
|
||
},
|
||
"spotlight": {
|
||
"placeholder": "Go to…",
|
||
"noResults": "Nothing matches “{{query}}”."
|
||
},
|
||
"shortcutsModal": {
|
||
"title": "Keyboard shortcuts",
|
||
"hint": "Ctrl+? · Esc to close"
|
||
},
|
||
"screenError": {
|
||
"title": "This screen failed to render",
|
||
"description": "Nothing was lost — this is a display failure, not a data one. Agent transcripts, jobs and files are untouched.",
|
||
"unknownError": "Unknown error",
|
||
"tryAgain": "Try again",
|
||
"reload": "Reload",
|
||
"goHome": "Go home",
|
||
"resetHint": "If it fails again in the same place, a saved panel layout is the usual cause. Resetting puts every screen’s panes back to their defaults.",
|
||
"dashboardsSafe": "Your dashboards are not touched.",
|
||
"resetting": "Resetting…",
|
||
"resetConfirm": "Yes — reset every screen layout",
|
||
"reset": "Reset screen layouts"
|
||
},
|
||
"rescan": {
|
||
"label": "Rescan items",
|
||
"title": "Rescan officer-items (apply changes without restarting)",
|
||
"failed": "Failed to rescan items",
|
||
"done": "Rescanned items — {{summary}}",
|
||
"counts": {
|
||
"tasks": {
|
||
"one": "{{count}} task",
|
||
"other": "{{count}} tasks"
|
||
},
|
||
"agents": {
|
||
"one": "{{count}} agent",
|
||
"other": "{{count}} agents"
|
||
},
|
||
"tools": {
|
||
"one": "{{count}} tool",
|
||
"other": "{{count}} tools"
|
||
},
|
||
"skills": {
|
||
"one": "{{count}} skill",
|
||
"other": "{{count}} skills"
|
||
},
|
||
"processes": {
|
||
"one": "{{count}} process",
|
||
"other": "{{count}} processes"
|
||
},
|
||
"affordances": {
|
||
"one": "{{count}} affordance",
|
||
"other": "{{count}} affordances"
|
||
}
|
||
},
|
||
"newChatsOnly": "Applies to new chats — an open one keeps what it started with.",
|
||
"noDescription": {
|
||
"one": "{{count}} skill has no description, so no agent is offered it.",
|
||
"other": "{{count}} skills have no description, so no agent is offered them."
|
||
}
|
||
},
|
||
"bugReport": {
|
||
"label": "Report a bug",
|
||
"title": "Report a Bug",
|
||
"describePlaceholder": "Describe what went wrong...",
|
||
"screenshot": "Screenshot",
|
||
"noScreenshot": "No screenshot captured",
|
||
"collectedNote": "Console logs, browser info, and recent API errors are collected automatically.",
|
||
"submitted": "Bug report submitted",
|
||
"failed": "Failed to submit bug report",
|
||
"submit": "Submit"
|
||
}
|
||
}
|