mirror of
https://github.com/Luchexx/wacrm.git
synced 2026-11-02 09:19:51 +00:00
- Added Pipelines namespace to messages/en.json encompassing page, board, card, form, settings, and analytics. - Migrated PipelinesPage empty states, dropdowns, and pipeline creation dialogues. - Localized pipeline-board and deal-card UI strings and badges (Won/Lost). - Translated deal-form inputs, dynamic tooltips, select options, and error toasts. - Localized pipeline-settings including the sortable stage management rows and delete confirmations. - Migrated pipeline-analytics metrics and detailed statistical tooltips. - Resolved typecheck dependencies to ensure the t function is correctly passed to nested sortable components.
563 lines
22 KiB
JSON
563 lines
22 KiB
JSON
{
|
||
"LoginPage": {
|
||
"titleAccept": "Sign in to accept",
|
||
"titleWelcome": "Welcome back",
|
||
"descAccept": "Sign in and we'll take you to the invitation.",
|
||
"descWelcome": "Sign in to your account",
|
||
"emailLabel": "Email",
|
||
"emailPlaceholder": "you@example.com",
|
||
"passwordLabel": "Password",
|
||
"forgotPassword": "Forgot password?",
|
||
"passwordPlaceholder": "Enter your password",
|
||
"signingIn": "Signing in...",
|
||
"signIn": "Sign in",
|
||
"noAccount": "Don't have an account?",
|
||
"createAccount": "Create account"
|
||
},
|
||
"Sidebar": {
|
||
"title": "CRM Template for WhatsApp",
|
||
"dashboard": "Dashboard",
|
||
"inbox": "Inbox",
|
||
"notifications": "Notifications",
|
||
"contacts": "Contacts",
|
||
"pipelines": "Pipelines",
|
||
"broadcasts": "Broadcasts",
|
||
"automations": "Automations",
|
||
"flows": "Flows",
|
||
"aiAgents": "AI Agents",
|
||
"settings": "Settings",
|
||
"beta": "Beta",
|
||
"unreadConversations": "{count} unread {count, plural, =1 {conversation} other {conversations}}",
|
||
"unreadNotifications": "{count} unread {count, plural, =1 {notification} other {notifications}}",
|
||
"roleOwner": "Owner",
|
||
"roleAdmin": "Admin",
|
||
"roleAgent": "Agent",
|
||
"roleViewer": "Viewer",
|
||
"closeMenu": "Close menu",
|
||
"defaultUser": "User",
|
||
"defaultAvatar": "Avatar",
|
||
"menuProfile": "Profile",
|
||
"menuSettings": "Settings",
|
||
"menuSignOut": "Sign out"
|
||
},
|
||
"Header": {
|
||
"dashboard": "Dashboard",
|
||
"inbox": "Inbox",
|
||
"notifications": "Notifications",
|
||
"contacts": "Contacts",
|
||
"pipelines": "Pipelines",
|
||
"broadcasts": "Broadcasts",
|
||
"automations": "Automations",
|
||
"settings": "Settings",
|
||
"openMenu": "Open menu",
|
||
"openAccountMenu": "Open account menu",
|
||
"defaultUser": "User",
|
||
"defaultAvatar": "Avatar",
|
||
"menuProfile": "Profile",
|
||
"menuSettings": "Settings",
|
||
"menuSignOut": "Sign out"
|
||
},
|
||
"ModeToggle": {
|
||
"switchMode": "Switch to {mode} mode"
|
||
},
|
||
"Dashboard": {
|
||
"page": {
|
||
"title": "Dashboard",
|
||
"description": "Live analytics across conversations, contacts, deals, broadcasts, and automations.",
|
||
"activeConversations": "Active Conversations",
|
||
"newContactsToday": "New Contacts Today",
|
||
"openDealsValue": "Open Deals Value",
|
||
"messagesSentToday": "Messages Sent Today",
|
||
"newTodayVsYesterday": "new today vs yesterday",
|
||
"vsYesterday": "vs yesterday",
|
||
"openDeals": "{count} open {count, plural, =1 {deal} other {deals}}",
|
||
"noChange": "No change {suffix}"
|
||
},
|
||
"quickActions": {
|
||
"newContact": "New Contact",
|
||
"newDeal": "New Deal",
|
||
"newBroadcast": "New Broadcast",
|
||
"newAutomation": "New Automation"
|
||
},
|
||
"activityFeed": {
|
||
"title": "Recent Activity",
|
||
"viewAll": "View all →",
|
||
"noActivity": "No activity yet",
|
||
"noActivityHint": "Activity from messages, deals, broadcasts, and automations will appear here.",
|
||
"showingOf": "Showing {visible} of {totalLoaded}{plus}",
|
||
"show": "Show",
|
||
"timeS": "{sec}s ago",
|
||
"timeM": "{min}m ago",
|
||
"timeH": "{hr}h ago",
|
||
"timeD": "{day}d ago"
|
||
},
|
||
"conversationsChart": {
|
||
"title": "Conversations Over Time",
|
||
"description": "Daily message volume by direction",
|
||
"days": "{count} days",
|
||
"noActivity": "No message activity in this range",
|
||
"noActivityHint": "Send or receive messages to start populating this chart.",
|
||
"incoming": "Incoming",
|
||
"outgoing": "Outgoing",
|
||
"tooltipIncoming": "{count} incoming",
|
||
"tooltipOutgoing": "{count} outgoing",
|
||
"ariaLabel": "Conversations per day"
|
||
},
|
||
"pipelineDonut": {
|
||
"title": "Pipeline Value",
|
||
"description": "Open deals by stage",
|
||
"noOpenDeals": "No open deals yet",
|
||
"noOpenDealsHint": "Create deals in Pipelines to see stage breakdowns here.",
|
||
"dealCount": "{count} {count, plural, =1 {deal} other {deals}}",
|
||
"total": "Total",
|
||
"ariaLabel": "Pipeline value by stage"
|
||
},
|
||
"responseTimeChart": {
|
||
"title": "Average First Response Time",
|
||
"description": "Minutes to reply to a customer's first unreplied message, by weekday",
|
||
"target": "target {minutes}m",
|
||
"thisWeek": "This week:",
|
||
"lastWeek": "Last week:",
|
||
"noReplies": "No replies recorded yet",
|
||
"noRepliesHint": "This chart fills in as you reply to customer messages."
|
||
},
|
||
"emptyState": {
|
||
"title": "Not enough data yet"
|
||
}
|
||
},
|
||
"Inbox": {
|
||
"page": {
|
||
"whatsappNotConnected": "WhatsApp® is not connected. Go to Settings to connect your account."
|
||
},
|
||
"conversationList": {
|
||
"searchPlaceholder": "Search conversations...",
|
||
"filterAll": "All",
|
||
"filterUnread": "Unread",
|
||
"filterOpen": "Open",
|
||
"filterPending": "Pending",
|
||
"filterClosed": "Closed",
|
||
"tags": "Tags",
|
||
"company": "Company",
|
||
"allCompanies": "All companies",
|
||
"clearAll": "Clear all",
|
||
"noConversations": "No conversations found",
|
||
"noMessagesYet": "No messages yet",
|
||
"unknown": "Unknown"
|
||
},
|
||
"messageThread": {
|
||
"backToConversations": "Back to conversations",
|
||
"hideContactPanel": "Hide contact panel",
|
||
"showContactPanel": "Show contact panel",
|
||
"hideContact": "Hide contact",
|
||
"showContact": "Show contact",
|
||
"refresh": "Refresh",
|
||
"refreshConversation": "Refresh conversation",
|
||
"status": "Status",
|
||
"statusOpen": "Open",
|
||
"statusPending": "Pending",
|
||
"statusClosed": "Closed",
|
||
"assign": "Assign",
|
||
"assigned": "Assigned",
|
||
"unassign": "Unassign",
|
||
"noTeammates": "No teammates available",
|
||
"me": " (me)",
|
||
"noMessagesYet": "No messages yet",
|
||
"sendTemplateHint": "Send a template to start the conversation",
|
||
"selectConversation": "Select a conversation",
|
||
"selectConversationHint": "Choose a conversation from the left to start messaging",
|
||
"today": "Today",
|
||
"yesterday": "Yesterday"
|
||
},
|
||
"sessionTimer": {
|
||
"expired": "Expired",
|
||
"xhRemaining": "{hours}h remaining",
|
||
"xmRemaining": "{minutes}m remaining",
|
||
"noCustomerMessages": "No customer messages"
|
||
},
|
||
"composer": {
|
||
"draftHint": "Tap the ✨ to draft a reply with AI — you can edit it before sending",
|
||
"sessionExpiredHint": "24-hour session expired. Use a template to re-engage.",
|
||
"templates": "Templates",
|
||
"readOnlyPlaceholder": "Read-only — viewers can browse but not reply",
|
||
"sessionExpiredPlaceholder": "Session expired - use a template",
|
||
"typeMessagePlaceholder": "Type a message... (Shift+Enter for new line)",
|
||
"readOnlyTitle": "Read-only — your role can't send messages",
|
||
"recording": "Recording… {current} / {max}",
|
||
"cancel": "Cancel",
|
||
"stopAndAttach": "Stop and attach",
|
||
"attachMedia": "Attach media",
|
||
"photo": "Photo",
|
||
"video": "Video",
|
||
"document": "Document",
|
||
"voiceNote": "Voice note",
|
||
"sendTemplate": "Send template",
|
||
"draftWithAI": "Draft a reply with AI",
|
||
"addCaption": "Add a caption…",
|
||
"removeAttachment": "Remove attachment"
|
||
},
|
||
"bubble": {
|
||
"photo": "Photo",
|
||
"video": "Video",
|
||
"audio": "Audio",
|
||
"unavailable": "{label} unavailable",
|
||
"document": "Document",
|
||
"locationShared": "Location shared",
|
||
"template": "Template",
|
||
"buttonReply": "Button reply",
|
||
"interactiveReply": "[Interactive reply]",
|
||
"unsupported": "[Unsupported message type]"
|
||
},
|
||
"actions": {
|
||
"reply": "Reply",
|
||
"copyText": "Copy text",
|
||
"delete": "Delete",
|
||
"react": "React",
|
||
"reactWith": "React with {emoji}",
|
||
"nothingToCopy": "Nothing to copy",
|
||
"copied": "Copied",
|
||
"copyFailed": "Copy failed"
|
||
},
|
||
"replyQuote": {
|
||
"photo": "[Photo]",
|
||
"video": "[Video]",
|
||
"document": "[Document]",
|
||
"audio": "[Audio]",
|
||
"voiceMessage": "[Voice message]",
|
||
"location": "[Location]",
|
||
"template": "[Template]",
|
||
"message": "[Message]",
|
||
"cancelReply": "Cancel reply"
|
||
},
|
||
"templatePicker": {
|
||
"sendTemplate": "Send template",
|
||
"fillPlaceholders": "Fill in the placeholders to render this template. Meta requires every variable to be set.",
|
||
"pickTemplate": "Pick an approved WhatsApp template to send to this contact.",
|
||
"noApprovedTemplates": "No approved templates",
|
||
"noApprovedTemplatesHint": "Approve a template in Meta WhatsApp Manager, then sync it from Settings → Templates.",
|
||
"preview": "Preview",
|
||
"headerValuePlaceholder": "Value for the header variable",
|
||
"bodyValuePlaceholder": "Value for {val}",
|
||
"urlSuffixValuePlaceholder": "URL suffix value",
|
||
"finalUrl": "Final URL: {url}",
|
||
"back": "Back",
|
||
"cancel": "Cancel",
|
||
"send": "Send template"
|
||
},
|
||
"sidebar": {
|
||
"contactInfo": "Contact info",
|
||
"tags": "Tags",
|
||
"notes": "Notes",
|
||
"deals": "Deals"
|
||
}
|
||
},
|
||
"Contacts": {
|
||
"page": {
|
||
"title": "Contacts",
|
||
"subtitle": "Manage your contact list. {count} total contacts.",
|
||
"subtitleZero": "Manage your contact list.",
|
||
"customFieldsBtn": "Custom fields",
|
||
"importBtn": "Import",
|
||
"addContactBtn": "Add Contact",
|
||
"searchPlaceholder": "Search by name, phone, or email...",
|
||
"filterByTags": "Filter by tags",
|
||
"clearAll": "Clear all",
|
||
"noTagsYet": "No tags yet.",
|
||
"selectedCount": "{count} selected",
|
||
"clearSelection": "Clear",
|
||
"deleteSelected": "Delete selected",
|
||
"tableColumns": {
|
||
"name": "Name",
|
||
"phone": "Phone",
|
||
"email": "Email",
|
||
"company": "Company",
|
||
"tags": "Tags",
|
||
"createdAt": "Created"
|
||
},
|
||
"loading": "Loading contacts...",
|
||
"noContactsMatch": "No contacts match your filters.",
|
||
"noContactsYet": "No contacts yet.",
|
||
"addFirstContact": "Add your first contact",
|
||
"unnamed": "Unnamed",
|
||
"editAction": "Edit",
|
||
"deleteAction": "Delete",
|
||
"showingPagination": "Showing {start}-{end} of {total}",
|
||
"pageCount": "Page {page} of {total}",
|
||
"deleteContactTitle": "Delete Contact",
|
||
"deleteContactDesc": "Are you sure you want to delete {name}? This action cannot be undone.",
|
||
"cancel": "Cancel",
|
||
"deleteBtn": "Delete",
|
||
"deleteBulkTitle": "Delete Contacts",
|
||
"deleteBulkDesc": "Are you sure you want to delete {count} selected contacts? This action cannot be undone.",
|
||
"toastFailedLoad": "Failed to load contacts",
|
||
"toastFailedDelete": "Failed to delete contact",
|
||
"toastDeleted": "Contact deleted",
|
||
"toastBulkFailedDelete": "Failed to delete contacts",
|
||
"toastBulkDeleted": "{count} contacts deleted"
|
||
},
|
||
"form": {
|
||
"addTitle": "Add Contact",
|
||
"addDesc": "Create a new contact. Name is required.",
|
||
"editTitle": "Edit Contact",
|
||
"editDesc": "Update contact details and tags.",
|
||
"nameLabel": "Name",
|
||
"namePlaceholder": "Jane Doe",
|
||
"phoneLabel": "Phone Number",
|
||
"phonePlaceholder": "+1234567890",
|
||
"phoneHint": "Include country code, e.g. +1 for US",
|
||
"emailLabel": "Email",
|
||
"emailPlaceholder": "jane@example.com",
|
||
"companyLabel": "Company",
|
||
"companyPlaceholder": "Acme Corp",
|
||
"tagsLabel": "Tags",
|
||
"tagsPlaceholder": "Select tags...",
|
||
"noTagsFound": "No tags found.",
|
||
"createTagAction": "Create tag \"{value}\"",
|
||
"cancel": "Cancel",
|
||
"save": "Save Contact",
|
||
"update": "Update",
|
||
"create": "Create",
|
||
"toastSuccessAdd": "Contact created successfully",
|
||
"toastSuccessEdit": "Contact updated successfully",
|
||
"toastError": "Failed to save contact",
|
||
"toastConflict": "A contact with this phone number already exists",
|
||
"viewExisting": "View {name}",
|
||
"dupExact": "A contact with this phone number already exists.",
|
||
"dupSimilar": "A contact with a very similar number already exists.",
|
||
"loadingTags": "Loading tags...",
|
||
"noTagsAvailable": "No tags available. Create tags in Settings.",
|
||
"phoneRequired": "Phone number is required"
|
||
},
|
||
"detailView": {
|
||
"tabs": {
|
||
"details": "Details",
|
||
"activity": "Activity",
|
||
"notes": "Notes",
|
||
"custom": "Custom Fields",
|
||
"deals": "Deals"
|
||
},
|
||
"actions": {
|
||
"edit": "Edit",
|
||
"message": "Message",
|
||
"delete": "Delete"
|
||
},
|
||
"contactInfo": "Contact Information",
|
||
"unnamed": "Unknown",
|
||
"contactDetailsDesc": "Contact details",
|
||
"phone": "Phone",
|
||
"email": "Email",
|
||
"company": "Company",
|
||
"createdAt": "Created At",
|
||
"customFields": "Custom Fields",
|
||
"noCustomFields": "No custom fields defined. Create them in Settings.",
|
||
"manageFields": "Manage fields",
|
||
"enterCustomField": "Enter {name}...",
|
||
"activityTab": {
|
||
"title": "Activity History",
|
||
"noActivity": "No activity yet."
|
||
},
|
||
"notesTab": {
|
||
"title": "Internal Notes",
|
||
"placeholder": "Write a note...",
|
||
"save": "Add Note",
|
||
"noNotes": "No notes yet."
|
||
},
|
||
"dealsTab": {
|
||
"noDeals": "No deals yet"
|
||
},
|
||
"tagsTab": {
|
||
"clickTagDesc": "Click a tag to add or remove it from this contact.",
|
||
"noTagsAvailable": "No tags available. Create tags in Settings."
|
||
},
|
||
"sendTemplateBtn": "Send template",
|
||
"saveChangesBtn": "Save Changes",
|
||
"saveCustomFieldsBtn": "Save Custom Fields",
|
||
"toastPhoneRequired": "Phone number is required",
|
||
"toastUpdateFailed": "Failed to update contact",
|
||
"toastUpdated": "Contact updated",
|
||
"toastNotAuthenticated": "Not authenticated",
|
||
"toastNoteAddFailed": "Failed to add note",
|
||
"toastNoteAdded": "Note added",
|
||
"toastNoteDeleteFailed": "Failed to delete note",
|
||
"toastNoteDeleted": "Note deleted",
|
||
"toastCustomFieldsSaved": "Custom fields saved",
|
||
"toastCustomFieldsFailed": "Failed to save custom fields",
|
||
"toastTemplateSent": "Template \"{name}\" sent",
|
||
"toastTemplateFailed": "Failed to send template: {reason}"
|
||
},
|
||
"importModal": {
|
||
"title": "Import Contacts",
|
||
"desc": "Upload a CSV with a required <phoneCode>phone</phoneCode> column. Optional: <nameCode>name</nameCode>, <emailCode>email</emailCode>, <companyCode>company</companyCode>, <tagsCode>tags</tagsCode> (comma-separated; quote multi-tag cells).",
|
||
"uploadDropzone": "Click to choose a CSV file",
|
||
"uploadHint": ".csv up to your browser limit",
|
||
"rowsReady": "{count} row ready",
|
||
"rowsReady_plural": "{count} rows ready",
|
||
"preview": "Preview · first {count}",
|
||
"previewTags": "{tags} tag · {contacts} contact",
|
||
"previewTags_plural": "{tags} tags · {contacts} contacts",
|
||
"moreRows": "+ {count} more row not shown",
|
||
"moreRows_plural": "+ {count} more rows not shown",
|
||
"importComplete": "Import complete",
|
||
"resultImported": "{count} imported",
|
||
"resultTags": "{count} tag assigned",
|
||
"resultTags_plural": "{count} tags assigned",
|
||
"resultSkipped": "{count} skipped",
|
||
"resultFailed": "{count} failed",
|
||
"willBeCreated": "{name} (will be created on import)",
|
||
"columns": {
|
||
"phone": "Phone",
|
||
"name": "Name",
|
||
"email": "Email",
|
||
"company": "Company",
|
||
"tags": "Tags"
|
||
},
|
||
"cancel": "Cancel",
|
||
"close": "Close",
|
||
"importBtn": "Import {count} contact",
|
||
"importBtn_plural": "Import {count} contacts",
|
||
"toastNoValidRows": "No valid rows found. Ensure CSV has a \"phone\" column header.",
|
||
"toastTagsWarning": "Contacts imported, but some tag assignments failed.",
|
||
"toastImported": "{count} contact imported",
|
||
"toastImported_plural": "{count} contacts imported",
|
||
"toastTagsAssigned": "{count} tag assignment applied",
|
||
"toastTagsAssigned_plural": "{count} tag assignments applied",
|
||
"toastTagsSkipped": "Unknown tags skipped (create them in Settings first): {sample}{more}",
|
||
"toastSkipped": "{count} duplicate skipped",
|
||
"toastSkipped_plural": "{count} duplicates skipped",
|
||
"toastFailed": "{count} contact failed to import",
|
||
"toastFailed_plural": "{count} contacts failed to import",
|
||
"toastError": "Import failed"
|
||
},
|
||
"customFields": {
|
||
"title": "Custom fields",
|
||
"desc": "Define extra contact fields (e.g. ZIP code, lead source). They appear on every contact and in the “Update Contact Field” automation action.",
|
||
"addField": "Add",
|
||
"fieldName": "New field name…",
|
||
"loading": "Loading…",
|
||
"empty": "No custom fields yet.",
|
||
"renameAria": "Rename {name}",
|
||
"deleteTitle": "Delete field",
|
||
"deleteConfirm": "Delete \"{name}\"? This also removes its stored value on every contact. This cannot be undone.",
|
||
"toastNoAccount": "Your profile is not linked to an account.",
|
||
"toastDuplicate": "A field named \"{name}\" already exists.",
|
||
"toastCreateFailed": "Could not create field. You may not have permission.",
|
||
"toastCreated": "Created \"{name}\".",
|
||
"toastRenameFailed": "Could not rename field.",
|
||
"toastDeleteFailed": "Could not delete field.",
|
||
"toastDeleted": "Deleted \"{name}\"."
|
||
}
|
||
},
|
||
"Pipelines": {
|
||
"page": {
|
||
"selectPipeline": "Select Pipeline",
|
||
"noPipelinesYet": "No pipelines yet",
|
||
"managePipelines": "Manage Pipelines",
|
||
"addPipeline": "Add Pipeline",
|
||
"addDeal": "Add Deal",
|
||
"createToStartTracking": "Create a pipeline to start tracking deals",
|
||
"createPipeline": "Create Pipeline",
|
||
"newPipeline": "New Pipeline",
|
||
"pipelineName": "Pipeline Name",
|
||
"pipelineNamePlaceholder": "e.g., Enterprise Sales",
|
||
"defaultStagesDesc": "Default stages (New Lead → Won) will be created automatically.",
|
||
"cancel": "Cancel",
|
||
"creating": "Creating...",
|
||
"createPipelineBtn": "Create Pipeline",
|
||
"toastFailedLoadPipelines": "Failed to load pipelines",
|
||
"toastFailedMoveDeal": "Failed to move deal",
|
||
"toastFailedCreatePipeline": "Failed to create pipeline",
|
||
"toastPipelineCreated": "Pipeline created",
|
||
"toastNotLinkedToAccount": "Your profile is not linked to an account."
|
||
},
|
||
"board": {
|
||
"dropDealHere": "Drop a deal here",
|
||
"addDeal": "Add Deal"
|
||
},
|
||
"card": {
|
||
"noContact": "No contact",
|
||
"won": "Won",
|
||
"lost": "Lost"
|
||
},
|
||
"form": {
|
||
"editDeal": "Edit Deal",
|
||
"newDeal": "New Deal",
|
||
"title": "Title",
|
||
"titlePlaceholder": "Deal title",
|
||
"contact": "Contact",
|
||
"selectContact": "Select a contact",
|
||
"linkToConversation": "Link to Conversation",
|
||
"value": "Value",
|
||
"currency": "Currency",
|
||
"expectedCloseDate": "Expected Close Date",
|
||
"stage": "Stage",
|
||
"assignedTo": "Assigned To",
|
||
"unassigned": "Unassigned",
|
||
"notes": "Notes",
|
||
"notesPlaceholder": "Add notes...",
|
||
"status": "Status",
|
||
"markAsWon": "Mark as Won",
|
||
"markAsLost": "Mark as Lost",
|
||
"reopenDeal": "Reopen deal",
|
||
"cancel": "Cancel",
|
||
"saving": "Saving...",
|
||
"saveChanges": "Save Changes",
|
||
"createDeal": "Create Deal",
|
||
"deletePrompt": "Delete this deal?",
|
||
"confirm": "Confirm",
|
||
"deleting": "Deleting...",
|
||
"deleteDeal": "Delete Deal",
|
||
"toastRequired": "Title, contact, and stage are required",
|
||
"toastFailedSave": "Failed to save deal",
|
||
"toastNotSignedIn": "Not signed in",
|
||
"toastNotLinked": "Your profile is not linked to an account.",
|
||
"toastFailedCreate": "Failed to create deal",
|
||
"toastUpdated": "Deal updated",
|
||
"toastCreated": "Deal created",
|
||
"toastFailedStatus": "Failed to update deal status",
|
||
"toastMarkedWon": "Marked as won",
|
||
"toastMarkedLost": "Marked as lost",
|
||
"toastReopened": "Deal reopened",
|
||
"toastFailedDelete": "Failed to delete deal",
|
||
"toastDeleted": "Deal deleted"
|
||
},
|
||
"settings": {
|
||
"managePipeline": "Manage Pipeline",
|
||
"deletePipeline": "Delete Pipeline",
|
||
"deletePipelineDesc": "This will archive all deals in this pipeline. This cannot be undone.",
|
||
"cancel": "Cancel",
|
||
"deleting": "Deleting...",
|
||
"deletePipelineBtn": "Delete Pipeline",
|
||
"pipelineName": "Pipeline Name",
|
||
"stages": "Stages",
|
||
"newStageNamePlaceholder": "New stage name",
|
||
"add": "Add",
|
||
"createNewPipeline": "Create a new pipeline",
|
||
"saving": "Saving...",
|
||
"saveChanges": "Save Changes",
|
||
"dragToReorder": "Drag to reorder",
|
||
"changeColor": "Change color",
|
||
"toastFailedSave": "Failed to save pipeline",
|
||
"toastSaved": "Pipeline saved",
|
||
"toastFailedAddStage": "Failed to add stage",
|
||
"toastMoveOrDeleteDeals": "Move or delete deals in this stage first",
|
||
"toastFailedDeleteStage": "Failed to delete stage",
|
||
"toastFailedDeletePipeline": "Failed to delete pipeline",
|
||
"toastDeleted": "Pipeline deleted"
|
||
},
|
||
"analytics": {
|
||
"totalDeals": "Total Deals",
|
||
"totalDealsTooltip": "Count of every deal in this pipeline that isn't marked as Lost. Won deals are still included.",
|
||
"pipelineValue": "Pipeline Value",
|
||
"pipelineValueTooltip": "Sum of the dollar values of all deals in this pipeline, excluding deals marked as Lost.",
|
||
"avgDealSize": "Avg Deal Size",
|
||
"avgDealSizeTooltip": "Pipeline Value divided by Total Deals — the average value of a single non-lost deal.",
|
||
"weightedValue": "Weighted Value",
|
||
"weightedValueTooltip": "Expected revenue: each open deal's value × its stage probability. First stage ≈ 10%, stages progress up to 90%, Won = 100%. Lost deals are excluded.",
|
||
"wonThisMonth": "Won This Month",
|
||
"wonThisMonthTooltip": "Deals marked as Won since the first day of the current month.",
|
||
"lostThisMonth": "Lost This Month",
|
||
"lostThisMonthTooltip": "Deals marked as Lost since the first day of the current month.",
|
||
"howCalculated": "How {label} is calculated"
|
||
}
|
||
}
|
||
}
|