wacrm/messages/en.json

921 lines
35 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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"
}
},
"Broadcasts": {
"page": {
"title": "Broadcasts",
"subtitle": "Send bulk messages to your contacts using approved templates.",
"newBroadcast": "New Broadcast",
"noBroadcastsYet": "No broadcasts yet",
"createFirst": "Create your first broadcast to reach your contacts at scale.",
"table": {
"name": "Name",
"template": "Template",
"recipients": "Recipients",
"delivery": "Delivery",
"read": "Read",
"status": "Status",
"date": "Date"
},
"errorLoad": "Failed to load broadcasts",
"retry": "Retry"
},
"status": {
"draft": "Draft",
"scheduled": "Scheduled",
"sending": "Sending",
"sent": "Sent",
"failed": "Failed",
"pending": "Pending",
"delivered": "Delivered",
"read": "Read",
"replied": "Replied",
"unknown": "Unknown"
},
"detail": {
"backToBroadcasts": "Back to Broadcasts",
"notFound": "Broadcast not found",
"template": "Template: {name}",
"createdAt": "Created {date}",
"deletePrompt": "Delete this broadcast?",
"cancel": "Cancel",
"confirm": "Confirm",
"deleting": "Deleting…",
"delete": "Delete",
"cannotDeleteSending": "Cannot delete while a broadcast is actively sending",
"deleteHover": "Delete this broadcast",
"funnel": "Funnel",
"recipientsHeader": "Recipients ({filtered} of {total})",
"recipientsHeaderAll": "Recipients ({total})",
"allStatuses": "All statuses",
"exportCsv": "Export CSV",
"noRecipients": "No recipients found.",
"noRecipientsFilter": "No recipients match this filter.",
"table": {
"contact": "Contact",
"phone": "Phone",
"status": "Status",
"sent": "Sent",
"delivered": "Delivered",
"read": "Read",
"error": "Error"
},
"stats": {
"totalRecipients": "Total Recipients",
"sent": "Sent",
"delivered": "Delivered",
"read": "Read",
"replied": "Replied",
"failed": "Failed"
},
"toastFailedDelete": "Failed to delete: {error}",
"toastDeleted": "Broadcast deleted"
},
"new": {
"title": "New Broadcast",
"subtitle": "Create and send a broadcast message to your contacts.",
"steps": {
"template": "Template",
"audience": "Audience",
"personalize": "Personalize",
"send": "Send"
},
"toastGiveName": "Give the broadcast a name before saving a draft.",
"toastNotSignedIn": "Not signed in.",
"toastNotLinked": "Your profile is not linked to an account.",
"toastFailedDraft": "Failed to save draft: {error}",
"toastDraftSaved": "Draft saved"
},
"wizard": {
"next": "Next",
"back": "Back",
"cancel": "Cancel",
"chooseTemplate": {
"title": "Choose a Template",
"subtitle": "Select an approved message template for your broadcast.",
"noTemplates": "No templates available.",
"createFirst": "Create a template in Settings first.",
"errorLoad": "Failed to load templates"
},
"selectAudience": {
"title": "Select Audience",
"subtitle": "Choose who will receive this broadcast.",
"method": {
"all": "All Contacts",
"tags": "Filter by Tags",
"customField": "Custom Field",
"csv": "Upload CSV"
},
"allDesc": "Send to all {count} contacts in your database.",
"allDescLoading": "Send to all contacts in your database.",
"tagDesc": "Send to contacts matching specific tags.",
"customFieldDesc": "Send to contacts matching a custom field rule.",
"csvDesc": "Upload a CSV with phone numbers (and optional names).",
"selectTags": "Select Tags",
"searchTags": "Search tags...",
"noTagsFound": "No tags found.",
"excludeTags": "Exclude Tags (Optional)",
"searchExcludeTags": "Search tags to exclude...",
"field": "Field",
"selectField": "Select a field...",
"operator": "Operator",
"operatorIs": "Is",
"operatorIsNot": "Is not",
"operatorContains": "Contains",
"value": "Value",
"valuePlaceholder": "Value to match",
"uploadCsv": "Upload CSV File",
"csvFormatDesc": "Must contain a 'phone' column (E.164 format). 'name' column is optional.",
"csvContactsFound": "{count} valid contact(s) found in CSV.",
"errorLoadTags": "Failed to load tags",
"errorLoadFields": "Failed to load custom fields",
"errorCsvParse": "Could not parse CSV file.",
"errorCsvMissingPhone": "CSV must have a 'phone' column."
},
"personalize": {
"title": "Personalize Variables",
"subtitle": "Map your template variables to contact fields or provide static values.",
"headerImage": "Header Image",
"headerImageDesc": "This template requires a header image.",
"imageUrl": "Image URL",
"imageUrlPlaceholder": "https://example.com/image.jpg",
"variables": "Variables",
"varDesc": "Set values for {{name}}",
"type": "Type",
"typeStatic": "Static Value",
"typeContact": "Contact Field",
"typeCustom": "Custom Field",
"staticValue": "Static Value",
"contactField": "Contact Field",
"selectContactField": "Select field...",
"customField": "Custom Field",
"selectCustomField": "Select custom field...",
"preview": "Preview",
"previewSample": "Showing preview with sample data.",
"noPreview": "Preview not available.",
"fieldMap": {
"name": "Name",
"phone": "Phone",
"email": "Email"
}
},
"scheduleSend": {
"title": "Review & Send",
"subtitle": "Give your broadcast a name and confirm sending.",
"broadcastName": "Broadcast Name",
"broadcastNamePlaceholder": "e.g., Summer Promo",
"summary": "Summary",
"template": "Template:",
"audience": "Audience:",
"audienceAll": "All contacts",
"audienceTags": "Filtered by tags",
"audienceField": "Filtered by custom field",
"audienceCsv": "CSV upload",
"variables": "Variables:",
"variablesMapped": "{count} mapped",
"saveDraft": "Save as Draft",
"sendNow": "Send Broadcast",
"sending": "Sending...",
"preparing": "Preparing...",
"progressDesc": "Processing {current} of {total} recipients...",
"toastFailedPreview": "Failed to load preview data"
}
}
},
"Automations": {
"list": {
"title": "Automations",
"subtitle": "Build workflows that react to WhatsApp® events automatically.",
"create": "Create Automation",
"retry": "Retry",
"templatesTitle": "Quick-start templates",
"emptyTitle": "No automations yet",
"emptyDesc": "Pick a template above or create one from scratch.",
"runs": "{count} run",
"runsPlural": "{count} runs",
"lastRun": "last {time}",
"activate": "Activate",
"deactivate": "Deactivate",
"edit": "Edit",
"duplicate": "Duplicate",
"viewLogs": "View Logs",
"delete": "Delete",
"cancel": "Cancel",
"deleteTitle": "Delete automation",
"deleteDesc": "This permanently removes {name} and its execution history. This cannot be undone.",
"toasts": {
"activated": "Automation activated",
"paused": "Automation paused",
"duplicated": "Automation duplicated",
"deleted": "Automation deleted",
"updateError": "Failed to update",
"duplicateError": "Failed to duplicate",
"deleteError": "Failed to delete"
}
},
"edit": {
"loading": "Loading...",
"loadError": "Failed to load ({status})",
"back": "Back to Automations"
},
"logs": {
"title": "Execution logs",
"loadError": "Failed to load logs",
"emptyTitle": "No executions yet",
"emptyDesc": "Trigger this automation to see runs here.",
"unknownContact": "Unknown contact",
"step": "{count} step",
"stepPlural": "{count} steps",
"noSteps": "No steps recorded.",
"status": {
"success": "success",
"partial": "partial",
"failed": "failed"
},
"back": "Back",
"backAria": "Back"
},
"builder": {
"steps": {
"send_message": "Send Message",
"send_template": "Send Template",
"add_tag": "Add Tag",
"remove_tag": "Remove Tag",
"assign_conversation": "Assign Conversation",
"update_contact_field": "Update Contact Field",
"create_deal": "Create Deal",
"wait": "Wait",
"condition": "Condition (If/Else)",
"send_webhook": "Send Webhook",
"close_conversation": "Close Conversation"
},
"triggers": {
"new_message_received": { "label": "New Message Received", "hint": "Any incoming message" },
"first_inbound_message": { "label": "First Message from Contact", "hint": "First time this contact ever messages you (works for manually-added contacts too)" },
"keyword_match": { "label": "Keyword Match", "hint": "Message contains specific keyword(s)" },
"new_contact_created": { "label": "New Contact Created", "hint": "When a contact is auto-created from an incoming message" },
"conversation_assigned": { "label": "Conversation Assigned", "hint": "When assigned to an agent" },
"tag_added": { "label": "Tag Added", "hint": "When a tag is added to a contact" },
"time_based": { "label": "Time-Based", "hint": "On a recurring schedule" }
},
"trigger": "Trigger",
"triggerType": "Trigger type",
"keywords": "Keywords",
"keywordsHint": "Comma-separated list (e.g. hello, help, buy)",
"schedule": "Schedule",
"scheduleHint": "Cron expression (e.g. 0 9 * * 1-5)",
"active": "Active",
"activeAria": "Active",
"save": "Save",
"saveDraft": "Save Draft",
"untitled": "Untitled automation",
"backToAutomations": "Back to automations",
"toasts": {
"saved": "Automation saved",
"created": "Automation created",
"saveFailed": "Save failed"
},
"tags": {
"select": "Select a tag…",
"placeholder": "Tag id",
"unknown": "{id} (unknown tag)"
},
"fields": {
"name": "Name",
"email": "Email",
"company": "Company",
"customFields": "Custom fields",
"unknown": "{id} (unknown field)"
},
"agents": {
"select": "Select an agent…",
"placeholder": "Agent id",
"unknown": "{id} (unknown agent)"
},
"pipelines": {
"pipelineLabel": "Pipeline",
"pipelineIdLabel": "Pipeline id",
"stageLabel": "Stage",
"stageIdLabel": "Stage id",
"selectPipeline": "Select a pipeline…",
"selectStage": "Select a stage…",
"selectPipelineFirst": "Select a pipeline first…",
"unknownPipeline": "{id} (unknown pipeline)",
"unknownStage": "{id} (unknown stage)"
},
"templates": {
"templateLabel": "Template",
"templateNameLabel": "Template name",
"languageLabel": "Language",
"select": "Select a template…",
"unknown": "{name} ({lang}) — not in approved list",
"unknownLang": "unknown"
},
"branches": {
"yes": "Yes",
"no": "No"
},
"addStep": "Add step",
"config": {
"messageText": "Message text",
"placeholderMessageText": "Hi! Thanks for reaching out…",
"tagLabel": "Tag",
"modeLabel": "Mode",
"modes": {
"round_robin": "Round-robin",
"specific": "Specific agent"
},
"agentLabel": "Agent",
"fieldLabel": "Field",
"valueLabel": "Value",
"placeholderValue": "Text or {{ vars.x }} / {{ message.text }}",
"titleLabel": "Title",
"amountLabel": "Amount",
"unitLabel": "Unit",
"units": {
"minutes": "Minutes",
"hours": "Hours",
"days": "Days"
},
"subjectLabel": "Subject",
"subjects": {
"tag_presence": "Tag presence",
"contact_field": "Contact field",
"message_content": "Message content",
"time_of_day": "Time of day"
},
"operandLabel": "Operand",
"placeholderTime": "HH:mm-HH:mm",
"placeholderContact": "name / email / company",
"placeholderTag": "tag id",
"urlLabel": "URL",
"headersLabel": "Headers",
"placeholderHeaders": "{\"Authorization\": \"Bearer ...\"}",
"bodyTemplateLabel": "Body template",
"placeholderBody": "{\"id\": \"{{ contact.id }}\"}",
"matchType": "Match type",
"matchContains": "Contains",
"matchExact": "Exact"
}
}
}
}