{
  "settings": {
    "nav": {
      "searchLabel": "Search settings",
      "noMatches": "No matching settings",
      "groups": {
        "dev": "Development"
      },
      "sections": {
        "account": {
          "description": "Profile, login and connected accounts"
        },
        "appearance": {
          "label": "Preferences",
          "description": "Theme, language, chat and privacy"
        },
        "general": {
          "label": "General",
          "description": "Name, logo and connected accounts"
        },
        "members": {
          "description": "Team access and invitations"
        },
        "notifications": {
          "description": "Email alerts and recaps"
        },
        "attachments": {
          "label": "Attachments",
          "description": "Uploaded files"
        },
        "billing": {
          "description": "Plans, invoices and subscription"
        },
        "usage": {
          "description": "Quotas and usage history"
        },
        "usage-alerts": {
          "description": "Threshold alerts for feature usage"
        },
        "credits": {
          "description": "AI credit balance and top-ups"
        },
        "webhooks": {
          "description": "Endpoints and delivery history"
        },
        "logs": {
          "description": "Integration events"
        },
        "dev": {
          "label": "Dev",
          "description": "Replay onboarding and manage test data"
        },
        "geo-languages": {
          "description": "Languages prompts are scanned in"
        },
        "geo-models": {
          "description": "Engines, schedule and scanning"
        }
      }
    },
    "modal": {
      "close": "Close settings",
      "descriptions": {
        "account": "Manage your profile and sign-in",
        "appearance": "Choose how Notra looks and behaves for you",
        "general": "Manage your organization settings",
        "members": "Manage who has access to this organization",
        "notifications": "Configure email notifications for your organization",
        "attachments": "Manage your uploaded files and attachments",
        "billing": "Manage your plan, invoices and subscription",
        "usage": "See remaining quotas and usage over time",
        "usage-alerts": "Configure alerts for usage and remaining balances",
        "credits": "Monitor your AI credit balance and usage",
        "webhooks": "Connect your workflows and check every delivery",
        "logs": "View integration events and their delivery status",
        "dev": "Development-only tools for testing local flows",
        "geo-languages": "Languages your prompts are scanned in",
        "geo-models": "Which providers run, and how often"
      }
    },
    "panes": {
      "appearance": {
        "options": {
          "light": {
            "description": "Always use the light appearance"
          },
          "dark": {
            "description": "Always use the dark appearance"
          },
          "system": {
            "description": "Match your device appearance"
          }
        }
      },
      "dev": {
        "replayFailed": "Unable to start onboarding replay",
        "onboarding": "Onboarding",
        "replayTitle": "Replay GEO onboarding",
        "replayDescription": "Creates an isolated project and opens the visibility and competitor steps. Your existing projects and scan history stay unchanged.",
        "replay": "Replay onboarding"
      },
      "general": {
        "deleteOrganization": "Delete organization",
        "deleteDescription": "Permanently delete this organization and all its data",
        "onlyOwnersCanDelete": "Only organization owners can delete this organization.",
        "needOneOrganization": "You need at least one organization. Create another before deleting this one.",
        "connectedAccounts": {
          "description": "X and LinkedIn accounts connected to this organization",
          "loadFailed": "Failed to load connected accounts",
          "connectX": "Connect X account",
          "connectLinkedin": "Connect LinkedIn account",
          "noLinkedin": "No LinkedIn accounts connected",
          "disconnecting": "Disconnecting…",
          "refreshAccount": "Refresh @{username}",
          "refreshTooltip": "Refresh account details",
          "disconnectAccount": "Disconnect @{username}",
          "disconnected": "Account disconnected"
        }
      },
      "members": {
        "listsLabel": "Member lists",
        "noMembers": "No members found.",
        "noPending": "No pending invitations."
      },
      "notifications": {
        "updated": "Notification settings updated",
        "updateFailed": "Failed to update notification settings",
        "ownerOnly": "Only the organization owner can manage notification settings.",
        "groups": {
          "marketing": "Marketing emails"
        },
        "toggles": {
          "scheduledContentCreation": {
            "description": "Get notified when content is created"
          },
          "scheduledContentFailed": {
            "description": "Get notified when generation fails"
          },
          "scheduledContentSkipped": {
            "description": "Get notified when generation is skipped"
          },
          "dailySummary": {
            "label": "Weekly recap",
            "description": "Get one email each Monday with last week's visibility, what changed and how competitors moved. Plus an alert if visibility drops sharply."
          },
          "marketingEmails": {
            "description": "Receive emails about new features, tips and announcements"
          }
        },
        "marketingPersonal": "Just for you. Every email also has an unsubscribe link.",
        "marketingBlocked": "You unsubscribed from all marketing emails through a link in an email. Contact support@usenotra.com to receive them again."
      },
      "billing": {
        "plansDescription": "Change your plan or upgrade.",
        "plansDescriptionTrial": "Change your plan or upgrade. {plan} includes a free trial.",
        "manageSubscription": "Manage subscription",
        "trialActive": "Trial active",
        "currentPlan": "Current plan",
        "trial": "Trial",
        "plans": "Plans",
        "intervalLabel": "Billing interval",
        "save": "Save 20%",
        "addons": "Add-ons",
        "invoices": "Invoices"
      },
      "logs": {
        "loadFailed": "Unable to load logs. Try refreshing.",
        "noMatchTitle": "No matching logs",
        "noMatchDescription": "Try another search or reset your filters.",
        "resetFilters": "Reset filters",
        "emptyTitle": "No activity yet",
        "emptyDescription": "Events from integrations, automations, GEO scans and syncs will appear here when they run."
      },
      "webhooks": {
        "period": "Last 30 days",
        "refresh": "Refresh webhook activity",
        "addEndpoint": "Add endpoint",
        "removeEndpoint": "Remove endpoint {url}",
        "rightNow": "Right now",
        "processing": "Processing",
        "idle": "Idle",
        "views": "Webhook views",
        "deliveries": "Deliveries",
        "endpoints": "Endpoints",
        "toasts": {
          "retryQueued": "Delivery queued for retry",
          "endpointRemoved": "Endpoint removed"
        },
        "metrics": {
          "total": "Deliveries",
          "succeeded": "Delivered",
          "active": "In progress",
          "failed": "Failed"
        },
        "statuses": {
          "all": "All statuses",
          "succeeded": "Delivered",
          "failed": "Failed",
          "retrying": "Retrying",
          "pending": "Pending",
          "sending": "Sending",
          "cancelled": "Cancelled"
        },
        "columns": {
          "event": "Event",
          "destination": "Destination",
          "response": "Response",
          "attemptCount": "{count, plural, one {# attempt} other {# attempts}}"
        },
        "filterLabel": "Filter deliveries by status",
        "empty": {
          "allTitle": "Your events show up here",
          "allDescription": "Add an endpoint, then generate a post. Every delivery and retry gets logged here.",
          "filteredTitle": "No deliveries with this status",
          "filteredDescription": "Pick another filter to see more of your history.",
          "showAll": "Show all deliveries"
        },
        "endpointsEmpty": {
          "title": "Connect your first endpoint",
          "description": "Pick which events go to your workflow."
        },
        "create": {
          "readyTitle": "Your endpoint is ready",
          "title": "Add an endpoint",
          "readyDescription": "Copy the signing secret now. You won't see it again.",
          "description": "Send Notra events to any public HTTPS endpoint.",
          "secret": "Signing secret",
          "copySecret": "Copy signing secret",
          "secretCopied": "Signing secret copied",
          "secretHint": "Use this secret to check each request's signature before you process it.",
          "url": "Endpoint URL",
          "events": "Listen for",
          "submit": "Create endpoint"
        },
        "details": {
          "title": "Delivery details",
          "description": "Every attempt, from the first send to the final response.",
          "history": "Attempt history",
          "retention": "Delivery history is kept for 30 days.",
          "retry": "Retry delivery",
          "queueing": "Queueing…",
          "destination": "Destination",
          "eventId": "Event ID",
          "deliveryId": "Delivery ID",
          "nextAttempt": "Next attempt",
          "queued": "Queued. The first attempt hasn't started yet.",
          "attempt": "Attempt {number}",
          "inFlight": "Sending",
          "payload": "Request payload",
          "payloadCopied": "Payload copied"
        },
        "itemLabel": "deliveries"
      }
    },
    "logs": {
      "description": "View all integration events and their delivery status",
      "actionsFor": "Actions for {title}",
      "referenceCopied": "Reference ID copied",
      "copyReference": "Copy reference ID",
      "noResults": "No results.",
      "itemLabel": "logs"
    },
    "billingSuccess": {
      "loading": "Loading billing confirmation",
      "title": "Payment successful",
      "description": "Thanks for subscribing to {planName}. Your plan is active and all features are ready to use.",
      "fallbackPlan": "your new plan",
      "manageBilling": "Manage billing",
      "viewInvoices": "View invoices & usage"
    },
    "profile": {
      "heading": "Your profile",
      "pictureUpdateFailed": "Failed to update profile picture",
      "pictureUpdated": "Profile picture updated",
      "pictureUploadFailed": "Failed to upload profile picture",
      "nameEmpty": "Name cannot be empty",
      "updateFailed": "Failed to update profile",
      "updated": "Profile updated successfully",
      "uploadPictureAria": "Upload profile picture",
      "picture": "Profile picture",
      "uploadHint": "Click to upload a new profile picture",
      "fullName": "Full name"
    },
    "loginDetails": {
      "heading": "Login details",
      "resetFailed": "Failed to send password reset email",
      "resetSent": "Password reset email sent",
      "passwordHint": "We will email you a link to reset your password.",
      "sending": "Sending…",
      "sendReset": "Send password reset email"
    },
    "twoFactor": {
      "startFailed": "Couldn't start two-factor setup",
      "removeFailed": "Couldn't remove the authenticator app",
      "turnedOff": "Two-factor authentication turned off",
      "startAgain": "Start the setup again.",
      "turnedOn": "Two-factor authentication is on",
      "settings": {
        "loadError": "Couldn't load your two-factor settings.",
        "enabled": "On",
        "enabledDescription": "Required when you sign in with your password.",
        "disabledDescription": "Codes from 1Password, Google Authenticator or Authy.",
        "dialogTitle": "Set up two-factor authentication",
        "dialogDescription": "Adds a code check whenever you sign in with your password.",
        "addedOn": "Added {date}",
        "removeTitle": "Turn off two-factor authentication?",
        "removeDescription": "Signing in will no longer ask for a code from {factorName}. Confirm with a code from your authenticator app or an unused backup code.",
        "removeConfirm": "Remove authenticator",
        "backupCodesTitle": "Backup codes",
        "backupCodesDescription": "One-time codes for when your device isn't around.",
        "backupCodesRemaining": "{count, plural, one {# unused code left.} other {# unused codes left.}}",
        "backupCodesExhausted": "All codes used. Generate a new set.",
        "regenerateTitle": "Regenerate backup codes?",
        "regenerateDescription": "Your current codes stop working once new ones are generated. Confirm with your authenticator app or an unused backup code.",
        "regenerateConfirm": "Generate new codes"
      },
      "enrollment": {
        "submit": "Turn on two-factor",
        "scanInstructions": "Scan this with 1Password, Google Authenticator or Authy.",
        "qrAltWithAccount": "QR code to add {account} to an authenticator app",
        "qrAlt": "QR code to add this account to an authenticator app",
        "cantScan": "Can't scan it?",
        "manualInstructions": "In your authenticator app, add an account with this key and time-based codes.",
        "setupKey": "Setup key",
        "setupUri": "Setup URI",
        "scanInstead": "Scan QR code instead",
        "codeLabel": "Enter the 6-digit code from your app"
      },
      "backupCodes": {
        "title": "Save your backup codes",
        "description": "Each works once if you lose your device. They won't be shown again.",
        "print": "Print",
        "copyError": "Couldn't copy. Select the codes and copy them manually.",
        "printBlocked": "Your browser blocked the print window.",
        "printNote": "Each code works once.",
        "exportTitle": "{issuer} backup codes",
        "exportAccount": "Account: {account}",
        "exportGenerated": "Generated: {date}",
        "exportInstructions": "Each code can be used once if you lose access to your authenticator app.",
        "fileName": "{issuer}-backup-codes.txt"
      },
      "confirm": {
        "codeLabel": "Authenticator or backup code",
        "codePlaceholder": "123456 or xxxx-xxxx"
      }
    },
    "chat": {
      "agentStats": "Agent stats",
      "agentStatsDescription": "Show tokens per second, total tokens and time to first token under assistant messages. Inspired by <link>t3.chat</link>."
    },
    "privacy": {
      "heading": "Privacy",
      "hidePersonalData": "Hide personal data",
      "hidePersonalDataDescription": "Blur your email and name in the sidebar. Useful when sharing your screen."
    },
    "deleteAccount": {
      "heading": "Delete account",
      "sectionDescription": "Permanently delete your personal account and everything in it. This can't be undone.",
      "deletePersonalAccount": "Delete personal account",
      "processOrgsFailed": "Failed to process organizations. Please try again.",
      "deleteFailed": "Failed to delete account",
      "deleted": "Account deleted successfully",
      "dialogDescription": "You're about to delete your account. This can't be undone.",
      "ownsOrgsWithMembers": "You own organizations with other members:",
      "transferOwnership": "Transfer ownership",
      "transferOwnershipTo": "Transfer ownership<muted> to {name} ({role})</muted>",
      "deleteThisOrganization": "Delete this organization",
      "orgsWillBeDeleted": "These organizations will be deleted:",
      "onlyYou": "(only you)",
      "soleMemberNote": "You are the only member of these organizations. They will be permanently deleted with your account.",
      "noOrgsNote": "This will permanently delete your account and remove your data from our servers."
    },
    "membershipAction": {
      "label": "{action, select, delete {Delete} other {Leave}}",
      "title": "{action, select, delete {Delete {name}?} other {Leave {name}?}}",
      "confirm": "{action, select, delete {Delete organization} other {Leave organization}}",
      "leaveDescription": "You will lose access to this organization and all its content. You'll need to be invited again to rejoin.",
      "deleteWithMembersDescription": "This organization has other members. Deleting it will permanently remove access for everyone and delete all workspace data.",
      "deleteSoleDescription": "You are the only member of this organization. Deleting it will permanently remove all workspace data."
    },
    "connectedAccounts": {
      "connectFailed": "Could not start the connection. Please try again.",
      "needOneLoginMethod": "You must have at least one login method",
      "unlinkFailed": "Failed to unlink {provider}",
      "unlinked": "{provider} account unlinked",
      "loadFailed": "Failed to load connected accounts. Please refresh the page.",
      "description": "Connect your social accounts for easier sign-in",
      "connectedTo": "Connected to your {provider} account",
      "signInWith": "Sign in with {provider}",
      "disconnectHint": "Connect another sign-in method to disconnect"
    },
    "organizations": {
      "description": "Organizations you are a member of",
      "heardAbout": "Heard about Notra: {source}",
      "view": "View",
      "empty": "You are not a member of any organizations"
    },
    "organizationDetails": {
      "heading": "Organization details",
      "logoUpdateFailed": "Failed to update organization logo",
      "logoUpdated": "Organization logo updated",
      "logoUploadFailed": "Failed to upload organization logo",
      "updateFailed": "Failed to update organization",
      "updated": "Organization updated successfully",
      "uploadLogoAria": "Upload organization logo",
      "uploadHint": "Click to upload a new logo",
      "nameHint": "Your organization's name as it appears across Notra",
      "namePlaceholder": "My organization",
      "slugHint": "Used in URLs: https://app.usenotra.com/{slug}",
      "slugPlaceholder": "my-organization"
    },
    "devSampleData": {
      "resetSuccess": "GEO sample data reset",
      "resetDescriptionNoTinybird": "{mentionChecks} mention checks added. Tinybird is not configured, so AI traffic stays empty until TINYBIRD_TOKEN is set.",
      "resetDescription": "{mentionChecks} mention checks and {trafficEvents} traffic events added.",
      "resetFailed": "Unable to reset GEO sample data",
      "cleared": "GEO sample data cleared",
      "nothingToClear": "No sample data to clear",
      "clearFailed": "Unable to clear GEO sample data",
      "heading": "Developer",
      "title": "GEO sample data",
      "description": "Reset replaces the complete demo project with 30 days of prompts, conversations, competitors, scans and traffic. Clear removes only the marked demo project and keeps your own data.",
      "clear": "Clear sample data",
      "clearTitle": "Clear GEO sample data?",
      "clearDescription": "This removes the marked demo project and its analytics. Your own projects and data remain unchanged.",
      "reset": "Reset sample data"
    },
    "attachments": {
      "infoAria": "Attachment deletion details",
      "infoTooltip": "Deleting files here removes them from any threads that reference them, but does not delete the threads themselves. This may lead to unexpected behavior if the file is still in use.",
      "deleted": "{count, plural, one {Attachment deleted} other {# attachments deleted}}",
      "deleteFailed": "Failed to delete attachments",
      "filterAria": "Filter attachments",
      "filters": {
        "all": "All files",
        "image": "Images",
        "pdf": "PDFs"
      },
      "deleteSelected": "Delete {count} selected",
      "loadFailed": "Couldn't load attachments",
      "empty": "No attachments yet",
      "confirmTitle": "{count, plural, one {Delete this attachment?} other {Delete # attachments?}}",
      "confirmDescription": "The file will be removed from storage and from any threads that reference it. This cannot be undone.",
      "columns": {
        "uploaded": "Uploaded"
      },
      "deleteFile": "Delete {filename}"
    },
    "language": {
      "label": "Dashboard language",
      "description": "Choose the language used across the dashboard",
      "updateFailed": "Failed to update language. Please try again."
    },
    "shared": {
      "goToDashboard": "Go to dashboard",
      "deletedName": "Deleted {name}",
      "leftName": "Left {name}",
      "couldNotOpenBillingPortal": "Could not open billing portal. Please try again.",
      "uploading": "Uploading…",
      "authenticatorApp": "Authenticator app",
      "thatCodeDidnTWork": "That code didn't work. Please try again.",
      "text": "Text",
      "file": "File",
      "failedToUpdateOrganizationMembership": "Failed to update organization membership",
      "connectedAccounts": "Connected accounts",
      "howYourBrandIsIdentified": "How your brand is identified in answers",
      "nameAliasesAndConversionPaths": "Name, aliases and conversion paths"
    },
    "toasts": {
      "updatePreferenceFailed": "Failed to update preference",
      "updatePreferenceFailedRetry": "Failed to update preference. Please try again."
    }
  },
  "members": {
    "roleLabel": "{role, select, owner {Owner} admin {Admin} member {Member} other {{role}}}",
    "teamMemberLimit": "Team member limit reached on your current plan.",
    "viewPlans": "View plans",
    "invitationExpired": "Expired",
    "columns": {
      "user": "User"
    },
    "invitationActions": {
      "resendFailed": "Failed to resend invitation",
      "resent": "Invitation resent to {email}",
      "cancelFailed": "Failed to cancel invitation",
      "canceled": "Invitation to {email} has been canceled",
      "resendTitle": "Resend invitation?",
      "resendDescription": "We'll send a new invitation link to <strong>{email}</strong>.",
      "resending": "Resending…",
      "cancelTitle": "Cancel invitation?",
      "cancelDescription": "The invitation sent to {email} will be canceled and can no longer be accepted."
    },
    "invite": {
      "sent": "Invitation sent successfully",
      "sendFailed": "Failed to send invitation",
      "description": "They'll get an email invitation to join this organization.",
      "emailPlaceholder": "member@example.com"
    },
    "memberActions": {
      "updateRoleFailed": "Failed to update member role",
      "roleUpdated": "{name}'s role has been updated to {role}",
      "removeFailed": "Failed to remove member",
      "removed": "{name} has been removed from the organization",
      "changeRoleDescription": "Update {name}'s role in {organization}.",
      "selectRole": "Select a role",
      "updateRole": "Update role",
      "removeTitle": "Remove {name}?",
      "removeDescription": "{name} will be removed from {organization} and lose access to all its content. To rejoin, they'll need a new invitation."
    },
    "shared": {
      "resendInvitation": "Resend invitation",
      "cancelInvitation": "Cancel invitation",
      "inviteMember": "Invite member",
      "changeRole": "Change role",
      "removeMember": "Remove member"
    }
  },
  "apiKeys": {
    "description": "Manage API keys for programmatic access to your organization",
    "createKey": "Create API key",
    "viewDocs": "View API documentation",
    "columns": {
      "key": "Key",
      "permission": "Permission",
      "status": "Status"
    },
    "status": {
      "active": "Active",
      "expiringSoon": "Expiring soon",
      "expired": "Expired",
      "disabled": "Disabled"
    },
    "permissionSummary": "{permission, select, none {No access} read {Read only} write {Read & write} geo {GEO access} other {Custom}}",
    "expirationOption": "{value, select, never {No expiry} 7d {7 days} 30d {30 days} 60d {60 days} 90d {90 days} other {{value}}}",
    "empty": "No API keys yet",
    "quickStart": {
      "description": "Spin up a key preconfigured for how you plan to use the API.",
      "viewDocs": "View docs",
      "presetDescription": "{id, select, mcp {Connect Claude, Cursor and other MCP clients to read and write your content.} sdk {Pull your data programmatically with the TypeScript and Python SDKs.} cli {Script and automate your workflow from the terminal with full access.} other {}}",
      "createKey": "Create {title} API key"
    },
    "create": {
      "viewTitle": "View API key",
      "onceNotice": "You can only see this key once. <strong>Store it safely.</strong>",
      "apiKey": "API key",
      "description": "Create a new API key for your organization.",
      "submit": "Create key"
    },
    "form": {
      "namePlaceholder": "e.g. CI/CD Pipeline",
      "expiration": "Expiration"
    },
    "validation": {
      "selectPermission": "Select at least one permission",
      "invalidKey": "Invalid API key"
    },
    "delete": {
      "title": "Delete API key?",
      "descriptionNamed": "This will permanently delete {name}. This can't be undone.",
      "description": "This will permanently delete this API key. This can't be undone."
    },
    "toasts": {
      "created": "API key created",
      "updated": "API key updated",
      "deleted": "API key deleted"
    },
    "reveal": {
      "hide": "Hide API key",
      "show": "Show API key",
      "copy": "Copy API key"
    },
    "permissions": {
      "accessLabel": "API key access",
      "accessModeLabel": "{mode, select, full {Full access} geo {GEO access} other {Restricted}}",
      "accessModeTitle": "{mode, select, full {Full access} geo {GEO access} other {Resource access}}",
      "accessModeDescription": "{mode, select, full {This key grants full access to all API resources. For better security, we recommend creating a restricted key.} geo {This key grants read and write access to GEO resources only. All other API resources remain restricted.} other {Set read and write access individually for every API resource.}}",
      "resourceAccess": "Resource access",
      "permissionsLabel": "API key permissions",
      "scopeLevel": "{level, select, none {None} read {Read} write {Write} other {{level}}}",
      "resources": {
        "posts": {
          "description": "Read and manage your posts and drafts"
        },
        "brand-identities": {
          "description": "Read and manage saved brand voices"
        },
        "integrations": {
          "description": "Read and manage connected content sources"
        },
        "schedules": {
          "description": "Read and manage scheduled content generation"
        },
        "event-triggers": {
          "label": "Event triggers",
          "description": "Read and manage event-based content generation"
        },
        "chats": {
          "label": "Chats",
          "description": "Read and manage chat sessions"
        },
        "skills": {
          "description": "Read and manage your skills"
        },
        "feedback": {
          "label": "Agent feedback",
          "description": "Read and triage feedback submitted by AI agents"
        },
        "projects": {
          "description": "Read and manage GEO projects"
        },
        "geo-settings": {
          "label": "GEO settings",
          "description": "Read and manage a project's GEO tracking configuration"
        },
        "prompts": {
          "label": "GEO prompts",
          "description": "Read and manage tracked GEO prompts and prompt sequences"
        },
        "competitors": {
          "label": "GEO competitors",
          "description": "Read and manage tracked GEO competitors"
        },
        "scans": {
          "label": "GEO scans",
          "description": "Read GEO scan history and trigger new scans"
        },
        "visibility": {
          "label": "GEO visibility",
          "description": "Read GEO mention rates, trends, scan changes, sentiment and citation sources"
        },
        "briefs": {
          "label": "GEO content briefs",
          "description": "Read content gaps and plan, read and approve content briefs"
        },
        "agent-readiness": {
          "label": "GEO agent readiness",
          "description": "Read agent readiness reports and start new readiness scans"
        },
        "traffic": {
          "label": "GEO AI traffic",
          "description": "Read AI crawler and referral traffic, and manage the ingest token"
        }
      }
    },
    "trackingToken": {
      "title": "Tracking token",
      "writeOnly": "Write-only",
      "description": "Authenticates the AI traffic proxy on your site. It can only send traffic events, nothing else.",
      "rotate": "Rotate",
      "confirmTitle": "Rotate the tracking token?",
      "confirmDescription": "Every deployed copy stops working right away, including project-scoped tokens. Update the token on your site after rotating.",
      "confirm": "Rotate token"
    },
    "shared": {
      "editApiKey": "Edit API key",
      "deleteApiKey": "Delete API key"
    },
    "emptyState": {
      "title": "No API keys yet",
      "description": "Create a key to read and write this organization's content from scripts, SDKs or MCP clients."
    },
    "account": {
      "title": "Account API keys",
      "description": "Personal keys that work in every organization you belong to. Send the <code>X-Notra-Organization-Id</code> header to pick one.",
      "createKey": "Create account key",
      "emptyTitle": "No account API keys yet",
      "emptyDescription": "Use an account key for personal automation across workspaces. Shared systems should use organization keys.",
      "createTitle": "Create account API key",
      "createDescription": "This key works in every organization you belong to.",
      "editTitle": "Edit account API key",
      "viewTitle": "View account API key",
      "namePlaceholder": "e.g. Personal automation",
      "deleteTitle": "Delete account API key?",
      "toasts": {
        "created": "Account API key created",
        "updated": "Account API key updated",
        "deleted": "Account API key deleted"
      },
      "loadFailedTitle": "Couldn't load account API keys",
      "loadFailedDescription": "Your keys are still there. Try loading them again."
    }
  },
  "feedback": {
    "activity": {
      "title": "Feedback activity",
      "loadFailed": "Failed to load feedback activity",
      "seriesLabel": "Feedback"
    },
    "unspecified": "Unspecified",
    "kind": {
      "bug": "Bug",
      "feature": "Feature",
      "praise": "Praise"
    },
    "detail": {
      "received": "Received {time}",
      "via": "via",
      "inspect": "Inspect this feedback.",
      "statusLabel": "Feedback status",
      "message": "Message",
      "metadata": "Metadata",
      "fields": {
        "toolVersion": "Tool version",
        "externalId": "External ID",
        "contextUrl": "Context URL",
        "userAgent": "User agent"
      },
      "resolve": "Mark resolved",
      "reopen": "Reopen",
      "unarchive": "Unarchive",
      "field": "Field",
      "value": "Value"
    },
    "empty": {
      "title": "Your feedback inbox is empty",
      "description": "Feedback submitted by AI agents will appear here."
    },
    "setup": {
      "title": "Feedback setup",
      "trigger": "Setup",
      "dialogDescription": "Add the feedback tool to another MCP server or copy your feedback URL.",
      "feedbackUrl": "Your feedback URL",
      "feedbackUrlDescription": "Agents POST JSON to this URL. It is unique to your organization and needs no token or API key.",
      "feedbackUrlLabel": "feedback URL",
      "addTool": "Add the tool to your MCP server",
      "snippet": "Snippet",
      "snippetTabs": {
        "mcp": "SDK",
        "fetch": "No SDK",
        "curl": "curl"
      }
    },
    "columns": {
      "received": "Received"
    },
    "table": {
      "viewDetails": "View details",
      "setStatus": "Set status",
      "filterEmpty": {
        "open": {
          "title": "You're all caught up",
          "description": "New feedback from agents lands here, and stays until you resolve or archive it."
        },
        "resolved": {
          "title": "Nothing resolved yet",
          "description": "Feedback you mark as resolved shows up here."
        },
        "archived": {
          "title": "Nothing archived",
          "description": "Archive feedback to keep it out of your inbox without deleting it."
        }
      },
      "showAll": "Show all feedback"
    },
    "page": {
      "description": "What AI agents are saying about your product."
    },
    "delete": {
      "title": "Delete feedback?",
      "description": "This will permanently delete \"{name}\". This can't be undone."
    },
    "toasts": {
      "loadFailed": "Failed to load feedback",
      "updateFailed": "Failed to update feedback",
      "deleted": "Feedback deleted",
      "deleteFailed": "Failed to delete feedback"
    },
    "shared": {
      "open": "Open",
      "resolved": "Resolved",
      "triaged": "Triaged"
    }
  },
  "auth": {
    "legal": {
      "agreement": "By continuing, you agree to our <terms>Terms of Service</terms> and <privacy>Privacy Policy</privacy>."
    },
    "banned": {
      "title": "Account suspended",
      "description": "Your account has been suspended. If you believe this is a mistake, contact support at {email}.",
      "signOut": "Sign out"
    },
    "loginErrors": {
      "socialSignInFailed": "Social sign-in failed. Please try again.",
      "externalLoginFailed": "Authorization could not be completed. Please try again."
    },
    "validation": {
      "emailRequired": "Email is required",
      "emailInvalid": "Please enter a valid email address",
      "passwordRequired": "Password is required",
      "passwordMinSignup": "Password must be at least 10 characters",
      "passwordMax": "Password must be at most 128 characters"
    },
    "socialEnrollment": {
      "resumeFailed": "Couldn't continue the two-factor setup. Please sign in again.",
      "preparing": "Preparing two-factor setup"
    },
    "testimonials": {
      "label": "Customer testimonials",
      "slide": "Testimonial {index} of {total}",
      "show": "Show testimonial from {name}"
    },
    "signup": {
      "title": "Create your account",
      "description": "Start turning what you ship into what you publish.",
      "failed": "Failed to sign up. Please try again.",
      "socialFailed": "Social sign-up failed. Please try again.",
      "backupCodeAccepted": "Backup code accepted. Two-factor authentication was turned off for {email}. Sign in to continue.",
      "or": "Or",
      "emailPlaceholder": "jane@company.com",
      "passwordPlaceholder": "At least 10 characters",
      "submit": "Create account",
      "forgotPassword": "Forgot your password? <link>Reset your password</link>",
      "haveAccount": "Already have an account? <link>Log in</link>"
    },
    "forgotPassword": {
      "checkEmailTitle": "Check your email",
      "checkEmailDescription": "If an account exists with that email, we've sent you a link to reset your password.",
      "notReceived": "Didn't receive an email? Check your spam folder or try again.",
      "title": "Forgot your password?",
      "description": "Enter your email and we'll send you a link to reset your password.",
      "submit": "Send reset link"
    },
    "resetPassword": {
      "invalidTitle": "Invalid link",
      "invalidDescription": "This password reset link is invalid or has expired.",
      "requestNew": "Request a new link",
      "missingTitle": "Missing token",
      "missingDescription": "No reset token found. Please use the link from your email.",
      "passwordMin": "Password must be at least 8 characters long.",
      "passwordMismatch": "Passwords do not match.",
      "linkExpired": "This reset link has expired. Please request a new one.",
      "linkInvalid": "This reset link is invalid. Please request a new one.",
      "success": "Password reset. Log in with your new password.",
      "title": "Set new password",
      "description": "Enter your new password below.",
      "confirmPassword": "Confirm password",
      "confirmPasswordPlaceholder": "Confirm new password",
      "hideConfirmPassword": "Hide confirm password",
      "showConfirmPassword": "Show confirm password",
      "submit": "Reset password"
    },
    "shared": {
      "networkErrorPleaseCheckYour": "Network error. Please check your connection and try again.",
      "backToLogin": "Back to login",
      "newPassword": "New password"
    },
    "emailVerification": {
      "description": "We sent a 6-digit code to {email}. Enter it below to continue.",
      "descriptionNoEmail": "We sent a 6-digit code to your email address. Enter it below to continue.",
      "codeLabel": "Verification code",
      "submit": "Verify email",
      "errorFallback": "Verification failed. Please try again."
    },
    "mfaChallenge": {
      "description": "Enter the 6-digit code from your authenticator app to finish signing in as {email}.",
      "descriptionNoEmail": "Enter the 6-digit code from your authenticator app to finish signing in.",
      "codeLabel": "Authentication code",
      "submit": "Verify code",
      "useBackupCode": "Lost your device? Use a backup code",
      "backToSignIn": "Back to sign in",
      "backupTitle": "Use a backup code",
      "backupDescription": "Enter one of the backup codes you saved when you set up two-factor authentication. Each code works once.",
      "backupCodeLabel": "Backup code",
      "backupSubmit": "Use backup code",
      "useAuthenticator": "Use my authenticator app instead",
      "issuedCodesTitle": "Your backup codes",
      "issuedCodesDescription": "You're signed in. Save these backup codes now: each one lets you in once if you lose your authenticator app."
    },
    "mfaEnrollment": {
      "description": "Your organization requires a second step when signing in as {email}.",
      "descriptionNoEmail": "Your organization requires a second step when signing in.",
      "submit": "Verify and sign in",
      "done": "Continue to Notra"
    },
    "loginForm": {
      "title": "Welcome back",
      "description": "Log in to pick up where your team left off.",
      "passwordPlaceholder": "Your password",
      "lastUsed": "Last used",
      "submit": "Log in",
      "resetPassword": "Reset your password",
      "noAccount": "Don't have an account?",
      "register": "Register",
      "loginErrorFallback": "Failed to sign in. Please try again.",
      "backupCodeRecovered": "Backup code accepted. Two-factor authentication was turned off for {email}. Sign in again to continue."
    },
    "invitation": {
      "title": "{inviter} invited you to {organization}",
      "titleAnonymous": "You've been invited to {organization}",
      "description": "You'd join as {role}.",
      "roles": {
        "member": "a member",
        "admin": "an admin",
        "owner": "an owner"
      },
      "join": "Join {organization}",
      "decline": "Decline",
      "signedInAs": "Signed in as {email}.",
      "useAnotherAccount": "Use another account",
      "signedOutHint": "You'll sign in or create an account for {email} first.",
      "failed": "Something went wrong. Please try again.",
      "unavailableNow": "This invitation is no longer available.",
      "declined": {
        "title": "Invitation declined",
        "description": "You declined the invitation. Ask the team for a new one if you change your mind."
      },
      "joined": {
        "title": "You joined {organization}",
        "description": "It's now your active workspace.",
        "open": "Open {organization}"
      },
      "mismatch": {
        "title": "This invitation is for another account",
        "description": "{invited} was invited, but you're signed in as {current}. Sign out and sign in as {invited} to join {organization}.",
        "signOut": "Sign out"
      },
      "unavailable": {
        "home": "Go to Notra",
        "not-found": {
          "title": "Invitation not found",
          "description": "This link is invalid. Check the email you received or ask for a new invitation."
        },
        "expired": {
          "title": "Invitation expired",
          "description": "Ask a team admin to send you a new invitation."
        },
        "revoked": {
          "title": "Invitation withdrawn",
          "description": "The team withdrew this invitation. Ask them to send a new one."
        },
        "accepted": {
          "title": "Invitation already used",
          "description": "This invitation was already accepted. Sign in to open your workspace."
        }
      }
    }
  },
  "errors": {
    "notFound": {
      "title": "Page not found",
      "description": "Sorry, we couldn't find the page you're looking for. It might have been moved or deleted.",
      "goBack": "Go back"
    },
    "route": {
      "eyebrow": "Error",
      "description": "We hit an unexpected problem loading this page. You can try again or head back home.",
      "reference": "Reference {digest}"
    },
    "shared": {
      "goHome": "Go home",
      "tooManyAttemptsPleaseTry": "Too many attempts. Please try again shortly."
    },
    "automation": {
      "integrationsMissing": "One or more selected integrations no longer exist",
      "noTargetRepository": "Add a repository to this schedule before running it",
      "triggerDisabled": "Enable this before running it manually",
      "manualRunUnsupported": "Manual runs aren't supported for this trigger",
      "externalUrlMissing": "The app URL isn't configured, so schedules can't be created right now",
      "eventTriggersOnly": "Only event triggers are supported here",
      "duplicateTrigger": "Duplicate trigger"
    },
    "geo": {
      "briefStateLocked": "{status, select, approved {This brief is already approved.} writing {This brief is already being written.} completed {This brief is already completed.} other {This brief can no longer be edited.}} Start a new one.",
      "gscPropertyDenied": "Google denied access to this property. Reconnect or pick another one.",
      "agentReadinessWebsiteMissing": "Add a website URL in brand settings before scanning",
      "agentReadinessFailed": "The agent readiness scan could not be completed. Please try again.",
      "conversationRunFailed": "The conversation run failed. Please try again.",
      "personaRunFailed": "The persona run failed. Please try again.",
      "trackingSettingsRejected": "This can't be added under your current tracking settings",
      "translationLimit": "This language already scans {limit} prompts. Remove one first.",
      "translationLast": "Each language scans at least one prompt. To stop scanning it, remove the language.",
      "translationDeferred": "Translations can't run right now. They're made on the next scan instead.",
      "translationUnavailable": "This prompt isn't scanned in that language.",
      "websiteDiscoveryFailed": "We couldn't analyze that website. Check the URL and try again.",
      "writerPlanFailed": "The content plan couldn't be created or saved. Please try again.",
      "promptAlreadyTracked": "This prompt is already tracked",
      "lastProjectDelete": "You cannot delete your last project. Create another one first.",
      "projectHasSitesDelete": "This project has hosted sites. Delete its sites before deleting the project.",
      "createBrandIdentityFirst": "Create a brand identity first",
      "noGroundedEngines": "No search-grounded engines are available under your privacy settings",
      "createConversationFailed": "Failed to create conversation",
      "conversationLimit": "You can have up to {limit} conversations. Remove one before adding another.",
      "personaLimit": "You can have up to {limit} active personas. Archive one before adding or reactivating another.",
      "competitorLimit": "You can track up to {limit} competitors. Remove some before adding more.",
      "configureTrackingFirst": "Configure your brand tracking settings first",
      "enableTrackingFirst": "Enable brand tracking before starting a scan",
      "scanAlreadyRunning": "A scan is already running for this project",
      "selectModel": "Select at least one available model to scan",
      "briefAlreadyInState": "This brief is already {status}. Start a new one.",
      "planChanged": "This plan changed while it was being saved. Try again.",
      "gscBusy": "Google Search Console is temporarily busy. Please try again.",
      "gscDisconnecting": "Google Search Console is being disconnected. Please try again.",
      "tooManyConversationGenerations": "Too many conversation generations. Please wait a few minutes.",
      "tooManyRuns": "Too many runs. Please wait a few minutes.",
      "tooManyPersonaGenerations": "Too many persona generations. Please wait a few minutes.",
      "tooManyLookups": "Too many lookups. Please wait a minute.",
      "tooManySearches": "Too many searches. Please wait a minute.",
      "tooManyBriefs": "Too many briefs. Please wait a few minutes.",
      "propertyUnavailable": "That property is not available on the connected Google account",
      "gscChangedBeforeConnect": "Search Console changed before the property could be connected",
      "tooManySyncs": "Too many syncs. Please wait a few minutes.",
      "selectPropertyFirst": "Select a Search Console property first",
      "gscDisconnectFailed": "Google Search Console could not be disconnected. Please try again.",
      "gscChangedDuringDisconnect": "Google Search Console changed during disconnect. Please try again.",
      "notOrganizationMember": "That person is not a member of this organization"
    },
    "github": {
      "recovery": {
        "appPermissions": "The GitHub App needs write access to Contents and Pull requests.",
        "tokenRejected": "The saved GitHub token was rejected. Update it or connect this repository through the GitHub App.",
        "appAuthenticationFailed": "GitHub App authentication failed. Review the installation and save your repository selection again.",
        "tokenPermissions": "The saved GitHub token needs write access to repository contents and pull requests."
      },
      "appRequiredForPublish": "Connect the GitHub App so Notra can open pull requests as a bot.",
      "installationMissing": "Review the GitHub App installation and save your repository selection again.",
      "repositoryUnavailable": "Selected repository is not available to this installation",
      "repositoryConflict": "Repository {repository} is already connected to a different GitHub repository",
      "installationAccessDenied": "GitHub denied access to the installation. Review its repository access and organization policies.",
      "pullRequestUnavailable": "GitHub did not return a pull request that can be linked",
      "appNotConfigured": "The GitHub App isn't configured for this workspace yet",
      "repositoryEmpty": "Initialize the GitHub repository with a first commit before publishing",
      "publishingPausedAfterFailures": "GitHub content publishing was paused after repeated failures",
      "apiRateLimited": "GitHub's API rate limit was reached. Please try again later.",
      "requestBlocked": "GitHub blocked this request. An organization owner may need to review repository access and organization policies.",
      "tooManyRepositoryRequests": "Too many GitHub repository requests. Please try again shortly.",
      "tooManyRepositoryChecks": "Too many GitHub repository checks. Please try again shortly."
    },
    "analytics": {
      "unavailable": "Analytics is not available for this workspace yet.",
      "xAccountNotFound": "Could not find the X account @{username}"
    },
    "actions": {
      "organizations": {
        "invitationNotFound": "Invitation not found",
        "organizationNotFound": "Organization not found",
        "memberNotFound": "Member not found",
        "ownerRoleOwnerOnly": "Only the organization owner can assign the owner role",
        "ownerRoleLocked": "The organization owner role cannot be changed",
        "ownerNotRemovable": "The organization owner cannot be removed",
        "disposableEmail": "Disposable email addresses are not allowed",
        "teamMemberLimitCheckUnavailable": "We could not verify your team member limits right now. Please try again.",
        "noManagePermission": "You do not have permission to manage this organization",
        "signedOut": "Your session has ended. Sign in again.",
        "userNotFound": "User not found",
        "slugTaken": "An organization with this slug already exists"
      },
      "auth": {
        "invalidCredentials": "Incorrect email or password.",
        "invalidCode": "That code is incorrect or has expired.",
        "weakPassword": "Choose a stronger password.",
        "emailTaken": "An account with this email already exists.",
        "differentMethodRequired": "Your organization requires a different sign-in method.",
        "attemptExpired": "This sign-in attempt expired. Please start again.",
        "backupCodeRejected": "That backup code isn't valid or was already used.",
        "emailUnverified": "Verify your email address before signing in to this account."
      },
      "invalidInput": "Check your input and try again.",
      "security": {
        "unavailable": "Security settings aren't available for this account yet.",
        "invalidConfirmation": "That code didn't work. Enter the code from your authenticator app or an unused backup code.",
        "backupCheckFailed": "Couldn't check the backup code. Please try again.",
        "alreadyEnabled": "Two-factor authentication is already on. Remove the current authenticator app before adding another.",
        "enrollmentExpired": "This setup expired or belongs to another session. Start the setup again.",
        "invalidTotp": "That code didn't work. Check your authenticator app and try again.",
        "backupCodesWarning": "Two-factor is on, but backup codes couldn't be generated. Regenerate them from settings.",
        "setupBeforeBackupCodes": "Set up an authenticator app before generating backup codes.",
        "backupCodesFailed": "Couldn't generate backup codes. Please try again.",
        "factorMissing": "That authentication method no longer exists."
      }
    },
    "server": {
      "notFound": "This item doesn't exist anymore or you don't have access to it."
    },
    "integrations": {
      "branchNotFound": "That branch doesn't exist in the repository",
      "granolaKeyRejected": "Granola couldn't verify this API key. Check the key and its scopes, then try again.",
      "publicUrlInvalid": "Enter a public http or https URL",
      "websiteDomainNotFound": "Website domain not found. Please check the website address.",
      "websiteDnsUnavailable": "We couldn't check the website domain right now. Please try again.",
      "mcpAuthorizationFailed": "The MCP server authorization failed. Check the URL and try again.",
      "tooManyConnectionAttempts": "Too many connection attempts. Wait a minute and try again.",
      "selectOneRepository": "Please select exactly one repository",
      "repositoryInaccessible": "Unable to access repository. It may be private and require a Personal Access Token, or the name is incorrect.",
      "branchSingleRepoOnly": "Branch can only be edited for integrations with a single repository",
      "githubAuthFailed": "GitHub authentication failed. Reconnect GitHub and try again.",
      "repositoryAccessDenied": "GitHub repository access denied",
      "publishingBranchRequired": "Choose a publishing branch before creating a new branch",
      "publishingBranchEmpty": "The publishing branch does not have an initial commit",
      "branchInvalid": "This branch already exists or its name is not valid",
      "writeAccessRequired": "GitHub needs write access to create this branch",
      "repositoryDisabled": "This GitHub repository is disabled",
      "notADirectory": "The selected path is not a directory",
      "githubAccessDenied": "GitHub denied access to this repository",
      "mcpOAuthRequired": "This MCP store integration requires OAuth",
      "useApprovedAuth": "Use the approved authentication method",
      "mcpNameTaken": "An MCP server with this name already exists",
      "mcpOAuthNotSupported": "This MCP store integration does not use OAuth"
    },
    "billing": {
      "contentLimitReached": "You've reached your plan's limit. Upgrade your plan or add AI credits to continue.",
      "subscriptionRequired": "An active plan is required for this. Pick a plan to continue."
    },
    "skills": {
      "skillsShUnavailable": "skills.sh couldn't be reached. Please try again later.",
      "nameTaken": "A skill named \"{name}\" already exists",
      "systemSkillRename": "System skills cannot be renamed",
      "systemSkillDelete": "System skills cannot be deleted",
      "invalidUrl": "Invalid URL",
      "urlNotSkill": "URL must point to a specific skill",
      "noImportableFiles": "Skill has no importable files"
    },
    "upload": {
      "svgInvalid": "This SVG file is empty or not a valid SVG",
      "fileTooLarge": "This file is too large. The limit is {maxMb} MB.",
      "fileTypeNotAllowed": "This file type isn't supported here",
      "noOrganizationAccess": "You do not have access to this organization",
      "logoSourceNotAllowed": "Logo source is not allowed",
      "logoFetchFailed": "Could not fetch the logo image"
    },
    "brandGuidelinePdf": {
      "generateFirst": "Generate your brand guidelines before adding a PDF",
      "invalidFile": "This isn't a valid brand guideline PDF",
      "noText": "We couldn't find any text in this PDF. Export it as a text-based PDF and try again.",
      "readFailed": "We couldn't read this PDF. Try again or export it again.",
      "unavailable": "PDF upload isn't available right now"
    },
    "comments": {
      "replyNotAllowed": "Replies are limited to five levels and cannot target deleted comments",
      "notAuthor": "You can only change your own comments",
      "notEditable": "This comment cannot be edited",
      "deleted": "This comment was deleted"
    },
    "socialAccounts": {
      "requestRejected": "The social platform rejected this request. Check the account and try again.",
      "duplicateContent": "The platform rejected this post because it duplicates an earlier one.",
      "notAuthorizedToPost": "This account is not authorized to post right now.",
      "deliveryUnknown": "The post may have gone out, but the platform did not confirm it. Check the account before trying again.",
      "serviceUnavailable": "The social platform service is temporarily unavailable. Please try again in a few minutes."
    },
    "brand": {
      "voiceNameTaken": "A brand voice with this name already exists",
      "defaultVoiceDelete": "Cannot delete the default voice",
      "websiteUrlRequired": "Set a website URL before generating guidelines",
      "screenshotTypeTaken": "A screenshot with this type already exists",
      "tweetAlreadyAdded": "This tweet has already been added as a reference",
      "referenceLimitAdd": "Reference limit reached. Upgrade your plan to add more.",
      "tooManyImportRequests": "Too many import requests. Please try again shortly.",
      "fetchXProfileFailed": "Failed to fetch the X profile for this account",
      "referenceLimitImport": "Reference limit reached. Upgrade your plan to import more.",
      "tooManyRequests": "Too many requests. Please try again shortly."
    },
    "content": {
      "slugNotSupported": "Slug can only be set for blog posts and changelogs",
      "slugTaken": "A post with this slug already exists",
      "tooManyPublishRequests": "Too many GitHub publish requests. Please try again shortly.",
      "contentTypeMismatch": "Content type does not match the saved post",
      "saveBeforePublishing": "Save the content before publishing it to GitHub",
      "noDefaultBranch": "Selected GitHub repository does not have a default branch",
      "connectViaGithubApp": "Connect this repository through the GitHub App before publishing.",
      "publishingPaused": "GitHub content publishing is paused",
      "filePathTooLong": "The configured directory and content slug exceed GitHub's file path limit",
      "imagePathTooLong": "The configured image path exceeds GitHub's path limit",
      "dataSourceRequired": "At least one data source must be enabled.",
      "eventRequired": "At least one event must be selected.",
      "metadataNotSupported": "Cover, tags and authors can only be set for blog posts and changelogs",
      "unknownAuthor": "One of the selected authors no longer exists",
      "authorSlugTaken": "Another author already uses this ID",
      "assetsTooLarge": "The post's images, cover and author avatars are too large for one pull request",
      "existingEntryUnreadable": "Couldn't read the post's current file from GitHub. Try again in a moment.",
      "invalidFrontmatter": "The frontmatter at the top of this post isn't valid YAML. Fix or remove it, then publish again."
    },
    "iris": {
      "runInProgress": "Iris is already working on a run"
    },
    "notifications": {
      "ownerOnly": "Only the organization owner can update notification settings"
    },
    "usageAlerts": {
      "ownerOnly": "Only the organization owner can manage usage alerts"
    },
    "user": {
      "notMember": "You are not a member of this organization",
      "ownerOnlyDelete": "Only organization owners can delete organizations",
      "ownerCannotLeave": "Organization owners cannot leave directly. Delete the organization instead.",
      "notOwner": "You are not the owner of organization {orgId}",
      "noTransferTarget": "Organization {orgId} has no other members to transfer ownership to"
    },
    "onboarding": {
      "tooManyLogoLookups": "Too many logo lookups. Please try again shortly.",
      "tooManyAgentRequests": "Too many onboarding agent requests. Please try again shortly.",
      "selfServeAgent": {
        "no-company-domain": "We couldn't determine your company website. Add a website URL to your brand identity first.",
        "website-unreachable": "We couldn't reach your company website. Check the website URL in your brand identity."
      }
    },
    "contentCalendar": {
      "postNotFound": "Post not found",
      "invalidTime": "Pick a time from now up to one year ahead.",
      "destinationNotSupported": "This content type can't be published there.",
      "repositoryNotFound": "The selected GitHub repository isn't connected anymore.",
      "accountNotFound": "The selected account isn't connected anymore.",
      "publishingInProgress": "This post is being published right now. Try again in a minute.",
      "unconfirmedSocialPost": "A social post of this schedule may already be live. Check the account, then retry or dismiss it before scheduling again.",
      "socialAlreadyPosted": "This post already went out to that account. Create a new post to post again.",
      "conflict": "The schedule changed in the meantime. Reload and try again.",
      "nothingScheduled": "Nothing is scheduled for this post."
    }
  },
  "onboarding": {
    "heardAbout": {
      "x": "X / Twitter",
      "search": "Google",
      "blog_or_newsletter": "Blog or newsletter",
      "friend_or_colleague": "Friend or colleague"
    },
    "accountMenu": {
      "label": "Account menu",
      "description": "Manage your session before choosing a plan."
    },
    "competitorSearch": {
      "unavailable": "Search unavailable",
      "retry": "Retry search",
      "addManually": "Add \"{name}\" manually",
      "looking": "Looking",
      "noMatches": "No matches",
      "placeholder": "Type a name or domain"
    },
    "emailPrefs": {
      "legend": "Emails",
      "marketingEmails": {
        "description": "New features, tips and announcements."
      },
      "dailySummary": {
        "label": "Weekly GEO recap",
        "description": "One email each Monday with last week's visibility and what changed."
      }
    },
    "logoField": {
      "upload": "Upload logo"
    },
    "progress": {
      "label": "Step {current} of {total}",
      "goTo": "{step, select, 1 {Go to Workspace} 2 {Go to Visibility} 3 {Go to Competitors} other {Go to Pricing}}"
    },
    "actions": {
      "invalidAttribution": "Invalid attribution details",
      "invalidNotificationPrefs": "Invalid notification preferences",
      "ownerOnly": "Only the organization owner can set this"
    },
    "linkedinConnect": {
      "connectFailed": "Failed to connect the LinkedIn profiles",
      "invalidLink": "This connection link is invalid. Please start the connection again.",
      "backToDashboard": "Back to dashboard",
      "loadFailed": "Failed to load your LinkedIn profiles. Please start the connection again.",
      "companyPage": "Company page",
      "personalProfile": "Personal profile",
      "connectProfiles": "{count, plural, one {Connect # profile} other {Connect # profiles}}",
      "title": "Where should we post from?",
      "description": "Pick the LinkedIn profiles you want to post as."
    },
    "competitors": {
      "metaTitle": "Pick your competitors",
      "startTracking": "Start tracking",
      "addBrand": "Add a brand",
      "yourCompetitors": "Your competitors <muted>({count} of {max})</muted>",
      "suggestedFor": "Suggested for {domain}",
      "addAll": "Add all",
      "otherCompaniesIn": "Other companies in {field}",
      "suggestionsFailed": "Could not pull suggestions for {domain}. You can add a brand above or try again.",
      "tryingAgain": "Trying again",
      "noSuggestions": "Nothing obvious for {domain}. Search above instead.",
      "showMore": "Show {count} more",
      "description": "When AI recommends someone instead of {companyName}, who is it? Pick the brands you want to be measured against.",
      "descriptionFallback": "When AI recommends someone instead of you, who is it? Pick the brands you want to be measured against.",
      "title": "Who do you lose deals to?"
    },
    "visibility": {
      "metaTitle": "Track your AI visibility",
      "brandName": "Brand name",
      "brandNameRequired": "Enter your brand name to continue.",
      "brandNamePlaceholder": "Acme",
      "questionsFrom": "Questions from {host} <muted>({selected} of {total})</muted>",
      "questions": "Questions <muted>({selected} of {total})</muted>",
      "skipStep": "Skip this step",
      "description": "Notra is a modern GEO tool that asks ChatGPT, Claude and Gemini the questions your buyers ask. See if you show up, who shows up instead and how to fix it.",
      "title": "See what AI says about you",
      "reading": "Reading {host}. Takes about 20 seconds.",
      "readFailed": "Could not read {host}. Check the address, or just type your brand name below.",
      "languagesHint": "Questions are written in {language}. Other languages are translated when we scan."
    },
    "pricing": {
      "freeTrial": "Free trial",
      "startFreeTrial": "Start free trial",
      "selectPlan": "Select {plan}",
      "title": "Choose your plan",
      "description": "Pick a plan to unlock AI visibility tracking and content, or close this and look around first.",
      "close": "Close and go to dashboard",
      "renews": "{interval, select, year {Your plan renews automatically every year until you cancel.} other {Your plan renews automatically every month until you cancel.}}"
    },
    "workspace": {
      "slugStatus": {
        "checking": "Checking slug availability",
        "available": "Slug is available",
        "unavailable": "Slug is already taken",
        "error": "Could not check slug availability"
      },
      "validation": {
        "checkField": "Please check this field",
        "websiteInvalid": "Please enter a valid public website URL (e.g., https://example.com)",
        "heardAboutOtherRequired": "Please share where you heard about Notra"
      },
      "logoTooLarge": "Logo image must be less than {size}MB.",
      "logoInvalidType": "Please choose a JPEG, PNG, GIF, WebP or AVIF image.",
      "logoReadFailed": "Could not read the selected image.",
      "createFailed": "Failed to create workspace",
      "resumeDescription": "Your workspace is ready. Add your website and we'll pick up your brand voice.",
      "description": "Add your website and we'll pick up your brand voice from it.",
      "resumeTitle": "Finish setting up your workspace",
      "title": "Set up your workspace",
      "heardAbout": "Where did you hear about Notra?",
      "selectOption": "Select an option",
      "tellUsWhere": "Tell us where",
      "tellUsWherePlaceholder": "Podcast, community, friend, etc."
    },
    "shared": {
      "skipOnboarding": "Skip onboarding"
    }
  },
  "shared": {
    "table": {
      "selectAllRows": "Select all rows",
      "selectRow": "Select row {row}",
      "resizeColumn": "Resize {column} column"
    },
    "checkbox": {
      "partiallySelected": "Partially selected"
    },
    "icons": {
      "verifiedOrganization": "Verified organization",
      "governmentAccount": "Government account"
    },
    "geoScan": {
      "scanStarted": "Scan started. Follow its progress on the Prompts page."
    },
    "calendar": {
      "nextMonth": "Go to the next month",
      "previousMonth": "Go to the previous month",
      "chooseMonth": "Choose the month",
      "chooseYear": "Choose the year",
      "navigation": "Navigation bar",
      "weekNumberHeader": "Week number",
      "weekNumber": "Week {weekNumber}",
      "dayButton": "{today, select, true {Today, } other {}}{date}{selected, select, true {, selected} other {}}"
    }
  },
  "brand": {
    "identity": {
      "form": {
        "audienceHeading": "Target Audience",
        "audienceLabel": "Who are you writing for?",
        "audiencePlaceholder": "Describe your target audience: their interests, pain points and what matters to them",
        "companyProfileHeading": "Company Profile",
        "companyNamePlaceholder": "Your company name",
        "descriptionPlaceholder": "A short overview of your company",
        "toneLanguageHeading": "Tone & Language",
        "toneLabel": "Tone",
        "toneProfileLabel": "Tone profile",
        "selectTone": "Select tone",
        "toneScopeNote": "Tone only changes how things are phrased. Structure and facts stay the same. Pick Custom Tone to describe your own voice instead.",
        "customToneLabel": "Custom tone",
        "customTonePlaceholder": "Add custom tone notes…",
        "selectLanguage": "Select language…",
        "noLanguageFound": "No language found",
        "customInstructionsLabel": "Custom instructions",
        "customInstructionsPlaceholder": "Add specific instructions for AI-generated content, such as phrases to avoid or features to mention",
        "tones": {
          "Conversational": {
            "label": "Conversational",
            "description": "Warm and direct, like talking to a peer."
          },
          "Professional": {
            "label": "Professional",
            "description": "Clear and confident without the fluff."
          },
          "Casual": {
            "label": "Casual",
            "description": "Relaxed, friendly, reads like a chat."
          },
          "Formal": {
            "label": "Formal",
            "description": "Precise and structured. No slang."
          }
        }
      },
      "analysisSteps": {
        "scraping": "Scraping",
        "extracting": "Extracting"
      },
      "header": {
        "tabs": {
          "identity": {
            "description": "Configure your brand identity and tone"
          },
          "references": {
            "description": "Real posts that help the AI learn your writing style"
          },
          "sitemap": {
            "description": "Track indexed pages and monitor site health for AI discovery"
          },
          "guidelines": {
            "description": "Logos, colors, typography and landing page screenshots pulled from your site"
          }
        }
      },
      "tabs": {
        "guidelines": "Guidelines"
      },
      "toasts": {
        "deleted": "{count, plural, =0 {Brand identity deleted} one {Brand identity deleted. # trigger was disabled.} other {Brand identity deleted. # triggers were disabled.}}",
        "deleteFailed": "Failed to delete brand identity",
        "defaultUpdated": "Default brand identity updated",
        "setDefaultFailed": "Failed to set default"
      },
      "analyze": {
        "websiteUrl": "Website URL",
        "analyzing": "Analyzing",
        "tryDifferentUrl": "Try again with a different URL"
      },
      "modal": {
        "analyzing": {
          "title": "Analyzing Website",
          "description": "Extracting your brand information"
        },
        "failed": {
          "title": "Analysis Failed"
        },
        "idle": {
          "title": "Add your brand",
          "description": "Enter your website URL to automatically extract your brand identity"
        }
      },
      "addIdentity": {
        "title": "Add brand identity",
        "description": "Create a new brand identity with a different tone, audience or language for your content.",
        "namePlaceholder": "e.g. Marketing, Technical, Internal",
        "websiteHint": "We'll analyze this website to extract your brand identity."
      },
      "analysisAlert": {
        "failedTitle": "Brand analysis failed",
        "runningTitle": "Brand analysis is running",
        "runningDescription": "We are extracting the website details now. The form updates automatically as soon as the analysis finishes."
      },
      "voiceSelector": {
        "nameUpdated": "Identity name updated",
        "updateFailed": "Failed to update identity",
        "toneProfile": "Tone Profile: {tone}",
        "language": "Language: {language}",
        "defaultTooltip": "Default brand identity used when no specific identity is selected.",
        "editName": "Edit identity name",
        "reanalyze": "Re-analyze",
        "alreadyDefault": "Already default identity",
        "setDefault": "Set as default identity",
        "deleteIdentity": "Delete identity",
        "editDescription": "Update the name used to identify this brand profile.",
        "nameLabel": "Identity name",
        "namePlaceholder": "e.g. Default, Marketing, Technical",
        "deleteTitle": "Delete identity?",
        "deleteDescription": "This removes this brand identity and its saved profile settings. This action cannot be undone."
      }
    },
    "guidelines": {
      "resourceActions": {
        "open": "Open {label}",
        "copyUrl": "Copy {label} URL"
      },
      "copyItem": "Copy {name}",
      "panel": {
        "generationFailed": "Guideline generation failed",
        "generationFailedDescription": "Something went wrong while generating guidelines.",
        "loadErrorTitle": "Guidelines unavailable",
        "loadErrorDescription": "We couldn't load this brand identity's guidelines.",
        "generate": "Generate Guidelines",
        "emptyTitle": "No guidelines yet",
        "emptyDescription": "Brand guidelines haven't been generated yet. Generate them to pull logos, colors, typography and landing page screenshots from your website.",
        "generatingGuidelines": "Generating guidelines…",
        "updatingGuidelines": "Updating guidelines…",
        "updatedAt": "Updated {time}",
        "noAssetsTitle": "Guidelines are empty",
        "noAssetsDescription": "No brand assets found for this identity yet. Refresh to pull the latest logos, colors and screenshots."
      },
      "pdf": {
        "upload": "Upload PDF",
        "uploadedAt": "Uploaded {time}",
        "uploadLabel": "Upload brand guideline PDF",
        "notPdf": "Upload a PDF file",
        "tooLarge": "This PDF is too large. The limit is {maxMb} MB.",
        "badFilename": "PDF filename must be between 1 and 200 characters",
        "saved": "Brand guideline PDF saved",
        "saveFailed": "Failed to save the PDF",
        "removed": "Brand guideline PDF removed",
        "removeFailed": "Failed to remove the PDF",
        "replace": "Replace guideline PDF",
        "remove": "Remove {filename}"
      },
      "tokens": {
        "title": "UI Tokens"
      },
      "typography": {
        "title": "Typography",
        "previewUnavailable": "Google-hosted preview unavailable; showing a locally installed font or system fallback.",
        "weight": "Weight {value}",
        "size": "Size {value}",
        "lineHeight": "Line height {value}"
      },
      "colors": {
        "title": "Colors"
      },
      "assets": {
        "title": "Logo Assets",
        "slots": {
          "logo": {
            "light": "Light Logo",
            "dark": "Dark Logo"
          },
          "wordmark": {
            "light": "Light Wordmark",
            "dark": "Dark Wordmark"
          }
        }
      },
      "screenshots": {
        "title": "Desktop Screenshots",
        "desktopSlice": "Desktop {index}",
        "fullPage": "Full page"
      },
      "colorRoles": {
        "primary": "Primary",
        "secondary": "Secondary",
        "accent": "Accent",
        "foreground": "Foreground"
      },
      "fontRoles": {
        "heading": "Heading",
        "body": "Body",
        "button": "Button"
      },
      "tokenTypes": {
        "spacing": "Spacing",
        "radius": "Radius",
        "shadow": "Shadow",
        "component": "Component"
      },
      "screenshotKinds": {
        "desktop_hero": "Desktop Hero",
        "desktop_full_page": "Desktop full page",
        "mobile_hero": "Mobile Hero"
      },
      "assetKinds": {
        "wordmark": "Wordmark"
      },
      "colorDialog": {
        "added": "Color added",
        "updated": "Color updated",
        "saveFailed": "Failed to save color",
        "editTitle": "Edit color",
        "addDescription": "Add a brand color and how it is used.",
        "editDescription": "Update this brand color and how it is used.",
        "lightColor": "Light color",
        "lightColorPicker": "Light color picker",
        "darkColor": "Dark color",
        "darkColorPicker": "Dark color picker",
        "darkPlaceholder": "Optional dark value",
        "namePlaceholder": "Optional name",
        "usage": "Usage",
        "usagePlaceholder": "e.g. Primary buttons"
      },
      "fontDialog": {
        "updated": "Font updated",
        "updateFailed": "Failed to update font",
        "title": "Edit font",
        "description": "Update this typeface and its role.",
        "family": "Family",
        "familyPlaceholder": "e.g. Inter",
        "lineHeight": "Line height"
      },
      "tokenDialog": {
        "updated": "Token updated",
        "updateFailed": "Failed to update token",
        "title": "Edit token",
        "description": "Update this design token.",
        "namePlaceholder": "e.g. spacing-md",
        "value": "Value",
        "valuePlaceholder": "e.g. 16px"
      },
      "screenshotDialog": {
        "updated": "Screenshot updated",
        "updateFailed": "Failed to update screenshot",
        "title": "Edit screenshot",
        "description": "Update how this landing page capture is labeled."
      },
      "assetDialog": {
        "fileLabel": "Asset file",
        "selectedFile": "Selected {type}",
        "dropzone": "Drag and drop or click to upload",
        "acceptedTypesWithLimit": "SVG, PNG, JPG, GIF, WebP or AVIF, max 5MB",
        "uploadFile": "Upload asset file",
        "invalidType": "Use SVG, PNG, JPG, GIF, WebP or AVIF.",
        "tooLarge": "Brand assets must be 5MB or smaller.",
        "fileRequired": "Upload a file to add this asset.",
        "added": "Asset added",
        "updated": "Asset updated",
        "saveFailed": "Failed to save asset",
        "editTitle": "Edit asset",
        "addDescription": "Upload a file and set its classification.",
        "editDescription": "Replace the file or update the classification for this logo asset.",
        "variant": "Variant"
      }
    },
    "sitemap": {
      "selectSitemap": "Select sitemap",
      "addDialog": {
        "urlRequired": "Enter a sitemap URL",
        "offHostToast": "Sitemaps must stay on {host} or its subdomains",
        "noWebsite": "Set a website on this brand identity first",
        "description": "Track indexed pages and monitor site health for AI discovery.",
        "scopedToHost": "Scoped to {host} and its subdomains",
        "scopedToWebsite": "Scoped to this brand identity's website",
        "labelLabel": "Label (optional)",
        "labelPlaceholder": "Marketing site"
      },
      "list": {
        "removed": "Sitemap removed",
        "removeFailed": "Failed to remove sitemap",
        "loadErrorTitle": "Sitemaps unavailable",
        "loadErrorDescription": "We couldn't load this brand identity's sitemaps.",
        "emptyDescription": "Add a sitemap to track indexed pages and monitor site health for AI discovery.",
        "emptyTitle": "No sitemaps yet",
        "actions": "Sitemap actions",
        "remove": "Remove sitemap",
        "indexedPages": "{indexed} of {total} pages indexed",
        "removeTitle": "Remove sitemap?",
        "removeDescriptionNamed": "This removes {label} and its crawled pages from this brand identity.",
        "removeDescription": "This removes this sitemap and its crawled pages from this brand identity.",
        "removeConfirm": "Remove Sitemap"
      },
      "pages": {
        "columns": {
          "crawled": "Crawled"
        },
        "wordCount": "{count, plural, one {# word} other {# words}}",
        "textRatio": "{percent}% text ratio",
        "links": "{internal} int / {external} ext",
        "neverCrawled": "Never crawled",
        "statusFilter": "Sitemap page status",
        "filters": {
          "crawled": "Crawled Pages ({count})",
          "failed": "Failed ({count})",
          "redirect": "Redirects ({count})",
          "queued": "Queued ({count})"
        },
        "sectionLabel": "Sitemap pages",
        "searchLabel": "Search sitemap URLs",
        "searchPlaceholder": "Search URLs…",
        "noSearchResults": "No URLs match your search.",
        "emptyView": "No URLs in this view yet.",
        "itemLabel": "pages"
      }
    },
    "references": {
      "list": {
        "xConnected": "X account connected",
        "deleted": "Reference deleted",
        "deleteFailed": "Failed to delete reference",
        "updateNoteFailed": "Failed to update note",
        "updatePlatformsFailed": "Failed to update platforms",
        "loading": "Loading references",
        "emptyDescription": "Add a tweet or writing sample so the AI can match your style.",
        "emptyTitle": "No references yet"
      },
      "card": {
        "daysAgo": "{count}d ago",
        "weeksAgo": "{count}w ago",
        "openSource": "Open source",
        "noteLabel": "Reference note",
        "notePlaceholder": "Add a note…",
        "platformBadges": {
          "twitter": "Twitter"
        },
        "platformOptions": {
          "all": "All platforms",
          "twitter": "Twitter / X",
          "blog": "Blog & Changelog"
        },
        "editPlatformsTitle": "Edit platforms",
        "editPlatformsDescription": "Choose which AI agents can use this reference.",
        "useFor": "Use for",
        "actions": "Open reference actions",
        "edit": "Edit reference",
        "delete": "Delete reference",
        "customReference": "Custom reference"
      },
      "add": {
        "added": "Reference added",
        "usage": {
          "noneRemaining": "No references remaining. Upgrade your plan to add more.",
          "remaining": "You have {remaining} remaining · after this you will have {afterRemaining} left",
          "included": "· {included} included{overages, plural, =0 {} one {, # overage} other {, # overages}}"
        },
        "source": {
          "description": "Choose a source to add writing style references.",
          "tweetUrlTitle": "Tweet URL",
          "tweetUrlDescription": "Paste a link to a specific tweet",
          "importXDescription": "Bulk import recent posts from an account",
          "customTitle": "Custom text",
          "customDescription": "Write or paste your own text"
        },
        "tweet": {
          "addFailed": "Failed to add tweet",
          "title": "Add Tweet",
          "description": "Paste a tweet URL to add it as a writing style reference."
        },
        "importX": {
          "disconnected": "Disconnected @{username}",
          "imported": "{count, plural, one {Imported # post from @{username}} other {Imported # posts from @{username}}}",
          "nothingNew": "No new posts to import. All recent posts are already added.",
          "importFailed": "Failed to import tweets",
          "description": "Select a connected account to import recent posts, or connect a new one.",
          "amountLabel": "Amount of posts to import:",
          "maxTooltip": "Maximum 20 posts per import",
          "noAccountsDescription": "Connect an X account to import recent posts.",
          "importedLabel": "Imported",
          "connect": "Connect an X account",
          "connectAnother": "Connect another X account"
        },
        "custom": {
          "contentRequired": "Enter some text",
          "saveFailed": "Failed to save reference",
          "title": "Add custom reference",
          "description": "Paste or write text that represents your writing style.",
          "contentPlaceholder": "Paste or write text that represents your writing style…",
          "sourceUrlLabel": "Source URL (optional)",
          "noteLabel": "Note (optional)",
          "notePlaceholder": "When should the AI use this as reference?",
          "submit": "Save Reference"
        }
      }
    },
    "shared": {
      "createIdentity": "Create Identity",
      "addReference": "Add Reference",
      "addSitemap": "Add Sitemap",
      "refreshGuidelines": "Refresh Guidelines",
      "addColor": "Add color",
      "addAsset": "Add asset",
      "importFromX": "Import from X",
      "enterAnIdentityName": "Enter an identity name"
    },
    "defaults": {
      "untitledIdentity": "Untitled brand identity"
    },
    "toasts": {
      "identitySaved": "Brand identity saved",
      "urlInvalid": "Enter a valid public website URL",
      "analysisStarted": "Analysis started",
      "startAnalysisFailed": "Failed to start analysis",
      "guidelineGenerationStarted": "Guideline generation started",
      "refreshGuidelinesFailed": "Failed to refresh guidelines",
      "saveChangesFailed": "Failed to save changes",
      "analysisFailed": "Analysis failed"
    }
  },
  "skills": {
    "description": "Reusable instructions your agents load when generating content.",
    "createSkill": "Create Skill",
    "installed": "Installed skills",
    "count": "({total})",
    "countFiltered": "({visible} of {total})",
    "search": {
      "label": "Search skills",
      "placeholder": "Search by name or description"
    },
    "empty": {
      "description": "Add a skill to capture writing knowledge the AI can reuse."
    },
    "toasts": {
      "imported": "Skill imported from skills.sh",
      "created": "Skill created",
      "saved": "Skill saved",
      "deleted": "Skill deleted"
    },
    "validation": {
      "nameMax": "Name must be {max} characters or fewer",
      "nameFormat": "Name must be lowercase kebab-case",
      "descriptionRequired": "Description is required",
      "descriptionMax": "Description must be {max} characters or fewer",
      "contentRequired": "Content is required",
      "contentTooLarge": "Content is too large",
      "invalidInput": "Invalid input"
    },
    "create": {
      "description": "A skill is a reusable prompt your agents load at runtime.",
      "quickstart": "Quickstart",
      "quickstartHint": "Paste a skills.sh link to import a skill.",
      "quickstartErrors": {
        "unsupportedHost": "Only skills.sh links are supported.",
        "invalidUrl": "Enter a valid skills.sh URL."
      },
      "orManually": "or create manually",
      "nameHint": "Lowercase letters, digits and hyphens. Or paste a full skill (frontmatter + body) here to auto-fill all fields.",
      "descriptionPlaceholder": "What this skill does and when to use it.",
      "contentPlaceholder": "# My skill\n\nYou are…"
    },
    "detail": {
      "metaTitle": "Skill",
      "unsavedChanges": "Unsaved changes",
      "systemTooltip": "System skills cannot be renamed or deleted."
    },
    "delete": {
      "title": "Delete skill?",
      "description": "This will permanently delete the skill \"{name}\". Schedules that reference it will still run, but without its guidance their output may be lower quality.",
      "confirm": "Delete skill"
    },
    "editor": {
      "systemNameHint": "System skills keep a fixed name.",
      "nameHint": "Lowercase letters, digits and hyphens. Renaming may affect references to this skill by name.",
      "tabs": {
        "diff": "Diff"
      }
    },
    "table": {
      "noSearchResults": "No skills match your search."
    },
    "sort": {
      "label": "Sort skills",
      "ascending": "ascending",
      "descending": "descending",
      "selected": "{field}, {direction}"
    },
    "shared": {
      "createSkill": "Create skill"
    }
  },
  "common": {
    "actions": {
      "save": "Save",
      "saveChanges": "Save changes",
      "saving": "Saving…",
      "cancel": "Cancel",
      "delete": "Delete",
      "deleting": "Deleting…",
      "remove": "Remove",
      "edit": "Edit",
      "create": "Create",
      "creating": "Creating…",
      "update": "Update",
      "add": "Add",
      "close": "Close",
      "confirm": "Confirm",
      "continue": "Continue",
      "back": "Back",
      "next": "Next",
      "previous": "Previous",
      "retry": "Retry",
      "tryAgain": "Try again",
      "copy": "Copy",
      "copied": "Copied",
      "search": "Search",
      "loadMore": "Load more",
      "viewAll": "View all",
      "learnMore": "Learn more",
      "upgrade": "Upgrade",
      "connect": "Connect",
      "disconnect": "Disconnect",
      "refresh": "Refresh",
      "done": "Done",
      "open": "Open",
      "submit": "Submit",
      "reset": "Reset",
      "clear": "Clear",
      "export": "Export",
      "import": "Import",
      "download": "Download",
      "upload": "Upload",
      "share": "Share",
      "duplicate": "Duplicate",
      "rename": "Rename",
      "archive": "Archive",
      "restore": "Restore",
      "enable": "Enable",
      "disable": "Disable",
      "select": "Select",
      "apply": "Apply",
      "manage": "Manage",
      "settings": "Settings"
    },
    "states": {
      "loading": "Loading…",
      "noResults": "No results found",
      "empty": "Nothing here yet",
      "error": "Something went wrong",
      "unknown": "Unknown",
      "none": "None",
      "optional": "Optional",
      "required": "Required",
      "enabled": "Enabled",
      "disabled": "Disabled",
      "active": "Active",
      "inactive": "Inactive"
    },
    "errors": {
      "generic": "Something went wrong. Please try again.",
      "network": "Network error. Please check your connection.",
      "unauthorized": "You don't have permission to do that.",
      "notFound": "Not found"
    },
    "labels": {
      "account": "Account",
      "organization": "Organization",
      "geo": "GEO",
      "members": "Members",
      "notifications": "Notifications",
      "billing": "Billing",
      "credits": "Credits",
      "logs": "Logs",
      "brand": "Brand",
      "languages": "Languages",
      "models": "Models",
      "mode": "Mode",
      "light": "Light",
      "dark": "Dark",
      "system": "System",
      "creditsAdded": "Credits added",
      "topUpCredits": "Top up credits",
      "starting": "Starting…",
      "noXAccountsConnected": "No X accounts connected",
      "connecting": "Connecting…",
      "failedToDisconnectAccount": "Failed to disconnect account",
      "pending": "Pending",
      "created": "Created",
      "failed": "Failed",
      "skipped": "Skipped",
      "productUpdates": "Product updates",
      "date": "Date",
      "description": "Description",
      "amount": "Amount",
      "status": "Status",
      "year": "year",
      "month": "month",
      "current": "Current",
      "billingInterval": "Billing interval",
      "monthly": "Monthly",
      "yearly": "Yearly",
      "title": "Title",
      "integration": "Integration",
      "email": "Email",
      "password": "Password",
      "twoFactorAuthentication": "Two-factor authentication",
      "setUp": "Set up",
      "copyLabel": "Copy {label}",
      "labelCopied": "{label} copied",
      "chat": "Chat",
      "organizations": "Organizations",
      "failedToSwitchOrganization": "Failed to switch organization",
      "logo": "Logo",
      "name": "Name",
      "slug": "Slug",
      "yourSlug": "your-slug",
      "resetting": "Resetting…",
      "size": "Size",
      "image": "Image",
      "language": "Language",
      "openMenu": "Open menu",
      "role": "Role",
      "expires": "Expires",
      "sending": "Sending…",
      "send": "Send",
      "updating": "Updating…",
      "apiKeys": "API Keys",
      "createdAt": "Created at",
      "never": "Never",
      "actionsForName": "Actions for {name}",
      "quickStart": "Quick start",
      "optional": "(optional)",
      "permissions": "Permissions",
      "nameIsRequired": "Name is required",
      "invalidValue": "Invalid value",
      "organizationIdIsRequired": "Organization ID is required",
      "posts": "Posts",
      "brandIdentities": "Brand identities",
      "integrations": "Integrations",
      "schedules": "Schedules",
      "skills": "Skills",
      "projects": "Projects",
      "new": "New",
      "archived": "Archived",
      "all": "All",
      "question": "Question",
      "negative": "Negative",
      "neutral": "Neutral",
      "positive": "Positive",
      "feedback": "Feedback",
      "agent": "Agent",
      "model": "Model",
      "source": "Source",
      "project": "Project",
      "promptCopied": "Prompt copied",
      "copyAgentPrompt": "Copy agent prompt",
      "installThePackage": "Install the package",
      "packageManager": "Package manager",
      "or": "or",
      "kind": "Kind",
      "sentiment": "Sentiment",
      "filterByStatus": "Filter by status",
      "deleting": "Deleting…",
      "hidePassword": "Hide password",
      "showPassword": "Show password",
      "failedToCreateProject": "Failed to create project",
      "repositoryAlreadyConnected": "Repository already connected",
      "github": "GitHub",
      "linkedin": "LinkedIn",
      "signedOutSuccessfully": "Signed out successfully",
      "failedToSignOut": "Failed to sign out",
      "retrying": "Retrying",
      "searchBrands": "Search brands",
      "removeName": "Remove {name}",
      "website": "Website",
      "mostPopular": "Most popular",
      "savePercent": "Save {percent}%",
      "acmeInc": "Acme Inc",
      "deleteColumn": "Delete column",
      "deleteRow": "Delete row",
      "empty": "Empty",
      "noData": "No data",
      "selected": "Selected",
      "brandIdentity": "Brand identity",
      "companyInfo": "Company Info",
      "references": "References",
      "sitemap": "Sitemap",
      "analyze": "Analyze",
      "editLabel": "Edit {label}",
      "editName": "Edit {name}",
      "refreshing": "Refreshing…",
      "background": "Background",
      "sitemapAdded": "Sitemap added",
      "failedToAddSitemap": "Failed to add sitemap",
      "sitemapOrSiteUrl": "Sitemap or site URL",
      "adding": "Adding…",
      "url": "URL",
      "links": "Links",
      "today": "Today",
      "yesterday": "Yesterday",
      "blog": "Blog",
      "blogPost": "Blog post",
      "noSkillsYet": "No skills yet",
      "discard": "Discard",
      "updated": "Updated",
      "justNow": "Just now",
      "sources": "Sources",
      "filter": "Filter",
      "brandSentiment": "Brand sentiment",
      "markdown": "Markdown",
      "prompts": "Prompts",
      "aiEngines": "AI engines",
      "thinking": "Thinking…",
      "pauseName": "Pause {name}",
      "enableName": "Enable {name}",
      "nA": "N/A",
      "journeys": "Journeys",
      "visibility": "Visibility",
      "write": "Write",
      "dismiss": "Dismiss",
      "competitors": "Competitors",
      "impressions": "Impressions",
      "recommendation": "Recommendation",
      "addOn": "Add-on",
      "last7Days": "Last 7 days",
      "last14Days": "Last 14 days",
      "last30Days": "Last 30 days",
      "last90Days": "Last 90 days",
      "daily": "Daily",
      "weekly": "Weekly",
      "geoSettings": "GEO Settings",
      "actions": "Actions",
      "newProject": "New project",
      "comparison": "Comparison",
      "list": "List",
      "query": "Query",
      "clicks": "Clicks",
      "position": "Position",
      "filterBySource": "Filter by source",
      "allSources": "All sources",
      "notYet": "Not yet",
      "reconnectGoogle": "Reconnect Google",
      "connectSearchConsole": "Connect Search Console",
      "loadingProperties": "Loading properties…",
      "changeProperty": "Change property",
      "syncing": "Syncing…",
      "syncNow": "Sync now",
      "changeSearchConsoleProperty": "Change Search Console property",
      "avgPosition": "Avg. position",
      "rank": "Rank",
      "draft": "Draft",
      "guide": "Guide",
      "listicle": "Listicle",
      "overview": "Overview",
      "format": "Format",
      "video": "Video",
      "low": "Low",
      "medium": "Medium",
      "high": "High",
      "unassigned": "Unassigned",
      "link": "Link",
      "copyUrl": "Copy URL",
      "table": "Table",
      "agentReadiness": "Agent Readiness",
      "leaderboard": "Leaderboard",
      "contentGaps": "Content Gaps",
      "personas": "Personas",
      "shelfSpace": "Shelf Space",
      "repository": "Repository",
      "repositories": "Repositories",
      "noRepositoriesFound": "No repositories found.",
      "changelog": "Changelog",
      "paused": "Paused",
      "added": "Added",
      "suggestions": "Suggestions",
      "schedule": "Schedule",
      "manual": "Manual",
      "input": "Input",
      "output": "Output",
      "workspace": "Workspace",
      "off": "Off",
      "resume": "Resume",
      "manageIntegration": "Manage integration",
      "failedToPublishPost": "Failed to publish post",
      "published": "Published",
      "runNow": "Run now",
      "activity": "Activity",
      "releasePublished": "Release published",
      "canceled": "Canceled",
      "analytics": "Analytics",
      "n7d": "7D",
      "n30d": "30D",
      "n90d": "90D",
      "post": "Post",
      "accounts": "Accounts",
      "toneValue": "Tone: {value}",
      "languageValue": "Language: {value}",
      "companyValue": "Company: {value}",
      "changelogEntry": "Changelog entry",
      "linkedinPost": "LinkedIn post",
      "tweet": "Tweet",
      "noIntegrationsConnectedYet": "No integrations connected yet.",
      "lookbackWindow": "Lookback window",
      "brandVoice": "Brand voice",
      "noSourcesSelectedYet": "No sources selected yet",
      "identity": "Identity",
      "events": "Events",
      "release": "Release",
      "commandPalette": "Command palette",
      "automation": "Automation",
      "home": "Home",
      "traffic": "Traffic",
      "sendFeedback": "Send feedback",
      "iris": "Iris",
      "default": "Default",
      "more": "More",
      "newChat": "New chat",
      "older": "Older",
      "issue": "Issue",
      "commit": "Commit",
      "newPost": "New post",
      "moveToDraft": "Move to draft",
      "publish": "Publish",
      "deletePost": "Delete post?",
      "downloadImage": "Download image",
      "postPublished": "Post published",
      "yourName": "Your name",
      "preview": "Preview",
      "removeLabel": "Remove {label}",
      "uploadFailed": "Upload failed",
      "attachment": "Attachment",
      "downloadedImage": "Downloaded image",
      "untitled": "Untitled",
      "acmeIncSlug": "acme-inc",
      "clearSearch": "Clear search",
      "usageAlerts": "Usage alerts",
      "webhooks": "Webhooks",
      "regenerate": "Regenerate",
      "nameLogo": "{name} logo",
      "loading": "Loading…",
      "companyName": "Company name",
      "brandGuidelines": "Brand Guidelines",
      "generating": "Generating…",
      "weight": "Weight",
      "queued": "Queued",
      "yearToDate": "Year to date",
      "regenerating": "Regenerating…",
      "intent": "Intent",
      "chooseProperty": "Choose property",
      "searchRepositories": "Search repositories",
      "contentType": "Content type",
      "postTitle": "Post title",
      "usage": "Usage",
      "content": "Content",
      "other": "Other",
      "type": "Type",
      "saving": "Saving",
      "custom": "Custom",
      "allTime": "All time",
      "pause": "Pause",
      "generalSettings": "General Settings",
      "navigation": "Navigation",
      "noActiveOrganization": "No active organization",
      "brandIdentityTitle": "Brand Identity",
      "contentSingular": "Content",
      "customOwn": "Custom",
      "loadingLabel": "Loading",
      "otherNeuter": "Other",
      "thinkingLabel": "Thinking",
      "deleteAccount": "Delete account",
      "apiKey": "API key",
      "logOut": "Log out",
      "allPlatforms": "All platforms",
      "contentActivity": "Content activity",
      "sites": "Sites"
    },
    "messages": {
      "yourAiCreditsHaveBeen": "Your AI credits have been topped up and are ready to use.",
      "youMustKeepAtLeast": "You must keep at least one organization",
      "couldNotUpdateBillingPlease": "Could not update billing. Please try again.",
      "countPluralOneMemberOther": "{count, plural, one {# member} other {# members}}",
      "thisPageIsAlreadyOn": "This page is already on your shelf",
      "brandIdentityCreatedAnalysisStarted": "Brand identity created, analysis started",
      "failedToCreateBrandIdentity": "Failed to create brand identity",
      "setAWebsiteOnThis": "Set a website on this brand identity first.",
      "countPluralOneSourceOther": "{count, plural, one {# source} other {# sources}}",
      "zeroDataRetentionIsNow": "Zero data retention is now active.",
      "couldNotAddZeroData": "Could not add zero data retention. Please try again.",
      "aiVisibilityTrackingIsIncluded": "AI visibility tracking is included in Starter, Growth and Scale. Pick a plan to use GEO in this workspace.",
      "searchConsolePropertiesCouldNot": "Search Console properties could not be loaded. Reconnect Google and try again.",
      "noPropertiesWereFoundFor": "No properties were found for this Google account.",
      "yourCurrentPropertyStaysConnected": "Your current property stays connected until you confirm a new one.",
      "countPluralOneRepositoryOther": "{count, plural, one {# repository} other {# repositories}}",
      "countPluralOnePostOther": "{count, plural, one {# post} other {# posts}}",
      "thisWillPermanentlyDeleteTitle": "This will permanently delete \"{title}\". This can't be undone.",
      "thisSlugIsReservedAnd": "This slug is reserved and cannot be used for an organization",
      "tooManyPageLookupsPlease": "Too many page lookups. Wait a minute and try again.",
      "couldNotStartCheckoutPlease": "Could not start checkout. Please try again.",
      "brandIdentityCreatedButFailed": "Brand identity created, but failed to start analysis. You can re-analyze from the identity settings.",
      "urlsMustStayOnHost": "URLs must stay on {host} or its subdomains.",
      "organizationNameTooShort": "Organization name must be at least 2 characters",
      "organizationNameTooLong": "Organization name must be at most 100 characters",
      "organizationSlugTooShort": "Organization slug must be at least 2 characters",
      "organizationSlugTooLong": "Organization slug must be at most 63 characters",
      "enterAValidWebsite": "Enter a valid website URL",
      "enterAWebsiteUrl": "Enter a website URL"
    },
    "toasts": {
      "copied": "Copied to clipboard",
      "clipboardUnsupported": "Clipboard not supported",
      "copyFailed": "Failed to copy to clipboard",
      "linkedinPostCopied": "Copied post to clipboard",
      "linkedinPostCopyFailed": "Could not copy post. Copy it manually before posting.",
      "bookingOpenFailed": "Failed to open booking. Please try again."
    },
    "time": {
      "justNow": "just now",
      "underAMinute": "under a minute"
    },
    "units": {
      "points": "{value} pts"
    },
    "languages": {
      "English": "English",
      "Spanish": "Spanish",
      "French": "French",
      "German": "German",
      "Portuguese": "Portuguese",
      "Dutch": "Dutch",
      "Italian": "Italian",
      "Japanese": "Japanese",
      "Korean": "Korean",
      "Chinese": "Chinese",
      "Arabic": "Arabic",
      "Hindi": "Hindi",
      "Russian": "Russian",
      "Turkish": "Turkish",
      "Polish": "Polish",
      "Swedish": "Swedish",
      "Danish": "Danish",
      "Norwegian": "Norwegian",
      "Finnish": "Finnish",
      "Czech": "Czech",
      "Romanian": "Romanian",
      "Hungarian": "Hungarian",
      "Greek": "Greek",
      "Thai": "Thai",
      "Vietnamese": "Vietnamese",
      "Indonesian": "Indonesian",
      "Ukrainian": "Ukrainian",
      "Hebrew": "Hebrew"
    }
  },
  "geo": {
    "shared": {
      "purpose": "Purpose",
      "visits": "Visits",
      "pages": "Pages",
      "lastSeen": "Last seen",
      "recentAiRequests": "Recent AI requests",
      "clearFilters": "Clear filters",
      "notMentioned": "Not mentioned",
      "provider": "Provider",
      "page": "Page",
      "country": "Country",
      "answers": "Answers",
      "withYourBrand": "With your brand",
      "prompt": "Prompt",
      "mentioned": "Mentioned",
      "mentionsOverTime": "Mentions over time",
      "addCompetitor": "Add competitor",
      "synonyms": "Synonyms",
      "shareOfVoice": "Share of voice",
      "domain": "Domain",
      "you": "(You)",
      "removeCount": "Remove ({count})",
      "playingAgainstTheEngines": "Playing against the engines…",
      "span": "Span",
      "noAgentJourneysCapturedYet": "No agent journeys captured yet",
      "agentJourneys": "Agent journeys",
      "countPluralOnePageOther": "{count, plural, one {# page} other {# pages}}",
      "noAiVisitsCapturedYet": "No AI visits captured yet",
      "countPluralOnePromptOther": "{count, plural, one {# prompt} other {# prompts}}",
      "brandVisibility": "Brand visibility",
      "avgPosition": "Avg position",
      "countPluralOneAnswerOther": "{count, plural, one {# answer} other {# answers}}",
      "setUpGeoTracking": "Set up GEO tracking",
      "vsPreviousPeriodOfThe": "vs previous period of the same length",
      "path": "Path",
      "fetches": "Fetches",
      "crawler": "Crawler",
      "lastSeenTime": "Last seen {time}",
      "fetchedPages": "Fetched pages",
      "performanceByLanguage": "Performance by language",
      "track": "Track",
      "allModels": "All models",
      "memories": "Memories",
      "archivePersona": "Archive persona",
      "addPrompt": "Add prompt",
      "copyPrompt": "Copy prompt",
      "bestPosition": "Best position",
      "notRanked": "Not ranked",
      "tags": "Tags",
      "outcome": "Outcome",
      "whatChanged": "What changed",
      "saveView": "Save view",
      "searchQueries": "Search queries",
      "searchPerformance": "Search performance",
      "clickThroughRate": "Click-through rate",
      "suggestedTitle": "Suggested title",
      "removePrompt": "Remove {prompt}",
      "openDetailsPrompt": "Open details: {prompt}",
      "suggestedPrompts": "Suggested prompts",
      "editTags": "Edit tags",
      "addTags": "Add tags",
      "openDetails": "Open details",
      "scans": "Scans",
      "tracked": "Tracked",
      "selectAll": "Select all",
      "discovered": "Discovered",
      "brandMentions": "{brand} mentions",
      "tracking": "Tracking",
      "countPluralOneVisitOther": "{count, plural, one {# visit} other {# visits}}",
      "topPagesByAiSource": "Top pages by AI source",
      "countPluralOneBotOther": "{count, plural, one {# bot} other {# bots}}",
      "cited": "Cited",
      "addShelf": "Add shelf",
      "geoDirections": "GEO directions",
      "trendLabel": "Trend",
      "youLabel": "You",
      "rescan": "Rescan",
      "engines": "Engines",
      "engine": "Engine",
      "discoveredBrandsComeFromScan": "Discovered brands come from scan answers. Tracked brands are called out in scans and available in the writer.",
      "conversations": "Conversations",
      "vsFirstHalfOfThis": "vs first half of this range",
      "brandRanking": "Brand ranking",
      "scanningEngines": "Scanning engines…",
      "trackedCompetitor": "Tracked competitor",
      "discoveredInAnswersNotTracked": "Discovered in answers, not tracked yet",
      "docs": "Docs",
      "generatePrompts": "Generate prompts",
      "wOSearch": "w/o Search",
      "search": "Search",
      "type": "Type",
      "share": "Share",
      "open": "Open",
      "aiCrawler": "AI crawler",
      "aiReferral": "AI referral",
      "aiReferrals": "AI referrals",
      "avgDepth": "Avg. depth",
      "citations": "Citations",
      "citedInAnswer": "Cited in answer",
      "competitor": "Competitor",
      "consolidate": "Consolidate",
      "conversation": "Conversation",
      "couldNotLoadAnalysis": "Could not load analysis.",
      "crawledPagesPages": "Crawled {pages}+ pages",
      "crawlers": "Crawlers",
      "deleteProject": "Delete project",
      "direct": "Direct",
      "directCompetitor": "Direct competitor",
      "findingThemes": "Finding themes…",
      "importCompetitors": "Import competitors",
      "importPrompts": "Import prompts",
      "inProgress": "In progress",
      "indirect": "Indirect",
      "indirectCompetitor": "Indirect competitor",
      "lost": "Lost",
      "lowPriority": "Low priority",
      "mentionedAndCited": "Mentioned and cited",
      "mentionsLabel": "Mentions",
      "modelTraining": "Model training",
      "newPage": "New page",
      "noAiTrafficCapturedYet": "No AI traffic captured yet",
      "noRatedMentionsInThis": "No rated mentions in this period.",
      "noSavedAnswersRunA": "No saved answers. Run a scan or change the date range.",
      "noScanYet": "No scan yet",
      "noWebSearch": "No web search",
      "notChecked": "Not checked",
      "notScanned": "Not scanned",
      "ownedSourceCited": "Owned source cited",
      "positionDown": "Position down",
      "positionUp": "Position up",
      "projectBrandIdentity": "Project brand identity",
      "referral": "Referral",
      "referrals": "Referrals",
      "runAScanToSeeShareOfVoice": "Run a scan to see your share of voice",
      "runAScanToSeeAnswers": "Run a scan to see how engines answer this",
      "runScan": "Run scan",
      "scanInProgress": "Scan in progress",
      "scorePosition": "Score position",
      "searchIndex": "Search index",
      "selectABrandIdentity": "Select a brand identity",
      "updatePage": "Update page",
      "won": "Won",
      "writeArticle": "Write article",
      "writing": "Writing",
      "yourBrand": "Your brand",
      "scanning": "Scanning…",
      "newConversation": "New conversation",
      "turns": "Turns",
      "writingInProgress": "Writing…",
      "otherBrands": "Other brands",
      "engineMode": {
        "engineWithoutSearch": "{engine} (w/o Search)"
      },
      "trend": {
        "noVisibility": "No visibility"
      },
      "trafficConfidence": {
        "verified": "Verified",
        "reported": "Reported",
        "heuristic": "Heuristic"
      },
      "noScansYet": "No scans yet"
    },
    "agentReadiness": {
      "groups": {
        "mustDoLabel": "Must do",
        "mustDoHint": "Agents need these to use the site",
        "shouldDoLabel": "Should do",
        "shouldDoHint": "Makes the site easier for agents"
      },
      "band": {
        "great": "Great",
        "needs-improvement": "Needs improvement",
        "poor": "Poor"
      },
      "checklist": {
        "eyebrow": "Checklist",
        "partial": "Partial",
        "copyMasterPrompt": "Copy master prompt",
        "copyFullBacklog": "Copy full backlog",
        "suggestedFix": "Suggested fix",
        "copyFix": "Copy fix",
        "allPassed": "All eligible checks passed",
        "whatWeFound": "What we found",
        "noDetails": "No details reported.",
        "noRecommendation": "See the full report for guidance."
      },
      "scanDialog": {
        "title": "Run a public scan?",
        "body": "The scan runs through is-agentic.com, an open service by Vercel Labs. It only reads the public parts of your website and changes nothing. Anyone who knows your domain can view the report on is-agentic.com.",
        "confirm": "Start scan"
      },
      "scanningNotice": {
        "ariaLabel": "Scanning {domain}",
        "description": "Checking how AI agents understand your website."
      },
      "scoreCard": {
        "eyebrow": "Readiness score",
        "sinceLastScan": "{delta} since last scan",
        "checksPassingAria": "{passing} of {total} {label} checks passing",
        "noScore": "No score yet",
        "scanned": "Scanned {time}",
        "eligibleChecks": "{count, plural, one {# eligible check} other {# eligible checks}}",
        "fullReport": "Full report",
        "tierSummary": "<strong>{passing}</strong> of {total} passing · <strong>{earned}</strong>/{available} pts",
        "bonusSummary": "Bonus +{points} pts from {count, plural, one {# extra signal} other {# extra signals}}",
        "nextStepMustDo": "{count, plural, one {# must-do check is open} other {# must-do checks are open}}, worth up to {points} pts. Start with <strong>{name}</strong>",
        "nextStepMustDoNoPoints": "{count, plural, one {# must-do check is open} other {# must-do checks are open}}. Start with <strong>{name}</strong>",
        "nextStepShouldDo": "Every must-do check passes. Next up: <strong>{name}</strong>"
      },
      "scoreGauge": {
        "ariaLabel": "Readiness score {score} out of 100, {band}"
      },
      "changes": {
        "eyebrow": "Since last scan",
        "fixed": "Fixed",
        "improved": "Improved",
        "added": "New",
        "worsened": "Got worse",
        "empty": "Rescan after shipping fixes to see what changed.",
        "noChanges": "No checks changed since the last scan.",
        "passing": "Passing",
        "subline": "Compared with the scan from {date}",
        "columns": {
          "change": "Change",
          "check": "Check",
          "priority": "Priority",
          "result": "Result"
        }
      }
    },
    "aiTrafficCard": {
      "visitTrend": "{source} visit trend"
    },
    "aiTrafficLogCard": {
      "empty": "No visits match these filters",
      "visitors": "Visitors"
    },
    "answerSentiment": {
      "unrated": "Unrated",
      "exactExcerpt": "Exact excerpt: "
    },
    "brandSentimentCard": {
      "scoreHint": "AI-assessed tone toward your brand, from 0 to 100. Positive mentions count as 100, neutral as 50 and negative as 0. Single-turn answers in your prompt language only. Unknown labels and non-mentions are excluded. This is a descriptive score, not confidence or a percentage."
    },
    "citationsTable": {
      "showDetails": "{title}, show details",
      "purposeShowDetails": "{purpose}, show details",
      "purposeMarkdownShowDetails": "{purpose}, requested markdown, show details",
      "confidence": "Confidence",
      "markdownHint": "Asked for markdown via the Accept header",
      "columns": {
        "when": "When"
      }
    },
    "codeSnippet": {
      "command": "command",
      "snippet": "snippet"
    },
    "competitorDetailView": {
      "mentionsUnavailable": "Mentions for {competitor} could not be loaded.",
      "notEnoughScans": "Not enough scans yet to chart {competitor}.",
      "promptsUnavailable": "Prompt appearances could not be loaded.",
      "promptsEmpty": "{competitor} has not shown up in your tracked prompts yet.",
      "whereShowsUp": "Where {competitor} shows up",
      "whereShowsUpDescription": "Latest answer per prompt and engine that named {competitor}",
      "absent": "Absent",
      "editNamed": "Edit {competitor}",
      "editCompetitor": "Edit competitor",
      "foundInAnswers": "Found in AI answers",
      "trackCompetitor": "Track competitor",
      "mentionsHint": "Daily answers naming {competitor} across your tracked prompts and engines."
    },
    "competitorEditDialog": {
      "editDescription": "Name, website and how this brand shows up in your charts.",
      "addDescription": "Track a brand AI engines might recommend instead of you."
    },
    "competitorEditForm": {
      "competitorType": "Competitor type",
      "removeSynonym": "Remove {synonym}",
      "synonymPlaceholder": "Another name",
      "addSynonym": "Add synonym",
      "chartColor": "Chart color",
      "useColor": "Use {color}",
      "customColor": "Pick a custom color",
      "kindHint": "Direct sells what you sell. Indirect solves the same problem differently."
    },
    "competitorEngineMatrix": {
      "title": "Recommendations by assistant",
      "hint": "Share of each assistant's answers that mention the brand in the selected period. Darker cells mean more mentions.",
      "tableLabel": "Brand mention rate by AI assistant",
      "brandColumn": "Brand",
      "you": "You",
      "noChecks": "No answers",
      "empty": "No answers in this period yet.",
      "scanning": "Scanning engines…",
      "loadFailed": "Couldn't load assistant recommendations.",
      "cellDetail": "{mentions, number} of {checks, number} answers",
      "refreshFailed": "Couldn't refresh, showing earlier data",
      "showAll": "Show all {count, number}",
      "showLess": "Show less"
    },
    "competitorModal": {
      "description": "How AI engines mention {title} across your tracked prompts"
    },
    "competitorsTable": {
      "nounSingular": "competitor",
      "nounPlural": "competitors",
      "removeDescriptionMany": "These brands will no longer be called out in GEO scans. Historical mentions stay in your results.",
      "removeDescriptionOne": "\"{name}\" will no longer be called out in GEO scans. Historical mentions stay in your results.",
      "filterLabel": "Filter competitors by name",
      "filterPlaceholder": "Filter by name…",
      "empty": "No competitors match these filters",
      "title": "Tracked competitors"
    },
    "conversationBuilderDialog": {
      "description": "A real buyer conversation: an opening question and the follow-ups that decide the purchase. Every turn is checked for your brand.",
      "namePlaceholder": "Changelog tool research",
      "firstTurnPlaceholder": "What is the best tool to automate changelogs?",
      "followUpPlaceholder": "Which of those is the cheapest?",
      "removeTurn": "Remove turn {number}",
      "addFollowUp": "Add follow-up",
      "create": "Create conversation"
    },
    "conversationReplayThread": {
      "loadFailed": "Could not load the answer.",
      "mentionedAt": "Mentioned at #{position}"
    },
    "conversationResultsDialog": {
      "description": "Where your brand shows up as the conversation unfolds.",
      "skip": "Skip",
      "replay": "Replay",
      "empty": "No results yet. Play this conversation against the engines to see where your brand shows up.",
      "runNow": "Run conversation now"
    },
    "conversationsCard": {
      "runNamed": "Run {name} now",
      "runThis": "Run this conversation now",
      "includedInScans": "Included in scans",
      "pausedInScans": "Paused, skipped in scans",
      "deleteNamed": "Delete {name}",
      "generate": "Generate",
      "emptyGenerating": "Writing conversations for your buyers…",
      "empty": "Track an opening question plus the follow-ups that close the deal, or generate a few to start",
      "run": "Run",
      "moreActions": "More actions for {name}",
      "turnsCount": "{count, plural, one {# turn} other {# turns}}",
      "intro": "Multi-turn chats that follow a buyer from the first question to a decision",
      "emptyTitle": "No conversations yet"
    },
    "directions": {
      "labels": {
        "aiVisibility": "AI visibility",
        "promptResults": "Prompt results",
        "positionPerEngine": "position per engine",
        "mentionRate": "Mention rate",
        "rate": "Rate",
        "enginesCount": "{count, plural, one {# engine} other {# engines}}",
        "noEngines": "No engines scanned yet"
      },
      "cockpit": {
        "scanSchedule": "Last scan {lastScan} · next auto scan in {nextScan}",
        "kind": {
          "crawl": "Crawl"
        },
        "trendEyebrow": "Mention rate trend",
        "trendReadout": "{search} vs {withoutSearch}",
        "trafficBySource": "Traffic by source"
      },
      "delta": {
        "points": "{delta} pts"
      },
      "instrument": {
        "visibilityHint": "Share of tracked answers that name you, across every engine.",
        "bestEngine": "Best engine",
        "bestEngineRate": "{rate} mention rate",
        "noScans": "no scans",
        "trackedPrompts": "Tracked prompts",
        "trackedPromptsHint": "asked to every engine per scan",
        "aiTraffic": "AI traffic"
      },
      "leaderboard": {
        "journey": "Journey",
        "unique": "Unique",
        "entryPath": "Entry path",
        "journeysCount": "{count, plural, one {# journey} other {# journeys}}",
        "searchLastDays": "{search} · last 12 days",
        "enginesRanked": "Engines, ranked",
        "whereAiSendsPeople": "Where AI sends people"
      },
      "promptResultsTable": {
        "noResults": "No prompt results yet"
      },
      "report": {
        "meta": "GEO · {week} · {checks} checks across {engines} engines",
        "headline": "AI engines mention {company} in {rate} of answers, <up>up {delta} points</up> this week.",
        "winTitle": "ChatGPT {search} is where you win.",
        "winBody": "{search} names you in <strong>71%</strong> of answers, while ChatGPT without search gets you to <strong>62%</strong>.",
        "changelogTitle": "Your changelog is the front door for AI traffic.",
        "changelogBody": "One page took <strong>10,412</strong> of your <strong>18,226</strong> AI visits this week.",
        "shareTitle": "You own about a third of the conversation.",
        "shareBody": "Across competitor comparisons you take <strong>31%</strong> of mentions, ahead of Jasper at <strong>24%</strong>.",
        "agentsTitle": "Agents read several pages per visit.",
        "agentsBody": "One GPTBot journey <chip>{journey}</chip> read <strong>14 pages</strong> in <strong>22 minutes</strong>, starting at <path>/changelog</path>.",
        "weekOf": "Week of {date}"
      },
      "kpis": {
        "aiVisits": {
          "label": "AI visits",
          "hint": "crawlers and referrals"
        },
        "aiReferrals": {
          "hint": "humans from an AI answer"
        },
        "crawlerHits": {
          "label": "Crawler hits",
          "hint": "bots fetching your pages"
        },
        "journeys": {
          "hint": "linked agent sessions"
        }
      }
    },
    "engineFamilySheet": {
      "missedTitle": "{count, plural, one {# prompt misses you} other {# prompts miss you}}",
      "foundTitle": "{count, plural, one {# prompt shows you} other {# prompts show you}}",
      "trend": "Visibility over time",
      "descriptionModels": "How visible your brand is in each model",
      "descriptionEngine": "How visible your brand is in this engine",
      "lastChecked": "Last checked {time}",
      "seriesLabel": "Brand visibility",
      "brandsHint": "How often each brand shows up in this engine's answers to your prompts",
      "resultHeader": "Result",
      "emptyPrompts": "No prompts scanned yet",
      "visiblePrompts": "Visible in prompts"
    },
    "engineRateTable": {
      "columns": {
        "engineCount": "Engine ({count, number})",
        "lastChecked": "Last checked"
      },
      "hints": {
        "visible": "Answers where you showed up at all: your brand was named, one of your pages was cited as a source or both. Citations are included in this number.",
        "citations": "Answers that cited one of your own pages as a source, whether or not the brand itself was named. Always a subset of Visible.",
        "rate": "Visible answers divided by every answer checked on this engine.",
        "avgPosition": "Average rank of your brand across the answers that named it. Answers that only cited you carry no rank and are left out."
      },
      "visibilityLabel": "{engine} visibility",
      "readoutScanning": "Scanning now",
      "filterLabel": "Filter engines",
      "filterPlaceholder": "Filter by engine…",
      "hint": "How often each engine mentioned your brand or cited an owned source in this range. Manage engines in GEO settings.",
      "empty": "Run a scan to see engine mention rates",
      "emptySeed": "Mention rate by engine",
      "noMatches": "No engines match this filter"
    },
    "gapDetailSheet": {
      "coverage": "Mentioned by {visible} of {total} engines",
      "fallbackTitle": "Content gap"
    },
    "gapsTable": {
      "ignore": "Ignore",
      "rescanTooltip": "Re-run this prompt across engines to measure lift",
      "writeActions": {
        "review": "Review",
        "open": "Open post"
      },
      "searchWrite": {
        "create": "Draft page",
        "merge": "Merge into page",
        "ignore": "Draft anyway"
      },
      "wonDetail": "Engines now mention you in most answers. The gap stays here so you can see the lift from the published article.",
      "opportunityLabel": "{level}/{steps} opportunity · {rate} mention rate · Not visible on {missing} of {total, plural, one {# engine} other {# engines}} · {competitors, plural, =0 {no other brands recommended} one {# brand recommended instead} other {# brands recommended instead}}",
      "emptyCell": {
        "competitors": "None mentioned",
        "visibleOn": "Not mentioned on any engine yet",
        "impressions": "No query data"
      },
      "visibleOnMissing": "Not mentioned on any engine yet. Missing on {engines}",
      "engineDetail": {
        "mentioned": "Mentions you",
        "searched": "Ran this search"
      },
      "empty": {
        "preparing": {
          "title": "Preparing content gaps",
          "description": "Search and scan results are being organized. Check back shortly."
        },
        "scanning": {
          "title": "Scanning engines",
          "description": "Gaps appear here once the scan finishes."
        },
        "noScan": {
          "description": "Run a scan to see which questions AI engines answer without mentioning you."
        },
        "noPromptGaps": {
          "title": "No prompt gaps",
          "description": "Engines already mention you on the questions you track."
        },
        "noSearchGaps": {
          "title": "No search gaps",
          "description": "Search Console and AI scans have not found any uncovered searches yet."
        },
        "noMatches": {
          "title": "No matching gaps",
          "description": "Nothing matches these filters. Try a different search or engine."
        }
      },
      "gapType": "Gap type",
      "openSearchGap": "Open details for {query}",
      "tabs": {
        "prompt": "Prompt Gaps",
        "search": "Search Gaps"
      },
      "filterLabel": "Filter content gaps",
      "filterPlaceholder": "Filter gaps…",
      "engineFilterLabel": "Filter by missing engine",
      "allEngines": "All engines",
      "competitorDetail": {
        "trackedKind": "Tracked competitor · {kind}"
      },
      "columns": {
        "opportunity": "Opportunity",
        "visibleOn": "Visible on",
        "searchQuery": "Search query",
        "action": "Action",
        "searches": "AI searches"
      },
      "aiSearched": "AI searched: {queries}",
      "aiSearchSubtitle": "{more, plural, =0 {From \"{prompt}\"} other {From \"{prompt}\" and # more}}",
      "moreActions": "More actions for {query}",
      "openAiDraft": "Open AI search draft"
    },
    "geoAnswerActions": {
      "copy": "Copy answer",
      "copied": "Answer copied",
      "openSources": "Open sources",
      "openSource": "Open {title} on {domain}"
    },
    "geoAnswerMentionCard": {
      "alsoKnownAs": "Also known as",
      "loadingMentions": "Loading mentions",
      "withYouValue": "{own, number} of {total, number}",
      "viewCompetitor": "View competitor"
    },
    "geoAnswerMentionComponents": {
      "competitorDetails": "{brand}, Competitor details"
    },
    "geoAnswerSearch": {
      "searchedTheWeb": "Searched the web",
      "webSearch": "Web search",
      "showLess": "Show less",
      "citedSources": "{count, plural, one {# cited source} other {# cited sources}}"
    },
    "geoCsvImportDialog": {
      "line": "Line {line}",
      "moreIssues": "and {count} more",
      "readFailed": "Could not read that file",
      "kinds": {
        "prompts": {
          "description": "One prompt per row. Optional enabled column.",
          "importCount": "{count, plural, one {Import # prompt} other {Import # prompts}}"
        },
        "competitors": {
          "description": "One competitor per row. Optional domain, kind and synonyms.",
          "importCount": "{count, plural, one {Import # competitor} other {Import # competitors}}"
        }
      },
      "replaceHint": "{size} · Drop another file to replace",
      "dropTitle": "Drop your CSV here",
      "dropHint": "or click to browse · up to {size}",
      "ready": "Ready to import",
      "duplicates": "Duplicates skipped",
      "problems": "Rows with problems",
      "downloadTemplate": "Download template",
      "fileRejected": "Choose a single CSV file up to {size}",
      "newRows": "New",
      "updatedRows": "Already tracked, will be updated",
      "overLimit": "Over the limit of {limit}, not imported",
      "overLimitHint": "Your project tracks {current} of {limit} competitors. Remove some first to import the rest."
    },
    "geoEnginePicker": {
      "approvedWithoutZdr": "Approved without ZDR",
      "noZdrHost": "No ZDR host",
      "toggleModel": "Toggle {model}",
      "choosePlan": "Choose a plan before adding zero data retention.",
      "description": "Every prompt runs on each enabled model. Turn off the ones you don't need to keep scans small.",
      "enforceZdr": "Enforce ZDR",
      "zdrEnabledHint": "Only run models on zero-data-retention hosts. Models without one are marked in the list.",
      "zdrAddonHint": "Zero data retention is an add-on for any plan and adds 20% to the plan price. Models without a zero-data-retention host are marked in the list.",
      "addInBilling": "Add it in billing",
      "addZdr": "Add zero data retention",
      "checkingPlan": "Checking your plan…",
      "addZdrTooltip": "Add the zero data retention add-on to enforce it.",
      "noZdrTitle": "{model} has no zero-data-retention host",
      "noZdrDescription": "Prompts sent to this model may be stored by the provider even though ZDR is enforced for this project. Enable it anyway?",
      "enableWithoutZdr": "Enable without ZDR",
      "turnOffTitle": "Turn off {model}?",
      "turnOffDescription": "{model} is no longer listed for new tracking. If you turn it off, you cannot turn it back on for this project.",
      "turnOff": "Turn off",
      "showFewerProviders": "Show fewer providers",
      "showMoreProviders": "Show {count} more providers",
      "toggleProvider": "Toggle all {provider} models",
      "showFewerModels": "Show fewer models",
      "showMoreModels": "{count, plural, one {Show # other model} other {Show # other models}}"
    },
    "geoIngestSetup": {
      "tokenTitle": "Set your token",
      "tokenDescription": "Add this as {env} on every domain this project tracks.",
      "proxyTitle": "Add the proxy",
      "framework": "Framework",
      "method": "Install method",
      "methods": {
        "sdk": "Package",
        "vercel": "Vercel log drain",
        "cloudflare": "Cloudflare Logpush"
      },
      "drains": {
        "stepsTitle": "Set it up",
        "docsLink": "Read the guide",
        "vercel": {
          "requirements": "No code changes. Vercel sends your request logs to Notra and Notra keeps only the AI traffic. Drains need a Vercel Pro or Enterprise team.",
          "endpointTitle": "Endpoint URL",
          "headerTitle": "Custom header",
          "headerDescription": "Add this line under Custom Headers so Notra knows which project the logs belong to.",
          "stepOne": "In Vercel, open Team Settings, then Drains, and click Add Drain. Choose Logs.",
          "stepTwo": "Select the projects behind this site, keep the static, lambda and edge sources and pick the production environment.",
          "stepThree": "Choose Custom Endpoint, paste the endpoint URL, pick JSON or NDJSON, add the custom header and create the drain.",
          "limitation": "Known limitation: Vercel drains don't include request headers like Accept, so Notra can't see markdown requests or catch agents that pose as browsers. The package stays the more accurate option."
        },
        "cloudflare": {
          "requirements": "No code changes. Your site can be hosted anywhere, but its traffic has to be proxied through Cloudflare (the orange cloud on the DNS record). Logpush is available on every Cloudflare plan.",
          "destinationTitle": "Destination URL",
          "destinationDescription": "Paste this as the HTTP destination. It carries your token as the Authorization header.",
          "fieldsTitle": "Fields",
          "stepOne": "In Cloudflare, open your domain, go to Analytics & Logs, then Logpush, and create a job with an HTTP destination.",
          "stepTwo": "Paste the destination URL, pick the HTTP requests dataset and select the fields above. Set the timestamp format to RFC 3339.",
          "stepThree": "Optionally log the accept, sec-fetch-mode and sec-ch-ua request headers as custom fields and add RequestHeaders, so Notra can spot markdown requests and disguised agents.",
          "apiTitle": "Or create the job with the API",
          "apiFilename": "Create the Logpush job",
          "limitation": "Logpush uploads in batches, so new traffic shows up after a minute or two instead of instantly."
        }
      }
    },
    "promptTranslations": {
      "title": "Translations",
      "count": "{count}/{limit}",
      "scanIn": "Scan in {language}",
      "translationIn": "{language} translation",
      "full": "{language} already scans {limit} prompts. Turn one off to add this one.",
      "last": "{language} needs at least one prompt. Remove the language to stop scanning it.",
      "translating": "Translating…",
      "translatedOnScan": "Translated on the next scan",
      "edit": "Edit",
      "reset": "Reset",
      "save": "Save",
      "cancel": "Cancel"
    },
    "geoLanguagePicker": {
      "description": "{language} is on by default. Scan up to {max} languages.",
      "add": "Add a language",
      "limitReached": "Language limit reached",
      "noMatches": "No languages match",
      "remove": "Remove {language}",
      "locked": "Prompts are written in this language, so it stays tracked."
    },
    "geoPromptAnswerSkeleton": {
      "loading": "Loading answer"
    },
    "geoPromptAnswerThread": {
      "notMentioned": "This engine did not mention you.",
      "mentionedNoAnswer": "Mentioned, but no answer was captured.",
      "citedNoAnswer": "An owned source was cited, but no answer was captured."
    },
    "geoRangePicker": {
      "label": "Date range"
    },
    "geoRateSparkline": {
      "trend": "Brand visibility trend",
      "single": "Brand visibility {value}",
      "held": "Brand visibility held at {value} over {days} days",
      "changed": "Brand visibility {from} to {to} over {days} days"
    },
    "geoRemoveDialog": {
      "title": "Remove {noun}?",
      "titleBulk": "Remove {count} {noun}?",
      "confirm": "Remove {noun}"
    },
    "geoScanSchedule": {
      "nouns": {
        "preset": {
          "24": "day",
          "48": "48 hours",
          "72": "3 days",
          "168": "week",
          "336": "2 weeks",
          "720": "30 days"
        },
        "fallback": "scan interval",
        "days": "{count, plural, one {day} other {# days}}",
        "hours": "{count, plural, one {# hour} other {# hours}}"
      },
      "short": {
        "48": "48 hours",
        "72": "3 days",
        "336": "2 weeks",
        "720": "30 days"
      },
      "setFrequency": "Set frequency",
      "frequency": "Scan frequency",
      "default": "default",
      "customOption": "Custom…",
      "daysBetween": "Days between scans",
      "every": "every",
      "dayUnit": "day",
      "dayPluralSuffix": "s",
      "daysSr": "{count, plural, one {day} other {days}}",
      "summaryEnabled": "Enabled models are checked every <strong>{interval}</strong>.",
      "summaryPaused": "Automatic checks are paused. You can still run scans manually.",
      "automaticScans": "Automatic scans"
    },
    "geoSettingsForm": {
      "scanSize": "About {count, number} checks per scan, including web-search checks and conversation turns.",
      "description": "How your brand is identified and where prompts are scanned.",
      "brand": {
        "companyNameHint": "The main name we look for in answers.",
        "aliasesHint": "Other spellings, product names or the bare domain.",
        "aliases": "Aliases"
      },
      "domains": {
        "title": "Tracked domains",
        "description": "Other sites besides the brand website. Same ingest token; only listed domains and their subdomains are recorded.",
        "brandWebsiteLabel": "Brand website: {domain}",
        "brandWebsiteHint": "Brand website. Always recorded. Change it in Brand → Identity."
      },
      "conversionPaths": {
        "title": "Conversion paths",
        "description": "Paths that count as a conversion when an AI referral reaches them, for example /signup or /pricing. Prefix match; /pricing also counts /pricing/teams."
      },
      "languages": {
        "description": "Languages your prompts are scanned in. Prompts are written in {language}, other languages are translated."
      },
      "models": {
        "description": "Each enabled provider runs every prompt at the frequency you set here."
      }
    },
    "geoSetupEmpty": {
      "title": "AI visibility is not set up yet",
      "description": "Add your brand name and the engines to track, then run a scan to see how AI answers talk about you.",
      "action": "Set up tracking"
    },
    "geoTagList": {
      "remove": "Remove {value}"
    },
    "geoUpgradeGate": {
      "title": "GEO is locked on your current plan",
      "verifyFailed": "Could not verify your GEO access. Try again."
    },
    "journeyDetailSheet": {
      "columns": {
        "time": "Time",
        "referer": "Referer"
      },
      "fetchLimitMeta": "First {shown} of {total} fetches",
      "branchMeta": "Branched {count, plural, one {# time} other {# times}}",
      "stats": {
        "uniquePages": "Unique pages"
      },
      "copyJourneyId": "Copy journey id",
      "noFetches": "No fetches captured for this journey"
    },
    "journeyGroupSheet": {
      "noJourneysInRange": "No journeys in this range",
      "pagesFetched": "Pages fetched",
      "sampleMeta": "From the latest {count} journeys",
      "journeysPerDay": "Journeys per day",
      "recentJourneys": "Recent journeys",
      "stats": {
        "entryPage": "Entry page",
        "ofAllJourneys": "Of all journeys"
      }
    },
    "journeyOverviewCard": {
      "caption": "{count, plural, one {journey} other {journeys}}",
      "loadFailed": "Could not load agent journeys",
      "empty": "No journeys yet",
      "emptyDescription": "See the paths AI agents take through your site.",
      "stats": {
        "singleFetch": "Single fetch"
      }
    },
    "journeyPathSummary": {
      "morePages": "+{count, plural, one {# page} other {# pages}}"
    },
    "journeyPathTree": {
      "fetchedTimes": "Fetched {count} times",
      "noPages": "No pages captured for this journey."
    },
    "journeyPathsCard": {
      "caption": "{count, plural, one {page} other {pages}}",
      "captionSampled": "{count, plural, one {page} other {pages}} (top {shown} shown)",
      "loadFailed": "Could not load fetched pages",
      "empty": "No pages fetched yet",
      "emptyDescription": "Pages fetched by AI agents will appear here."
    },
    "journeysCard": {
      "openJourney": "Open {source} journey from {time}",
      "loadFailed": "Could not load agent journeys. Try refreshing the page.",
      "viewAiTraffic": "View AI traffic",
      "emptyDescription": "Journeys appear when AI traffic reaches your site.",
      "emptyTitle": "See how AI agents explore your site"
    },
    "journeysTab": {
      "loading": "Loading agent journeys"
    },
    "languagePerformanceCard": {
      "addLanguageAria": "Add {language}",
      "limitTooltip": "You can track up to {max} additional languages. Remove one in Languages to add {language}.",
      "notTracked": "Not tracked",
      "trendLabel": "{language} mention rate trend",
      "addedToTracking": "{language} added to tracking",
      "hint": "The same prompts run in each tracked language. Visibility includes brand mentions and citations from owned sources.",
      "noResults": "No language results yet",
      "confirmTitle": "Add {language}?",
      "confirmDescription": "This will run the same prompts in {language} so you can track performance in this language.",
      "addLanguage": "Add language"
    },
    "mentionRateCard": {
      "openBreakdown": "Open {name} visibility breakdown",
      "noVisibility": "{name}, no visibility",
      "visibilityLabel": "{name} visibility",
      "trackAria": "Track {name}",
      "untrackedHint": "This visibility comes from earlier scans. Add the model back in GEO settings to keep tracking it.",
      "addedToTracking": "{name} added to tracking",
      "visibilityByProvider": "Visibility by provider"
    },
    "mentionTrendAgents": {
      "accessibleLabel": "Mention activity for all providers. {count, plural, =0 {No individual lines shown} other {Individual lines shown for {names}}}",
      "showByProvider": "Show by provider"
    },
    "mentionTrendCard": {
      "runScan": "Run a scan to see your visibility trend",
      "eyebrow": "Visibility activity"
    },
    "personaActivityCard": {
      "forecastLabel": "{name} (forecast)",
      "eyebrow": "Persona visibility",
      "loadFailed": "Could not load persona activity.",
      "actual": "Actual",
      "forecast": "Forecast",
      "runScan": "Run a scan to see your visibility by persona"
    },
    "personaAddDialog": {
      "title": "Add persona",
      "description": "Describe the buyer you have in mind. We'll fill in their profile and memories.",
      "label": "Who should this persona represent?",
      "placeholder": "An agency founder comparing AI visibility tools for clients, with a tight budget and little time for setup…",
      "limitReached": "You've reached the {max}-persona limit. Delete one to generate this persona. Your description stays here.",
      "generate": "Generate persona"
    },
    "personaDetailDialog": {
      "answerCost": "Each persona answer counts as {multiplier} AI answers",
      "viewAria": "View",
      "views": {
        "profile": "Profile"
      },
      "scanHistory": "Persona scan history",
      "latestScan": "Latest · {time}",
      "emptyTitle": "No conversation yet",
      "emptyDescription": "Personas talk to every engine during each scan. Run one now to see this conversation.",
      "pausedDescription": "This persona is paused. Include it in scans to start a conversation.",
      "pausedTitle": "Persona paused",
      "scanningTitle": "Scanning…",
      "scanningDescription": "This persona is talking to your engines. The conversation shows up here once the answers are in."
    },
    "personaProfileEditor": {
      "savePersona": "Save persona",
      "regeneratingPrompts": "Regenerating prompts…",
      "saved": "Persona saved",
      "savedRegenerating": "Persona saved. Regenerating prompts…",
      "employment": "Employment",
      "jobTitle": "Job title",
      "companyProfile": "Company profile",
      "behavior": "Behavior",
      "motivations": "Motivations",
      "howTheySearch": "How they search",
      "sections": {
        "goals": "Goals",
        "painPoints": "Pain points",
        "currentStack": "Current stack",
        "buyingTriggers": "Buying triggers",
        "objections": "Objections"
      },
      "removeTool": "Remove {tool}",
      "addTool": "Add tool…",
      "stackLimit": "Current stack can contain up to six tools.",
      "memoryKinds": {
        "experience": "Experience",
        "preference": "Preference",
        "constraint": "Constraint"
      }
    },
    "personaPrompts": {
      "title": "Conversation prompts",
      "description": "Every engine receives these exact messages in the same order. They are generated from the persona's profile and memories.",
      "message": "Message {number}",
      "emptyDescription": "This persona is excluded from new scans until fixed prompts are generated from its current profile and memories."
    },
    "personaTableActions": {
      "answerCost": "Each persona answer counts as {multiplier} AI answers",
      "reactivate": "Reactivate persona",
      "restoreLimit": "You can have up to {max} active personas. Archive one before reactivating this one.",
      "waitForAction": "Wait for the current persona action to finish.",
      "reactivateAria": "Reactivate {name}",
      "regenerateAria": "Regenerate {name}",
      "regenerate": "Regenerate persona",
      "archiveAria": "Archive {name}",
      "view": "View persona",
      "pauseScans": "Pause scans",
      "includeInScans": "Include in scans"
    },
    "personasTable": {
      "persona": "Persona",
      "counts": "({active} active{archived, plural, =0 {} other { · # archived}})",
      "memoriesHint": "Background facts and preferences used to generate this persona's fixed prompts",
      "maxMessages": "Max. messages",
      "maxMessagesHint": "Upper limit of messages this persona sends to each AI engine per scan, not messages already sent. Each answer counts as {multiplier} AI answers.",
      "empty": "No personas yet. Generate a set to have them research your category during scans",
      "archiveDescription": "This persona will be removed from future scans. Its scan history is kept.",
      "nounSingular": "persona",
      "nounPlural": "personas",
      "archiveTitle": "Archive persona?"
    },
    "projectBrandSection": {
      "description": "This identity supplies the project's brand website and the default voice and sitemaps for new articles. You can choose another identity for an individual article.",
      "changeWarning": "Changing the identity does not regenerate the company name, aliases, competitors or tracking prompts. Review those settings after saving. Existing articles and scan history stay as they are. For a different business, create a new project instead.",
      "changing": "Changing identity",
      "change": "Change project identity",
      "changeFailed": "Could not change the project identity. Try again."
    },
    "projectBrandSelection": {
      "placeholder": "Choose an identity",
      "usesExisting": "Uses the existing identity and website: {url}",
      "multipleMatches": "Several identities use this website. Choose one for this project.",
      "willCreateNamed": "Creates the brand identity {name} from this website.",
      "willCreateUnnamed": "Creates a brand identity from this website."
    },
    "projectCreateDialog": {
      "description": "We'll find competitors, write prompts and run the first scan.",
      "nameLabel": "Project name",
      "invalidInput": "Enter a valid website and a project name.",
      "chooseIdentity": "Choose a brand identity for this website before continuing.",
      "analysisFailed": "Project created, but brand analysis could not start. Retry from Brand Identity.",
      "loadIdentitiesFailed": "Could not load brand identities.",
      "identitySaved": "The brand identity was saved. If you retry, we reuse it and start its analysis once the project exists. You can also manage it in Brand Identity.",
      "create": "Create project"
    },
    "projectDeleteSection": {
      "onlyProject": "This is your only project. Create another project before deleting it.",
      "description": "Permanently delete this project and all of its tracking data.",
      "confirmTitle": "Delete \"{name}\"?",
      "confirmDescription": "This permanently deletes its settings, prompts, competitors, scans and reports. You can't undo this."
    },
    "promptAddDialog": {
      "writeDescription": "A question your buyers ask AI engines.",
      "websiteDescription": "Generate more buyer questions from a site you already have.",
      "writeTab": "Write one",
      "websiteTab": "From a website",
      "questionPlaceholder": "best way to turn github activity into a changelog for a small team",
      "searchConsoleHint": "Top Search Console queries highlight as you type.",
      "moreCharacters": "{count, plural, one {# more character} other {# more characters}}",
      "websiteHint": "We'll add buyer questions, plus aliases and competitors. Existing prompts stay."
    },
    "promptBadges": {
      "intent": {
        "how_to": "How to"
      },
      "presence": {
        "training-data": "In knowledge",
        "retrieval-only": "Search only"
      },
      "presenceHint": {
        "training-data": "Engines name you from their own knowledge, not only from live search.",
        "retrieval-only": "Mentioned only when the engine searches live, not from its own knowledge.",
        "invisible": "No engine mentioned you on this prompt yet."
      }
    },
    "promptCopyButton": {
      "actionAria": "Copy prompt: {prompt}"
    },
    "promptDetailDialog": {
      "emptyTitle": "No answers yet",
      "emptyDescription": "This prompt is asked in the next scheduled scan. Run a scan now to see the answers right away.",
      "emptyPaused": "GEO scans are paused. Turn them on in settings so this prompt gets asked.",
      "emptyScanningTitle": "Asking AI engines…",
      "emptyScanningDescription": "Answers show up here as soon as the scan finishes.",
      "emptyEngines": "Asked in",
      "scanFrom": "Scan from <time>{date}</time>",
      "backToLatest": "Back to latest scan",
      "latestAnswer": "Latest answer from each engine",
      "answerLanguage": "Answer language",
      "noTags": "No tags",
      "addTag": "Add a tag…",
      "lastScan": "Last scan"
    },
    "promptDetailStatus": {
      "loading": "Loading answer…",
      "error": "Could not load this answer. Try again.",
      "unavailable": "This answer is no longer available. Refresh the results to select another answer."
    },
    "promptEngineSwitcher": {
      "engine": "Engine: {engine}"
    },
    "promptKeywordTextarea": {
      "metricsAria": "Search Console metrics for {query}: {impressions} impressions, {clicks} clicks, position {position}",
      "lastDays": "Last 28 days"
    },
    "promptReceiptAnalysis": {
      "noSentiment": "No sentiment",
      "competitors": "Brands mentioned instead",
      "searches": "Searches the engine ran",
      "sources": "Sources cited",
      "history": "Scan history",
      "showAllSources": "Show all {count} sources"
    },
    "promptReceiptHistory": {
      "gainedMention": "Now mentioned",
      "lostMention": "No longer mentioned",
      "noChange": "No change",
      "firstScan": "First scan",
      "gainedLabel": "Now mentioned at {position}",
      "movedLabel": "Moved {from} → {to}",
      "noHistory": "No scans recorded yet",
      "newBrands": "New: {names}",
      "viewAnswer": "View answer"
    },
    "promptReceiptViewSwitch": {
      "groupLabel": "Receipt view",
      "analysis": "Analysis",
      "raw": "Raw answer"
    },
    "promptScanButton": {
      "scanInProgress": "Wait for the current scan to finish before starting another.",
      "promptDisabled": "Enable this prompt to run a scan.",
      "settingsUnavailable": "Scan settings are not available yet.",
      "scanningDisabled": "Enable GEO scanning in settings to run a scan.",
      "runScanPrompt": "Run scan: {prompt}"
    },
    "promptSuggestionSheet": {
      "noQueryData": "No query-level data for this prompt.",
      "suggestedPrompt": "Suggested prompt",
      "lookback": "Across the last {days} days of Google Search queries that informed this prompt."
    },
    "promptSuggestions": {
      "trackAll": "Track all",
      "dismissTitle": "Remove suggestion?",
      "dismissDescription": "\"{prompt}\" won't be suggested again.",
      "empty": "No Google Search suggestions yet"
    },
    "promptTagsActionDialog": {
      "editDescription": "Tags group prompts so you can filter and save views.",
      "editConfirm": "Save tags",
      "bulkDescription": "Tags are added to every selected custom prompt."
    },
    "promptTagsDialog": {
      "placeholder": "Type a tag and press Enter",
      "suggestions": "Tags in use"
    },
    "promptsTable": {
      "copiedPrompt": "Copied prompt",
      "enablePrompt": "Enable prompt",
      "removePrompt": "Remove prompt",
      "removeDescriptionOne": "\"{prompt}\" will no longer be asked in GEO scans. Historical answers stay in your results.",
      "removeDescriptionMany": "These questions will no longer be asked in GEO scans. Historical answers stay in your results.",
      "removeTitle": "{count, plural, one {Remove prompt?} other {Remove # prompts?}}",
      "removeAction": "{count, plural, one {Remove prompt} other {Remove prompts}}",
      "nounSingular": "prompt",
      "nounPlural": "prompts",
      "tagsCustomOnly": "Tags apply to custom prompts. Auto-generated prompts were skipped.",
      "columns": {
        "presence": "Presence",
        "mentionedInstead": "Mentioned instead"
      },
      "filterAria": "Filter prompts",
      "filterPlaceholder": "Filter prompts…",
      "filterByIntent": "Filter by intent",
      "filterByTag": "Filter by tag",
      "allIntents": "All intents",
      "allTags": "All tags",
      "source": {
        "auto": "Auto"
      },
      "addTagCount": "Add tag ({count})",
      "emptyIdle": "Add the questions your buyers ask AI engines, or import a list from a CSV.",
      "noMatches": "No prompts match these filters",
      "emptyTitle": "No prompts yet",
      "noMatchesDescription": "Try a different search or clear the filters.",
      "clearFilters": "Clear filters"
    },
    "purposeBadge": {
      "description": {
        "training-crawler": "Collects pages for model training corpora",
        "search-index": "Builds the index an AI answer engine searches",
        "assistant-browse": "Fetched while an assistant was answering someone. A fetch is not proof of a citation",
        "assistant-referral": "A person clicked through to your site from an AI answer"
      }
    },
    "scanActivityStatus": {
      "failed": "The last scan stopped early {when}.",
      "empty": {
        "title": "No answers yet",
        "description": "Answers from each AI engine show up here after the first scan runs."
      }
    },
    "scanAnswerSheet": {
      "title": "Scan answer",
      "description": "Saved prompt result from this scan"
    },
    "scanModelMenu": {
      "zdrBlockedTitle": "No zero-data-retention host. Approve it in GEO settings to scan it.",
      "noZdr": "No ZDR",
      "disabledReason": "Add a tracked model in GEO settings to run a scan.",
      "searchModels": "Search models",
      "noMatch": "No models match \"{query}\"",
      "otherModels": "Other models",
      "continueWith": "Continue with {count, plural, one {# model} other {# models}}"
    },
    "scanPreflightDialog": {
      "title": "Run a scan now?",
      "body": "Your selection applies only to this scan and won't change your tracked engines.",
      "promptTitle": "Run prompt scan",
      "promptBody": "Choose one or more tracked models to answer this prompt in your configured languages.",
      "confirmTitle": "Start this scan?",
      "confirmBody": "Review the selected models and scan size before starting.",
      "promptCountUnknown": "… prompts",
      "calculating": "Calculating checks…",
      "estimatedChecks": "{count} estimated checks",
      "lastScan": "Last scan",
      "selectedOf": "{selected} of {total}",
      "deselectAll": "Deselect all",
      "needEngine": "Pick at least one engine.",
      "followProgress": "Follow this scan's progress on the Prompts page."
    },
    "scanRunDetail": {
      "turn": "Turn {turn}",
      "columns": {
        "mention": "Mention"
      },
      "status": {
        "running": "Generating answer…",
        "missing": "No answer saved"
      },
      "loadError": "Could not load scan answers.",
      "unavailable": "This scan is no longer available.",
      "waiting": "Waiting for the first answers. They appear here as each batch finishes.",
      "empty": "No saved answers for this selection.",
      "progress": "{checks} of {total} answers",
      "itemMissing": "missing",
      "itemAnswers": "answers",
      "viewLabel": "Scan result type",
      "missing": "Missing",
      "filterByModel": "Filter scan results by model"
    },
    "searchConsoleCard": {
      "property": "Property",
      "selectProperty": "Select a property",
      "connectProperty": "Connect property",
      "choosePropertyTitle": "Choose a Search Console property",
      "choosePropertyDescription": "Select the domain whose search queries Notra should use for prompt suggestions.",
      "noPropertiesReconnect": "No properties were found for this Google account. Add or verify a property in Search Console, then reconnect.",
      "lastSynced": "Last synced {when}",
      "notSynced": "Not synced yet",
      "weeklySync": "Weekly sync",
      "actions": "Search Console actions",
      "reauthRequired": "Google access expired. Reconnect to keep syncing keyword suggestions.",
      "setupTitle": "Turn your Google searches into prompts",
      "setupDescription": "Connect Search Console and Notra suggests prompts from the queries people already use to find you.",
      "reauthTitle": "Reconnect Google",
      "examples": {
        "projectManagement": {
          "query": "project management software",
          "prompt": "Which project management tool works best for a small remote team?"
        },
        "startupCrm": {
          "query": "crm for startups",
          "prompt": "What CRM should an early-stage startup use?"
        },
        "invoicing": {
          "query": "invoice template",
          "prompt": "How can I send professional invoices without an accountant?"
        }
      }
    },
    "searchGapDetail": {
      "eyebrow": "Search gap",
      "fallbackTitle": "Search gap",
      "aiEvidence": "AI search evidence",
      "uncoveredSearches": "{count, plural, one {# answer without your brand or site} other {# answers without your brand or site}}",
      "searchedBy": "Engines that ran this search",
      "relatedPrompts": "Questions these engines answered",
      "mentionedCompetitors": "Competitors mentioned",
      "acrossQueries": "Across this gap's Google Search queries.",
      "draftTitle": "Draft title",
      "noQueryData": "No query-level data available for this gap.",
      "relatedPages": "Related pages",
      "websitePage": "Website page",
      "match": "· {percent}% match",
      "untitledContent": "Untitled content",
      "noRelatedPage": "No related page found."
    },
    "sentimentResultsTable": {
      "columns": {
        "claim": "Theme",
        "evidence": "Evidence"
      },
      "empty": "No sentiment themes yet.",
      "capturedAt": "{date} UTC"
    },
    "sentimentBreakdown": {
      "eyebrow": "Brand sentiment",
      "byEngine": "By engine",
      "enginesCount": "{count, plural, one {# engine} other {# engines}}",
      "loading": {
        "title": "Loading sentiment"
      },
      "empty": {
        "title": "No sentiment yet",
        "scanningTitle": "Scanning answers"
      },
      "error": {
        "title": "Could not load sentiment",
        "body": "Something went wrong while loading the score.",
        "retry": "Try again"
      },
      "noRatedAnswers": "No rated answers",
      "ratedAnswers": "{count, plural, one {# rated answer} other {# rated answers}}",
      "deltaLabel": "Sentiment score",
      "deltaHint": "vs. previous period",
      "band": {
        "strong": "Strongly positive",
        "positive": "Mostly positive",
        "mixed": "Mixed",
        "negative": "Mostly negative"
      }
    },
    "sentimentSkeleton": {
      "loading": "Loading sentiment"
    },
    "sentimentThemesEmpty": {
      "retryAnalysis": "Retry analysis",
      "refreshAnalysis": "Refresh analysis",
      "analyzingThemes": "Analyzing themes",
      "analyzing": "Analyzing…",
      "analyzeNow": "Analyze now",
      "howItWorks": "How it works",
      "aboutTitle": "About theme analysis",
      "aboutDescription": "Find positives and negatives in a sample of saved answers. Each theme links to its original quotes.",
      "aboutCost": "A new analysis uses AI credits based on token usage, or one AI answer on quota-based plans. Cached analyses don't cost extra. An attempt may still use credits if it fails or finds no themes."
    },
    "sentimentThemes": {
      "eyebrow": "Sentiment themes",
      "updating": "Updating themes…",
      "retryLookup": "Retry analysis lookup",
      "requestFailed": "Analysis request failed. Try again.",
      "noThemesTitle": "No themes yet",
      "messages": {
        "noSupportedThemes": "No supported themes in the sampled answers.",
        "couldNotFind": "Could not find themes. Try again.",
        "notConfigured": "Theme analysis is not configured for this project."
      },
      "analysisStatus": {
        "stalePrevious": "Showing previous themes. Analysis needs an update.",
        "failedPrevious": "Analysis failed. Showing previous themes.",
        "failedRetry": "Analysis failed. Try again.",
        "unavailable": "Theme analysis is unavailable."
      },
      "status": {
        "loading": "Loading analysis…"
      }
    },
    "shareOfVoiceBrandTag": {
      "trackBrand": "Track {brand}"
    },
    "shareOfVoiceChart": {
      "mentionsSr": "mentions",
      "yourShare": "Your share of voice",
      "leadingShare": "Leading share of voice",
      "shareHint": "Share of recorded brand mentions in the selected period.",
      "totalMentions": "Total mentions",
      "yourRank": "Your rank",
      "rankHint": "Rank by total mentions in the selected period. Brands with equal mentions share a rank.",
      "ofBrands": "of {count} brands",
      "tableLabel": "Brand ranking by share of voice",
      "emptyTitle": "No share of voice yet",
      "emptyScanningTitle": "Scan in progress",
      "emptyDescription": "After your next scan, this shows how often AI engines name you compared with your competitors."
    },
    "shareOfVoiceTable": {
      "trendLabel": "{brand} share of voice trend",
      "empty": "No competitor data yet"
    },
    "trafficEmpty": {
      "title": "No activity yet",
      "description": "Install the tracker to see visits from ChatGPT, Claude and other AI agents."
    },
    "trafficHero": {
      "notConfigured": "Not configured",
      "setUpTitle": "Set conversion paths",
      "activity": "Traffic activity",
      "tooltipMore": "+{count} more",
      "resetZoom": "Reset",
      "stages": {
        "crawler": {
          "label": "Crawler requests",
          "description": "Bots reading your pages"
        },
        "cited": {
          "description": "Fetched while answering a question; a fetch is not proof of a citation"
        },
        "aiReferral": {
          "description": "People arriving from AI products"
        },
        "conversions": {
          "label": "Conversions",
          "description": "AI referrals that reached a conversion path"
        }
      }
    },
    "trafficPageSourcesCell": {
      "showBreakdown": "{path}: {count, plural, one {# source} other {# sources}}, show breakdown"
    },
    "trafficPagesCard": {
      "filterByDomain": "Filter pages by domain",
      "allDomains": "All domains",
      "filterByPath": "Filter pages by path",
      "filterPlaceholder": "Filter by path…",
      "noMatch": "No pages match this filter"
    },
    "trafficProviderLegend": {
      "ariaLabel": "Traffic providers, {visible} of {total} shown",
      "providers": "Providers",
      "providersFiltered": "Providers ({visible}/{total})",
      "showTrafficFrom": "Show traffic from"
    },
    "trafficPurposeCell": {
      "showBreakdown": "{label} purposes: {purposes}, show breakdown"
    },
    "trafficSourceSheet": {
      "bot": "Bot",
      "bots": "Bots",
      "bands": {
        "cited": "Cited in answers"
      },
      "visitsPerDay": "Visits per day",
      "botsTitle": "Bots ({count})",
      "sourcesTitle": "Sources ({count})",
      "pagesTitle": "Top pages ({count})",
      "pagesOutsideBusiest": "This source's pages are outside the site's busiest pages",
      "noPages": "No pages recorded for this source"
    },
    "trafficSourcesGroup": {
      "collapse": "Collapse {label}",
      "expand": "Expand {label}"
    },
    "whatChangedCard": {
      "subline": "Latest scan vs previous scan",
      "sublineWithTime": "Latest scan vs previous scan · {time}",
      "needsScans": "Run two scans to see what changed",
      "noChanges": "No changes between the last two scans",
      "columns": {
        "change": "Change"
      },
      "kinds": {
        "gained_mention": "Gained mention",
        "lost_mention": "Lost mention",
        "competitor_displaced": "Displaced by competitor",
        "citation_added": "Citation gained",
        "citation_removed": "Citation lost",
        "competitor_cited": "Competitor cited",
        "new_engine": "New engine"
      },
      "states": {
        "notCited": "Not cited",
        "position": "#{position}"
      },
      "summaryLabels": {
        "gained": "Gained",
        "citationsAdded": "Citations gained",
        "citationsRemoved": "Citations lost"
      },
      "summaryHints": {
        "gained": "Prompts where an engine started mentioning your brand",
        "lost": "Prompts where an engine stopped mentioning your brand",
        "positionImproved": "Prompts where your brand moved up in the answer",
        "positionDropped": "Prompts where your brand moved down in the answer",
        "citationsAdded": "Prompts where an engine started citing your pages",
        "citationsRemoved": "Prompts where an engine stopped citing your pages"
      }
    },
    "writer": {
      "briefHistory": {
        "article": "Article"
      },
      "pageGate": {
        "description": "The writer uses your tracked prompts, competitors and sitemap. Set up GEO tracking first."
      },
      "writeBrandOption": {
        "projectDefault": "{name} (project default)"
      },
      "writeBrandSelect": {
        "empty": "No brand identities yet. The writer will use your GEO project brand."
      },
      "writeCompetitorChoices": {
        "clearAll": "Clear all",
        "empty": "No competitors tracked yet. Add them in GEO settings to mention alternatives.",
        "mentioned": "Recommended instead of you",
        "withDomain": "{detail} · {domain}",
        "selectedCount": "{count} of {max} selected",
        "limitHint": "A brief positions against up to {max} competitors.",
        "autoPick": "Nothing picked: the brief uses the {max} competitors AI engines recommend most."
      },
      "writeDialog": {
        "description": "Plan or write an article from a prompt, content type, brand identity and competitors.",
        "sectionsAriaLabel": "Write sections",
        "updating": "Updating {page}",
        "baseline": "Current: {mentioned}/{total} engines · target: {total}/{total}",
        "promptDescription": "Pick a tracked prompt or write your own. The article answers this question.",
        "brandDescription": "The brand whose voice and facts the article uses.",
        "sitemapDescription": "The writer links to real pages from the brand identity's sitemap.",
        "competitorsDescription": "Competitors the article can mention when it compares options.",
        "recommended": "Recommended",
        "plan": "Plan",
        "help": "Plan creates a brief you review before anything is drafted. Write plans and drafts the article in one step.",
        "pending": {
          "plan": {
            "status": "Planning the brief. You review it before anything is drafted."
          },
          "write": {
            "status": "Planning the brief, then drafting the article. This takes about a minute."
          }
        },
        "formatReasons": {
          "comparison": "The prompt compares options, so a comparison page matches its intent.",
          "listicle": "The prompt asks for options, and assistants tend to quote scannable lists.",
          "guide": "The prompt asks a direct question, so a guide that answers it first fits best."
        },
        "subtypes": {
          "guide": {
            "description": "A long article that answers the prompt directly."
          },
          "listicle": {
            "description": "A numbered list that buyers can scan and cite."
          },
          "comparison": {
            "description": "Compares the brand with its alternatives."
          }
        }
      },
      "writePromptInput": {
        "trackedPrompt": "Tracked prompt",
        "customPrompt": "Write a custom prompt",
        "placeholder": "e.g. Which tools are best for sharing music demos?",
        "editNote": "Editing the text creates a custom variant that is no longer linked to the tracked prompt."
      },
      "writeSitemapSection": {
        "crawlFailed": "Crawl failed",
        "pagesIndexed": "{count, plural, one {# page indexed} other {# pages indexed}}",
        "crawling": "Crawling pages",
        "needsBrand": "Sitemaps belong to a brand identity. Pick one above first.",
        "thisBrandIdentity": "this brand identity",
        "ownerLine": "These sitemaps belong to <strong>{name}</strong>. <link>Manage in brand identity</link>",
        "addAnother": "Add another",
        "addSitemap": "Add sitemap"
      },
      "writerExecute": {
        "writingTitle": "Writing the article",
        "writingDescription": "The writer is drafting this post. It stays a draft until you publish.",
        "failedTitle": "Writing failed",
        "failedDescription": "The writer couldn't finish this article. Try again.",
        "starting": "Starting…"
      }
    },
    "shelf": {
      "labels": {
        "kind": {
          "review_site": "Review site",
          "community": "Community",
          "news": "News"
        },
        "placement": {
          "present": "On shelf",
          "absent": "Missing"
        },
        "placementHint": {
          "present": "This brand is listed on the page",
          "absent": "This brand is not listed on the page",
          "unknown": "We haven't checked if this brand is listed on the page. Open the row to mark it."
        },
        "status": {
          "dismissed": "Dismissed"
        },
        "noTicket": "No ticket",
        "assignToMe": "Assign to me",
        "ticket": "Ticket",
        "noMatches": "No shelves match these filters"
      },
      "shelfAddDialog": {
        "title": "Add a shelf",
        "description": "A page you want {brand} to be listed on. Tick the competitors already there and hand the ticket to someone.",
        "yourBrand": "your brand",
        "pageUrl": "Page URL",
        "urlTooLong": "Page URL must be {max, number} characters or fewer",
        "urlInvalid": "Enter a public http or https page URL",
        "titleTooLong": "Title must be {max} characters or fewer",
        "previewUnavailable": "Couldn't read the page title. You can type it in."
      },
      "shelfBoard": {
        "cited": "{count} cited"
      },
      "shelfDetailDialog": {
        "lastDays": "Last {days} days",
        "firstCited": "First cited <value>{date}</value>",
        "lastCited": "Last cited <value>{date}</value>",
        "citedBy": "Cited by",
        "noEngine": "No engine has cited this page for your prompts yet.",
        "whoIsOnShelf": "Who is on the shelf",
        "ticketOpened": "Opened {opened}",
        "ticketOpenedClosed": "Opened {opened} · closed {closed}",
        "opportunityHint": "Competitors are listed here and you are not. Open a ticket to work on it.",
        "nobodyWorking": "No one is working on this page.",
        "openTicket": "Open ticket"
      },
      "shelfDueDateField": {
        "due": "Due",
        "pickDate": "Pick a date",
        "clearDueDate": "Clear due date"
      },
      "shelfMemberSelect": {
        "sameAsAssignee": "Same as assignee"
      },
      "shelfPlacementBadge": {
        "markedByTeammate": "Marked by a teammate",
        "verifiedByFetch": "Verified by fetching the page"
      },
      "shelfPlacementsTable": {
        "onThePage": "On the page",
        "outbound": "Outbound",
        "presenceOf": "Presence of {brand}"
      },
      "shelfPresenceFields": {
        "legend": "Who is already on it",
        "isOnPage": "{name} is on this page",
        "noCompetitors": "Add competitors in GEO settings to track who else is on this page."
      },
      "shelfTableContextMenu": {
        "openPage": "Open page",
        "copiedUrl": "Copied URL"
      },
      "shelfTable": {
        "addedManually": "{kind} · added manually",
        "competitorsUnchecked": "We haven't checked if competitors are listed on this page. Open the row to mark them.",
        "competitorsNone": "None of your tracked competitors are marked as listed on this page.",
        "hintLabel": "{label}. {description}",
        "positionOnPage": "#{position} on the page",
        "assignedTo": "Assigned to {name}, show details",
        "emptyTitle": "No shelf space tracked yet",
        "emptyScanned": "No third-party page has been cited for your prompts yet. Add a page you want to be listed on, or wait for the next scan.",
        "emptyUnscanned": "Shelves appear once a scan cites third-party pages for your prompts. You can also add a page you want to be listed on."
      },
      "shelfTicketAssigneeCard": {
        "ticketOpened": "Ticket opened {opened}"
      },
      "shelfTicketForm": {
        "priority": "Priority",
        "noPriority": "No priority",
        "assignee": "Assignee",
        "pointOfContact": "Point of contact",
        "notes": "Notes",
        "notesPlaceholder": "Who you contacted, what they said, what happens next"
      },
      "shelfTitleField": {
        "readingTitle": "Reading page title",
        "usePageTitle": "Use page title",
        "placeholder": "We'll read it from the page if you leave this empty",
        "fromTitleTag": "From the page's title tag. Type to override."
      },
      "shelfToolbar": {
        "filterShelves": "Filter shelves",
        "filterPlaceholder": "Filter shelves…",
        "shelfFilter": {
          "all": {
            "label": "All shelves",
            "description": "Every page engines cite for your prompts"
          },
          "opportunities": {
            "label": "Opportunities",
            "description": "Competitors are on the page and you are not"
          },
          "on_shelf": {
            "label": "You're on it",
            "description": "Pages where your brand is already present"
          },
          "unknown": {
            "description": "We haven't checked yet if you're listed on the page"
          }
        },
        "ticketFilter": {
          "any": "Any ticket state",
          "mine": "Assigned to me",
          "closed": "Closed"
        }
      },
      "shelfViewToggle": {
        "ariaLabel": "Shelf view",
        "views": {
          "board": "Board"
        }
      }
    },
    "pages": {
      "shared": {
        "notSetUpTitle": "Not set up yet",
        "importCsv": "Import CSV"
      },
      "agentReadiness": {
        "description": "How well AI agents can find, understand and use your website",
        "scanWebsite": "Scan your website",
        "emptyDescription": "Check how ready <strong>{url}</strong> is for AI agents. The scan is public and takes a few minutes.",
        "scanFailed": "Scan failed",
        "rescanFailed": "The latest rescan failed: {message} Showing the last completed report.",
        "setupDescription": "The scan uses the website from your GEO project. Set up GEO tracking first.",
        "loadFailedDescription": "Agent readiness could not be loaded. Make sure your brand settings include a website URL.",
        "nothingToShow": "Nothing to show"
      },
      "competitors": {
        "metaTitle": "GEO Competitors",
        "description": "Who AI engines recommend instead of you",
        "setupDescription": "Set up GEO tracking first, then track which competitors AI engines surface.",
        "newCompetitor": "New competitor"
      },
      "tabs": {
        "label": "GEO sections"
      },
      "directions": {
        "description": "Four layouts of the same GEO overview, seeded with static data.",
        "tabs": {
          "instrument": "Instrument",
          "cockpit": "Cockpit",
          "report": "Report"
        }
      },
      "gaps": {
        "metaTitle": "GEO Content Gaps",
        "description": "Questions engines answer without mentioning you",
        "loadFailed": "We couldn't load content gaps. Try again.",
        "loadingStatus": "Calculating gaps from the latest scan. This usually takes a few seconds."
      },
      "overview": {
        "description": "How AI engines talk about {companyName}",
        "descriptionFallback": "How AI engines talk about your brand",
        "mentionActivity": "Mention activity"
      },
      "personas": {
        "metaTitle": "GEO Personas",
        "description": "Distinct buyer types researching your category in AI engines",
        "addPersonas": "Add personas",
        "generatePersonas": "Generate personas",
        "progress": "{label}, step {step} of {total}",
        "setupDescription": "Set up GEO tracking first, then generate a persona set.",
        "emptyTitle": "No personas yet",
        "emptyDescription": "Generate five buyer types from your site and audience, each with its own priorities, tool stack and buying criteria. They research your category in your selected AI engines.",
        "generationSteps": {
          "readingSite": "Reading your site",
          "writingProfiles": "Writing profiles",
          "writingMemories": "Writing memories",
          "indexingMemories": "Indexing memories"
        }
      },
      "prompts": {
        "metaTitle": "GEO Prompts",
        "description": "The questions we ask AI engines on your behalf",
        "setupDescription": "Set up GEO tracking first, then manage the prompts scanned across AI engines.",
        "tabs": {
          "suggestions": "Suggestions",
          "answers": "Answers"
        }
      },
      "shelfSpace": {
        "metaTitle": "GEO Shelf Space",
        "description": "Third-party pages AI engines cite for your prompts, and whether you're on them",
        "setupDescription": "Set up GEO tracking first, then see which pages engines cite and who is listed on them."
      },
      "traffic": {
        "metaTitle": "GEO Traffic",
        "title": "AI Traffic",
        "description": "AI crawlers and referrals visiting your site",
        "setupDescription": "Set up GEO tracking first, then watch AI crawlers and referrals as they arrive.",
        "titleWithVisitors": "Traffic",
        "descriptionWithVisitors": "People and AI agents on your site",
        "emptyRangeTitle": "No traffic in this period",
        "emptyRangeDescription": "Try a different date range or domain.",
        "emptyPathTitle": "No visits to {path}",
        "emptyPathDescription": "Neither people nor AI agents opened this page in the selected period.",
        "emptyPathReset": "Show all pages",
        "emptyPathWiden": "Try last 90 days"
      },
      "write": {
        "metaTitle": "GEO Writer",
        "setupDescription": "Plan a custom article from a prompt, type, brand and competitors",
        "newArticle": "New article",
        "emptyTitle": "No articles yet",
        "emptyDescription": "Start from a custom topic. After you approve the brief, the draft opens in Content.",
        "description": "Plan a custom article from a topic, type and brand. For questions engines already answer, see <link>Content Gaps</link>.",
        "descriptionPlain": "Plan a custom article from a topic, type and brand. For questions engines already answer, see Content Gaps."
      }
    },
    "toasts": {
      "loadModelCatalogFailed": "Failed to load the model catalog",
      "loadAIVisibilitySettingsFailed": "Failed to load AI visibility settings",
      "aiVisibilitySettingsSaved": "AI visibility settings saved",
      "saveSettingsFailed": "Failed to save settings",
      "addModelTrackingFailed": "Failed to add model to tracking",
      "addLanguageTrackingFailed": "Failed to add language to tracking",
      "loadAIVisibilityOverviewFailed": "Failed to load AI visibility overview",
      "loadAIVisibilityTrendFailed": "Failed to load AI visibility trend",
      "loadPromptResultsFailed": "Failed to load prompt results",
      "loadPromptHistoryFailed": "Failed to load prompt history",
      "loadScanChangesFailed": "Failed to load scan changes",
      "loadCompetitorShareFailed": "Failed to load competitor share",
      "loadCompetitorDetailFailed": "Failed to load competitor detail",
      "loadCompetitorSummaryFailed": "Failed to load competitor summary",
      "loadLanguagePerformanceFailed": "Failed to load language performance",
      "loadPromptTranslationsFailed": "Failed to load prompt translations",
      "updatePromptTranslationFailed": "Failed to update the translation",
      "translatePromptsFailed": "Couldn't translate the prompts. They are translated on the next scan instead.",
      "geoTrackingGeneratedWebsite": "GEO tracking generated from website",
      "generateGEOTrackingWebsiteFailed": "Failed to generate GEO tracking from website",
      "importPromptsFailed": "Failed to import prompts",
      "importCompetitorsFailed": "Failed to import competitors",
      "saveBrandFailed": "Failed to save your brand",
      "startScanFailed": "Failed to start scan",
      "startRescanFailed": "Failed to start rescan",
      "loadAgentReadinessFailed": "Failed to load agent readiness",
      "loadVisitorsFailed": "Failed to load visitors",
      "loadAITrafficFailed": "Failed to load AI traffic",
      "loadAITrackingLogFailed": "Failed to load AI tracking log",
      "loadTopAIPagesFailed": "Failed to load top AI pages",
      "loadAIJourneysFailed": "Failed to load AI journeys",
      "loadJourneyTrendsFailed": "Failed to load journey trends",
      "loadJourneyDetailFailed": "Failed to load journey detail",
      "loadTrackingSetupFailed": "Failed to load tracking setup",
      "trackingTokenRotated": "Tracking token rotated",
      "rotateTokenFailed": "Failed to rotate the token",
      "runConversationFailed": "Failed to run the conversation",
      "loadConversationResultsFailed": "Failed to load conversation results",
      "loadSearchConsoleStatusFailed": "Failed to load Search Console status",
      "loadSearchConsoleKeywordsFailed": "Failed to load Search Console keywords",
      "loadSearchConsolePropertiesFailed": "Failed to load Search Console properties",
      "selectPropertyFailed": "Failed to select property",
      "syncSearchConsoleFailed": "Failed to sync Search Console",
      "googleSearchConsoleDisconnected": "Google Search Console disconnected",
      "disconnectFailed": "Failed to disconnect",
      "loadPromptSuggestionsFailed": "Failed to load prompt suggestions",
      "generateConversationsFailed": "Failed to generate conversations",
      "promptAddedTracking": "Prompt added to tracking",
      "trackedPromptNextScan": "Results appear after the next scan.",
      "viewTrackedPrompt": "View",
      "addPromptFailed": "Failed to add prompt",
      "addPromptsFailed": "Failed to add prompts",
      "dismissSuggestionFailed": "Failed to dismiss suggestion",
      "importResult": {
        "imported": "Imported {count} {kind, select, prompts {{count, plural, one {prompt} other {prompts}}} other {{count, plural, one {competitor} other {competitors}}}}",
        "updated": "updated {count}",
        "skipped": "skipped {count, plural, one {# duplicate} other {# duplicates}}",
        "nothingNew": "No new {kind, select, prompts {prompts} other {competitors}} to import"
      },
      "searchConsoleSync": {
        "failed": "Search Console sync failed",
        "skipped": "Search Console sync skipped",
        "noData": "Search Console has no search data for this property yet",
        "noNewSuggestions": "Search Console synced, no new prompt suggestions",
        "suggestionsAdded": "{count, plural, one {# new prompt suggestion} other {# new prompt suggestions}} from Search Console"
      },
      "conversationPlayed": "Conversation run on {count, plural, one {# engine} other {# engines}}",
      "conversationsAdded": "Added {count, plural, one {# conversation} other {# conversations}}",
      "promptsAddedTracking": "{count, plural, one {# prompt} other {# prompts}} added to tracking",
      "projectCreated": "Project created",
      "projectDeleted": "Project deleted",
      "loadPersonasFailed": "Failed to load personas",
      "loadPersonaActivityFailed": "Failed to load persona activity",
      "checkPersonaGenerationFailed": "Failed to check persona generation",
      "generatePersonasFailed": "Failed to generate personas",
      "generatingPersonas": "Generating personas",
      "generatingPersona": "Generating persona",
      "generatingPersonasDescription": "This runs in the background, so you can leave this page and come back later.",
      "updatePersonaFailed": "Failed to update the persona",
      "personaArchived": "Persona archived",
      "archivePersonaFailed": "Failed to archive the persona",
      "personaReactivated": "Persona reactivated. Include it in scans when ready.",
      "reactivatePersonaFailed": "Failed to reactivate the persona",
      "runPersonaScanFailed": "Failed to run the persona scan",
      "loadPersonaResultsFailed": "Failed to load persona results",
      "loadContentGapsFailed": "Failed to load content gaps",
      "loadBriefsFailed": "Failed to load briefs",
      "loadBriefFailed": "Failed to load the brief",
      "updateGapFailed": "Failed to update the gap",
      "planArticleFailed": "Failed to plan the article",
      "startWritingFailed": "Failed to start writing",
      "updatePlanFailed": "Failed to update the plan",
      "loadRecentScansFailed": "Failed to load recent scans",
      "loadScanResultsFailed": "Failed to load scan results",
      "loadTeamMembersFailed": "Failed to load team members",
      "loadShelfSpaceFailed": "Failed to load shelf space",
      "scanStarted": "Scan started. You can leave this page.",
      "viewScan": "View",
      "updatePromptFailed": "Failed to update prompt",
      "removePromptFailed": "Failed to remove prompt",
      "updateTagsFailed": "Failed to update tags",
      "updateProjectBrandIdentityFailed": "Failed to update project brand identity",
      "deleteProjectFailed": "Failed to delete project",
      "saveCompetitorFailed": "Failed to save competitor",
      "removeCompetitorFailed": "Failed to remove competitor",
      "addConversationFailed": "Failed to add conversation",
      "updateConversationFailed": "Failed to update conversation",
      "removeConversationFailed": "Failed to remove conversation",
      "addShelfFailed": "Failed to add shelf",
      "updateTicketFailed": "Failed to update ticket",
      "updatePlacementFailed": "Failed to update placement",
      "gapIgnored": "Gap ignored",
      "gapRestored": "Gap restored",
      "searchGapDismissed": "Search gap dismissed",
      "undo": "Undo",
      "personaGenerationFailed": "Persona generation failed. Try again.",
      "personaScanned": "Persona scanned across {count, plural, one {# engine} other {# engines}}",
      "resolveCreatedProjectFailed": "Failed to resolve created project",
      "connectingProperty": "Connecting {property}…",
      "connectingPropertyDescription": "Reading your search queries. This can take a minute, keep working in the meantime.",
      "updateCompetitorFailed": "Couldn't update the competitor suggestion."
    },
    "competitorChoices": {
      "searchLabel": "Search competitors",
      "searchPlaceholder": "Search competitors",
      "moreHidden": "{count, plural, one {# more competitor} other {# more competitors}}. Search to find {count, plural, one {it} other {them}}.",
      "noMatches": "No competitors match “{query}”."
    },
    "webVisitors": {
      "comparisonUnavailable": "No data for the previous period",
      "visitors": "Visitors",
      "views": "Page views",
      "fromAi": "From AI answers",
      "agents": "AI agents",
      "trendTitle": "Page views over time",
      "people": "People",
      "agentsSeries": "AI agents",
      "share": "{share}%",
      "topPages": "Top pages",
      "page": "Page",
      "direct": "Direct",
      "sessions": "Sessions",
      "countries": "Countries",
      "devices": "Devices",
      "unknownCountry": "Unknown",
      "deviceDesktop": "Desktop",
      "deviceMobile": "Mobile",
      "deviceTablet": "Tablet",
      "outcomesTitle": "What AI visitors do",
      "outcomesAll": "All visitors",
      "pagesPerSession": "Pages per visit",
      "engagedRate": "Read further",
      "noData": "No visitors in this period",
      "noDataDescription": "Visit details appear here once traffic is recorded. Try a longer date range.",
      "columnViews": "Views",
      "columnFromAi": "From AI",
      "avgTime": "Avg. time on page",
      "columnAvgTime": "Avg. time",
      "columnSource": "Source",
      "columnCountry": "Country",
      "columnDevice": "Device",
      "referrers": "Referrers"
    },
    "trafficPathFilter": {
      "label": "Filter",
      "allPages": "All pages",
      "search": "Search paths",
      "noMatches": "No matching pages"
    },
    "trafficExport": {
      "label": "Export to CSV"
    },
    "competitorSuggestions": {
      "title": "Suggested competitors",
      "hint": "Brands AI assistants named in at least two answers that you don't track yet.",
      "trackNamed": "Track {brand}",
      "dismissNamed": "Dismiss {brand}",
      "dismiss": "Dismiss suggestion"
    }
  },
  "integrations": {
    "shared": {
      "addRepository": "Add Repository",
      "addIntegration": "Add Integration",
      "addToSlack": "Add to Slack",
      "reconnect": "Reconnect",
      "editIntegration": "Edit Integration",
      "enableIntegration": "Enable Integration",
      "whenDisabledNoOutputsWill": "When disabled, no outputs will be generated",
      "displayName": "Display Name",
      "integrationUpdatedSuccessfully": "Integration updated successfully",
      "moreOptions": "More options",
      "connectGithub": "Connect GitHub",
      "unableToLoadRepositoriesFrom": "Unable to load repositories from GitHub.",
      "createBranch": "Create branch",
      "payloadUrl": "Payload URL",
      "secret": "Secret",
      "lastSync": "Last sync",
      "authentication": "Authentication",
      "removeAuthenticationHeader": "Remove authentication header",
      "redirecting": "Redirecting…",
      "connectName": "Connect {name}",
      "reauthorize": "Reauthorize",
      "refreshTools": "Refresh tools",
      "mcpServers": "MCP Servers",
      "couldNotRestartOauth": "Could not restart OAuth",
      "linearIntegrations": "Linear Integrations",
      "noIntegrationsYet": "No integrations yet",
      "granolaIntegrations": "Granola Integrations",
      "slackIntegration": "Slack Integration",
      "addAtLeastOneAuthentication": "Add at least one authentication header",
      "apiKey": "API key",
      "displayNameIsRequired": "Display name is required",
      "googleSearchConsoleIsNot": "Google Search Console is not available on this workspace yet.",
      "oauth": "OAuth",
      "regenerateSecret": "Regenerate secret",
      "youDoNotHaveAccess": "You do not have access to this organization.",
      "personalAccessToken": "Personal access token",
      "addGithubAccount": "Add GitHub account"
    },
    "githubForms": {
      "repositoryRequired": "Select a repository",
      "repositoryFormatInvalid": "Invalid repository format. Expected: owner/repo",
      "ownerRequired": "Owner is required",
      "repoNameRequired": "Repository name is required",
      "repoUrlRequired": "Repository URL is required",
      "repoUrlInvalid": "Invalid GitHub repository URL or format. Use https://github.com/owner/repo, git@github.com:owner/repo or owner/repo",
      "tokenRequired": "Personal access token is required",
      "tokenTooLong": "Personal access token is too long",
      "tokenInvalid": "Enter a valid GitHub personal access token"
    },
    "addRepository": {
      "private": "(Private)",
      "selectPlaceholder": "Select a repository…",
      "invalidFormat": "Invalid repository format",
      "added": "Repository added successfully",
      "descriptionSelect": "Select a repository from your GitHub account to enable integrations.",
      "descriptionManual": "Enter a repository as owner/repo (e.g., facebook/react) or paste a GitHub URL. Private repositories need a valid access token on your integration.",
      "manualPlaceholder": "facebook/react or https://github.com/facebook/react",
      "noToken": "No access token available. Enter the repository as owner/repo or paste a GitHub URL."
    },
    "affectedTriggers": {
      "schedulesLabel": "{count, plural, one {This schedule will be disabled:} other {These schedules will be disabled:}}",
      "eventsLabel": "{count, plural, one {This event will be disabled:} other {These events will be disabled:}}",
      "bothNote": "These schedules and events use this {resource, select, integration {integration} identity {identity} other {{resource}}} and will be disabled. You'll need to edit them before re-enabling.",
      "schedulesNote": "These schedules use this {resource, select, integration {integration} identity {identity} other {{resource}}} and will be disabled. You'll need to edit them before re-enabling.",
      "eventsNote": "These events use this {resource, select, integration {integration} identity {identity} other {{resource}}} and will be disabled. You'll need to edit them before re-enabling.",
      "more": "and {count} more…"
    },
    "deleteDialog": {
      "title": "Delete {name}?",
      "description": "This action permanently removes the integration and all connected metadata. Type <strong>{name}</strong> to confirm.",
      "confirmAriaLabel": "Confirm integration deletion",
      "permanentNote": "Deletion is permanent and cannot be undone.",
      "confirm": "Delete integration"
    },
    "backLink": "Back to integrations",
    "linearDialog": {
      "title": "Add Linear integration",
      "description": "Connect a Linear workspace to generate changelogs, blog posts and tweets.",
      "redirectNote": "You will be redirected to Linear to authorize read access to your workspace. Once authorized, your integration will be created automatically."
    },
    "slackDialog": {
      "title": "Add Slack integration",
      "description": "Install the Notra agent in your Slack workspace to chat, draft and approve content from Slack threads.",
      "redirectNote": "You will be redirected to Slack to approve the installation. Public threads with the agent are mirrored into the dashboard, and you can limit which channels the agent responds in after connecting."
    },
    "gscDialog": {
      "titleConnect": "Connect Google Search Console",
      "titleReconnect": "Reconnect Google Search Console",
      "description": "Turn the search queries you already rank for into AI prompt suggestions.",
      "redirectNote": "You will be redirected to Google to authorize read access to Search Console. Once authorized, choose which property Notra should sync."
    },
    "granolaDialog": {
      "title": "Add Granola integration",
      "description": "Connect Granola to pull meeting notes, transcripts and AI summaries into your content workflows.",
      "displayName": "Display name",
      "displayNamePlaceholder": "e.g. Team meeting notes",
      "apiKeyHelp": "Create a key in the Granola app under Settings, then Connectors, then API keys. <link>View guide</link>",
      "connected": "Granola connected",
      "connectFailed": "Failed to connect Granola",
      "invalidForm": "Invalid form values",
      "apiKeyRequired": "API key is required",
      "apiKeyInvalid": "Enter a valid Granola API key (starts with {prefix})"
    },
    "editLinearDialog": {
      "description": "Update your Linear integration settings",
      "displayNamePlaceholder": "My Linear Integration"
    },
    "card": {
      "noCredentials": "No saved credentials. Connect the GitHub App to publish.",
      "addedBy": "Added by {name} on {date}",
      "createdOn": "Created on {date}",
      "addToken": "Add personal access token",
      "editToken": "Edit personal access token",
      "noRepositories": "No repositories configured",
      "repositoriesConfigured": "{count, plural, one {# repository configured} other {# repositories configured}}",
      "enabledToast": "Integration enabled",
      "disabledToast": "Integration disabled",
      "updateFailed": "Failed to update integration",
      "deletedWithSchedules": "{count, plural, one {Integration deleted. # schedule was disabled.} other {Integration deleted. # schedules were disabled.}}",
      "deleted": "Integration deleted",
      "deleteFailed": "Failed to delete integration"
    },
    "editDialog": {
      "description": "Update your GitHub integration settings",
      "displayNamePlaceholder": "My GitHub Integration",
      "owner": "Owner",
      "ownerPlaceholder": "owner",
      "repositoryPlaceholder": "repo",
      "publishingBranch": "Publishing Branch"
    },
    "legacy": {
      "editToken": {
        "title": "Update personal access token",
        "descriptionWithRepo": "Replace the GitHub token used for {repository}.",
        "description": "Replace the GitHub token used for this integration.",
        "label": "GitHub personal access token",
        "help": "<link>Generate a token on GitHub</link> with <code>repo</code> scope.",
        "save": "Save Token",
        "updated": "Personal access token updated"
      },
      "add": {
        "title": "Add GitHub integration",
        "description": "Connect a GitHub repository to generate changelogs, blog posts and tweets.",
        "invalidUrl": "Invalid GitHub repository URL",
        "added": "GitHub integration added successfully",
        "repository": "GitHub Repository",
        "repositoryPlaceholder": "https://github.com/facebook/react or facebook/react",
        "viewOnGitHub": "View on GitHub",
        "defaultBranch": "Default Branch",
        "detecting": "Detecting…",
        "token": "Personal access token",
        "privateWarning": "This repository appears to be private or not found. A token is required to access it.",
        "publicHint": "Only required for private repositories. Public repos work without a token.",
        "tokenPlaceholder": "ghp_... (leave empty for public repos)",
        "tokenHelp": "<link>Generate a token on GitHub</link> with <code>repo</code> scope"
      }
    },
    "github": {
      "page": {
        "metaTitle": "GitHub Integrations",
        "addRepositories": "Add repositories"
      },
      "skeleton": {
        "loadingAccounts": "Loading GitHub accounts",
        "loadingRepositories": "Loading repositories"
      },
      "toasts": {
        "installFailed": "Failed to start GitHub install",
        "disconnected": "GitHub disconnected",
        "disconnectFailed": "Failed to disconnect GitHub",
        "reconnectFailedRetry": "Failed to reconnect GitHub. Try again.",
        "reconnectFailed": "Failed to reconnect GitHub",
        "accountConnectionIncomplete": "Couldn't finish connecting your GitHub account. Try again.",
        "resumeFailed": "Failed to resume GitHub installation",
        "repositoriesSaved": "GitHub repositories saved",
        "repositoriesSaveFailed": "Failed to save GitHub repositories",
        "repositoryUpdateFailed": "Failed to update repository",
        "publishingUpdateFailed": "Failed to update publishing",
        "repositoryRemoveFailed": "Failed to remove repository",
        "migrationLoadFailed": "Unable to load GitHub repositories. Try again.",
        "migrationNoRepository": "Configure a repository before switching to the GitHub App.",
        "migrationAllowAccess": "Allow the Notra GitHub App to access this repository, then return here and switch again.",
        "migrated": "Switched to GitHub App. Your repository settings were kept.",
        "migrationFailed": "Unable to switch to the GitHub App. Refresh the page and try again."
      },
      "callbackErrors": {
        "installCancelled": "The GitHub installation was cancelled.",
        "invalidCallback": "The GitHub callback was missing required parameters. Try again.",
        "expiredState": "The GitHub installation link expired. Try connecting again.",
        "sessionMismatch": "The installation finished under a different login session. Try again.",
        "installationForbidden": "You need to be an admin of the GitHub account that owns this installation.",
        "reauthorizationRequired": "GitHub needs to be reconnected to authorize organization access.",
        "callbackFailed": "Connecting GitHub failed. Try again.",
        "tooManyRequests": "Too many GitHub connection attempts. Wait a moment and try again."
      },
      "createBranch": {
        "formAriaLabel": "Create branch from {branch}",
        "back": "Back to branches",
        "branchName": "Branch name",
        "description": "Created from {branch} and selected for publishing."
      },
      "repositoriesSection": {
        "loadFailed": "Unable to load repositories.",
        "emptyTitle": "Connect your first repository",
        "refreshFailed": "Unable to refresh repositories. Showing the last loaded data."
      },
      "connectDialog": {
        "install": "Install on GitHub",
        "permissions": {
          "readMetadata": "Read repository metadata, branches and releases",
          "createCommits": "Create branches, commits and draft pull requests",
          "comment": "Comment on pull requests when mentioned",
          "webhooks": "Receive webhook events for the repositories you choose",
          "scopedAccess": "Access only the repositories you grant during installation"
        }
      },
      "multiSelect": {
        "searchPlaceholder": "Search repositories…",
        "selectedAriaLabel": "Selected: {repository}",
        "selectAriaLabel": "Select: {repository}",
        "limitNotice": "Showing {shown} of {total} repositories. Scroll for more."
      },
      "webhookSettings": {
        "secretGenerated": "Webhook secret generated. Update it in GitHub.",
        "loading": "Loading webhook settings…",
        "notConfigured": "No webhook configured.",
        "generate": "Generate webhook secret",
        "urlCopied": "Webhook URL copied",
        "hide": "Hide",
        "show": "Show",
        "secretCopied": "Webhook secret copied",
        "copySecret": "Copy secret",
        "openGitHub": "Open GitHub webhooks"
      },
      "rotationDialog": {
        "title": "Regenerate webhook secret?",
        "description": "The current secret will stop working immediately. Webhook deliveries will fail until you copy the new secret into GitHub."
      },
      "branchPicker": {
        "updated": "Publishing branch updated",
        "updateFailed": "Failed to update publishing branch",
        "created": "Branch {branch} created",
        "ariaLabel": "Change publishing branch {branch} for {repository}",
        "notSelected": "not selected",
        "choose": "Choose branch",
        "fallbackBaseBranch": "the publishing branch",
        "createFailed": "Unable to create branch. Check the name and try again."
      },
      "branchList": {
        "searchPlaceholder": "Search branches",
        "loading": "Loading branches…",
        "loadFailed": "Unable to load branches.",
        "noResults": "No branches found."
      },
      "repositoryRow": {
        "noRepository": "No repository configured. Choose Edit repository from the menu to finish setup."
      },
      "preview": {
        "blogPosts": "Blog posts"
      },
      "accountSelect": {
        "placeholder": "Select account"
      },
      "repositoryMenu": {
        "ariaLabel": "Manage {name}",
        "manageSelection": "Manage selection",
        "editRepository": "Edit repository",
        "updateToken": "Update access token",
        "switching": "Switching…",
        "switchToApp": "Switch to GitHub App",
        "hideWebhooks": "Hide webhooks",
        "webhookSettings": "Webhook settings",
        "pause": "Pause repository",
        "enable": "Enable repository",
        "remove": "Remove repository"
      },
      "contentTypes": {
        "label": "{type, select, changelog {Changelog} blog_post {Blog post} other {Content}}"
      },
      "pathFields": {
        "contentPath": "Content file path",
        "imagePath": "Image file path",
        "save": "Save {type, select, changelog {changelog} blog_post {blog post} other {content}} paths",
        "contentPathInvalid": "Use a repository-relative .md or .mdx path that includes :slug, for example blog/:slug.md",
        "imagePathInvalid": "Use a repository-relative path that includes :slug and has no file extension, for example public/blog/:slug/image"
      },
      "publishing": {
        "saveFolderFailed": "Failed to save {type, select, changelog {changelog} blog_post {blog post} other {content}} folder",
        "savePathsFailed": "Failed to save {type, select, changelog {changelog} blog_post {blog post} other {content}} paths",
        "publishAriaLabel": "Publish {type, select, changelog {changelogs} blog_post {blog posts} other {content}} to {repository}",
        "loadFolderFailed": "Unable to load the {type, select, changelog {Changelog} blog_post {Blog post} other {content}} folder."
      },
      "directoryPicker": {
        "createdOnPublish": "This folder will be created when you publish.",
        "newFolderName": "{path} (new folder)",
        "notInRepository": "This folder is not in the repository yet. It will be created when you publish.",
        "folderLoadFailed": "Unable to load this folder.",
        "loadingFolders": "Loading folders…",
        "foldersLoadFailed": "Unable to load repository folders.",
        "newFolder": "New folder",
        "folderInside": "Folder inside {directory}",
        "folderPlaceholder": "e.g. changelogs",
        "collapse": "Collapse {name}",
        "expand": "Expand {name}",
        "folderNameRequired": "Enter a folder name",
        "folderPathInvalid": "Enter a valid folder path",
        "triggerAriaLabel": "{type, select, changelog {Changelog} blog_post {Blog post} other {Content}} folder: {directory}. Browse folders",
        "repositoryRoot": "Repository root",
        "title": "Choose {type, select, changelog {changelog} blog_post {blog post} other {content}} folder",
        "radioAriaLabel": "{type, select, changelog {Changelog} blog_post {Blog post} other {Content}} folder",
        "rootLabel": "{repository} (root)",
        "currentFolder": "{directory} (current folder)",
        "useFolder": "Use folder"
      },
      "accountCard": {
        "writeAccessNeeded": "Write access needed for draft pull requests. Review permissions on GitHub.",
        "personalAccount": "Personal account",
        "manageAriaLabel": "Manage {login}",
        "manageRepositories": "Manage repositories",
        "reviewPermissions": "Review permissions on GitHub",
        "disconnect": "Disconnect account"
      },
      "selectDialog": {
        "title": "Select repositories",
        "retry": "Retry loading repositories",
        "missingRepository": "Missing a repository? Add access on GitHub",
        "save": "Save repositories"
      },
      "appSection": {
        "loadFailed": "Unable to load GitHub accounts.",
        "connectedAccounts": "Connected GitHub accounts",
        "connectTitle": "Connect the GitHub App",
        "connectWithToken": "Connect with access token",
        "title": "GitHub App"
      }
    },
    "gscPage": {
      "title": "Google Search Console",
      "description": "Turn the search queries you already rank for into AI prompt suggestions",
      "status": {
        "needsReconnect": "Needs reconnect"
      },
      "table": {
        "showing": "Showing {visible} of {total} queries"
      },
      "suggestions": {
        "loadFailedTitle": "Failed to load suggestions",
        "loadFailedDescription": "Prompt suggestions from the last sync could not be loaded.",
        "promptSuggestion": "Prompt suggestion",
        "fromQuery": "From query"
      },
      "lastSync": {
        "loadFailedTitle": "Failed to load sync",
        "loadFailedDescription": "Search Console queries could not be loaded.",
        "noQueriesTitle": "No queries in this sync",
        "noQueriesDescription": "Search Console returned no queries for this property. Sync again after the site has search traffic.",
        "noSyncTitle": "No sync yet",
        "noSyncDescription": "Sync this property to pull the queries you rank for and the prompt suggestions they turn into.",
        "queries": "Queries"
      },
      "facts": {
        "googleAccount": "Google account"
      },
      "accessExpired": "Google access expired. Reconnect to keep syncing.",
      "loadFailedTitle": "Failed to load integration",
      "loadFailedDescription": "Something went wrong while loading Google Search Console.",
      "emptyDescription": "Connect Google Search Console to suggest prompts from the queries you already rank for.",
      "emptyTitle": "No integration yet"
    },
    "setupGuide": {
      "goToApiKeys": "Go to API Keys"
    },
    "raycast": {
      "metaTitle": "Raycast Extension",
      "title": "Raycast setup",
      "description": "Access your Notra content from Raycast",
      "linkLabel": "View on Raycast Store",
      "steps": {
        "install": {
          "title": "Install the Notra extension",
          "description": "Open the Raycast Store, search for 'Notra' and install the extension."
        },
        "apiKey": {
          "title": "Create a read and write API key",
          "description": "Go to API Keys, create a key with read and write permissions and copy it."
        },
        "configure": {
          "title": "Configure the extension",
          "description": "Open Raycast, run any Notra command and paste your API key when prompted."
        },
        "use": {
          "title": "Start using Notra in Raycast",
          "description": "Search your posts, copy content and manage workflows right from Raycast."
        }
      }
    },
    "framer": {
      "metaTitle": "Framer Integration",
      "title": "Framer setup",
      "description": "Get your Notra content into Framer",
      "linkLabel": "View on Framer Marketplace",
      "steps": {
        "install": {
          "title": "Install the Notra plugin",
          "description": "In Framer, open Assets then Plugins. Search 'Notra' and hit install."
        },
        "apiKey": {
          "title": "Create a read-only API key",
          "description": "Go to API Keys, create a key with read-only permissions and copy it."
        },
        "configure": {
          "title": "Paste the key in the plugin",
          "description": "Open the Notra plugin in Framer and paste your API key when prompted."
        },
        "use": {
          "title": "Pick what to import",
          "description": "Browse your posts in the plugin and choose which ones to pull into your Framer site."
        }
      }
    },
    "mcp": {
      "form": {
        "urlRequired": "Server URL is required",
        "urlInvalid": "Enter a valid URL",
        "descriptionTooLong": "Description is too long",
        "headerNameTooLong": "Header name is too long",
        "headerNameInvalid": "Invalid header name",
        "headerValueTooLong": "Header value is too long",
        "tooManyHeaders": "You can add up to {max} headers",
        "headerPairRequired": "Header name and value are required together",
        "serverUrl": "Server URL",
        "namePlaceholder": "My Custom Server",
        "urlDescription": "The HTTPS endpoint where your MCP server is reachable.",
        "useCase": "Use case description",
        "useCasePlaceholder": "What tools or context should Notra use this server for?",
        "setByIntegration": "Set by this integration",
        "noneDescription": "Connect to a public MCP server without credentials.",
        "headersDescription": "Add an API key, bearer token or custom headers.",
        "addHeader": "Add authentication header",
        "headerNameAriaLabel": "Authentication header {index} name",
        "headerValueAriaLabel": "Authentication header {index} value",
        "headerValuePlaceholder": "Bearer token",
        "oauthTitle": "Authorize securely",
        "oauthDescription": "You will be redirected to the server to approve access. Notra stores an encrypted refresh token and renews access automatically."
      },
      "footer": {
        "connectAndAuthorize": "Connect & Authorize",
        "addServer": "Add Server",
        "testing": "Testing…",
        "testConnection": "Test Connection"
      },
      "testStatus": {
        "testing": "Testing connection…",
        "success": "Connection successful",
        "error": "Could not reach the server"
      },
      "integrationCard": {
        "description": "Bring your own tools and context into Notra with custom Model Context Protocol servers"
      },
      "addDialog": {
        "checkDetails": "Check the MCP server details",
        "added": "MCP server added",
        "defaultName": "MCP server",
        "defaultIntegrationName": "integration",
        "title": "Add MCP Server",
        "storeDescription": "This catalog integration has a preset server URL and authentication method. For your own configuration, add a custom server under MCP Servers.",
        "description": "Connect a custom Model Context Protocol server to extend Notra with your own tools and context.",
        "testHint": "Test Connection checks server reachability and lists available tools. It does not run tools or verify access to your account.",
        "testSucceeded": "Server reachable. Discovered {count, plural, one {# tool} other {# tools}}. Tool execution and account access have not been tested.",
        "testFailed": "Could not reach the MCP server. Check the URL and headers."
      },
      "serverCard": {
        "reauthorizeAriaLabel": "Reauthorize {name}",
        "accessExpired": "Access expired. Reauthorize to keep tools working.",
        "toolCount": "{count, plural, one {# tool} other {# tools}}",
        "deleteTitle": "Delete MCP server?",
        "deleteDescription": "This will permanently remove \"{name}\" from this organization.",
        "auth": {
          "reauthorizeNeeded": "Reauthorize needed",
          "none": "No auth"
        },
        "sync": {
          "syncing": "Syncing",
          "synced": "Synced",
          "error": "Sync error",
          "notSynced": "Not synced"
        }
      },
      "page": {
        "description": "Connect custom Model Context Protocol servers to bring your own tools and context into Notra",
        "connect": "Connect MCP Server",
        "emptyTitle": "No custom servers yet",
        "emptyDescription": "Connect a custom MCP server to extend Notra with tools and data from your own systems.",
        "enabled": "MCP server enabled",
        "disabled": "MCP server disabled",
        "deleted": "MCP server deleted",
        "indexed": "{count, plural, one {Indexed # MCP tool} other {Indexed # MCP tools}}"
      }
    },
    "overview": {
      "description": "Connect external services to automate your workflows",
      "selectOrganization": "Select an organization to view integrations",
      "tabs": {
        "extension": "Extensions"
      },
      "setupGuide": "Setup Guide",
      "catalog": {
        "github": "Connect GitHub repositories for changelogs, blog posts and draft pull requests",
        "linear": "Sync issues and updates from Linear for automated content",
        "slack": "Chat with your Notra agent in Slack threads, mirrored live into the dashboard",
        "granola": "Pull meeting notes, transcripts and AI summaries from Granola for automated content",
        "googleSearchConsole": "Turn the search queries you already rank for into AI prompt suggestions for GEO tracking",
        "framer": "Import content into Framer automatically",
        "raycast": "Search your Notra content from Raycast"
      }
    },
    "connectionToasts": {
      "linearConnected": "Linear workspace connected successfully",
      "linearAlreadyConnected": "This Linear workspace is already connected",
      "slackConnected": "Slack workspace connected successfully",
      "slackAlreadyConnected": "This Slack workspace is already connected",
      "slackConnectedElsewhere": "This Slack workspace is already connected to another organization",
      "slackNotConfigured": "Slack OAuth is not configured. Set SLACK_AGENT_CLIENT_ID and SLACK_AGENT_CLIENT_SECRET.",
      "gscConnected": "Google Search Console connected",
      "gscErrors": {
        "gsc_access_denied": "Google access was denied. Nothing was connected.",
        "gsc_missing_refresh_token": "Google did not grant offline access. Try connecting again.",
        "gsc_token_exchange_failed": "Google sign-in failed. Try again.",
        "gsc_auth_failed": "Failed to connect Google Search Console.",
        "gsc_disconnect_in_progress": "Google Search Console is still disconnecting. Try again in a moment.",
        "gsc_expired_state": "The connection request expired. Try again.",
        "gsc_session_mismatch": "Sign in again before connecting.",
        "gsc_rate_limited": "Too many connection attempts. Wait a moment and try again.",
        "gsc_session_expired": "Your session expired. Sign in and try again.",
        "gsc_invalid_callback": "Google returned an invalid response. Try again."
      },
      "mcpConnected": "MCP server connected with OAuth",
      "mcpErrors": {
        "mcp_oauth_denied": "MCP authorization was canceled.",
        "mcp_oauth_failed": "MCP authorization failed. Try connecting again.",
        "mcp_oauth_invalid_callback": "The MCP authorization link is invalid or expired.",
        "mcp_oauth_refresh_token_required": "This server did not provide a refresh token, so it cannot stay connected.",
        "mcp_oauth_session_required": "Sign in again before connecting this MCP server."
      }
    },
    "linearPage": {
      "description": "Manage your Linear integrations for automated content",
      "connect": "Connect Linear",
      "emptyDescription": "Connect Linear to start syncing issues and updates.",
      "workspaceConnected": "Linear workspace connected"
    },
    "detailPage": {
      "metaTitle": "{name} Integration",
      "notFoundTitle": "Integration not found",
      "notFoundDescription": "This integration may have been deleted or you don't have access to it.",
      "linearSubtitle": "Configure your Linear integration settings",
      "editIcon": "Edit icon",
      "details": "Details",
      "team": "Team"
    },
    "granolaPage": {
      "description": "Manage your Granola integrations for meeting-based content",
      "connect": "Connect Granola",
      "loadFailedTitle": "Failed to load integrations",
      "loadFailedDescription": "Something went wrong while loading your Granola integrations.",
      "emptyDescription": "Connect Granola to start pulling meeting notes and summaries.",
      "workspaceConnected": "Granola workspace connected"
    },
    "slackPage": {
      "description": "Chat with your Notra agent in Slack and control where it responds",
      "emptyTitle": "No workspace connected",
      "emptyDescription": "Install the Notra agent in your Slack workspace to chat and approve content from Slack threads.",
      "channelsRefreshed": "Channel list refreshed",
      "channelsRefreshFailed": "Failed to refresh channels",
      "refreshAriaLabel": "Refresh channel list",
      "refreshTooltip": "Refresh channels from Slack",
      "notificationsUpdated": "Notifications channel updated",
      "notificationsOff": "Notifications turned off",
      "notificationsUpdateFailed": "Failed to update the notifications channel",
      "accessUpdated": "Channel access updated",
      "accessUpdateFailed": "Failed to update channel access",
      "channelAccessTitle": "Channel access",
      "channelAccessDescription": "Everyone in your workspace can use the agent. People outside your workspace, including Slack Connect guests, can't. You can limit the agent to specific channels.",
      "limitChannels": "Limit to specific channels",
      "channelsSelected": "{count, plural, one {# channel selected} other {# channels selected}}",
      "respondsAnywhere": "The agent responds anywhere it is mentioned",
      "selectAll": "Select all channels",
      "deselectAll": "Deselect all channels",
      "searchPlaceholder": "Search channels…",
      "noChannels": "No channels match.",
      "connectedBy": "Connected by {name} on {date}",
      "connectedOn": "Connected on {date}",
      "notificationsTitle": "Notifications channel",
      "notificationsDescription": "The agent posts activity updates here, like new drafts and completed work."
    },
    "store": {
      "connected": "Connected",
      "connecting": "Connecting…",
      "byAuthor": "By {author}",
      "fallbackDescription": "MCP server from the integration store",
      "connectDialog": {
        "fallbackDescription": "MCP server from the integration store."
      },
      "connectHint": {
        "oauth": "You will be redirected to {name} to authorize the connection.",
        "headers": "You will need your own {name} credentials to finish connecting.",
        "none": "{name} connects instantly and needs no credentials."
      },
      "section": {
        "title": "From the integration store",
        "description": "MCP servers published by the Notra community. Connect them with your own credentials.",
        "connectedToast": "Integration connected"
      },
      "manage": {
        "description": "Manage this integration's connection and credentials.",
        "updated": "Integration updated",
        "indexed": "{count, plural, one {Indexed # tool} other {Indexed # tools}}",
        "disconnected": "Integration disconnected",
        "headerIncomplete": "Enter a name and value for every header",
        "tools": "Tools",
        "endpoint": "Endpoint",
        "credentialsTitle": "API credentials",
        "credentialsDescription": "Stored values stay hidden. Enter replacements to update them.",
        "header": "Header",
        "newValue": "New value",
        "addHeader": "Add header",
        "updateCredentials": "Update credentials",
        "disconnectTitle": "Disconnect {name}?",
        "disconnectDescription": "Its tools will no longer be available to this organization. You can reconnect it later.",
        "auth": {
          "none": "No authentication"
        }
      }
    },
    "webhookSetup": {
      "copied": "{label} copied to clipboard",
      "title": "Setup Webhook",
      "description": "Add these values in your <link>GitHub webhook settings</link>, then confirm once saved.",
      "loadFailed": "Failed to load webhook configuration",
      "skip": "Skip for now",
      "confirm": "I've added the webhook"
    },
    "socialConnect": {
      "errors": {
        "invalid_callback": "The connection attempt was invalid. Try again.",
        "expired_state": "The connection attempt expired. Try again.",
        "connection_failed": "The account connection was canceled or failed.",
        "account_fetch_failed": "Couldn't load the connected account. Try again.",
        "callback_failed": "Something went wrong while connecting the account. Try again.",
        "state_mismatch": "This connection link was started from a different account. Start again from your own settings."
      },
      "connectFailed": "Failed to connect the account. Try again.",
      "accountConnected": "{platform} account connected",
      "needsReconnecting": "@{username} needs reconnecting",
      "upToDate": "@{username} is up to date",
      "refreshFailed": "Failed to refresh account",
      "posted": "Posted to {platform} as @{username}",
      "connectPlatformFailed": "Failed to connect {platform} account"
    }
  },
  "iris": {
    "shared": {
      "irisIsPaused": "Iris is paused",
      "irisIsOnDuty": "Iris is on duty",
      "waiting": "Waiting"
    },
    "pauseDialog": {
      "title": "Pause Iris?",
      "description": "Pausing stops scheduled runs and cancels pending Slack messages. You can resume at any time.",
      "keepRunning": "Keep running",
      "confirm": "Pause Iris"
    },
    "runCard": {
      "fixSlack": "Fix Slack"
    },
    "running": {
      "status": {
        "retired": "Iris is retired",
        "working": "Iris is working"
      },
      "tabs": {
        "signals": "Recent signals"
      },
      "activityUnavailable": {
        "title": "Activity is unavailable",
        "description": "The activity feed could not be loaded. Refresh the page to try again."
      },
      "noRuns": {
        "title": "No runs yet",
        "description": "Iris is watching your sources. The first report shows up here as soon as something is worth announcing."
      },
      "signalsUnavailable": {
        "title": "Signals are unavailable",
        "description": "Recent signals could not be loaded. Refresh the page to try again."
      }
    },
    "signals": {
      "empty": "Nothing has come in yet. Iris starts watching as soon as you ship."
    },
    "start": {
      "description": "Iris watches what you ship and does your marketing. It drafts changelogs, blog posts with images and social posts, then asks you on Slack before anything goes live.",
      "start": "Start Iris",
      "beforeYouStart": "Before you start",
      "slackWarning": "Connect a Slack notification channel so Iris can report to you. You can still start now and connect it later. <link>Connect Slack</link>"
    },
    "explainer": {
      "watch": {
        "title": "Watches your sources",
        "description": "Every release, merge and push you ship lands in front of Iris."
      },
      "draft": {
        "title": "Drafts the story",
        "description": "Changelogs, blog posts with images and social posts, written in your voice."
      },
      "ship": {
        "title": "You say ship it",
        "description": "Iris reports to Slack and waits for your go before anything goes live."
      }
    },
    "stats": {
      "runs": "Runs, last 30 days",
      "artifacts": "Drafts, last 30 days",
      "signals": "Signals waiting",
      "lastRun": "Last run"
    },
    "unavailable": {
      "title": "Iris is not available yet",
      "description": "Iris is not available for this workspace yet."
    },
    "toasts": {
      "startFailed": "Iris could not be started",
      "runNow": "Iris is on it",
      "runNowFailed": "Iris could not start a run",
      "pauseFailed": "Iris could not be paused",
      "resumed": "Iris is back on duty",
      "resumeFailed": "Iris could not be resumed",
      "notRunning": "Iris is not running"
    },
    "readiness": {
      "sources": {
        "label": "Sources connected",
        "ready": "Iris can see what your team ships.",
        "missing": "Connect a repository so Iris knows what you shipped."
      },
      "slack": {
        "label": "Slack channel connected",
        "ready": "Iris reports to your Slack notification channel.",
        "missing": "Connect a Slack notification channel so Iris can report to you."
      }
    },
    "relativeTime": {
      "minutesAgo": "{count} min ago",
      "hoursAgo": "{count, plural, one {# hour ago} other {# hours ago}}",
      "daysAgo": "{count, plural, one {# day ago} other {# days ago}}"
    },
    "decision": {
      "thinking": "Iris is thinking it over",
      "reviewedSignals": "{count, plural, one {Reviewed # signal and decided to wait} other {Reviewed # signals and decided to wait}}",
      "reviewedLatest": "Reviewed the latest activity and decided to wait",
      "escalated": "Asked for your input on Slack",
      "planNotFinishedWithTitle": "Plan did not finish: {title}",
      "planNotFinished": "The plan did not finish",
      "runCanceledWithTitle": "Run canceled: {title}",
      "runCanceled": "Run canceled",
      "planReady": "Iris put a plan together",
      "planningFailed": "Planning failed",
      "gettingToWork": "Iris is getting to work"
    },
    "outbox": {
      "delivered": "Reported to Slack",
      "needsSlackFix": "Iris could not post to Slack. Pick a notification channel and invite Iris to it.",
      "failed": "Slack delivery failed",
      "failedWithError": "Slack delivery failed: {error}",
      "canceled": "Slack report canceled",
      "reporting": "Reporting to Slack"
    },
    "capabilities": {
      "repositoryRead": "Repository read",
      "readSocialAnalytics": "Read social analytics",
      "startAbTest": "Start A/B test",
      "readAbTests": "Read A/B tests",
      "socialPost": "Social post"
    },
    "signalKinds": {
      "codePushed": "Code pushed",
      "pullRequestMerged": "Pull request merged"
    },
    "triggers": {
      "signal": "New activity",
      "wake": "Scheduled check",
      "repair": "Retry"
    },
    "runStatus": {
      "executing": "Working",
      "completed": "Completed"
    },
    "taskStatus": {
      "running": "Running",
      "completed": "Done"
    },
    "signalStatus": {
      "coalesced": "Grouped",
      "processed": "Reviewed"
    }
  },
  "analytics": {
    "shared": {
      "interactions": "Interactions",
      "posted": "Posted",
      "engagement": "Engagement",
      "followers": "Followers",
      "likes": "Likes",
      "noPostsForThisTime": "No posts for this time frame",
      "replies": "Replies"
    },
    "accountModal": {
      "description": "Engagement and recent posts for @{handle}"
    },
    "summary": {
      "engagementRate": "Engagement rate",
      "engagementHint": "{interactions} interactions / {impressions} impressions",
      "followersHint": "across {count, plural, one {# connected account} other {# connected accounts}}",
      "impressionsHint": "across all posts, {range}",
      "interactionsHint": "{posts} posts, {range}"
    },
    "ranges": {
      "today": {
        "hint": "today"
      },
      "yesterday": {
        "hint": "yesterday"
      },
      "7d": {
        "hint": "last 7 days"
      },
      "30d": {
        "hint": "last 30 days"
      },
      "90d": {
        "hint": "last 90 days"
      },
      "mtd": {
        "label": "Month to date",
        "compact": "MTD",
        "hint": "month to date"
      },
      "qtd": {
        "label": "Quarter to date",
        "compact": "QTD",
        "hint": "quarter to date"
      },
      "ytd": {
        "compact": "YTD",
        "hint": "year to date"
      },
      "all": {
        "label": "All time",
        "hint": "all time"
      }
    },
    "shell": {
      "description": "How your X and LinkedIn accounts are performing",
      "emptyDescription": "Connect an X or LinkedIn account to start tracking followers, impressions and engagement.",
      "emptyTitle": "No connected accounts",
      "notConfigured": "Analytics ingestion is not configured yet. Connected accounts are shown, but stats will appear once the analytics backend is set up."
    },
    "connect": {
      "connectX": "Connect X",
      "another": "Connect another platform",
      "connectLinkedIn": "Connect LinkedIn"
    },
    "followers": {
      "trackingStarted": "tracking started",
      "noAccounts": "No accounts selected"
    },
    "impressionsShare": {
      "caption": "{account} · {percent}% of impressions",
      "title": "Impressions share",
      "empty": "No impression data yet"
    },
    "postingPerformance": {
      "description": "When your posts earn the most engagement",
      "title": "Best time to post",
      "highestEngagement": "Highest average engagement ({value} per post)",
      "activity": {
        "quiet": "No activity",
        "low": "Low activity",
        "medium": "Medium activity",
        "high": "High activity"
      },
      "week": "Week",
      "empty": "No posting data for this time frame"
    },
    "topPosts": {
      "postCount": "Post ({count})",
      "title": "Top posts"
    },
    "leaderboard": {
      "stopTrackingAccount": "Stop tracking @{handle}",
      "empty": "No accounts yet",
      "filterLabel": "Filter accounts by handle or name",
      "filterPlaceholder": "Filter by handle or name…",
      "platformFilter": "Filter by platform",
      "stopTracking": "Stop tracking {count}",
      "noMatches": "No accounts match these filters"
    },
    "accountDetail": {
      "metrics": {
        "reposts": "Reposts",
        "quotes": "Quotes",
        "bookmarks": "Bookmarks",
        "engagementRate": "Eng. rate"
      },
      "overTime": "Engagement over time",
      "notEnoughActivity": "Not enough activity in the last {days} days to chart @{handle}",
      "recentPosts": "Recent posts",
      "postCount": "{count, plural, one {{formatted} post} other {{formatted} posts}}",
      "noPosts": "No tracked posts for @{handle} yet"
    },
    "overview": {
      "joinedNotra": "Joined Notra",
      "firstNotraPost": "First Notra post",
      "engagementDescription": "Likes, replies and reposts across your accounts",
      "engagementEmpty": "No engagement data for this time frame",
      "impressionsEmpty": "No impression data for this time frame",
      "volume": "Publishing volume"
    },
    "toasts": {
      "loadAnalyticsOverviewFailed": "Failed to load analytics overview",
      "loadEngagementDataFailed": "Failed to load engagement data",
      "loadTopPostsFailed": "Failed to load top posts",
      "loadFollowerGrowthFailed": "Failed to load follower growth",
      "loadPostingPerformanceFailed": "Failed to load posting performance",
      "loadLeaderboardFailed": "Failed to load leaderboard",
      "loadAdoptionDataFailed": "Failed to load adoption data",
      "stopTrackingAccountFailed": "Failed to stop tracking account"
    }
  },
  "automation": {
    "shared": {
      "failedToUpdateSchedule": "Failed to update schedule",
      "activeCount": "Active ({count})",
      "pausedCount": "Paused ({count})",
      "failedToUpdateTrigger": "Failed to update trigger"
    },
    "schedulesMetaTitle": "Automation schedules",
    "eventsMetaTitle": "Automation events",
    "brandVoice": {
      "noIdentity": "No identity",
      "noIdentityDescription": "No identity has been configured for this workspace yet.",
      "defaultSuffix": "(Default)",
      "defaultIdentity": "Default identity"
    },
    "suggestions": {
      "reviewDescription": "Review the recommendation before creating this {kind, select, schedule {schedule} other {event automation}}.",
      "whyThisFits": "Why this fits",
      "create": "Create {kind, select, schedule {schedule} other {event automation}}",
      "dismissFailed": "Couldn't dismiss the suggestion",
      "dismissLabel": "Dismiss suggestion \"{title}\"",
      "dismissTooltip": "Dismiss suggestion",
      "viewDetails": "View details for \"{title}\"",
      "clickToExpand": "Click to expand"
    },
    "outputTypeLabels": {
      "blog_post": "Blog post",
      "twitter_post": "Twitter post",
      "linkedin_post": "LinkedIn post",
      "investor_update": "Investor update"
    },
    "schedules": {
      "dayPicker": {
        "dayOfWeek": "Day of week",
        "dayOfMonth": "Day of month",
        "dayPlaceholder": "Day",
        "dayOption": "Day {day}",
        "skipNotes": {
          "day31": "Skipped in February, April, June, September and November.",
          "day30": "Skipped in February.",
          "day29": "Skipped in February except leap years.",
          "default": "If a month is shorter than the selected day, the run is skipped that month."
        }
      },
      "interval": {
        "repeatEvery": "Repeat every",
        "fewer": "Fewer days",
        "more": "More days",
        "days": "days",
        "invalid": "Pick between {min} and {max} days."
      },
      "quickStart": {
        "description": "Start from a common cadence, then tweak anything before saving.",
        "presets": {
          "weekly-changelog": {
            "label": "Weekly changelog",
            "description": "Summarize the week's activity every Monday morning."
          },
          "daily-twitter": {
            "label": "Daily X post",
            "description": "Share a short update from yesterday's activity."
          },
          "monthly-blog": {
            "label": "Monthly blog post",
            "description": "Turn the month's highlights into a long-form article."
          },
          "biweekly-linkedin": {
            "label": "Bi-weekly LinkedIn post",
            "description": "Post a professional update every two weeks."
          }
        },
        "createSchedule": "Create {title} schedule"
      },
      "summary": {
        "weekly": "Every {day} at {time}",
        "monthly": "Monthly on day {day} at {time}",
        "custom": "Every {days} days at {time}",
        "daily": "Every day at {time}",
        "anyMoment": "any moment",
        "inMinutes": "in {count}m",
        "inHours": "in {count}h",
        "inDays": "in {count}d",
        "nextRun": "Next run: {date} ({relative})"
      },
      "outputTypesLower": {
        "changelog": "changelog entry",
        "blog_post": "blog post",
        "linkedin_post": "LinkedIn post",
        "twitter_post": "tweet",
        "image": "image"
      },
      "autoName": {
        "custom": "Every {days} days {type}",
        "frequency": "{frequency, select, daily {Daily} weekly {Weekly} monthly {Monthly} other {Custom}} {type}"
      },
      "validation": {
        "intervalRequired": "Enter how many days between runs",
        "nameRequired": "Give this schedule a name",
        "instructionsTooLong": "Keep instructions under {max} characters",
        "sourcesRequired": "Pick at least one source to continue",
        "githubRequired": "Schedules need at least one GitHub repository"
      },
      "dialog": {
        "alreadyExists": "Schedule already exists",
        "createFailed": "Failed to create schedule",
        "updated": "Schedule updated",
        "added": "Schedule added",
        "defaultVoiceName": "{name} (Default)",
        "defaultVoice": "Default brand voice",
        "editTitle": "Edit schedule",
        "newTitle": "New schedule",
        "description": "Pick a content type and a schedule. We'll handle the rest.",
        "nameHint": "Just for you, won't appear in any output.",
        "contentFormat": "Content format",
        "contentFormatHint": "What should we generate?",
        "instructions": "Instructions",
        "instructionsHint": "Tell us what this schedule should write about. Brand voice still applies.",
        "instructionsPlaceholder": "e.g. Write a tutorial-style post that walks through one feature shipped in this window, with code samples.",
        "instructionsFooter": "Passed to the writer as extra guidance on every run.",
        "scheduleHint": "When should this run? Times use UTC.",
        "time": "Time",
        "sourcesHint": "Pick which integrations we should pull activity from.",
        "searchIntegrations": "Search integrations",
        "noIntegrationsFound": "No integrations found.",
        "rules": "{type} rules",
        "rulesHint": "How far back we look and how the post should sound.",
        "brandVoiceDescription": "Choose which brand voice to use for generated content.",
        "brandVoiceDefaultDescription": "Use your default brand voice.",
        "autoPublish": "Auto-publish",
        "autoPublishHint": "When on, posts are published immediately instead of saved as drafts.",
        "add": "Add schedule",
        "sourcesSelected": "{count, plural, one {# source selected} other {# sources selected}}"
      },
      "lookbackWindows": {
        "current_day": "Current day"
      },
      "page": {
        "description": "Configure cron schedules that run daily, weekly or monthly",
        "create": "Create schedule",
        "integrationDeleted": "Can't enable this schedule because its integration was deleted. Edit the schedule and pick another integration.",
        "deleteFailed": "Failed to delete schedule",
        "removed": "Schedule removed",
        "triggered": "Schedule triggered. Content will be generated shortly.",
        "runFailed": "Failed to run schedule",
        "emptyDescription": "Create your first schedule to automate recurring content.",
        "emptyTitle": "No schedules yet",
        "deleteTitle": "Delete schedule?",
        "deleteDescription": "This will permanently delete <target></target>. This can't be undone.",
        "runs": "Runs: {value}",
        "repositories": "Repositories: {value}",
        "thisSchedule": "this schedule",
        "untitled": "Untitled schedule",
        "scheduleFallback": "schedule",
        "emptyCategory": "No schedules in this category."
      },
      "frequencyLabel": {
        "notSet": "Not set",
        "weekly": "Weekly - {day} @ {time}",
        "monthly": "Monthly - Day {day} @ {time}",
        "custom": "Every {days} days @ {time}",
        "daily": "Daily @ {time}"
      }
    },
    "events": {
      "page": {
        "description": "React to GitHub activity and trigger content generation automatically",
        "create": "Create trigger",
        "removed": "Event trigger removed",
        "deleteFailed": "Failed to delete trigger",
        "emptyDescription": "Create your first event trigger to react to GitHub activity.",
        "emptyTitle": "No event triggers yet",
        "allEvents": "All events",
        "eventNames": {
          "push": "Push"
        },
        "githubWebhook": "GitHub webhook",
        "emptyCategory": "No event triggers in this category."
      },
      "dialog": {
        "alreadyExists": "Trigger already exists",
        "createFailed": "Failed to create trigger",
        "updated": "Trigger updated",
        "added": "Trigger added",
        "editTitle": "Edit event trigger",
        "newTitle": "New event trigger",
        "description": "React to GitHub activity and generate content automatically.",
        "rulesHint": "Voice and publishing behavior for this trigger.",
        "noRepositoriesSelected": "No repositories selected yet",
        "repositoriesSelected": "{count, plural, one {# repository selected} other {# repositories selected}}",
        "add": "Add trigger",
        "triggerEvent": "Trigger event",
        "triggerEventHint": "When should this fire?",
        "includePreReleases": "Include pre-releases",
        "includePreReleasesHint": "When off, releases marked as pre-release on GitHub will not fire this trigger.",
        "repositoriesHint": "Pick which repositories should fire this trigger.",
        "noRepositories": "No GitHub repositories connected yet."
      },
      "validation": {
        "repositoriesRequired": "Select at least one repository",
        "patternsTooLong": "Must be {max} characters or less",
        "invalidPatterns": "Invalid patterns"
      },
      "eventTypes": {
        "release": {
          "description": "Trigger when a new release is published on GitHub."
        },
        "push": {
          "label": "Push to default branch",
          "description": "Trigger on each push to the repository's default branch."
        }
      },
      "ignorePatterns": {
        "typeToCheck": "Type a commit message to check it.",
        "notSkipped": "Not skipped. Nothing matches.",
        "skipped": "Skipped. Matches <code>{pattern}</code>.",
        "label": "Ignore commits matching",
        "addPrefix": "Add a prefix:",
        "remove": "Remove {pattern}",
        "add": "Add {pattern}",
        "placeholder": "e.g. {example} (separated by comma)",
        "hint": "If every commit in a push matches one of these, the push is skipped. Separate patterns with commas. Case doesn't matter.",
        "tryLabel": "Try a commit message",
        "tryPlaceholder": "e.g. chore: bump dependencies"
      }
    }
  },
  "billing": {
    "shared": {
      "currentBalance": "Current balance",
      "pullRequestCredits": "Pull request credits",
      "zeroDataRetention": "Zero data retention",
      "aiAnswers": "AI answers"
    },
    "features": {
      "team_members": "Team members",
      "long_form_posts": "Long-form posts",
      "social_posts": "Social posts",
      "image_generations": "Image generations",
      "workflows": "Workflows",
      "log_retention_7_days": "Log retention 7 days",
      "log_retention_14_days": "Log retention 14 days",
      "log_retention_30_days": "Log retention 30 days"
    },
    "creditSummary": {
      "included": "of {amount} included",
      "usedThisPeriod": "Used this period",
      "inTheLast": "in the last {range, select, 7d {7 days} 30d {30 days} 90d {90 days} other {{range}}}",
      "ofPlan": "of plan"
    },
    "topup": {
      "description": "Purchase additional AI credits for your workspace",
      "added": "Credits added successfully",
      "failed": "Could not process top-up. Please try again.",
      "includedInPlan": "of {amount} included in plan",
      "selectAmountLabel": "Select amount",
      "customPlaceholder": "Custom amount (${min}–${max})",
      "customInvalid": "Enter a whole number between ${min} and ${max}",
      "addAmount": "Add ${amount} in credits",
      "selectAmount": "Select an amount",
      "feeNotice": "A {percent}% platform fee is added to top-ups. Plan-included credits are charged at cost."
    },
    "invoices": {
      "statusValue": "{status, select, paid {Paid} open {Open} draft {Draft} void {Void} uncollectible {Uncollectible} pending {Pending} other {{status}}}",
      "empty": "No invoices yet"
    },
    "zdrConsent": {
      "title": "Enable zero data retention?",
      "body": "Zero data retention routes your prompts and answers only through model hosts covered by a zero-data-retention agreement. Notra routes requests through third-party AI gateways, and their agreements with each model provider are what enforce ZDR. Please read the following before you enable it:",
      "points": {
        "availability": "Availability is not guaranteed for every model. ZDR exists only where the gateway we route through holds a zero-data-retention agreement with that model's provider. Notra does not hold these agreements directly and cannot extend them to models they do not cover.",
        "newModels": "New models usually launch without ZDR. Recently released models are often excluded until the provider and gateway add a zero-data-retention option.",
        "skipped": "Models without a ZDR host are skipped. They are marked in GEO settings and will not run unless you explicitly approve each one, in which case that provider may retain request data under its own policy.",
        "termsChange": "Gateway and provider terms can change. If a ZDR agreement is withdrawn for a model, that model is excluded from your scans until an alternative is available."
      },
      "footnote": "By enabling, you acknowledge that zero data retention is provided under third-party gateway agreements and applies only to models covered by one at the time of each request.",
      "cancel": "Not now"
    },
    "zdrAddon": {
      "description": "Only run models on hosts that keep no prompt or answer data. Priced at 20% of your plan.",
      "unavailable": "Available as an add-on once you're on Starter, Growth or Scale.",
      "hint": "Not every model offers a ZDR host.",
      "removeSuccess": "Zero data retention will be removed at the end of your billing cycle.",
      "removeFailed": "Could not remove zero data retention. Please try again.",
      "choosePlan": "Choose a plan",
      "addFor": "Add for {price}/{interval, select, month {month} year {year} other {{interval}}}"
    },
    "creditActivity": {
      "aiChat": "AI chat",
      "title": "Recent activity",
      "empty": "No usage events yet",
      "itemLabel": "events"
    },
    "creditUsage": {
      "creditsUsed": "Credits used",
      "empty": "No usage data for this period"
    },
    "usageBreakdown": {
      "rangeLabel": "Usage range",
      "title": "Usage breakdown",
      "empty": "No AI Answers usage in this period"
    },
    "geoUpgrade": {
      "title": "Upgrade required"
    },
    "usageAlerts": {
      "addAlert": "Add alert",
      "errors": {
        "required": "Enter a threshold.",
        "min": "Enter a threshold of 0 or more.",
        "percentage": "Enter a percentage between 0 and 100."
      },
      "editTitle": "Edit usage alert",
      "addTitle": "Add usage alert",
      "formDescription": "Choose when this organization should trigger a usage alert.",
      "feature": "Feature",
      "allFeatures": "All features",
      "allFeaturesHint": "Leave this on all features to apply the alert across every usage balance.",
      "enabledHint": "Disabled alerts stay saved but do not trigger.",
      "namePlaceholder": "Optional label for this alert",
      "thresholdType": "Threshold type",
      "threshold": "Threshold",
      "thresholdTypes": {
        "usage_percentage": {
          "label": "Usage percentage",
          "description": "Alert when usage reaches this percentage of the allowance."
        },
        "remaining_percentage": {
          "label": "Remaining percentage",
          "description": "Alert when the remaining balance falls to this percentage."
        },
        "usage": {
          "label": "Usage (absolute value)",
          "description": "Alert when usage reaches this amount."
        },
        "remaining": {
          "label": "Remaining (absolute value)",
          "description": "Alert when the remaining balance falls to this amount."
        }
      },
      "updated": "Usage alerts updated",
      "updateFailed": "Failed to update usage alerts",
      "limitToast": "You can configure up to {max} usage alerts.",
      "changed": "This usage alert changed. Go back and try again.",
      "empty": "No usage alerts configured.",
      "columns": {
        "alert": "Alert"
      },
      "rowLabel": "{feature} usage alert",
      "thresholdValue": "{threshold}{percentage, select, yes {%} other {}} {direction, select, remaining {remaining} other {used}}",
      "disableLabel": "Disable {label}",
      "enableLabel": "Enable {label}",
      "deleteLabel": "Delete {label}",
      "description": "Trigger an alert when usage or the remaining balance crosses a threshold.",
      "limitReached": "The limit of {max} usage alerts has been reached. Delete an alert to add another.",
      "ownerOnly": "Only the organization owner can manage usage alerts."
    },
    "usage": {
      "remainingAria": "{label}: {percent}% remaining",
      "about": "About {name}",
      "usedOfCycle": "{used} used of {included} this cycle.",
      "includedCycle": "{included} included this cycle.",
      "remainingOf": "{balance} of {included} remaining",
      "remainingOfUnknown": "of {included} remaining",
      "logRetention": "Log retention",
      "logRetentionDescription": "Logs are kept for {days} days.",
      "days": "{days} days",
      "noCap": "Included in your plan without a usage cap.",
      "unlimited": "Unlimited",
      "resets": "Resets {date}",
      "remainingPercent": "{percent}% remaining",
      "remainingPercentResets": "{percent}% remaining · Resets {date}",
      "ofThisCycle": "of {included} this cycle",
      "balanceTitle": "Balance",
      "balanceDescription": "How much of each plan limit you have left this cycle.",
      "aiAnswersRemaining": "AI answers remaining",
      "creditsFooter": "Credits extend usage beyond your plan limits.",
      "creditsRemaining": "Credits remaining",
      "pullRequestFooter": "What @notra may spend on pull requests. Credits take over once it runs out.",
      "featureLimits": "Feature limits",
      "otherQuotas": "Other remaining quotas on your plan.",
      "quotas": "Remaining quotas on your plan."
    },
    "plans": {
      "renewalTerms": "{kind, select, trial {After your free trial, your base plan renews at {price}/{interval} until canceled. Cancel before the trial ends to avoid charges.} trialRevert {Your free trial ends without automatic billing. A paid base plan renews at {price}/{interval} only if you subscribe.} other {Your base plan renews at {price}/{interval} until canceled.}} Manage or cancel in Billing settings.",
      "addonExtra": "Selected add-ons cost extra.",
      "tierDescription": "{tier, select, starter {For founders tracking their first prompts.} growth {For teams tracking prompts across engines and languages.} scale {For agencies and teams running several brands.} other {}}",
      "features": {
        "aiAnswers": "{count, number} AI answers tracked / mo",
        "imageGenerations": "{count, number} image generations / mo",
        "longFormPosts": "{count, number} long-form posts / mo",
        "unlimitedSocialPosts": "Unlimited social posts",
        "pullRequestCredits": "${amount} of pull request credits / mo",
        "projects": "{count, plural, one {# project} other {# projects}}",
        "references": "{count, number} references",
        "referencesOverage": "then ${price} per ref / mo",
        "standardSupport": "Standard support + Slack",
        "prioritySupport": "Priority support",
        "zdrAvailable": "ZDR available (+{percent}%)",
        "aiCredits": "{amount} AI credits",
        "unlimitedFeature": "Unlimited {feature}",
        "includedFeature": "{count, number} {feature}",
        "includedFeaturePerInterval": "{count, number} {feature} per {interval, select, day {day} week {week} month {month} quarter {quarter} semi_annual {half year} year {year} other {{interval}}}"
      },
      "button": "{action, select, trial {Start free trial} purchase {Purchase} scheduled {Plan scheduled} active {Current plan} renew {Renew} upgrade {Upgrade} downgrade {Downgrade} cancel {Cancel plan} other {Get started}}",
      "invoiceSubscription": "Subscription",
      "invoiceCreditsTopUp": "AI credits top-up",
      "addonPrice": "+{price}/{interval, select, month {month} year {year} other {{interval}}}"
    }
  },
  "logs": {
    "shared": {
      "success": "Success"
    },
    "statusFilters": {
      "all": "All statuses"
    },
    "sources": {
      "linear": "Linear",
      "webhook": "Webhook",
      "search-console": "Search Console"
    },
    "statusDescriptions": {
      "success": "This event completed successfully.",
      "failed": "This event could not complete. Review the error below before retrying the automation.",
      "pending": "This event was recorded as pending. Refresh the logs to check for a later result.",
      "skipped": "No content was generated for this event. Review the reason below and the source activity for this run."
    },
    "retention": {
      "label": "Log retention information",
      "description": "Log data is retained for {days} days. Older entries are automatically removed."
    },
    "filters": {
      "searchLabel": "Search logs",
      "searchPlaceholder": "Search by title or error message"
    },
    "details": {
      "errorDetails": "Error details",
      "reason": "Reason",
      "runContext": "Run context",
      "eventMetadata": "Event metadata",
      "logId": "Log ID",
      "timestamp": "Timestamp",
      "sourceId": "Source ID",
      "referenceId": "Reference ID",
      "rawPayload": "Raw payload",
      "contextFields": {
        "repositoryCount": "Repositories checked",
        "checks": "Checks run",
        "mentions": "Mentions found",
        "prompts": "Prompts scanned",
        "keywords": "Keywords synced",
        "suggestionsAdded": "Suggestions created",
        "stage": "Stage",
        "runId": "Run ID",
        "senderLogin": "Commenter",
        "destinationMode": "Destination",
        "commentUrl": "Comment URL",
        "commentSnippet": "Comment",
        "replySnippet": "Reply",
        "pullRequestUrl": "Pull request",
        "mentionStatus": "Mention result",
        "durationMs": "Duration (ms)"
      },
      "title": "Event details",
      "inspect": "Inspect this integration event.",
      "loadingContext": "Loading event context…",
      "retry": "Retry details",
      "copied": "Event details copied",
      "copy": "Copy details",
      "destinations": {
        "openSchedules": "Open schedules",
        "openEventTriggers": "Open event triggers",
        "openGeo": "Open GEO",
        "openAgentReadiness": "Open agent readiness",
        "openTraffic": "Open traffic analytics",
        "openBrandIdentity": "Open brand identity",
        "openIntegrations": "Open integrations"
      }
    }
  },
  "nav": {
    "shared": {
      "createOrganization": "Create organization"
    },
    "badges": {
      "beta": "Beta"
    },
    "groups": {
      "improve": "Improve",
      "utility": "Utility"
    },
    "modes": {
      "measureVisibility": "Measure visibility",
      "createContent": "Create content"
    },
    "primaryActions": {
      "newContent": "New content"
    },
    "geoUpgradeTooltip": "Upgrade your plan to use GEO",
    "recent": "Recent",
    "recentItem": {
      "openInNewTab": "Open in new tab",
      "linkCopied": "Link copied",
      "linkCopyFailed": "Failed to copy link",
      "copyLink": "Copy link"
    },
    "user": {
      "signingOut": "Signing out…"
    },
    "upgrade": {
      "upgradeNow": "Upgrade now",
      "freeDescription": "Feedback is free. Upgrade for AI content and visibility tracking.",
      "freeHeading": "Get more from Notra",
      "upgradeToPlan": "Upgrade to {plan}",
      "paidDescription": "Get more AI answers, projects and higher usage limits."
    },
    "sidebar": {
      "loadingChatHistory": "Loading chat history",
      "hide": "Hide sidebar",
      "show": "Show sidebar",
      "resize": "Resize sidebar",
      "collapsed": "Collapsed",
      "widthPixels": "{width} pixels",
      "resizeHint": "Drag to resize or collapse sidebar. Double-click to reset."
    },
    "orgSelector": {
      "tooltip": "Organization | {name}",
      "noOrganizations": "No organizations found",
      "newOrganization": "New organization",
      "subscribeToCreate": "Subscribe to create more organizations",
      "scheduleDemo": "Schedule a demo",
      "upgradeToGrowth": "Upgrade to Growth",
      "lightMode": "Light mode",
      "darkMode": "Dark mode"
    },
    "onboarding": {
      "steps": {
        "brandIdentity": "Set up brand identity",
        "integration": "Add an integration",
        "schedule": "Create a schedule",
        "geoTracking": "Track AI visibility"
      },
      "expand": "Expand getting started",
      "expandShort": "Expand",
      "title": "Getting started",
      "titleWithProgress": "Getting started ({completed}/{total})",
      "description": "Finish these steps to set up Notra.",
      "percentCompleted": "{percent}% completed"
    },
    "createOrg": {
      "createFailed": "Failed to create organization",
      "created": "Organization created successfully",
      "description": "Create a new organization to collaborate with your team.",
      "nameLabel": "Organization name",
      "slugLabel": "Organization slug",
      "slugHint": "Used in URLs: app.usenotra.com/{slug}",
      "websiteLabel": "Website (optional)",
      "validation": {
        "websiteInvalid": "Please enter a valid URL (e.g., https://example.com)"
      }
    }
  },
  "chat": {
    "shared": {
      "sendAMessage": "Send a message",
      "queueAMessage": "Queue a message…",
      "countPluralOneChatMessage": "{count, plural, one {# chat message left} other {# chat messages left}}",
      "chatInputDropArea": "Chat input drop area",
      "addToolsOrContext": "Add tools or context",
      "context": "Context",
      "manageIntegrations": "Manage integrations",
      "noMatchingIntegrations": "No matching integrations.",
      "noMatchingToolsOrContext": "No matching tools or context found.",
      "searchToolsAndContext": "Search tools and context…",
      "toolsAndContext": "Tools and context"
    },
    "promptInput": {
      "placeholder": "Send a message… (type / for skills)"
    },
    "input": {
      "thinking": {
        "label": "Thinking effort",
        "off": "None"
      },
      "send": {
        "stopping": "Stopping…",
        "queuedPending": "Will send once uploads finish. Click to cancel.",
        "stopGenerating": "Stop generating",
        "queueHint": "Enter to queue this message. It will send once the AI finishes.",
        "sendHint": "Enter to send. Shift+Enter for a new line.",
        "sendMessage": "Send message",
        "queueMessage": "Queue message",
        "noCredits": "No chat credits left."
      },
      "contextPicker": {
        "disabledQueued": "Cancel the pending message before changing tools or context.",
        "disabledLoading": "Wait for the current response before changing tools or context.",
        "mcpGroup": "MCP tools"
      },
      "mention": {
        "noneConnected": "No context or MCP tools connected",
        "noMatches": "No matches found",
        "connectIntegrations": "Connect integrations",
        "postsGroup": "In this chat"
      },
      "options": {
        "githubRepository": "GitHub repository",
        "linearTeam": "Linear team",
        "customMcp": "Custom MCP server · {count, plural, one {# tool} other {# tools}}",
        "marketplaceMcp": "Marketplace MCP server · {count, plural, one {# tool} other {# tools}}"
      },
      "modelPicker": {
        "searchPlaceholder": "Search models…",
        "empty": "No models found."
      },
      "attach": {
        "imagesPdfs": "Attach images or PDFs",
        "imagesPdfsText": "Attach images, PDFs or text"
      },
      "upload": {
        "maxAttachments": "You can attach at most {max} files per message.",
        "unsupportedText": "{model} only supports image and PDF attachments. Remove text files or choose a Claude model.",
        "unsupportedType": "Unsupported file type: {name}",
        "tooLarge": "{name} exceeds the {size}MB limit.",
        "failed": "Failed to upload {name}: {message}",
        "someFailed": "Some attachments failed to upload. Remove or retry them before sending."
      },
      "editor": {
        "placeholder": "Send a message… (type @ for tools, / for skills)"
      },
      "contextUnavailable": "Context is unavailable right now."
    },
    "attachments": {
      "attachFiles": "Attach files",
      "dropTitle": "Add Attachment",
      "dropDescription": "Drop a file here to attach it to your message",
      "acceptedTypes": "Accepted file types: {types}",
      "unavailable": "{name} is unavailable",
      "fallbackAlt": "attachment"
    },
    "attachmentPreview": {
      "loadFailed": "Failed to load ({status})",
      "imageCopied": "Image copied",
      "copyFailed": "Failed to copy image",
      "downloadedFile": "Downloaded file",
      "copyImage": "Copy image",
      "unavailableTitle": "Preview isn't available",
      "unavailableDescription": "Download this file to open it on your device."
    },
    "skills": {
      "noMatches": "No matching skills"
    },
    "connectSuggestions": {
      "heading": "Suggested",
      "descriptions": {
        "github": "Add repositories as context",
        "linear": "Add teams as context",
        "mcp": "Connect custom tools"
      }
    },
    "slackRelay": {
      "notice": "This chat is a Slack thread. Replies are sent to Slack as you.",
      "openInSlack": "Open in Slack"
    },
    "queue": {
      "label": "Queued messages",
      "edit": "Edit queued message",
      "cancelSteering": "Cancel steering",
      "remove": "Remove from queue",
      "steer": "Steer with this message",
      "attachments": "{count, plural, one {# attachment} other {# attachments}}: {names}"
    },
    "author": {
      "formerMember": "Former member"
    },
    "contextRow": {
      "removeSelection": "Remove selection",
      "selectedText": "Selected text",
      "selectionRange": "From line {startLine}, character {startChar} to line {endLine}, character {endChar}"
    },
    "metadata": {
      "modelWithThinking": "{model} ({thinking})",
      "tokensPerSecond": "{value} tok/sec",
      "tokens": "{value} tokens",
      "timeToFirstToken": "Time to first token: {duration}",
      "durationMs": "{value} ms",
      "durationSec": "{value} sec"
    },
    "suggestions": {
      "ariaLabel": "Example prompts",
      "heading": "Try an example",
      "dismiss": "Dismiss examples",
      "items": {
        "blogPost": {
          "title": "Write a blog post",
          "description": "Turn a topic into a well-scoped article",
          "prompt": "Help me write a blog post. Ask me 1-2 questions about the topic and audience before drafting."
        },
        "releaseNotes": {
          "title": "Draft release notes",
          "description": "Summarize what shipped and why it matters",
          "prompt": "Help me draft a changelog. Ask me what changed and which release or repo to reference."
        },
        "socialPost": {
          "title": "Write a social post",
          "description": "Draft a Twitter or LinkedIn update",
          "prompt": "Help me write a social post. Ask me whether it's for Twitter or LinkedIn, then the topic and angle before drafting."
        },
        "newsletter": {
          "title": "Outline a newsletter",
          "description": "Plan the edition before you write it",
          "prompt": "Help me outline a newsletter. Ask me the audience and what this edition should cover before drafting."
        },
        "comparison": {
          "title": "Compare us vs them",
          "description": "Frame the difference for a buyer",
          "prompt": "Help me write a comparison. Ask me who we're comparing against and what the reader is deciding before drafting."
        },
        "geoStatus": {
          "title": "How is GEO going?",
          "description": "See mention trends across engines",
          "prompt": "How is our GEO going? Load the overview and mention-rate trend for the last 30 days, then tell me what is improving or slipping."
        },
        "geoVisibility": {
          "title": "Improve GEO visibility",
          "description": "Tighten how we show up in answers",
          "prompt": "Help me improve our GEO visibility. Ask me which prompt or topic to focus on, then suggest what to change."
        },
        "brandVoice": {
          "title": "Match our brand voice",
          "description": "Rewrite a draft so it sounds like us",
          "prompt": "Help me rewrite copy in our brand voice. Ask me for the draft and where it will run before rewriting."
        },
        "thread": {
          "title": "Turn this into a thread",
          "description": "Break a point into a social sequence",
          "prompt": "Help me turn a topic into a social thread. Ask me the platform and the core point before drafting."
        },
        "faq": {
          "title": "Draft an FAQ page",
          "description": "Answer the questions people actually ask",
          "prompt": "Help me draft an FAQ. Ask me the product and the questions customers actually ask before writing."
        }
      }
    },
    "userMessageActions": {
      "previousVersion": "Previous version",
      "nextVersion": "Next version",
      "retryWithSame": "Retry with same",
      "editMessage": "Edit message",
      "copyMessage": "Copy message",
      "editPlaceholder": "Edit your message…"
    },
    "page": {
      "slackMirrorNotice": "Mirrored from a Slack thread.",
      "working": "Working",
      "showMoreImages": "Show {count, plural, one {# more attachment} other {# more attachments}}",
      "loadingProject": "Loading project",
      "slackSendFailed": "Sending to Slack failed. Try again.",
      "draftGenerationFailed": "Draft generation failed. The assistant will retry.",
      "welcome": "Welcome",
      "responseStopped": "Response stopped by user",
      "stopping": "Stopping",
      "waitingForPreviousResponse": "Waiting for the previous response to finish before sending.",
      "revisePrefill": "Revise \"{title}\": "
    },
    "toasts": {
      "editContentFailed": "Failed to edit content",
      "renameChatFailed": "Failed to rename chat",
      "updateChatPinFailed": "Failed to update chat pin",
      "deleteChatFailed": "Failed to delete chat",
      "chatDeleted": "Chat deleted"
    },
    "errors": {
      "usageLimit": "You've used all your chat messages this month. Upgrade for more.",
      "fallback": "Something went wrong while generating a response. Try again."
    },
    "models": {
      "descriptions": {
        "auto": "Picks the best model for your message",
        "latestOpus": "Latest Opus for complex work",
        "everyday": "Everyday work and coding",
        "fast": "Fast responses",
        "advancedReasoning": "Advanced reasoning and complex tasks",
        "fastAffordable": "Fast and affordable",
        "zdrRoute": "OpenAI model with a ZDR route",
        "previousOpus": "Previous Opus generation",
        "previousSonnet": "Previous Sonnet generation",
        "previousOpenai": "Previous OpenAI model"
      },
      "pricing": "${input} input / ${output} output per 1M",
      "pricingVaries": "Varies by selected model"
    },
    "quote": {
      "quoteSelection": "Quote selected text",
      "removeQuote": "Remove quote",
      "annotate": "Annotate"
    },
    "contentPanel": {
      "title": "Content",
      "toggle": "Content ({count})",
      "close": "Collapse panel",
      "empty": "Posts the agent writes in this chat show up here.",
      "status": {
        "writing": "Writing…",
        "unsaved": "Not saved yet",
        "draft": "Draft"
      },
      "openTab": "Open another post",
      "closeTab": "Close {title}",
      "passageChanged": "This passage has changed since it was annotated."
    },
    "todos": {
      "label": "Plan",
      "stopped": "Stopped"
    },
    "annotations": {
      "label": "Annotations",
      "remove": "Remove annotation {index}",
      "noteLabel": "Note",
      "notePlaceholder": "What should change here?",
      "add": "Add",
      "save": "Save",
      "cancel": "Cancel",
      "addNote": "Add a note",
      "editNote": "Edit note for annotation {index}",
      "show": "Show annotation {index} in the post",
      "count": "{count, plural, one {# annotation} other {# annotations}}",
      "limit": "Up to {max} annotations per message. Send or remove some first."
    }
  },
  "content": {
    "shared": {
      "loadingContent": "Loading content",
      "pullRequestUpdated": "Pull request updated",
      "renameCollection": "Rename collection",
      "createContent": "Create Content",
      "faq": "FAQ"
    },
    "socialPost": {
      "mockLink": "Mock link (actual: {url})",
      "more": "…more",
      "postActions": "Post actions",
      "closePost": "Close post",
      "comments": "{count, plural, one {# comment} other {# comments}}",
      "reposts": "{count, plural, one {# repost} other {# reposts}}",
      "linkedinPlaceholder": "What do you want to talk about?",
      "linkedinLike": "Like",
      "linkedinComment": "Comment",
      "linkedinRepost": "Repost",
      "charactersUsed": "{count} of {limit} characters used",
      "twitterPlaceholder": "What is happening?!"
    },
    "create": {
      "dialog": {
        "generating": "Generating…",
        "skipAndStart": "Skip & start creating",
        "startWithIdentities": "Start creating with {count} {count, plural, one {identity} other {identities}}",
        "steps": {
          "formats": {
            "label": "Formats"
          }
        },
        "toasts": {
          "previewIssues": "{count} repository preview {count, plural, one {issue was} other {issues were}} detected.",
          "generationStarted": "{count, plural, one {Content generation started} other {# content generations started}}",
          "generationPartial": "{succeeded} of {total} content generations started; {failed} failed"
        },
        "errors": {
          "projectLoading": "Project is still loading",
          "generationFailed": "Failed to start any content generation"
        },
        "footer": {
          "selectFormat": "Select at least one content format",
          "selectSource": "Select at least one source",
          "selectEvent": "Select at least one event",
          "selectFormatBeforeCreating": "Select a content format before creating",
          "formatsSelected": "{count, plural, one {# format} other {# formats}} selected",
          "eventsAndSources": "{selected} / {total} events · {sources, plural, one {# source} other {# sources}}",
          "noIdentities": "No identities selected",
          "identitiesSelected": "{count, plural, one {# identity} other {# identities}} selected"
        }
      },
      "buttons": {
        "generateContent": "Generate content"
      },
      "formats": {
        "changelog": {
          "description": "A concise summary of what shipped and why it matters."
        },
        "blog_post": {
          "description": "A longer-form article explaining the feature in depth."
        },
        "linkedin_post": {
          "description": "A professional update to share with your network."
        },
        "twitter_post": {
          "description": "A short announcement for X / Twitter."
        },
        "image": {
          "description": "A brand-matched social image generated from repo activity."
        }
      },
      "eventTypes": {
        "PR": "PR"
      },
      "lookback": {
        "current_day": "Current Day",
        "last_7_days": "Last 7 Days",
        "last_14_days": "Last 14 Days",
        "last_30_days": "Last 30 Days"
      },
      "stepFormats": {
        "title": "What do you want to create?",
        "description": "Select one or more formats. We'll draft each one.",
        "timeframe": "Timeframe",
        "timezoneInfoLabel": "Timeframe timezone information",
        "timezoneInfo": "Activity is gathered in your timezone (<strong>{timezone}</strong>). Today and Yesterday follow your local day. Rolling ranges like Last 7 Days are identical in every timezone.",
        "timeframeDescription": "How far back to look when gathering activity data.",
        "selectTimeframe": "Select timeframe",
        "dataPoints": {
          "pullRequests": {
            "label": "Pull Requests",
            "description": "Merged PR metadata"
          },
          "commits": {
            "label": "Commits",
            "description": "Commit-level changes"
          },
          "releases": {
            "label": "Releases",
            "description": "GitHub releases"
          }
        }
      },
      "stepActivity": {
        "preRelease": "pre-release",
        "title": "Pick the activity to include",
        "description": "Search recent activity and pick the events to package.",
        "searchPlaceholder": "Search by title, author or label…",
        "addIntegration": "Add integration",
        "pickSource": "Pick a source above to load activity.",
        "loadFailed": "Failed to load events.",
        "noSearchResults": "No events match your search.",
        "noEvents": "No events in this timeframe."
      },
      "stepIdentities": {
        "emptyTitle": "No brand identity yet",
        "emptyDescription": "Drop in your website and we'll learn your tone and audience.",
        "createButton": "Create brand identity",
        "title": "Which brand identity should this use?",
        "description": "Select one or more brand identities, or skip to write for a general audience.",
        "defaultIdentity": "Default brand identity"
      }
    },
    "createPost": {
      "created": "Post created",
      "createFailed": "Failed to create post",
      "title": "New empty post",
      "description": "Start from a blank page and write it yourself or with the agent.",
      "namePlaceholder": "Ship notes for week 11",
      "slugSavedAs": "Saved as {slug}",
      "slugHint": "Inferred from the name. Leave empty to set it later.",
      "submit": "Create post"
    },
    "plan": {
      "subtypes": {
        "how-to": "How-to",
        "alternatives": "Alternatives"
      },
      "targetPrompt": {
        "label": "Target prompt",
        "placeholder": "The question a buyer would ask"
      },
      "intent": {
        "placeholder": "Why someone is searching for this"
      },
      "audience": {
        "label": "Audience",
        "placeholder": "Who this is for"
      },
      "type": {
        "placeholder": "Choose a type"
      },
      "jobToBeDone": {
        "label": "Job to be done",
        "placeholder": "What the article should help them do"
      },
      "outline": {
        "title": "Outline",
        "headingLabel": "Section {index} heading",
        "headingPlaceholder": "Section heading",
        "removeSection": "Remove section {index}",
        "goalLabel": "Section {index} goal",
        "goalPlaceholder": "What the reader should take away",
        "addPoint": "Add point",
        "pointLabel": "Section {section} point {index}",
        "pointPlaceholder": "A claim this section must make",
        "removePoint": "Remove point {index}",
        "addSection": "Add section"
      },
      "faq": {
        "add": "Add a question",
        "itemLabel": "FAQ {index}",
        "placeholder": "A question the article should answer",
        "remove": "Remove question {index}"
      },
      "links": {
        "add": "Add a link",
        "textLabel": "Link {index} text",
        "urlLabel": "Link {index} URL",
        "reasonLabel": "Link {index} reason",
        "remove": "Remove link {index}",
        "anchorPlaceholder": "Link text",
        "whyPlaceholder": "Optional: why this page belongs",
        "draftUrlLabel": "Link URL"
      },
      "checks": {
        "title": "Must include",
        "add": "Add a check",
        "itemLabel": "Check {index}",
        "placeholder": "Something the finished article must cover",
        "remove": "Remove check {index}"
      },
      "chatPlaceholder": "Refine this plan…"
    },
    "editors": {
      "postSlug": "Post slug",
      "slugPlaceholder": "add-a-slug",
      "raw": "Raw",
      "twitterContentEditor": "Twitter post content editor",
      "linkedinContentEditor": "LinkedIn post content editor",
      "imageUnavailable": "Image data is unavailable."
    },
    "editor": {
      "blocks": {
        "paragraph": "Paragraph",
        "heading1": "Heading 1",
        "heading2": "Heading 2",
        "heading3": "Heading 3",
        "bulletedList": "Bulleted List",
        "numberedList": "Numbered List",
        "quote": "Quote",
        "codeBlock": "Code Block",
        "divider": "Divider"
      },
      "media": {
        "addMedia": "Add image or video",
        "expand": "Expand {label}"
      },
      "codeBlock": {
        "selectLanguage": "Select code language",
        "plainText": "Plain Text",
        "copied": "Code copied",
        "copy": "Copy code",
        "placeholder": "Enter code here…"
      },
      "video": {
        "pause": "Pause",
        "play": "Play",
        "seek": "Seek",
        "unmute": "Unmute",
        "mute": "Mute",
        "exitFullscreen": "Exit full screen",
        "fullscreen": "Full screen"
      },
      "table": {
        "insertRowAbove": "Insert row above",
        "insertRowBelow": "Insert row below",
        "insertColumnBefore": "Insert column before",
        "insertColumnAfter": "Insert column after",
        "deleteTable": "Delete table"
      },
      "toolbar": {
        "bold": "Format bold",
        "boldTitle": "Bold (Ctrl+B)",
        "italic": "Format italic",
        "italicTitle": "Italic (Ctrl+I)",
        "underline": "Format underline",
        "underlineTitle": "Underline (Ctrl+U)",
        "strikethrough": "Format strikethrough",
        "strikethroughTitle": "Strikethrough",
        "code": "Format code",
        "codeTitle": "Code",
        "insertLink": "Insert link",
        "urlPlaceholder": "Enter URL",
        "applyLink": "Apply link",
        "apply": "Apply"
      },
      "upload": {
        "animatedTooLarge": "GIF and AVIF must be {maxMb}MB or smaller",
        "imageTooLarge": "Image must be {maxMb}MB or smaller",
        "videoTooLarge": "Video must be {maxMb}MB or smaller",
        "uploading": "Uploading…"
      }
    },
    "chatActivity": {
      "attachedContext": "Attached context",
      "loadingChats": "Loading chats…",
      "noPreviousChats": "No previous chats",
      "historyGroups": {
        "previousSevenDays": "Previous 7 days"
      },
      "defaultTitle": "Content Agent",
      "startNewChat": "Start a new chat",
      "openHistory": "Open chat history",
      "history": "Chat history",
      "openInChat": "Open in Chat",
      "exitFullscreenTitle": "Exit fullscreen {title}",
      "openFullscreenTitle": "Open {title} fullscreen",
      "exitFullscreen": "Exit fullscreen",
      "expandAgent": "Expand agent",
      "closeTitle": "Close {title}"
    },
    "card": {
      "nothingWritten": "Nothing written yet",
      "status": "{status, select, published {Published} draft {Draft} other {{status}}}",
      "type": "{type, select, changelog {Changelog} blog_post {Blog post} twitter_post {Tweet} linkedin_post {LinkedIn post} investor_update {Investor update} image {Image} other {{fallback}}}",
      "generating": "Generating content…",
      "queuedViaApi": "Queued via API"
    },
    "imageChat": {
      "editingDiagram": "Editing diagram: {title}",
      "editingImage": "Editing image: {title}",
      "diagramPlaceholder": "Make the arrows blue…",
      "imagePlaceholder": "Make the background darker…"
    },
    "diagramEditor": {
      "open": "Edit diagram",
      "title": "Edit diagram",
      "description": "Move, restyle, or relabel anything. Saving re-renders the image, and chat edits continue from your changes.",
      "loading": "Loading diagram…",
      "loadFailed": "Couldn't load the diagram",
      "cancel": "Cancel",
      "save": "Save diagram",
      "saved": "Diagram saved",
      "saveFailed": "Couldn't save the diagram",
      "savedWithDropped": "Diagram saved. Notra can't render {types} yet, so those were left out.",
      "conflict": "Someone changed this diagram while you were editing. Copy anything you need, close the editor, and open it again.",
      "saveRejected": "Couldn't save the diagram: {reason}"
    },
    "toolbar": {
      "copyFor": "Copy for {target}",
      "selectExportTarget": "Select export target",
      "comingSoon": "Coming soon",
      "updatingPr": "Updating PR…",
      "saveAndUpdatePr": "Save and update PR",
      "discardChanges": "Discard changes"
    },
    "detail": {
      "metaTitle": "Content Detail",
      "metaDescription": "View the details of a specific content item.",
      "loadingArticle": "Loading article",
      "backToCollection": "Back to collection",
      "backToContent": "Back to Content",
      "notFoundTitle": "Content not found",
      "notFoundDescription": "This content may have been deleted or you don't have access to it.",
      "yourOrganization": "Your Organization",
      "recommendations": "Recommendations",
      "plan": {
        "missingTitle": "This content plan no longer exists",
        "missingDescription": "Start a new plan from GEO to write this article.",
        "conflictTitle": "This plan changed elsewhere",
        "conflictDescription": "Your edits are preserved. Choose which version to keep.",
        "loadLatest": "Load latest",
        "saveMine": "Save my version",
        "loadFailedTitle": "Could not load this content plan",
        "loadFailedDescription": "Try again to continue reviewing or generating this content.",
        "tryingAgain": "Trying again…"
      },
      "source": {
        "trigger": "{type, select, cron {Schedule} github_webhook {GitHub Webhook} other {{fallback}}}",
        "lookback": "{window, select, current_day {Current day} yesterday {Yesterday} last_7_days {Last 7 days} last_14_days {Last 14 days} last_30_days {Last 30 days} other {{fallback}}}"
      },
      "diff": {
        "noChanges": "No changes to display",
        "original": "Original"
      }
    },
    "githubPublish": {
      "trigger": "Create GitHub PR",
      "saveBeforePublishing": "Save the {kind, select, changelog {changelog} other {blog post}} before publishing it",
      "prCreated": "Draft pull request created",
      "createFailed": "Failed to create draft pull request",
      "createTitle": "Create a draft pull request",
      "createDescription": "Notra creates a branch, adds the {kind, select, changelog {changelog} other {blog post}} as Markdown, and opens a draft pull request against the repository's default branch.",
      "createdDescription": "Notra added the {kind, select, changelog {changelog} other {blog post}} and opened a draft pull request.",
      "updatedDescription": "Notra updated the {kind, select, changelog {changelog} other {blog post}} in the existing pull request.",
      "createDraftPr": "Create draft PR",
      "creatingDraftPr": "Creating draft PR…",
      "openIntegration": "Open GitHub integration",
      "reviewOnGitHub": "Review on GitHub",
      "openPullRequest": "Open pull request",
      "pathAdded": "Added {path}",
      "pathUpdated": "Updated {path}",
      "createdAsDraft": "Created as draft",
      "openPullRequestAria": "Open pull request #{number} on GitHub",
      "loadFailed": "Unable to load GitHub repositories.",
      "loadingRepositories": "Loading repositories…",
      "selectRepository": "Select a repository",
      "noConnected": "No enabled GitHub repositories are connected. Open the <link>GitHub integration</link> to connect or enable one.",
      "publishingOff": "{kind, select, changelog {Changelog} other {Blog post}} publishing is off for this repository. Open the <link>GitHub integration</link> to enable it.",
      "needsDefaultBranch": "These repositories need a default branch before they can publish to GitHub.",
      "pausedNote": "Publishing was also paused after three failures. Resume it in the GitHub integration after fixing this.",
      "recovery": {
        "github_app_permissions_required": {
          "title": "GitHub write access needed",
          "description": "Notra needs write access to Contents and Pull requests. Review the installation on GitHub and accept any pending permission request. Reconnecting the repository does not grant write access."
        },
        "github_authentication_required": {
          "title": "Review the GitHub App connection",
          "description": "Review the GitHub App installation, then select and save this repository in the GitHub integration settings."
        },
        "github_repository_connection_required": {
          "title": "Connect this repository to publish",
          "description": "This repository has no saved credentials. Connect the GitHub App, then select and save this repository to publish."
        },
        "github_token_authentication_required": {
          "title": "Update the GitHub token",
          "description": "The saved personal access token was rejected. Update it in the GitHub integration settings, or connect this repository through the GitHub App."
        },
        "github_token_permissions_required": {
          "title": "GitHub token permissions needed",
          "description": "Allow the saved personal access token to write repository contents and pull requests, or connect this repository through the GitHub App."
        },
        "github_content_publishing_paused": {
          "title": "GitHub publishing paused",
          "description": "Publishing was paused after three failed attempts. Review the GitHub integration before resuming."
        }
      }
    },
    "postSocial": {
      "postTo": "Post to {platform}",
      "addedReference": "Added as reference to {name}",
      "addReferenceFailed": "Failed to add reference",
      "noBrandIdentity": "No brand identity to save this reference to. Create one on the Brand Identity page first.",
      "overLimit": "This post is {count, plural, one {# character} other {# characters}} over the {limit, number} character limit for @{username}. Shorten it to post.",
      "openOn": "Open on {platform}",
      "postAs": "Post as @{username}",
      "rejectsDuplicates": "{platform} rejects duplicate posts.",
      "readDocs": "Read the {platform} docs",
      "reconnectPrompt": "Have you tried reconnecting?",
      "reconnectInSettings": "Reconnect in settings",
      "addAsReference": "Add as reference"
    },
    "collections": {
      "status": "{status, select, generating {Generating} published {Published} draft {Draft} other {Empty}}",
      "source": "{source, select, manual {Manual} chat {Chat} schedule {Schedule} automation {Automation} api {API} backfill {Backfill} other {{source}}}",
      "metaGeneratingProgress": "{source} · {ready, number} of {expected, plural, one {# post} other {# posts}} ready",
      "metaGeneratingCount": "{source} · {count, plural, one {# post} other {# posts}} ready",
      "metaPartiallyPublished": "{source} · {count, plural, one {# post} other {# posts}} · {published, number} published",
      "metaSingle": "{source} · Single post",
      "metaEmpty": "{source} · Empty collection",
      "metaCount": "{source} · {count, plural, one {# post} other {# posts}}",
      "formats": "{count, number} formats",
      "emptyPage": "No content on this page",
      "items": "{count, plural, one {item} other {items}}",
      "actions": {
        "open": "Open",
        "openInNewTab": "Open in new tab",
        "copyLink": "Copy link",
        "linkCopied": "Link copied",
        "deleteTitle": "Delete content?",
        "deleteDescription": "This permanently deletes \"{title}\" and all {count, plural, one {# post} other {# posts}} in it. This can't be undone."
      },
      "detail": {
        "metaTitle": "Collection",
        "metaDescription": "View all posts in a content collection.",
        "notFoundTitle": "Collection not found",
        "notFoundDescription": "This collection may have been deleted or you don't have access to it.",
        "emptyDescription": "This collection has no posts."
      },
      "renameDialog": {
        "description": "Give this collection a name that is easy to recognize. It will not be overwritten by automatic naming.",
        "renamed": "Collection renamed",
        "renameFailed": "Failed to rename collection"
      }
    },
    "list": {
      "description": "Posts and collections in one place.",
      "loadingDescription": "Every batch of generated content, organized into collections.",
      "allContent": "All content",
      "loadFailedTitle": "Couldn't load content",
      "loadFailedDescription": "Try loading your content again.",
      "emptyTitle": "No content yet",
      "emptyDescription": "Start with New post to write from scratch, or Generate content to use your sources.",
      "viewCalendar": "Calendar"
    },
    "toasts": {
      "contentSaved": "Content saved",
      "updatePostStatusFailed": "Failed to update post status",
      "loadLatestPlanFailed": "Failed to load the latest plan",
      "refreshPlanFailed": "Failed to refresh the plan",
      "postDeleted": "Post deleted",
      "collectionDeleted": "Content deleted",
      "deleteCollectionFailed": "Failed to delete content",
      "deletePostFailed": "Failed to delete post",
      "loadContentFailed": "Failed to load content",
      "loadRecentPostsFailed": "Failed to load recent posts",
      "loadDashboardContentFailed": "Failed to load dashboard content",
      "loadActiveGenerationsFailed": "Failed to load active generations",
      "contentGenerationSkipped": "Content generation skipped",
      "contentGenerationFailed": "Content generation failed",
      "loadCollectionsFailed": "Failed to load collections",
      "loadCollectionFailed": "Failed to load collection",
      "refreshArticleFailed": "Couldn't refresh the article. Showing the cached content.",
      "saveContentFailed": "Failed to save content",
      "updatePullRequestFailed": "Couldn't update the linked pull request",
      "titledContentGenerated": "\"{title}\" generated",
      "contentGenerated": "Content generated",
      "viewLogs": "View logs",
      "postMovedToDrafts": "Post moved to drafts",
      "imageExport": {
        "copyLoading": "Copy is still loading. Try again in a moment.",
        "imageNotReady": "Image is not ready yet",
        "figmaCopied": "Copied for Figma. Paste it into your Figma file.",
        "figmaCopyFailed": "Failed to copy for Figma",
        "paperCopied": "Copied for Paper. Paste it into your Paper file.",
        "paperCopyFailed": "Failed to copy for Paper",
        "excalidrawCopied": "Copied for Excalidraw. Paste it onto your canvas.",
        "tldrawCopied": "Copied for tldraw. Paste it onto your canvas.",
        "diagramCopyFailed": "Failed to copy the diagram",
        "downloadFailed": "Failed to download image"
      }
    },
    "calendar": {
      "previous": "Previous",
      "next": "Next",
      "today": "Today",
      "more": "+{count} more",
      "loadFailedTitle": "Couldn't load the calendar",
      "loadFailedDescription": "Try loading the calendar again.",
      "chip": {
        "automation": "{name} runs at {time}",
        "entry": "{title}, {state} at {time}"
      },
      "states": {
        "published": "published",
        "scheduled": "scheduled",
        "publishing": "publishing",
        "failed": "failed",
        "partial": "partly failed"
      },
      "toasts": {
        "scheduleFailed": "Couldn't schedule the post",
        "unscheduled": "Schedule removed",
        "unscheduledPartially": "Schedule removed. One destination was already publishing and will finish.",
        "unscheduleFailed": "Couldn't remove the schedule",
        "publishingNow": "Publishing now",
        "publishNowFailed": "Couldn't publish the post",
        "retrying": "Trying again",
        "retryFailed": "Couldn't retry publishing",
        "moveIntoPast": "That time has already passed. Pick a later day.",
        "moved": "“{title}” moved to {date}"
      },
      "schedule": {
        "trigger": "Schedule",
        "publishingTrigger": "Publishing…",
        "failedTrigger": "Publishing failed",
        "scheduledTrigger": "Scheduled · {date}",
        "saveFirst": "Save your changes first. Scheduled posts go out as saved.",
        "saveFirstHint": "Save your changes first",
        "title": "Schedule post",
        "editTitle": "Edit schedule",
        "when": "When",
        "date": "Date",
        "pickDate": "Pick a date",
        "time": "Time",
        "inPast": "This time has already passed.",
        "where": "Where",
        "github": {
          "hint": "Opens a pull request now, so there is time to review it.",
          "merge": "Merge at the scheduled time",
          "mergeHint": "Checks can delay the merge. Notra retries for about an hour.",
          "openOnlyHint": "Only updates the pull request. You merge it yourself."
        },
        "social": {
          "hint": "Posts the saved text.",
          "noAccounts": "No account connected yet. <link>Connect one</link> to post automatically.",
          "account": "Account",
          "accountMissing": "The account this post was scheduled from is no longer connected. Pick another account or turn this off.",
          "loadFailed": "Couldn't load your connected accounts. Try again later or turn this off."
        },
        "unschedule": "Unschedule",
        "dismiss": "Clear schedule",
        "publishNow": "Publish now",
        "saveSchedule": "Save schedule",
        "schedule": "Schedule",
        "scheduling": "Scheduling…",
        "scheduledToast": "Scheduled for {date}",
        "destinations": {
          "notra": "Notra",
          "github": "GitHub",
          "social": "Social"
        },
        "statuses": {
          "scheduled": "Scheduled",
          "publishing": "Publishing",
          "published": "Published",
          "failed": "Failed",
          "canceled": "Canceled"
        },
        "viewResult": "View",
        "outcomeUnknown": "Publishing was interrupted after the post was sent. Check the account before retrying so it isn't posted twice.",
        "failedFallback": "Publishing failed.",
        "retry": "Retry",
        "retryAnyway": "Retry anyway",
        "retryPending": "Last attempt failed ({error}). Notra retries automatically.",
        "statusTitle": "Publishing status",
        "moreActions": "More actions",
        "always": "Always"
      },
      "preview": {
        "when": "{date} · {state}"
      },
      "day": {
        "open": "Show everything on {date}",
        "empty": "Nothing planned for this day."
      }
    },
    "overview": {
      "tabs": {
        "overview": "Overview",
        "agent": "Agent",
        "label": "Panel"
      },
      "detailsButton": "Details",
      "saveFailed": "Couldn't save the post details",
      "status": {
        "label": "Status",
        "draft": "Draft",
        "published": "Published"
      },
      "url": "URL",
      "featured": {
        "label": "Featured",
        "hint": "Pins the post to the top of your blog's home page."
      },
      "indexed": {
        "label": "Visible in search",
        "hint": "When off, the post stays reachable by link but is hidden from search engines, the sitemap and llms.txt."
      },
      "hidden": {
        "label": "Unlisted",
        "hint": "Reachable by direct link, but excluded from site listings, feeds, search engines and AI indexes. Anyone with the link can read it. Turning this off restores your previous search visibility setting."
      },
      "cover": {
        "label": "Cover",
        "hint": "Shown on the blog card, at the top of the post and as the preview image when the link is shared. Without a cover, the site generates one.",
        "upload": "Upload",
        "link": "Link",
        "fromPost": "From post",
        "dropTitle": "Add a cover",
        "dropHint": "Drag, paste or click · {width}×{height}",
        "uploading": "Uploading…",
        "uploadFailed": "Couldn't upload the image",
        "linkPlaceholder": "https://…/image.png",
        "linkApply": "Use image",
        "linkInvalid": "Enter a full https link to an image",
        "noPostImages": "This post has no images yet.",
        "pickImage": "Use this image",
        "replace": "Replace",
        "remove": "Remove cover",
        "altLabel": "Alt text",
        "altPlaceholder": "Describe the image for screen readers and search"
      },
      "description": {
        "label": "Description",
        "hint": "Short summary for the blog card, search results and link previews. Leave empty to use the first paragraph.",
        "auto": "Uses the first paragraph",
        "count": "{count} / {max} characters"
      },
      "authors": {
        "label": "Authors",
        "hint": "Each author gets an avatar and their own page on the site.",
        "placeholder": "Choose authors",
        "addMe": "Add me",
        "manage": "Manage",
        "fallback": "Empty: the person who publishes is used"
      },
      "tags": {
        "label": "Tags",
        "hint": "Tags get their own listing pages on the site and show up in the RSS feed.",
        "placeholder": "Add tags",
        "remove": "Remove {tag}",
        "add": "Add tag"
      },
      "date": {
        "label": "Publish date",
        "hint": "Date shown on the site. Defaults to the day the post was first published.",
        "auto": "Publish date",
        "reset": "Use publish date"
      },
      "source": {
        "label": "How it was made"
      },
      "recommendations": "Recommendations",
      "updatePr": {
        "hint": "Changes reach the open pull request with its next update.",
        "action": "Update pull request",
        "done": "Pull request updated",
        "failed": "Couldn't update the pull request"
      },
      "authorDialog": {
        "title": "Authors",
        "description": "Authors appear on posts and get their own page on your site.",
        "new": "New author",
        "edit": "Edit",
        "delete": "Delete",
        "deleteConfirm": "Delete {name}? Posts lose this author.",
        "empty": "No authors yet.",
        "back": "Back",
        "name": "Name",
        "slug": "ID",
        "slugHint": "Used in the author page URL: /author/{slug}",
        "bio": "Bio",
        "avatar": "Avatar",
        "uploadAvatar": "Upload",
        "removeAvatar": "Remove",
        "website": "Website",
        "x": "X",
        "linkedin": "LinkedIn",
        "github": "GitHub",
        "save": "Save author",
        "saved": "Author saved",
        "deleted": "Author deleted",
        "saveFailed": "Couldn't save the author",
        "you": "You",
        "role": "Role"
      },
      "hintLabel": "About {field}"
    }
  },
  "charts": {
    "download": {
      "success": "Downloaded chart",
      "failed": "Failed to download chart"
    }
  },
  "commandPalette": {
    "description": "Search pages, jump to tools or ask AI.",
    "placeholder": "Search pages, settings, actions or ask AI…",
    "forAi": "for AI",
    "footer": {
      "navigate": "Navigate"
    },
    "sections": {
      "recent": "Recent",
      "suggested": "Suggested"
    },
    "entitySections": {
      "brandVoices": "Brand voices",
      "chats": "Chats",
      "prompts": "Tracked prompts"
    },
    "entities": {
      "reference": "Reference"
    },
    "ai": {
      "opening": "Opening…",
      "openingChat": "Opening chat…",
      "almostThere": "Hang tight, almost there.",
      "figuringOut": "Figuring out where to take you for \"{query}\".",
      "failed": "AI search failed. Try again in a moment.",
      "ask": "Ask AI"
    },
    "empty": {
      "title": "No matches for \"{query}\"",
      "description": "Ask AI to open the right page or answer in chat."
    },
    "actions": {
      "newContent": "New content",
      "switchProject": "Switch project",
      "switchWorkspace": "Switch workspace",
      "inviteMembers": "Invite members",
      "darkMode": "Switch to dark mode",
      "lightMode": "Switch to light mode"
    },
    "pages": {
      "projects": {
        "title": "Projects",
        "placeholder": "Search projects…",
        "count": "{count} projects"
      },
      "workspaces": {
        "title": "Workspaces",
        "placeholder": "Search workspaces…",
        "count": "{count} workspaces"
      }
    }
  },
  "dashboard": {
    "header": {
      "feedbackDescription": "Share your thoughts with us."
    },
    "breadcrumbs": {
      "geo": "Geo",
      "segments": {
        "collection": "Collections"
      },
      "geoSegments": {
        "agent-readiness": "Agent readiness",
        "directions": "Directions",
        "gaps": "Gaps",
        "shelf-space": "Shelf space"
      }
    },
    "agent": {
      "openLabel": "Open agent",
      "closeLabel": "Close agent",
      "placeholder": "Ask anything… (type / for skills)",
      "sendFailed": "Failed to send message",
      "stopFailed": "Couldn't stop the response. Try again.",
      "historyLoadFailed": "Failed to load agent chat history. Try again.",
      "description": "Chat with your dashboard agent.",
      "loadingTitle": "Loading agent",
      "loadingDescription": "Loading the dashboard agent."
    },
    "overlays": {
      "commandPalette": "Command palette"
    },
    "brandSelector": {
      "createIdentity": "Create identity"
    },
    "contentActivity": {
      "loadFailed": "Failed to load content activity",
      "drafts": "{count, plural, one {# draft} other {# drafts}}",
      "published": "{count} published",
      "yearSummary": "This year: <strong>{total}</strong> posts (<strong>{drafts}</strong> {draftCount, plural, one {draft} other {drafts}} / <strong>{published}</strong> published)",
      "level": "Level {level}",
      "empty": "No content activity data available",
      "legendLess": "Less"
    },
    "chatTitle": {
      "generating": "Generating title",
      "emptyTitle": "Title can't be empty",
      "pin": "Pin",
      "unpin": "Unpin",
      "deleteTitle": "Delete chat?",
      "deleteDescriptionFallback": "This will permanently delete this chat. This can't be undone."
    },
    "chatHistory": {
      "options": "Chat options",
      "pinned": "Pinned",
      "loadFailed": "Chat history could not be loaded.",
      "groups": {
        "lastMonth": "Last month"
      }
    },
    "feedback": {
      "thanks": "Thanks for the feedback!",
      "sendFailed": "Failed to send feedback",
      "label": "Your feedback",
      "placeholder": "Your feedback…",
      "sentiments": {
        "sad_crying": "Very unhappy",
        "sad": "Unhappy",
        "happy": "Happy",
        "excited": "Excited"
      }
    },
    "onboardingBanner": {
      "running": "We are setting up your workspace",
      "prompt": "We can set up your workspace for you",
      "start": "Start setup",
      "dialogTitle": "Let us set up your workspace",
      "dialogDescription": "We visit your website, work out what your company does and set Notra up to match. It takes a few minutes.",
      "pros": {
        "brandColors": "Brand colors and voice pulled from your website",
        "writingSkills": "Writing skills matched to your product and audience",
        "references": "References and examples to guide future content"
      },
      "cons": {
        "skillsOverwritten": "Skills you already edited may be overwritten",
        "colorsReplaced": "Custom colors and references may be replaced"
      },
      "dismiss": "Dismiss workspace setup banner",
      "startFailed": "Couldn't start the setup agent. Try again later."
    },
    "metaTitle": "Dashboard"
  },
  "home": {
    "greeting": "{period, select, morning {Good morning} afternoon {Good afternoon} other {Good evening}}!",
    "greetingWithName": "{period, select, morning {Good morning} afternoon {Good afternoon} other {Good evening}}, {name}!",
    "todayTitle": "Today's content",
    "todayDescription": "Latest items created today",
    "activityDescription": "Your content creation over the year",
    "emptyAction": "View content",
    "emptyDescription": "You have no new posts today. Create one now or review your existing drafts on the content page.",
    "emptyTitle": "No content created today",
    "feedbackSetupTitle": "Set up feedback",
    "feedbackSetupDescription": "Connect your AI agent so it can report bugs, questions and requests about your product. Takes about two minutes.",
    "feedbackDescription": "What AI agents report about your product."
  },
  "ai": {
    "subagent": {
      "names": {
        "codeResearcher": "Code research",
        "contentWriter": "Content writer",
        "imageDesigner": "Image designer",
        "fallback": "Subagent"
      },
      "activity": {
        "codeResearcher": "{state, select, running {Reading the repository} done {Read the repository} skipped {Skipped, no brief} notFound {Feature not found in the code} interrupted {Interrupted} other {Could not read the repository}}",
        "contentWriter": "{state, select, running {Writing the post} done {Wrote the post} skipped {Skipped the post} notFound {Nothing to write about} interrupted {Interrupted} other {Could not write the post}}",
        "imageDesigner": "{state, select, running {Designing the image} done {Designed the image} skipped {Skipped the image} notFound {Nothing to design} interrupted {Interrupted} other {Could not design the image}}",
        "fallback": "{state, select, running {Working} done {Done} skipped {Skipped} notFound {Nothing found} interrupted {Interrupted} other {Failed}}"
      },
      "steps": "{count, plural, =0 {no steps} one {# step} other {# steps}}",
      "result": {
        "brief": "Brief: {feature}",
        "draft": "{title, select, none {Saved draft} other {Saved draft: {title}}}",
        "image": "{title, select, none {Saved image} other {Saved image: {title}}}",
        "notFound": "{reason, select, none {Feature not found in the code} other {Not found: {reason}}}",
        "skipped": "{reason, select, none {Skipped} other {Skipped: {reason}}}",
        "failed": "{reason, select, none {Failed} other {Failed: {reason}}}"
      }
    },
    "toolBlock": {
      "tools": {
        "code_mode": "{state, select, running {Executing tools} done {Executed tools} approve {Approve tools} other {Failed tools}}",
        "searchNotraTools": "{state, select, running {Searching tools} done {Searched tools} approve {Approve tools} other {Failed tools}}",
        "activateNotraTools": "{state, select, running {Loading tool} done {Loaded tool} approve {Approve tool} other {Failed tool}}",
        "listActiveNotraTools": "{state, select, running {Checking active tools} done {Checked active tools} approve {Approve active tools} other {Failed active tools}}",
        "deactivateNotraTools": "{state, select, running {Unloading tools} done {Unloaded tools} approve {Approve tools} other {Failed tools}}",
        "searchMcpTools": "{state, select, running {Searching MCP tools} done {Searched MCP tools} approve {Approve MCP tools} other {Failed MCP tools}}",
        "activateMcpTools": "{state, select, running {Loading MCP tool} done {Loaded MCP tool} approve {Approve MCP tool} other {Failed MCP tool}}",
        "listActiveMcpTools": "{state, select, running {Checking active MCP tools} done {Checked active MCP tools} approve {Approve active MCP tools} other {Failed active MCP tools}}",
        "deactivateMcpTools": "{state, select, running {Unloading MCP tools} done {Unloaded MCP tools} approve {Approve MCP tools} other {Failed MCP tools}}",
        "getPullRequests": "{state, select, running {Fetching pull request} done {Fetched pull request} approve {Approve pull request} other {Failed pull request}}",
        "getReleaseByTag": "{state, select, running {Fetching release} done {Fetched release} approve {Approve release} other {Failed release}}",
        "getCommitsByTimeframe": "{state, select, running {Fetching commits} done {Fetched commits} approve {Approve commits} other {Failed commits}}",
        "getLinearIssues": "{state, select, running {Fetching issues} done {Fetched issues} approve {Approve issues} other {Failed issues}}",
        "getLinearProjects": "{state, select, running {Fetching projects} done {Fetched projects} approve {Approve projects} other {Failed projects}}",
        "getLinearCycles": "{state, select, running {Fetching cycles} done {Fetched cycles} approve {Approve cycles} other {Failed cycles}}",
        "viewPost": "{state, select, running {Viewing post} done {Viewed post} approve {Approve post} other {Failed post}}",
        "updatePost": "{state, select, running {Updating post} done {Updated post} approve {Approve post} other {Failed post}}",
        "getAvailablePosts": "{state, select, running {Loading posts} done {Loaded posts} approve {Approve posts} other {Failed posts}}",
        "getPost": "{state, select, running {Loading post} done {Loaded post} approve {Approve post} other {Failed post}}",
        "createImage": "{state, select, running {Generating image} done {Generated image} approve {Approve image} other {Failed image}}",
        "createBlogPost": "{state, select, running {Drafting blog post} done {Drafted blog post} approve {Approve blog post} other {Failed blog post}}",
        "createChangelog": "{state, select, running {Drafting changelog} done {Drafted changelog} approve {Approve changelog} other {Failed changelog}}",
        "createTwitterPost": "{state, select, running {Drafting Twitter post} done {Drafted Twitter post} approve {Approve Twitter post} other {Failed Twitter post}}",
        "createLinkedInPost": "{state, select, running {Drafting LinkedIn post} done {Drafted LinkedIn post} approve {Approve LinkedIn post} other {Failed LinkedIn post}}",
        "createInvestorUpdate": "{state, select, running {Drafting investor update} done {Drafted investor update} approve {Approve investor update} other {Failed investor update}}",
        "createSchedule": "{state, select, running {Creating schedule} done {Created schedule} approve {Approve schedule} other {Failed schedule}}",
        "listSchedules": "{state, select, running {Listing schedules} done {Listed schedules} approve {Approve schedules} other {Failed schedules}}",
        "schedulePost": "{state, select, running {Scheduling post} done {Scheduled post} approve {Approve schedule} other {Failed to schedule post}}",
        "cancelPostSchedule": "{state, select, running {Unscheduling post} done {Unscheduled post} approve {Approve unscheduling} other {Failed to unschedule post}}",
        "getPostSchedule": "{state, select, running {Checking schedule} done {Checked schedule} approve {Approve schedule check} other {Failed schedule check}}",
        "reviseImage": "{state, select, running {Revising image} done {Revised image} approve {Approve image} other {Failed image}}",
        "listBrandIdentities": "{state, select, running {Listing brand identities} done {Listed brand identities} approve {Approve brand identities} other {Failed brand identities}}",
        "getBrandIdentity": "{state, select, running {Loading brand identity} done {Loaded brand identity} approve {Approve brand identity} other {Failed brand identity}}",
        "searchBrandReferences": "{state, select, running {Searching brand references} done {Searched brand references} approve {Approve brand references} other {Failed brand references}}",
        "getAvailableIntegrations": "{state, select, running {Checking integrations} done {Checked integrations} approve {Approve integrations} other {Failed integrations}}",
        "listGeoProjects": "{state, select, running {Listing GEO projects} done {Listed GEO projects} approve {Approve GEO projects} other {Failed GEO projects}}",
        "getGeoOverview": "{state, select, running {Loading GEO overview} done {Loaded GEO overview} approve {Approve GEO overview} other {Failed GEO overview}}",
        "getGeoTimeseries": "{state, select, running {Loading GEO trends} done {Loaded GEO trends} approve {Approve GEO trends} other {Failed GEO trends}}",
        "getGeoPromptResults": "{state, select, running {Loading GEO prompt results} done {Loaded GEO prompt results} approve {Approve GEO prompt results} other {Failed GEO prompt results}}",
        "getGeoCompetitorShare": "{state, select, running {Loading GEO competitor share} done {Loaded GEO competitor share} approve {Approve GEO competitor share} other {Failed GEO competitor share}}",
        "getGeoProjectContext": "{state, select, running {Loading GEO project context} done {Loaded GEO project context} approve {Approve GEO project context} other {Failed GEO project context}}",
        "getSitemapPages": "{state, select, running {Listing sitemap pages} done {Listed sitemap pages} approve {Approve sitemap pages} other {Failed sitemap pages}}",
        "fetchSitemapPage": "{state, select, running {Fetching sitemap page} done {Fetched sitemap page} approve {Approve sitemap page} other {Failed sitemap page}}",
        "crawlSitemap": "{state, select, running {Crawling sitemap} done {Crawled sitemap} approve {Approve sitemap} other {Failed sitemap}}",
        "getMarkdown": "{state, select, running {Reading document} done {Read document} approve {Approve document} other {Failed document}}",
        "editMarkdown": "{state, select, running {Editing document} done {Edited document} approve {Approve document} other {Failed document}}",
        "listAvailableSkills": "{state, select, running {Listing skills} done {Listed skills} approve {Approve skills} other {Failed skills}}",
        "getSkillByName": "{state, select, running {Loading skill} done {Loaded skill} approve {Approve skill} other {Failed skill}}",
        "fetchWebpage": "{state, select, running {Fetching webpage} done {Fetched webpage} approve {Approve webpage} other {Failed webpage}}",
        "addMemory": "{state, select, running {Saving memory} done {Saved memory} approve {Approve memory} other {Failed memory}}",
        "fetchMemory": "{state, select, running {Fetching memory} done {Fetched memory} approve {Approve memory} other {Failed memory}}",
        "getProfile": "{state, select, running {Checking memory profile} done {Checked memory profile} approve {Approve memory profile} other {Failed memory profile}}",
        "whoAmI": "{state, select, running {Checking memory account} done {Checked memory account} approve {Approve memory account} other {Failed memory account}}",
        "documentList": "{state, select, running {Listing memory documents} done {Listed memory documents} approve {Approve memory documents} other {Failed memory documents}}",
        "documentAdd": "{state, select, running {Saving memory document} done {Saved memory document} approve {Approve memory document} other {Failed memory document}}",
        "documentDelete": "{state, select, running {Deleting memory document} done {Deleted memory document} approve {Approve memory document} other {Failed memory document}}",
        "memoryForget": "{state, select, running {Forgetting memory} done {Forgot memory} approve {Approve memory} other {Failed memory}}",
        "memory": "{state, select, running {Using memory} done {Used memory} approve {Approve memory} other {Failed memory}}",
        "getBrandReferences": "{state, select, running {Loading brand references} done {Loaded brand references} approve {Approve brand references} other {Failed brand references}}",
        "webSearch": "{state, select, running {Searching web} done {Searched web} approve {Approve web} other {Failed web}}",
        "searchMemories": "{state, select, running {Searching memory} done {Searched memory} approve {Approve memory} other {Failed memory}}",
        "codeResearcher": "{state, select, running {Researching the code} done {Researched the code} approve {Approve code research} other {Failed code research}}",
        "contentWriter": "{state, select, running {Writing the post} done {Wrote the post} approve {Approve post writing} other {Failed post writing}}",
        "openRepository": "{state, select, running {Opening repository} done {Opened repository} approve {Approve repository} other {Could not open repository}}",
        "listRepositoryFiles": "{state, select, running {Listing files} done {Listed files} approve {Approve files} other {Failed files}}",
        "searchRepository": "{state, select, running {Searching code} done {Searched code} approve {Approve code search} other {Failed code search}}",
        "readRepositoryFile": "{state, select, running {Reading file} done {Read file} approve {Approve file} other {Failed file}}",
        "repositoryHistory": "{state, select, running {Reading history} done {Read history} approve {Approve history} other {Failed history}}",
        "showRepositoryChange": "{state, select, running {Inspecting change} done {Inspected change} approve {Approve change} other {Failed change}}",
        "createPost": "{state, select, running {Saving draft} done {Saved draft} approve {Approve draft} other {Failed draft}}",
        "getPostDetails": "{state, select, running {Reading post details} done {Read post details} approve {Approve post details} other {Failed to read post details}}",
        "updatePostDetails": "{state, select, running {Updating post details} done {Updated post details} approve {Approve post details} other {Failed to update post details}}"
      },
      "withSuffix": "{label} {suffix}",
      "memory": {
        "view": "{state, select, running {Viewing memory} other {Viewed memory}}",
        "create": "{state, select, running {Saving memory} other {Saved memory}}",
        "delete": "{state, select, running {Deleting memory} other {Deleted memory}}",
        "rename": "{state, select, running {Renaming memory} other {Renamed memory}}",
        "update": "{state, select, running {Updating memory} other {Updated memory}}",
        "use": "{state, select, running {Using memory} other {Used memory}}"
      },
      "suffix": {
        "forQuery": "for {query}",
        "forQueryWithCount": "for {query} ({count, plural, one {# result} other {# results}})",
        "activeCount": "({count} active)",
        "lastDays": "from the last {days, plural, one {# day} other {# days}}",
        "count": {
          "results": "({count, plural, one {# result} other {# results}})",
          "tools": "({count, plural, one {# tool} other {# tools}})",
          "projects": "({count, plural, one {# project} other {# projects}})",
          "pages": "({count, plural, one {# page} other {# pages}})",
          "urls": "({count, plural, one {# URL} other {# URLs}})"
        }
      },
      "fallback": {
        "approve": "Approve {name}",
        "failed": "Failed to call {name}",
        "mcpCall": "{state, select, running {Calling {name}} other {Called {name}}}",
        "run": "{state, select, running {Running {name}} other {Ran {name}}}"
      },
      "imageGenerating": "Generating image, usually takes 3–8 minutes",
      "imageRevising": "Revising image",
      "imageLongRunning": "{action, select, revise {Revising} other {Generating}} image. Still working, large repos can take longer",
      "unableToDisplay": "Unable to display value",
      "truncated": "… ({count, plural, one {# more character} other {# more characters}} truncated)",
      "allow": "Allow",
      "deny": "Deny",
      "saveDraft": "Save draft",
      "openInEditor": "Open in editor",
      "changesIn": "Changes in {filename}",
      "outputImageAlt": "Tool output image",
      "chartEmptySeries": "No data points to plot.",
      "interrupted": "Tool execution interrupted"
    },
    "activity": {
      "steps": {
        "writingResponse": "Writing response",
        "waitingForApproval": "Waiting for approval",
        "searchingWeb": "Searching web",
        "executingTools": "Executing tools",
        "runningTool": "Running tool"
      },
      "worked": "Worked",
      "workedFor": "Worked for {duration}",
      "searchStackRunning": "{count, plural, one {Searching web} other {Running # searches}}",
      "searchStackDone": "{count, plural, one {Ran # search} other {Ran # searches}}",
      "searchRowQuery": "{state, select, running {Searching web for {query}} other {Searched web for {query}}}",
      "searchRow": "{state, select, running {Searching web} other {Searched web}}",
      "moreSources": "+{count} more"
    },
    "preview": {
      "savingDraft": "Saving draft…",
      "savedAsDraft": "Saved as draft",
      "saveDraftFailed": "Failed to save draft",
      "generatingPostToast": "Generating post…",
      "generatingPost": "Generating post",
      "status": {
        "draft": "draft",
        "published": "published"
      },
      "regeneratePlaceholder": "What should change?",
      "saveAsDraft": "Save as draft",
      "saveDraftFailedRetry": "Failed to save draft. Try again.",
      "saveDraftFailedInline": "Could not save the draft. Try again.",
      "contentRegion": "{type} content",
      "askForChanges": "Ask for changes",
      "openPreview": "Preview"
    }
  },
  "comments": {
    "title": "Comments",
    "loading": "Loading comments",
    "loadFailed": "Could not load comments.",
    "saveFailed": "Could not save comment",
    "copyFailed": "Could not copy comment",
    "edited": "edited",
    "editComment": "Edit comment",
    "addReaction": "Add reaction",
    "reply": "Reply",
    "replyToComment": "Reply to comment",
    "commentActions": "Comment actions",
    "copyText": "Copy text",
    "reactionCount": "{label}, {count, plural, one {# reaction} other {# reactions}}",
    "reactions": {
      "heart": "Heart",
      "fire": "Fire",
      "thumbsUp": "Thumbs up",
      "thumbsDown": "Thumbs down",
      "eyes": "Eyes",
      "crown": "Crown"
    },
    "showFewer": "Show fewer comments",
    "viewMore": "{count, plural, one {View # more comment} other {View # more comments}}",
    "replyingTo": "Replying to {name}",
    "cancelReply": "Cancel reply",
    "replyTo": "Reply to {name}",
    "writeComment": "Write a comment",
    "writeCommentPlaceholder": "Write a comment…",
    "writeReplyPlaceholder": "Write a reply…",
    "send": "Send comment",
    "emptyTitle": "No comments yet",
    "emptyDescription": "Share context or next steps with your team."
  },
  "composer": {
    "preview": "Preview {label}",
    "steerWith": "Steer with {label}"
  },
  "ui": {
    "completed": "Completed",
    "incomplete": "Incomplete",
    "pagination": "Pagination",
    "goToPreviousPage": "Go to previous page",
    "goToNextPage": "Go to next page",
    "morePages": "More pages",
    "paginationRange": "{start}-{end} of {total}",
    "paginationRangeOpen": "{start}-{end}",
    "pageOf": "Page {page} of {total}",
    "pageNumber": "Page {page}",
    "showRows": "Show {count}",
    "rowsPerPage": "Rows per page",
    "toggleSidebar": "Toggle sidebar",
    "sidebarTitle": "Sidebar",
    "sidebarDescription": "Displays the mobile sidebar.",
    "previousSlide": "Previous slide",
    "nextSlide": "Next slide",
    "scrollToEnd": "Scroll to end",
    "scrollToStart": "Scroll to start",
    "conversationTurns": "Conversation turns",
    "previousTurn": "Previous turn",
    "nextTurn": "Next turn",
    "commandPaletteDescription": "Search for a command to run…",
    "chooseOption": "Choose an option",
    "catalog": "Catalog",
    "previousBranch": "Previous branch",
    "nextBranch": "Next branch",
    "copyTableAsMarkdown": "Copy table as Markdown",
    "downloadTable": "Download table",
    "viewTableFullscreen": "View table fullscreen",
    "tableFormatCsv": "CSV",
    "tableFormatPlain": "Plain",
    "removeAttachment": "Remove attachment",
    "expandImage": "Expand image",
    "minimizeImage": "Minimize image",
    "moreInfo": "More info",
    "breadcrumb": "Breadcrumb",
    "logoStack": {
      "additionalItems": "Additional items",
      "showAdditionalItems": "{count, plural, one {Show # additional item} other {Show # additional items}}"
    },
    "colorPicker": {
      "selection": "Color saturation and lightness",
      "selectionValue": "Saturation {saturation}%, Lightness {lightness}%",
      "hue": "Hue",
      "opacity": "Opacity",
      "eyeDropper": "Pick a color from the screen"
    }
  },
  "demo": {
    "start": {
      "title": "Opening the demo…",
      "description": "Just a moment.",
      "errorTitle": "The demo workspace couldn't be created",
      "errorDescription": "Please try again in a moment.",
      "retry": "Try again"
    },
    "banner": {
      "title": "Explore the Notra demo.",
      "titleNamed": "Welcome to the Notra demo, {name}.",
      "customize": "Customize",
      "reset": "Reset",
      "signup": "Create account",
      "resetTitle": "Reset your demo workspace?",
      "resetDescription": "Everything you changed is thrown away and the sample data is restored. Your demo ID, API key and customization stay the same.",
      "cancel": "Cancel",
      "resetConfirm": "Reset workspace",
      "resetFailed": "The workspace couldn't be reset. Please try again."
    },
    "playground": {
      "title": "API playground",
      "description": "Send real requests to the demo API and watch them change this workspace.",
      "tabs": {
        "console": "Console",
        "requests": "Requests",
        "missions": "Missions"
      },
      "toastStatus": "{status}",
      "toastChanged": "{status} · {label}",
      "view": "View",
      "openFeed": "Details",
      "demoId": "Demo ID {id}",
      "idCopied": "Demo ID copied"
    },
    "console": {
      "keyLabel": "Your demo API key",
      "copy": "Copy",
      "keyCopied": "API key copied",
      "keyHint": "Works with curl, the Notra CLI and MCP against {url}. It expires with your workspace.",
      "noKey": "No API key is available for this workspace.",
      "preset": "Example",
      "method": "Method",
      "path": "Path",
      "body": "Request body (JSON)",
      "send": "Send request",
      "sending": "Sending…",
      "copyCurl": "Copy as curl",
      "curlCopied": "curl command copied",
      "seeFeed": "The request also shows up under Requests, and the dashboard updates live.",
      "presets": {
        "listPosts": "List recent posts",
        "createPost": "Create a draft post",
        "createPrompt": "Track a new GEO prompt",
        "startScan": "Start a GEO scan",
        "visibility": "Get AI visibility overview",
        "traffic": "Get AI traffic overview",
        "listSchedules": "List schedules",
        "createSkill": "Create a skill"
      }
    },
    "feed": {
      "loading": "Loading…",
      "emptyTitle": "No requests yet",
      "emptyDescription": "Send a request from the console, use curl, or click around the dashboard. Everything shows up here.",
      "sources": {
        "api": "API",
        "console": "Console",
        "ui": "UI",
        "webhook": "Webhook"
      },
      "sameViaApi": "Do the same via the API",
      "copyCurl": "Copy curl",
      "curlCopied": "curl command copied",
      "request": "Request",
      "response": "Response"
    },
    "missions": {
      "progress": "{done} of {total} done",
      "complete": "Done",
      "open": "Not done yet",
      "scan": {
        "title": "Run a GEO scan",
        "description": "Click Run scan on the GEO overview and watch new results come in."
      },
      "apiPrompt": {
        "title": "Add a prompt through the API",
        "description": "Send \"Track a new GEO prompt\" from the console. It appears under GEO › Prompts right away."
      },
      "agentPost": {
        "title": "Write a post, then fetch it via API",
        "description": "Ask the agent to write a post, then run \"List recent posts\"."
      },
      "schedule": {
        "title": "Automate content",
        "description": "Create a schedule under Automation or use Run now on one."
      },
      "externalClient": {
        "title": "Call the API from your machine",
        "description": "Copy a request as curl and run it in your terminal, or connect the CLI or MCP with your demo key."
      },
      "finishedTitle": "You've seen it all",
      "finishedDescription": "Set Notra up for your own brand in a few minutes.",
      "signup": "Start free",
      "openConsole": "Open the console"
    },
    "customize": {
      "title": "Customize the Notra demo",
      "description": "Tell us who you are and the demo is rebuilt around your company: brand, AI visibility, content and team.",
      "firstName": "First name",
      "lastName": "Last name",
      "companyName": "Company name",
      "note": "Takes a few seconds. What you entered only lives in this demo workspace.",
      "cancel": "Cancel",
      "submit": "Customize demo",
      "saving": "Rebuilding…",
      "failed": "The demo couldn't be customized. Please try again."
    },
    "apiCallout": {
      "title": "Try the API with your demo key",
      "description": "Send requests from the playground and watch them change this workspace live. curl, the CLI and MCP work too.",
      "open": "Open API playground"
    }
  },
  "sites": {
    "title": "Sites",
    "description": "Blogs and changelogs, built and hosted from your GitHub repository",
    "newSite": "New site",
    "projectRequired": {
      "title": "Select a project",
      "description": "Create or select a project in the sidebar to manage its sites."
    },
    "projectLoadFailed": {
      "title": "Couldn't load projects",
      "description": "Reload the page to try again."
    },
    "empty": {
      "title": "No sites yet",
      "description": "Host a blog and changelog from a GitHub repo. Every push goes live, every pull request gets a preview."
    },
    "loadFailed": {
      "title": "Couldn't load sites",
      "description": "Reload the page to try again."
    },
    "unavailable": {
      "title": "Sites isn't available here",
      "description": "Notra Sites isn't set up on this environment yet."
    },
    "list": {
      "visitors": "Visitors · 7d",
      "noDeployments": "No deployments yet",
      "viewDeployments": "View deployments",
      "deploymentCreated": "Deployment created <time></time>",
      "actionsLabel": "Actions for {name}",
      "actions": {
        "openSite": "Open site",
        "visitSite": "Visit live site",
        "copyLink": "Copy site link"
      }
    },
    "status": {
      "queued": "Queued",
      "building": "Building",
      "uploading": "Uploading",
      "ready": "Successful",
      "offline": "Offline",
      "superseded": "Superseded",
      "failed": "Failed",
      "canceled": "Canceled",
      "expired": "Expired",
      "skipped": "Skipped"
    },
    "domainStatus": {
      "pending": "Pending",
      "verifying": "Verifying",
      "active": "Active",
      "failed": "Failed"
    },
    "kinds": {
      "production": "Production",
      "preview": "Preview"
    },
    "triggers": {
      "push": "Push",
      "pull_request": "Pull request",
      "manual": "Manual update",
      "redeploy": "Redeploy",
      "config": "Settings change"
    },
    "sections": {
      "title": "Sections",
      "pathLabel": "{section} path",
      "blog": "Blog",
      "blogDescription": "Posts in blog/",
      "changelog": "Changelog",
      "changelogDescription": "Releases in changelog/",
      "atLeastOne": "Turn on the blog, the changelog, or both."
    },
    "visibility": {
      "protected": {
        "title": "Protected"
      },
      "public": {
        "title": "Public"
      }
    },
    "publishModes": {
      "recommended": "Recommended",
      "pull_request": {
        "title": "Pull request",
        "description": "Edits open a pull request."
      },
      "direct": {
        "title": "Direct commit",
        "description": "Edits go straight to the branch."
      }
    },
    "new": {
      "title": "New site",
      "project": "Project: {name}",
      "projectLoading": "Loading project…",
      "projectRequired": "Create or select a project in the sidebar before creating a site.",
      "projectLoadFailed": "Couldn't load projects. Reload the page to try again.",
      "description": "Import a repository. Every push to its production branch goes live.",
      "private": "Private repository",
      "name": "Site name",
      "namePlaceholder": "Acme blog",
      "address": "Address",
      "addressInvalid": "Use 3 to 40 lowercase letters, digits and single dashes.",
      "addressReserved": "{slug} is reserved. Add more words to the address.",
      "branch": "Production branch",
      "rootDirectoryPlaceholder": "apps/blog",
      "publishMode": "Publishing from the editor",
      "create": "Create & deploy",
      "createFailed": "Couldn't create the site",
      "noBranchMatch": "No matching branch",
      "noDirectoryMatch": "No folder with blog.json matches",
      "publishing": "Previews and publishing",
      "branchHint": "Pushes to this branch go live.",
      "account": "GitHub account",
      "searchRepositories": "Search repositories",
      "import": "Import",
      "importRepository": "Import {repository}",
      "importFailed": "Couldn't import the repository",
      "noRepositoryMatch": "No repository matches.",
      "adjustAccess": "Missing a repository? Adjust GitHub App access",
      "installTitle": "Connect GitHub",
      "installDescription": "Sites build from a GitHub repository. Install the Notra GitHub App on the repositories you want to publish from.",
      "installGitHub": "Install GitHub App",
      "installFailed": "Couldn't start the GitHub installation",
      "stepRepository": "Repository",
      "stepConfigure": "Configure",
      "stepsLabel": "Steps",
      "stepRepositoryDescription": "Import the GitHub repository Notra builds the site from.",
      "stepConfigureDescription": "From {repository}.",
      "stepLabels": {
        "repository": "Import repository",
        "configure": "Configure",
        "deploy": "Deploy"
      },
      "stepDeploy": "Deploy",
      "stepDeployDescription": "Build logs and status.",
      "deploy": {
        "waiting": "Waiting for a builder…",
        "started": "Deployment started {seconds}s ago…",
        "ready": "Your site is live. Built in {duration}.",
        "failed": "Build failed",
        "visit": "Visit",
        "openSite": "Go to site",
        "viewDeployment": "View deployment",
        "configMissingRetry": "This build reported a missing blog.json. Retry the deployment from the site to use the standard layout and configuration. The starter pull request is optional.",
        "editConfiguration": "Edit configuration",
        "retryDeployment": "Retry deployment",
        "retryFailed": "Couldn't queue the deployment. Try again.",
        "retryStatus": "Retry status loading",
        "statusLoadFailed": "Couldn't load the deployment status.",
        "failureRecovery": "The deployment did not finish. Review the configuration or try again.",
        "viewPullRequest": "View pull request",
        "notStarted": "The first build couldn't start."
      },
      "starter": {
        "existingTitle": "Existing site configuration found",
        "existingDescription": "Choose an existing configuration, or keep the selected location for a new site.",
        "useExisting": "Use folder {path}",
        "useFolder": "Use folder",
        "selectedLocation": "Selected configuration: {path} on {branch}.",
        "createAt": "Open starter PR",
        "missingTitle": "No blog.json yet",
        "missing": "Notra uses the standard layout. A blog.json adds your brand, header and footer.",
        "why": "Why a blog.json?",
        "create": "Open starter PR (optional)",
        "opened": "Pull request opened",
        "view": "View PR",
        "optional": "Merging it is optional. You can create and deploy now.",
        "failed": "Could not open the starter pull request"
      },
      "subdirectory": "Site is in a subdirectory",
      "subdirectoryHint": "Turn on when the site lives in a folder of the repository.",
      "rootDirectoryPath": "Site folder",
      "rootDirectoryPathHint": "Folder for the site, relative to the repository root. A blog.json is optional.",
      "bulk": {
        "toggle": "Import all {count} sites",
        "toggleHint": "Every folder with a blog.json becomes its own site.",
        "columns": {
          "site": "Site",
          "status": "Status"
        },
        "selectAll": "Select all sites",
        "select": "Import {folder}",
        "nameLabel": "Name for {folder}",
        "addressLabel": "Address for {folder}",
        "rootFolder": "Repository root",
        "duplicate": "Another site in this import uses this address.",
        "previews": "Previews",
        "previewsHint": "Builds a preview for every pull request that touches a site's folder.",
        "create": "Create {count, plural, one {# site} other {# sites}}",
        "createFailed": "Couldn't create the sites",
        "summary": "Created {created} of {total} sites.",
        "created": "Created",
        "open": "Open",
        "openSite": "Open {name}",
        "edit": "Edit failed sites",
        "retry": "Retry {count, plural, one {# failed site} other {# failed sites}}",
        "tooMany": "Select up to {max} sites per import."
      }
    },
    "detail": {
      "visit": "Visit",
      "deployLatest": "Manual update",
      "deployQueued": "Deployment queued",
      "deployFailed": "Couldn't start the deployment",
      "offline": "Offline",
      "offlineDescription": "This site is offline. Visitors see an 'unavailable' page until you bring it back.",
      "offlineAction": "Manage in settings",
      "statusAnnouncement": "Latest deployment: {status}",
      "backToSites": "Back to sites",
      "notFound": {
        "title": "Site not found",
        "description": "It may have been deleted, or it belongs to another organization."
      },
      "loadFailed": {
        "title": "This site couldn't load",
        "description": "Reload the page to try again."
      },
      "tabs": {
        "overview": "Overview",
        "analytics": "Analytics",
        "deployments": "Deployments",
        "previews": "Previews",
        "domains": "Domains",
        "editor": "Editor",
        "settings": "Settings",
        "integrations": "Integrations"
      }
    },
    "deployments": {
      "title": "Deployments",
      "empty": "No deployments yet",
      "current": "Currently live",
      "noCommitMessage": "No commit message",
      "redeployQueued": "Redeploy queued",
      "redeployFailed": "Couldn't redeploy",
      "columns": {
        "environment": "Environment",
        "commit": "Commit",
        "trigger": "Trigger"
      },
      "actions": {
        "label": "Actions for deployment {sha}",
        "view": "View details",
        "visit": "Visit",
        "redeploy": "Redeploy",
        "rollback": "Restore to production"
      }
    },
    "rollback": {
      "title": "Restore this deployment?",
      "description": "It goes live right away. Notra serves the files from this deployment as they are, without a rebuild.",
      "noCommitMessage": "No commit message",
      "confirm": "Restore",
      "done": "Deployment restored",
      "failed": "Couldn't restore the deployment"
    },
    "deployment": {
      "title": "Deployment {sha}",
      "back": "Back to deployments",
      "statusAnnouncement": "Deployment status: {status}",
      "notFound": {
        "title": "Deployment not found",
        "description": "It may belong to another site."
      },
      "loadFailedTitle": "Couldn't load this deployment",
      "loadFailed": "Reload the page to try again."
    },
    "diagnostics": {
      "error": "Error",
      "warning": "Warning"
    },
    "editor": {
      "intro": "Changes save as drafts and never touch the live site until you publish.",
      "validateFailed": "Couldn't validate the site",
      "problems": "{count, plural, one {# problem} other {# problems}}",
      "dismiss": "Dismiss",
      "filesFailed": "Couldn't load the files from GitHub",
      "noFiles": "No editable files yet. Create one to get started.",
      "newFile": "New file",
      "loadFailed": "Couldn't load this file",
      "saveFailed": "Couldn't save the draft",
      "discarded": "Draft discarded",
      "discardFailed": "Couldn't discard the draft",
      "createFailed": "Couldn't create the file",
      "status": {
        "unsaved": "Unsaved changes",
        "saving": "Saving…",
        "saved": "Draft saved",
        "draft": "Draft",
        "published": "Published version"
      },
      "conflict": {
        "title": "These files changed on GitHub",
        "description": "Someone pushed changes after you started editing. Keep your edits on top of the latest version, compare them with the published file, then publish again.",
        "rebase": "Keep my edits on the latest version",
        "rebased": "Drafts now build on the latest version. Review them before publishing.",
        "rebaseFailed": "Couldn't update the drafts"
      }
    },
    "newFile": {
      "title": "New file",
      "description": "Starts as a draft with frontmatter filled in.",
      "section": "Section",
      "postTitle": "Title",
      "blogPlaceholder": "Introducing our new API",
      "changelogPlaceholder": "Faster exports",
      "fileName": "File name",
      "fileNamePlaceholder": "my-post",
      "pathHint": "Creates {path}",
      "invalidName": "Use lowercase letters, digits and dashes.",
      "exists": "{path} already exists."
    },
    "publish": {
      "title": "Publish changes",
      "description": "{count, plural, one {# changed file goes} other {# changed files go}} to GitHub as one commit.",
      "message": "Commit message",
      "messagePlaceholder": "Update blog posts",
      "mode": "How to publish",
      "pullRequestDescription": "Opens a pull request into {branch}. It goes live when merged.",
      "pullRequestReviewDescription": "{count, plural, one {Review the saved draft} other {Review all # saved drafts}} before opening the pull request.",
      "directDescription": "Commits to {branch} and goes live right away.",
      "directDisabled": "Turned off for this site. Change it in settings.",
      "openPullRequest": "Open pull request",
      "commit": "Commit and deploy",
      "pullRequestOpened": "Pull request opened",
      "viewPullRequest": "View",
      "committed": "Published. Deploying now.",
      "failed": "Couldn't publish"
    },
    "settings": {
      "previews": "Previews",
      "previewBuilds": "Preview builds",
      "previewsEnabledHint": "A preview for every pull request.",
      "previewComments": "Post PR comments",
      "previewCommentsHint": "Build status and preview link in your PR.",
      "saved": "Settings saved",
      "savedRebuilding": "Settings saved. Rebuilding…",
      "saveFailed": "Couldn't save the settings",
      "dangerZone": "Danger zone",
      "offline": {
        "title": "Take site offline",
        "description": "Visitors see an 'unavailable' page. Deployments and settings stay.",
        "action": "Take offline",
        "confirmTitle": "Take this site offline?",
        "confirmDescription": "Visitors see an 'unavailable' page right away, on every domain. You can bring it back at any time.",
        "done": "Site is offline",
        "restoreTitle": "Bring site back online",
        "restoreDescription": "Serves the last live deployment again.",
        "restore": "Bring back online",
        "restored": "Site is back online",
        "failed": "Couldn't change the site status"
      },
      "analytics": {
        "title": "Turn off analytics",
        "description": "Stop counting visitors and AI agents on this site.",
        "action": "Turn off",
        "confirmTitle": "Turn off analytics for this site?",
        "confirmDescription": "Notra stops counting visitors and AI agents right away and removes the measuring script from every page. Data collected so far stays in Analytics, and nothing is recorded while analytics is off. You can turn it back on at any time.",
        "done": "Analytics is off",
        "enableTitle": "Turn on analytics",
        "enableDescription": "Count visitors, time on page and AI agents on this site.",
        "enable": "Turn on",
        "enableConfirmTitle": "Turn on analytics for this site?",
        "enableConfirmDescription": "Notra counts page views as they are served, without cookies, and adds a small script that measures how long each page stays visible. AI agents are recorded too. Counting starts now; the time analytics was off stays empty.",
        "enabled": "Analytics is on",
        "failed": "Couldn't change analytics"
      },
      "delete": {
        "title": "Delete site",
        "summary": "Removes the site, its deployments and domains. Your repository stays as it is.",
        "action": "Delete site",
        "description": "This deletes the site, all deployments, previews and domains. It can't be undone. Your GitHub repository isn't touched.",
        "confirmLabel": "Type <code>{name}</code> to confirm",
        "confirm": "Delete site",
        "done": "{name} deleted",
        "failed": "Couldn't delete the site"
      },
      "smartDeployments": "Smart deployments",
      "beta": "Beta",
      "smartDeploymentsHint": "Skip automatic deployments when the published site inputs are unchanged. Manual redeploys always build.",
      "contentGroup": "Content and publishing",
      "visitors": "Analytics and branding",
      "nameHint": "Shown in the dashboard.",
      "repository": "Repository",
      "repositoryHint": "The GitHub repository this site builds from.",
      "noRepository": "Not connected",
      "rootDirectory": "Root directory",
      "rootDirectoryHint": "Where the site lives in the repository.",
      "publishModeHint": "How changes from the editor reach your repository.",
      "variablesHint": "Reusable values like names and links, available as placeholders.",
      "variablesCount": "{count, plural, =0 {None yet} one {# variable} other {# variables}}",
      "analyticsLabel": "Analytics",
      "analyticsHint": "Count visitors, time on page and AI agents. No cookies.",
      "openOnGitHub": "Open on GitHub",
      "manageGitHub": "Manage GitHub access",
      "manageGitHubFailed": "Couldn't open GitHub",
      "repositoryChangeHint": "To build from a different repository, create a new site. Manage access if Notra lost access to this one.",
      "rootDirectoryPlaceholder": "Repository root",
      "rootDirectoryFieldHint": "Relative to the repository root. Leave empty when the site is at the root.",
      "sectionsRowHint": "Where the blog and changelog live on your site.",
      "branchFieldHint": "Every push to this branch goes live. Changes apply on the next deploy.",
      "optional": "Optional"
    },
    "previewFrame": {
      "title": "Site preview",
      "unavailable": "Preview unavailable"
    },
    "overviewPage": {
      "visitSite": "Visit site",
      "updatedBy": "Updated <time></time> by {author}",
      "updatedVia": "Updated <time></time> · {trigger}",
      "notLiveYet": "Nothing is live yet. The first deployment goes live when its build finishes.",
      "followBuild": "Follow build",
      "viewLogs": "View logs",
      "previewBuilding": "Building your site…",
      "previewOffline": "Site is offline",
      "domains": "Domains",
      "notraAddress": "Notra address",
      "addCustomDomain": "Add custom domain",
      "repository": "Repository",
      "noRepository": "No repository connected",
      "productionBranch": "Production branch",
      "drafts": "Editor drafts",
      "draftsHint": "{count, plural, one {# unpublished change} other {# unpublished changes}} in the editor",
      "activity": "Deployments",
      "viewAll": "View all",
      "noCommitMessage": "No commit message",
      "columns": {
        "author": "Author",
        "open": "Open"
      },
      "activityEmptyDescription": "Push to {branch} or deploy the latest commit.",
      "previews": "Previews",
      "production": "Production",
      "previewNothingLive": "Nothing is live yet"
    },
    "deploymentsPage": {
      "description": "Production and preview builds of this site, newest first",
      "current": "Current",
      "columns": {
        "deployment": "Deployment",
        "status": "Status",
        "environment": "Environment",
        "author": "Author",
        "commit": "Commit",
        "branch": "Branch",
        "created": "Created",
        "actions": "Actions"
      },
      "filters": {
        "label": "Filter deployments",
        "searchLabel": "Search deployments",
        "searchPlaceholder": "Search branch, commit or preview…",
        "active": "Filters active",
        "environment": "Environment",
        "status": "Status",
        "trigger": "Trigger",
        "remove": "Remove {filter} filter",
        "clear": "Clear filters",
        "more": "+{count}",
        "allEnvironments": "All environments",
        "allStatuses": "All statuses"
      },
      "statusFilters": {
        "ready": "Successful",
        "building": "Building",
        "queued": "Queued",
        "failed": "Failed",
        "canceled": "Canceled",
        "superseded": "Superseded",
        "expired": "Expired",
        "skipped": "Skipped"
      },
      "actions": {
        "copyUrl": "Copy URL",
        "copied": "URL copied"
      },
      "empty": {
        "title": "No deployments yet",
        "description": "Push to {branch} or deploy the latest commit to start the first build."
      },
      "noMatches": {
        "title": "No deployments match these filters",
        "description": "Try another filter, or clear them to see every deployment."
      },
      "loadFailed": {
        "title": "Deployments couldn't load",
        "description": "Reload the page to try again."
      }
    },
    "deploymentPage": {
      "timeline": {
        "title": "Deployment timeline",
        "total": "{duration} total",
        "timingUnavailable": "Timing unavailable",
        "phases": {
          "queued": "Queued",
          "preparing": "Preparing source",
          "preparingShort": "Preparing",
          "building": "Building",
          "deploying": "Deploying",
          "execution": "Build & deploy"
        },
        "states": {
          "pending": "Not started",
          "unknown": "Timing unavailable",
          "active": "Running",
          "complete": "Completed",
          "failed": "Failed",
          "stopped": "Stopped"
        }
      },
      "title": "Deployment details",
      "visit": "Visit",
      "notLive": "Not live",
      "fields": {
        "created": "Created",
        "status": "Status",
        "environment": "Environment",
        "domains": "Domains",
        "source": "Source"
      },
      "pullRequest": "#{number}",
      "preview": {
        "protected": "This preview is protected. Open it to sign in.",
        "notLive": "Not live right now. The site serves another deployment.",
        "building": "The preview appears once this build is live.",
        "failed": "Nothing to show. This build didn't finish.",
        "expired": "This deployment's files were cleaned up."
      },
      "notice": {
        "failed": "Build failed",
        "canceled": "This build was canceled before it finished.",
        "superseded": "A newer commit replaced this build before it started.",
        "expired": "This deployment's files were cleaned up. Redeploy its commit to build it again.",
        "skipped": "Skipped because the site inputs match the published version."
      },
      "log": {
        "title": "Build logs",
        "copy": "Copy log",
        "copied": "Log copied",
        "noMatches": "No matches",
        "next": "Next match",
        "previous": "Previous match",
        "waiting": "Waiting for the build to start…",
        "empty": "No build log for this deployment.",
        "jumpToLatest": "Jump to latest",
        "label": "Build log output",
        "starting": "Starting the build sandbox…",
        "filter": "Filter log",
        "clearFilter": "Clear filter",
        "folded": "{count, plural, one {Show # more line} other {Show # more lines}}"
      },
      "diagnostics": {
        "title": "Diagnostics"
      },
      "output": {
        "title": "Output",
        "pending": "Shows up once the build is stored.",
        "none": "This build didn't produce any output.",
        "fileCount": "{count, plural, one {# file} other {# files}}"
      },
      "byline": {
        "push": "Pushed by {author}",
        "pull_request": "Pull request by {author}",
        "manual": "Deployed by {author}",
        "redeploy": "Redeployed by {author}",
        "config": "Settings change by {author}"
      },
      "bylineAnonymous": {
        "push": "Pushed",
        "pull_request": "Pull request",
        "manual": "Deployed manually",
        "redeploy": "Redeployed",
        "config": "Settings change"
      }
    },
    "previewsPage": {
      "title": "Previews",
      "description": "Every pull request gets its own preview.",
      "branchTitle": "Preview a branch",
      "branchDescription": "Build any branch without opening a pull request.",
      "branchLabel": "Branch name",
      "branchPlaceholder": "feature/new-post",
      "createPreview": "Create preview",
      "created": "Building preview {key}",
      "createFailed": "Couldn't create the preview",
      "disabled": "Previews are turned off for this site.",
      "turnOn": "Turn on in settings",
      "emptyTitle": "No previews yet",
      "emptyDescription": "Open a pull request and its preview shows up here. You can also preview any branch.",
      "columns": {
        "preview": "Preview",
        "access": "Access"
      },
      "pullRequest": "#{number}",
      "noCommitMessage": "No commit message",
      "open": "Open",
      "openLabel": "Open preview {name}",
      "actionsLabel": "More actions for {name}",
      "copyShareLink": "Copy share link",
      "copyLink": "Copy link",
      "shareCopied": "Share link copied. It works for {days} days.",
      "shareFailed": "Couldn't create a share link",
      "openFailed": "Couldn't open the preview",
      "viewDeployment": "View deployment",
      "delete": "Delete preview",
      "deleteTitle": "Delete this preview?",
      "deleteDescription": "The preview of {name} stops working right away. A new push to its branch or pull request creates it again.",
      "deleted": "Preview deleted",
      "deleteFailed": "Couldn't delete the preview"
    },
    "domainsPage": {
      "title": "Domains",
      "description": "Connect a domain you own. Once it's verified, it becomes your site's primary address.",
      "addDomain": "Add domain",
      "primary": "Primary",
      "open": "Open",
      "copyUrl": "Copy URL",
      "kinds": {
        "subdomain": "Subdomain",
        "proxy": "Paths on your site"
      },
      "check": "Check",
      "checking": "Checking…",
      "checkLabel": "Check {hostname}",
      "moreLabel": "More actions for {hostname}",
      "checkFailed": "Couldn't check the domain",
      "verified": "Domain verified",
      "verifiedRebuilding": "Domain verified. Rebuilding for the new address…",
      "notVerifiedYet": "Not verified yet",
      "verifyNow": "Check now",
      "lastErrorTitle": "Domain check details:",
      "remove": "Remove",
      "removeConfirm": "Remove domain",
      "removeTitle": "Remove this domain?",
      "removeDescription": "{hostname} stops serving this site.",
      "removePrimaryDescription": "{hostname} stops serving this site. It moves back to {alias} and rebuilds.",
      "removed": "Domain removed",
      "removeFailed": "Couldn't remove the domain",
      "status": {
        "active": "Active",
        "dnsRequired": "Needs DNS",
        "proxyRequired": "Needs rewrites",
        "verifying": "Verifying",
        "failed": "Failed"
      },
      "dns": {
        "type": "Type",
        "name": "Name",
        "value": "Value",
        "noRecords": "No records needed",
        "connect": "Connect with {provider}",
        "automaticDescription": "Sign in to {provider} to add these records automatically.",
        "openProvider": "Open {provider} DNS",
        "proxy": "Proxy",
        "dnsOnly": "DNS only (required)",
        "proxyRequirement": "Turn off the orange cloud in Cloudflare so Notra can issue your HTTPS certificate. This is the required setting, not a live status.",
        "proxied": "Proxied",
        "proxyNotApplicable": "Proxy not applicable",
        "proxyNotApplicableDescription": "TXT records verify domain ownership. Cloudflare only proxies A, AAAA and CNAME records.",
        "addRecords": "Add these records where you manage your domain's DNS.",
        "addRecordsToZone": "Add these records to the DNS of {zone}."
      },
      "proxy": {
        "agentPromptDescription": "Let your coding agent set up the proxy.",
        "agentPromptLabel": "Proxy setup agent prompt",
        "manualSetup": "Manual setup",
        "description": "Forward <code>{paths}</code> and everything below them to <code>{origin}</code>, keeping the path.",
        "platform": "Platform",
        "noCookies": "Don't forward cookies or authorization headers. The site doesn't need them.",
        "recipes": {
          "vercel": "Vercel",
          "next": "Next.js",
          "netlify": "Netlify",
          "tanstack": "TanStack Start",
          "cloudflare": "Cloudflare Worker",
          "nginx": "nginx"
        },
        "agentTab": "Coding agent",
        "setupLabel": "Setup method"
      },
      "add": {
        "title": "Add domain",
        "description": "Serve this site on a domain you own.",
        "submit": "Add domain",
        "added": "Domain added",
        "addFailed": "Couldn't add the domain",
        "label": "Domain",
        "placeholder": "blog.acme.com or acme.com/blog",
        "hint": "Enter a subdomain like blog.acme.com, or your own site like acme.com/blog.",
        "useProxy": "Keep my website and forward paths instead",
        "useDns": "Point the whole domain to Notra instead",
        "liveAt": "Your site will be live at",
        "subdomainExplain": "{hostname} points to Notra. You add one DNS record (CNAME) where you manage your domain.",
        "proxyExplain": "Your website on {hostname} stays as it is. It forwards these paths to Notra with a rewrite."
      },
      "connectResult": {
        "success": "DNS records added",
        "successDescription": "We'll verify the domain once DNS updates. This can take a few minutes.",
        "cancelled": "DNS setup cancelled",
        "cancelledDescription": "Nothing changed. You can try again or add the records yourself.",
        "error": "Your DNS provider couldn't add the records",
        "errorDescription": "Add them yourself from the DNS configuration below."
      },
      "setupErrorTitle": "Can't verify this domain yet",
      "connectTitle": "Connect your domain",
      "connectSubmit": "Continue"
    },
    "editorPage": {
      "title": "Editor",
      "description": "Edit your posts as drafts. Nothing goes live until you publish.",
      "newFile": "New file",
      "publish": "Publish",
      "publishLabel": "{count, plural, =0 {Publish, no drafts} one {Publish # draft} other {Publish # drafts}}",
      "retry": "Try again",
      "empty": {
        "title": "Pick a file or create one",
        "description": "Changes save as drafts and stay off the live site until you publish.",
        "chooseFile": "Choose file"
      },
      "tree": {
        "title": "Files",
        "label": "Site files",
        "filter": "Filter files",
        "clearFilter": "Clear filter",
        "noMatches": "No files match",
        "noFiles": "No files yet"
      },
      "file": {
        "contentLabel": "Contents of {path}",
        "discard": "Discard draft",
        "copyPath": "Copy path",
        "pathCopied": "Path copied",
        "openOnGithub": "Open on GitHub",
        "viewOnSite": "View on site",
        "view": "View",
        "edit": "Edit",
        "changes": "Changes",
        "more": "More actions",
        "discardNew": "Discard new file"
      },
      "state": {
        "error": "Couldn't save"
      },
      "status": {
        "check": "Check for problems",
        "checking": "Checking…",
        "noProblems": "No problems",
        "problems": "{errors, plural, one {# error} other {# errors}}, {warnings, plural, one {# warning} other {# warnings}}"
      },
      "problems": {
        "title": "Problems",
        "close": "Close problems",
        "none": "No problems found"
      },
      "publishDialog": {
        "changes": "Changes",
        "added": "New",
        "deleted": "Deleted"
      },
      "changes": {
        "none": "No changes yet. Your edits show up here next to the published version."
      }
    },
    "variables": {
      "title": "Content variables",
      "openEditor": "Open editor",
      "reset": "Reset changes",
      "loading": "Loading variables…",
      "loadFailed": "Unable to load variables. Try again.",
      "retry": "Try again",
      "invalidConfig": "Fix blog.json in the editor to manage variables here.",
      "name": "Name",
      "value": "Value",
      "add": "Add variable",
      "removeLabel": "Remove variable {number}",
      "nameLabel": "Name of variable {number}",
      "valueLabel": "Value of variable {number}",
      "duplicate": "Use a different name for each variable.",
      "invalid": "Start each name with a letter. Use up to 40 letters, numbers, underscores or dashes, and values up to 500 characters.",
      "saveDraft": "Save draft",
      "saved": "Variables saved as a draft",
      "saveFailed": "Unable to save variables. Try again.",
      "reviewAndPublish": "Review and publish",
      "hint": "Use a variable as '{{product_name}}'. Values are public and stay a draft until you publish."
    },
    "settingsPage": {
      "title": "Settings",
      "description": "Repository, sections, previews and publishing for this site",
      "brandingLabel": "Notra branding",
      "brandingHint": "Shows a small \"Powered by Notra\" badge in the footer. Changing it rebuilds the site.",
      "sectionsHint": "Paths on your site. Changing them rebuilds the site; the current version stays live until the build succeeds."
    },
    "previewAccess": {
      "title": "Preview access",
      "trigger": {
        "members": "Team only",
        "password": "Team or password",
        "public": "Anyone with the link",
        "off": "Previews off"
      },
      "buildOffWarning": "{count, plural, one {The open preview closes} other {All # open previews close}} when you save. Turn previews back on and the next push builds them again.",
      "buildOffHint": "New pull requests won't build a preview.",
      "whoLabel": "Who can open previews",
      "passwordLabel": "Preview password",
      "newPasswordLabel": "New password",
      "passwordHint": "At least {min} characters.",
      "changeHint": "At least {min} characters. Everyone who used the old password has to enter the new one.",
      "passwordSet": "Password set <time></time>",
      "changePassword": "Change",
      "showPassword": "Show password",
      "hidePassword": "Hide password",
      "save": "Save",
      "saved": "Preview access updated",
      "saveFailed": "Couldn't update preview access"
    },
    "integrationsPage": {
      "title": "Integrations",
      "description": "Analytics for this site. Valid settings save automatically to a blog.json draft and go live when you publish.",
      "optional": "Optional",
      "remove": "Remove",
      "removed": "Integration removed",
      "savedDescription": "It's a draft of blog.json until you publish it.",
      "saveFailed": "Couldn't save the integration",
      "docs": "{provider} docs",
      "draftDescription": "blog.json has changes that aren't live yet",
      "reviewAndPublish": "Review and publish",
      "createPullRequest": "Create PR",
      "preparePublishFailed": "Couldn't load changes for the pull request",
      "noDrafts": "There are no changes to include in a pull request.",
      "publishMessage": "Update site",
      "publishConflict": "These drafts conflict with changes on GitHub. Open the editor to reload the files and reapply your changes.",
      "invalidTitle": "Invalid blog.json configuration",
      "invalidDescription": "The JSON or integration settings are invalid. Fix them in the editor, then come back.",
      "providers": {
        "plausible": "Lightweight, cookie-free analytics.",
        "posthog": "Product analytics, session replay and feature flags.",
        "umami": "Lightweight, cookie-free web analytics.",
        "ga4": "Google's web analytics."
      },
      "fields": {
        "plausible": {
          "domain": "Domain",
          "server": "Self-hosted server"
        },
        "posthog": {
          "apiKey": "Project API key",
          "apiHost": "API host",
          "sessionRecording": "Session recording"
        },
        "umami": {
          "websiteId": "Website ID",
          "scriptUrl": "Script URL",
          "hostUrl": "Collection URL"
        },
        "ga4": {
          "measurementId": "Measurement ID"
        }
      },
      "add": "Add {provider}",
      "more": "{provider} options",
      "edit": "Edit",
      "configExample": "Configuration in blog.json",
      "copyConfig": "Copy configuration",
      "previewDescription": "Analytics integrations run on the live site only. Previews and local development do not send events.",
      "loadFailed": "Couldn't load integrations",
      "retry": "Try again",
      "openEditor": "Open editor",
      "fieldDescriptions": {
        "plausible": {
          "domain": "Use the domain you added to Plausible, without https://.",
          "server": "For self-hosted Plausible, enter its hostname and optional port (e.g. plausible.acme.com:8443), without https://. Leave empty for plausible.io."
        },
        "posthog": {
          "apiKey": "Copy the public project API key from your PostHog project settings.",
          "apiHost": "Leave empty for US Cloud. Use https://eu.i.posthog.com for EU Cloud or your own HTTPS endpoint.",
          "sessionRecording": "Record visitor sessions when recording is enabled for this domain in PostHog."
        },
        "umami": {
          "websiteId": "In Umami, edit your website and copy data-website-id from Tracking code.",
          "scriptUrl": "Leave empty for Umami Cloud. For self-hosting, copy the full HTTPS script URL from your tracking code.",
          "hostUrl": "Usually empty. Set an HTTPS base URL only when events should go to a different endpoint, such as a reverse proxy."
        },
        "ga4": {
          "measurementId": "In Google Analytics, open Admin → Data streams → your web stream and copy the Measurement ID."
        }
      },
      "close": "Close",
      "autosavePending": "Waiting to save…",
      "autosaveSaving": "Saving draft…",
      "autosaveSaved": "Draft saved. Create a pull request, then merge it to go live.",
      "autosaveInvalid": "Enter valid settings to save your changes.",
      "discardUnsaved": "Discard unsaved changes",
      "removeFailedDescription": "The integration was not removed. Retry the removal or discard the unsaved changes."
    },
    "analyticsPage": {
      "title": "Analytics",
      "description": "People and AI agents on this site",
      "emptyTitle": "No visitors yet",
      "emptyDescription": "Visits show up here about a minute after someone opens the site.",
      "overviewTitle": "Last 7 days",
      "viewAnalytics": "View analytics",
      "errorTitle": "Couldn't load analytics",
      "errorDescription": "Try again in a moment.",
      "offTitle": "Analytics is off",
      "offDescription": "Turn it on in settings to count visitors, time on page and AI agents.",
      "offAction": "Open settings",
      "emptyRangeTitle": "No visits in this period",
      "emptyRangeDescription": "Try a longer date range.",
      "notPublishedTitle": "Not published yet",
      "notPublishedDescription": "Visitors show up here once the first deployment is live."
    }
  }
}
