export const enMessages = { ra: { action: { send: "Send", sending: "Sending...", }, auth: { user_menu: "Profile", username: "Username", password: "Password", confirm_password: "Confirm Password", sign_in: "Sign in", sign_in_error: "Authentication failed, please retry", logout: "Logout", show_password: "Show password", hide_password: "Hide password", email: "Email", }, navigation: { no_results: "No results found.", no_filtered_results: "No results found with the current filters.", clear_filters: "Clear filters", }, }, setup: { welcomeTitle: "Welcome to %{title}", welcomeSubtitle: "To get started, you'll need to connect to a Supabase database.", encryptedTitle: "Secured", encryptedDesc: "Your data is secured with AES-256", turboTitle: "Turbo", turboDesc: "Optimized for speed and scale", getStarted: "Get Started", connectionMode: "Connection Mode", selectVector: "Select your initialization vector", quickIgnition: "Quick Ignition", autoProvision: "Auto-provision via token", manualSync: "Manual Sync", existingCredentials: "Use existing credentials", abortAccess: "Abort Access", injectCoordinates: "Inject your database coordinates", platformUrl: "Platform URL", urlHelp: "Found in Project Settings > API > Project URL", anonMatrixKey: "Anon / Matrix Key", keyHelp: "Found in Project Settings > API > anon (public) key", back: "Back", engage: "Engage", managedTokenTitle: "Forge Token", managedTokenSubtitle: "Supabase API coordinates", personalAccessToken: "Personal Access Token", generateAt: "Generate at", scanOrgs: "Scan Organizations", projectConfigTitle: "Project Config", engineParameters: "Engine parameters", projectName: "Project Name", hostingSector: "Hosting Sector", vesselOrg: "Vessel (Organization)", initializeSystem: "Initialize System", provisioning: "Provisioning", provisioningFailed: "Provisioning Failed", provisioningFailedDetails: "Provisioning failed. Check logs above for details.", assemblingInfrastructure: "Assembling infrastructure...", checkLogs: "Check logs for details", tryAgain: "Try Again", useManualConnect: "Use Manual Connect Instead", installationComplete: "Installation Complete", installingDatabase: "Installing Database", applyingSchemaDna: "Applying schema DNA...", systemReady: "System ready!", tokenRequired: "Token required", readyToInstall: "Ready to install", managementToken: "Management Token", installDatabaseSchema: "Install Database Schema", retryInstallation: "Retry Installation", projectIdRequired: "Project ID is required for migration.", tokenDescription: "A Supabase access token is required to install the database schema and sync existing users.", connectingProvisioning: "Connecting to Supabase provisioning engine...", projectReady: "✨ Project ready! Initializing database...", startingMigration: "Starting database migration...", setupCompleteLog: "🎉 Setup complete!", checkingDatabase: "Checking database status...", dbNotInitialized: "Database not initialized. Migration required to set up schema.", dbVersionBehind: "Database version (%{dbVersion}) is behind app version (%{appVersion}). Migration recommended.", dbLegacySchema: "Database uses legacy schema but is already initialized and working.", skippingMigration: "✅ Skipping migration. Database ready to use!", reloadingApp: "Reloading app with new credentials...", dbReady: "✅ Database already set up and ready!", setupComplete: "Setup Complete!", redirecting: "Redirecting to your CRM...", liveFeed: "Live Feed", awaitingSignals: "Awaiting kernel signals...", regions: { "us-east-1": "US East (N. Virginia)", "us-west-1": "US West (N. California)", "eu-central-1": "Europe (Frankfurt)", "ap-southeast-1": "Asia Pacific (Singapore)", }, }, crm: { root: { database_checking: "Checking database connection...", }, changelog: { title: "What's New", }, setup_wizard: { welcome: { title: "Welcome to %{title}", subtitle: "Database Configuration", description: "To get started, you'll need to connect to a Supabase database.", no_project: "Don't have a Supabase project?", create_free: "Create one for free at", need_title: "What you'll need:", need_url: "Your Supabase project URL or project ID", need_key: "Your API key (anon or publishable key)", find_hint: "Where do I find these?", continue: "Continue", }, credentials: { title: "Connect to Supabase", description: "Enter your Supabase project credentials", url_label: "Project URL or ID", url_placeholder: "xxxxx or https://xxxxx.supabase.co", url_valid: "Valid Supabase URL", url_project_id: "Valid project ID (will expand to full URL)", url_invalid_format: "Invalid URL format", url_must_be_supabase: "URL must be a Supabase domain", url_hint: "Enter full URL or project ID", url_expansion: "Will expand to: %{url}", url_default_hint: "Enter full URL or just the project ID (from Project Settings → API)", key_label: "API Key", key_placeholder: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", key_valid_publishable: "Valid publishable key format", key_valid_anon: "Valid anon key format", key_incomplete_publishable: "Publishable key seems incomplete", key_incomplete_anon: "Anon key seems incomplete", key_invalid: "Must be a valid Supabase API key (anon or publishable)", key_default_hint: "Anon or publishable key (from Project Settings → API)", back: "Back", connect: "Connect", error_failed: "Connection failed", }, validating: { title: "Validating Connection", description: "Testing your Supabase credentials...", wait: "Please wait...", }, success: { title: "Connection Successful!", description: "Your Supabase database is now connected", reloading: "Reloading application...", }, }, nav: { dashboard: "Dashboard", contacts: "Contacts", companies: "Companies", deals: "Deals", invoices: "Invoices", tasks: "Tasks", ai: "AI", users: "Users", settings: "My info", database: "Database", integrations: "Integrations", back: "Back", }, view: { table: "Table", kanban: "Kanban", }, action: { new_task: "New Task", new_deal: "New Deal", }, filter: { active: "Active", active_filters: "Active filters", contact: "Contact", company: "Company", deal: "Deal", loading: "Loading...", my_tasks: "My Tasks", assigned_to: "Assigned to", archived: "Archived", priority: "Priority", remove: "Remove %{filter} filter", search: "Search", status: "Status", }, dashboard: { invoice_revenue: "Invoice Revenue", deal_pipeline: "Deal Pipeline", upcoming_tasks: "Upcoming Tasks", task_filters: { overdue: "Overdue", today: "Today", tomorrow: "Tomorrow", this_week: "This week", later: "Later", }, load_more: "Load more", tasks_empty: "All caught up for now.", upcoming_deal_revenue: "Upcoming Deal Revenue", revenue: "Revenue", outstanding_invoices: "Outstanding Invoices", deals_chart: { won: "Won", lost: "Lost", }, hot_contacts: "Hot Contacts", create_contact: "Create contact", hot_contacts_empty: { line_1: "No hot contacts yet.", line_2: "Create a contact to get started.", }, latest_activity: "Latest Activity", latest_notes: "Latest Notes", notes: { on: "on", added: "added", deal: "Deal", contact: "Contact", }, pipeline: { title: "Deals Pipeline", }, stepper: { title: "Getting Started", progress: "Step %{step} of %{total}", install: "Install the app", add_contact: "Add your first contact", new_contact: "New Contact", add_note: "Add a note", add_note_hint: "Add a note to your first contact.", add_note_button: "Add note", }, welcome: { title: "Welcome", body_1: "is a full-featured CRM you can run locally.", body_2: "It comes with contacts, companies, deals, and tasks out of the box.", powered_by: "Powered by", fork_of: ", a fork of", by_marmelab: "by Marmelab.", }, }, task: { column: { expand: "Expand %{column} column", collapse: "Collapse %{column} column", }, field: { task: "Task", type: "Type", related_to: "Related To", description: "Description", due_date: "Due Date", completed: "Completed", priority: "Priority", status: "Status", assigned_to: "Assigned To", created_by: "Created by", actions: "Actions", }, action: { create_task: "Create task", add_task: "Add task", edit_task: "Edit task", edit: "Edit", mark_complete: "Mark complete", snooze_tomorrow: "Snooze until tomorrow", postpone_day: "Postpone by 1 day", show_details: "Show details", postpone_tomorrow: "Postpone to tomorrow", postpone_next_week: "Postpone to next week", menu: "Task actions", }, notification: { marked_complete: "Task marked complete", snoozed_tomorrow: "Task snoozed until tomorrow", postponed_day: "Task postponed by 1 day", created: "Task created", updated: "Task updated", deleted: "Task deleted", deleted_success: "Task deleted successfully", move_failed: "Unable to move task. Please try again.", }, note: { marked_complete: "Task marked as complete via quick action", marked_complete_quick: "Marked complete via quick action", snoozed_to_date: "Due date snoozed to %{date}", postponed_to_date: "Due date postponed to %{date}", quick_edit: "Task updated via quick edit action", }, section: { info: "Info", related: "Related", assignment: "Assignment", activity_timeline: "Activity Timeline", activity_description: "Track all status changes and updates for this task", notes: "Notes", notes_description: "Add notes and updates to this task", }, related: { none: "No related entity", prefix: "Re:", }, entity_type: { link_to: "Link to %{type}", none: "None", contact: "Contact", company: "Company", deal: "Deal", }, due: { label: "Due", relative: "Due %{time}", no_date: "No due date", overdue_one: "Overdue by 1 day", overdue_many: "Overdue by %{count} days", today: "Due today", tomorrow: "Due tomorrow", in_days_one: "Due in 1 day", in_days_many: "Due in %{count} days", }, activity: { loading: "Loading activity...", empty: "No activity recorded.", created: "created this task", updated: "updated this task", updated_field: "changed %{field}", assigned: "assigned this task", completed: "completed this task", reopened: "reopened this task", duplicated: "duplicated this task", archived: "archived this task", truncated: "Showing %{count} of %{total} activities. Older activities are not displayed.", }, dialog: { edit: { title: "Edit task", description: "Update task details, assignment, and related entity", }, create: { title: "Create a new task", title_for: "Create a new task for %{name}", this_record: "this record", description: "Add a new task with description, due date, and assignment details", }, }, status: { todo: "To Do", in_progress: "In Progress", blocked: "Blocked", done: "Done", cancelled: "Cancelled", other: "Other", }, priority: { low: "Low", medium: "Medium", high: "High", urgent: "Urgent", }, type: { none: "None", email: "Email", demo: "Demo", lunch: "Lunch", meeting: "Meeting", follow_up: "Follow-up", thank_you: "Thank you", ship: "Ship", call: "Call", }, }, note: { placeholder: "Add a note", show_options: "Show options", options_hint: "(attach files, or change details)", date: "Date", added: "Note added", action: { add: "Add this note", }, status: { cold: "Cold", warm: "Warm", hot: "Hot", in_contract: "In Contract", }, }, activity: { added_note: "added a note", added_note_about: "added a note about", added_note_about_deal: "added a note about deal", at: "at", edit_note: "Edit note", delete_note: "Delete note", note_deleted: "Note deleted", cancel: "Cancel", update_note: "Update note", added_deal: "added deal", to_company: "to company", added_company: "added company", added: "added", pagination: "Showing %{from}-%{to} of %{total} activities", error_load: "Failed to load activity log", }, deal: { field: { name: "Deal name", description: "Description", amount: "Amount", expected_closing_date: "Expected Closing", stage: "Stage", category: "Category", account_manager: "Owner", budget: "Budget", }, section: { linked_to: "Linked to", misc: "Misc", deal_info: "Deal Info", company: "Company", contacts: "Contacts", assignment: "Assignment", notes: "Notes", notes_description: "Track conversations, decisions, and updates for this deal", }, action: { edit: "Edit Deal", create: "Create deal", archive: "Archive", unarchive: "Unarchive", view_archived: "View archived deals", }, notification: { archived: "Deal archived", unarchived: "Deal unarchived", error_archiving: "Error: deal not archived", error_unarchiving: "Error: deal not unarchived", }, empty: { title: "No deals found", description: "It seems your deal list is empty.", no_contacts: "It seems your contact list is empty.", add_contact: "Add your first contact", before_creating: "before creating a deal.", }, status: { archived: "ARCHIVED", past: "Past", invalid_date: "Invalid date", }, placeholder: { select_company: "Please select a company first to see its contacts", }, filter: { only_companies_i_manage: "Only companies I manage", }, list: { archived_title: "Archived Deals", }, stage: { opportunity: "Opportunity", proposal_sent: "Proposal Sent", in_negociation: "In Negotiation", won: "Won", lost: "Lost", delayed: "Delayed", }, category: { other: "Other", copywriting: "Copywriting", print_project: "Print project", ui_design: "UI Design", website_design: "Website design", }, }, contact: { gender: { male: "He/Him", female: "She/Her", nonbinary: "They/Them", }, field: { first_name: "First name", last_name: "Last name", title: "Title", company: "Company", email: "Email", email_addresses: "Email addresses", phone_number: "Phone number", phone_numbers: "Phone numbers", linkedin_url: "Linkedin URL", background: "Background info (bio, how you met, etc)", has_newsletter: "Has newsletter", account_manager: "Account manager", first_seen: "Added on", last_seen_on: "Last activity on", followed_by: "Followed by", subscribed_to_newsletter: "Subscribed to newsletter", linkedin: "LinkedIn", at: "at", }, section: { identity: "Identity", position: "Position", personal_info: "Personal info", misc: "Misc", activity_timeline: "Activity Timeline", activity_timeline_description: "Real-time processing status of incoming activities", notes: "Notes", notes_description: "Permanent record of interactions and outcomes", background_info: "Background info", tags: "Tags", tasks: "Tasks", }, action: { edit: "Edit Contact", show: "Show Contact", create: "New Contact", export_vcard: "Export to vCard", merge_with_another: "Merge with another contact", import: "Import", }, type: { work: "Work", home: "Home", other: "Other", }, empty: { title: "No contacts found", description: "It seems your contact list is empty.", }, filter: { last_activity: "Last activity", today: "Today", this_week: "This week", before_this_week: "Before this week", before_this_month: "Before this month", before_last_month: "Before last month", engagement: "Engagement", engagement_status: { strong: "Strong", active: "Active", cooling: "Cooling", cold: "Cold", dormant: "Dormant", }, validation: "Validation", validation_status: { valid: "Valid Email", risky: "Risky Email", invalid: "Invalid Email", }, tags: "Tags", tasks: "Tasks", with_pending_tasks: "With pending tasks", account_manager: "Account Manager", me: "Me", search_placeholder: "Search name, company...", }, health: { title: "Contact Health", no_data: "No health data calculated yet.", relationship_strength: "Relationship Strength", engagement_score: "Engagement Score", last_activity: "Last activity: ", days_ago: "%{days} days ago", today: "Today", yesterday: "Yesterday", contact_validation: "Contact Validation", bounced: "(bounced)", validated: "Validated", status: { valid: "Valid", risky: "Risky", invalid: "Invalid", active: "Active", inactive: "Inactive", not_found: "Not Found", }, }, merge: { title: "Merge Contact", description: "Merge this contact with another one.", current_contact: "Current Contact (will be deleted)", target_contact: "Target Contact (will be kept)", what_will_be_merged: "What will be merged:", notes_to_merge: "%{count} note will be reassigned |||| %{count} notes will be reassigned", tasks_to_merge: "%{count} task will be reassigned |||| %{count} tasks will be reassigned", deals_to_merge: "%{count} deal will be updated |||| %{count} deals will be updated", emails_to_merge: "%{count} email address will be added |||| %{count} email addresses will be added", phones_to_merge: "%{count} phone number will be added |||| %{count} phone numbers will be added", no_data: "No additional data to merge", warning_title: "Warning: Destructive Operation", warning_message: "All data will be transferred to the second contact. This action cannot be undone.", merging: "Merging...", merge_contacts: "Merge Contacts", select_contact: "Please select a contact to merge with", success: "Contacts merged successfully", error: "Failed to merge contacts", }, import: { title: "Import", description: "Import contacts from a CSV file", running: "The import is running, please do not close this tab.", status: "Imported %{count} / %{total} contacts, with %{errors} errors.", remaining_time: "Estimated remaining time: %{time}.", stop: "Stop import", error: "Failed to import this file, please make sure your provided a valid CSV file.", complete: "Contacts import complete. Imported %{count} contacts, with %{errors} errors", template_hint: "Here is a sample CSV file you can use as a template", download_sample: "Download CSV sample", csv_file: "CSV File", }, }, company: { sector: { communication_services: "Communication Services", consumer_discretionary: "Consumer Discretionary", consumer_staples: "Consumer Staples", energy: "Energy", financials: "Financials", health_care: "Health Care", industrials: "Industrials", information_technology: "Information Technology", materials: "Materials", real_estate: "Real Estate", utilities: "Utilities", }, field: { name: "Name", website: "Website", phone_number: "Phone number", linkedin: "LinkedIn", twitter: "Twitter/X", facebook: "Facebook", github: "GitHub", logo_url: "Logo URL", lifecycle_stage: "Lifecycle Stage", company_type: "Company Type", qualification_status: "Qualification Status", employee_count: "Employee Count", revenue_range: "Revenue Range", founded_year: "Founded Year", tax_identifier: "Tax Identifier", address: "Address", city: "City", zipcode: "Zipcode", state: "State", country: "Country", description: "Description", account_manager: "Account manager", first_seen: "Added on", followed_by: "Followed by", size: "Size", revenue: "Revenue", sector: "Sector", context_links: "Context links", }, section: { contact: "Contact", social_profiles: "Social Profiles", context: "Context", address: "Address", additional_info: "Additional information", advanced_settings: "Advanced Settings", external_system_integration: "External System Integration", company_info: "Company Info", main_address: "Main Address", }, action: { edit: "Edit Company", show: "Show Company", create: "Create Company", merge_with_another: "Merge with another company", }, empty: { title: "No companies found", description: "It seems your company list is empty.", }, placeholder: { external_id: "e.g., Salesforce Account ID", company_name: "Company name", create_hint: "Start typing to create a new company", }, error: { invalid_url: "Must be a valid URL", }, notification: { error_creating: "An error occurred while creating the company", }, filter: { me: "Me", }, health: { title: "Company Health", internal_engagement: "Internal Engagement", engagement_score: "Engagement Score", last_activity: "Last activity: ", today: "Today", yesterday: "Yesterday", days_ago: "%{days} days ago", updated: "Updated", external_health: "External Health", last_checked: "Last checked", status: { engaged: "Engaged", quiet: "Quiet", at_risk: "At Risk", unresponsive: "Unresponsive", healthy: "Healthy", risky: "Risky", dead: "Dead", unknown: "Unknown", }, }, size: { 1: "1 employee", 10: "2-9 employees", 50: "10-49 employees", 250: "50-249 employees", 500: "250 or more employees", }, merge: { title: "Merge Company", description: "Merge this company with another one.", current_company: "Current Company (will be deleted)", target_company: "Target Company (will be kept)", what_will_be_merged: "What will be merged:", contacts_to_merge: "%{count} contact will be reassigned |||| %{count} contacts will be reassigned", deals_to_merge: "%{count} deal will be reassigned |||| %{count} deals will be reassigned", links_to_merge: "%{count} context link will be added |||| %{count} context links will be added", no_data: "No additional data to merge", warning_title: "Warning: Destructive Operation", warning_message: "All data will be transferred to the second company. This action cannot be undone.", merging: "Merging...", merge_companies: "Merge Companies", select_company: "Please select a company to merge with", success: "Companies merged successfully", error: "Failed to merge companies", }, }, tag: { action: { add: "Add tag", create: "Create new tag", }, }, integrations: { title: "Integrations", description: "Manage API keys, webhooks, and ingestion channels to integrate RealTimeX CRM with external systems.", tabs: { ingestion: "Ingestion Channels", file_upload: "File Upload", api_keys: "API Keys", webhooks: "Webhooks (Outbound)", }, webhooks: { description: "Webhooks notify external systems when events occur in your CRM.", action: { create: "Create Webhook", create_first: "Create your first webhook", edit: "Edit Webhook", delete: "Delete", update: "Update", }, empty: "No webhooks yet", loading: "Loading...", status: { active: "Active", inactive: "Inactive", more: "+%{count} more", }, fields: { name: "Name", url: "Webhook URL", events: "Events to Subscribe", created: "Created: %{date}", last_triggered: "Last triggered: %{date}", failed_deliveries: "Failed deliveries: %{count}", }, dialog: { create_title: "Create Webhook", create_description: "Create a new webhook to receive event notifications", edit_title: "Edit Webhook", edit_description: "Update webhook configuration", delete_title: "Delete Webhook?", delete_description: "This will permanently delete this webhook. No more events will be sent to this endpoint. This action cannot be undone.", }, placeholder: { name: "e.g., Slack Notifications", url: "https://example.com/webhook", }, notification: { created: "Webhook created successfully", updated: "Webhook updated successfully", deleted: "Webhook deleted successfully", error_creating: "Failed to create webhook", error_updating: "Failed to update webhook", error_deleting: "Failed to delete webhook", }, categories: { contacts: "Contacts", companies: "Companies", deals: "Deals", tasks: "Tasks", invoices: "Invoices", }, events: { "contact.created": "Contact Created", "contact.updated": "Contact Updated", "contact.deleted": "Contact Deleted", "company.created": "Company Created", "company.updated": "Company Updated", "company.deleted": "Company Deleted", "deal.created": "Deal Created", "deal.updated": "Deal Updated", "deal.deleted": "Deal Deleted", "deal.stage_changed": "Deal Stage Changed", "deal.won": "Deal Won", "deal.lost": "Deal Lost", "task.created": "Task Created", "task.updated": "Task Updated", "task.assigned": "Task Assigned", "task.completed": "Task Completed", "task.priority_changed": "Task Priority Changed", "task.archived": "Task Archived", "task.deleted": "Task Deleted", "invoice.created": "Invoice Created", "invoice.updated": "Invoice Updated", "invoice.deleted": "Invoice Deleted", "invoice.status_changed": "Invoice Status Changed", "invoice.sent": "Invoice Sent", }, }, api_keys: { description: "API keys allow external applications to access your CRM data programmatically.", action: { create: "Create API Key", create_first: "Create your first API key", copy: "Copy", copied: "Full API key copied to clipboard", done: "Done", }, empty: "No API keys yet", loading: "Loading...", fields: { name: "Name", created: "Created: %{date}", last_used: "Last used: %{date}", expires: "Expires: %{date}", key_hint: "Click copy to get the full unmasked key", not_available: "API key not available for copying", scopes: "Scopes", expiration: "Expiration (optional)", your_api_key: "Your API Key", }, dialog: { create_title: "Create API Key", create_description: "Create a new API key to access the CRM API", created_title: "API Key Created", created_description: "Copy this key now - it won't be shown again!", delete_title: "Delete API Key?", delete_description: "This will permanently delete this API key. Any applications using this key will stop working immediately. This action cannot be undone.", warning_copy: "Make sure to copy your API key now. You won't be able to see it again!", }, placeholder: { name: "e.g., Production API Key", }, scopes: { "contacts:read": "Contacts: Read", "contacts:write": "Contacts: Write", "companies:read": "Companies: Read", "companies:write": "Companies: Write", "deals:read": "Deals: Read", "deals:write": "Deals: Write", "tasks:read": "Tasks: Read", "tasks:write": "Tasks: Write", "invoices:read": "Invoices: Read", "invoices:write": "Invoices: Write", "activities:write": "Activities: Write (Notes)", }, notification: { created: "API key created successfully", deleted: "API key deleted successfully", error_creating: "Failed to create API key", error_deleting: "Failed to delete API key", error_copying: "Failed to copy API key", }, }, file_upload: { title: "Upload Files", description: "Upload documents, images, audio, or video files to create activities. Files are automatically stored and linked to your account.", action: { upload: "Upload", upload_all: "Upload All", clear_completed: "Clear Completed", drop_files: "Drop files here...", drag_and_drop: "Drag & drop files here, or click to select", supports_all: "Supports all file types (executables blocked for security)", }, fields: { ingestion_channel: "Ingestion Channel", activity_type: "Activity Type", select_channel: "Select channel...", files_count: "Files (%{count})", }, types: { note: "Note", email: "Email", call: "Call Recording", meeting: "Meeting Recording", other: "Other", }, how_it_works: { title: "How it works", step_1: "Files are uploaded directly to secure storage (no database bloat)", step_2: "Each file creates an activity record for tracking and search", step_3: "Large files are handled automatically (no size limits)", step_4: "Files are linked to your selected ingestion channel", step_5: "Activities appear in the Activity Feed immediately", }, notification: { select_channel: "Please select an ingestion channel", success: "File uploaded: %{name}", error: "Upload failed: %{name}", error_network: "Network error", error_status: "Upload failed with status %{status}", error_dangerous: "Executable files are not allowed for security reasons", }, }, ingestion: { title: "Ingestion Channels", description: "Configure inbound channels (Email, Voice, SMS) to ingest activities into your CRM.", action: { create: "Create Channel", add: "Add Ingestion Channel", add_first: "Add your first channel", copy_url: "Copy Webhook URL", url_copied: "Webhook URL copied to clipboard", }, empty: "No ingestion channels configured", loading: "Loading...", fields: { webhook_url: "Webhook URL", created: "Created: %{date}", }, dialog: { create_description: "Configure a new source for incoming activities.", name_label: "Channel Name", provider_label: "Provider", token_label: "Auth Token (Validation)", token_hint: "Required to validate inbound requests.", placeholder_name: "e.g. US Support Line", placeholder_token: "Twilio Auth Token", select_provider: "Select provider", delete_title: "Delete Channel?", delete_description: "This will stop all ingestion from this source. This action cannot be undone.", }, providers: { twilio: "Twilio (Voice/SMS)", postmark: "Postmark (Email)", generic: "Generic / Internal", }, notification: { created: "Ingestion Channel created successfully", deleted: "Channel deleted successfully", error_creating: "Failed to create channel: %{message}", error_deleting: "Failed to delete channel", }, }, }, image_editor: { action: { change: "Change", update: "Update Image", delete: "Delete", }, dialog: { title: "Upload and resize image", dropzone: "Drop a file to upload, or click to select it.", }, alt: "Editable content", }, document_viewer: { error: { docx: "Failed to render DOCX content.", too_large: "File too large (max 50MB). Size: %{size}MB", not_available: "Preview not available for this file type.", access: "Could not access the file. This may be due to a network issue, CORS restriction, or an expired link.", load: "Failed to load document preview.", }, action: { download: "Download File", open_new_tab: "Open in new tab", }, }, email_viewer: { error: { parse: "Failed to parse email file", load: "Failed to load email", }, field: { from: "From", to: "To", cc: "CC", date: "Date", subject_none: "(No Subject)", content_none: "(No content)", attachment: "Attachment", attachments: "Attachments", unknown: "Unknown", unknown_type: "Unknown type", none: "None", }, action: { html: "HTML", text: "Plain Text", download_attachment: "Download attachment", }, }, activity_feed: { empty: "No activities yet.", direction: { inbound: "Inbound", outbound: "Outbound", }, status: { processing: "Processing", failed: "Failed", completed: "Completed", }, label: { processing_content: "Processing content...", processing_failed: "Processing failed.", audio_recording: "Audio Recording", summary: "Summary:", }, type: { email: "Email", call: "Call", sms: "SMS", meeting: "Meeting", note: "Note", }, }, user: { action: { create: "New user", edit: "Edit %{name}", resend_invite: "Resend Invite", send_password_reset: "Send Password Reset", send_reset_link: "Send Reset Link", cancel: "Cancel", sending: "Sending...", send_invitation: "Send Invitation", }, field: { administrator: "Admin", disabled: "Disabled", email_actions: "Email Actions", }, section: { create_title: "Create a new user", }, empty: { title: "No users found", description: "It seems your user list is empty.", }, notification: { invite_sent: "Invitation resent successfully", created_invite_sent: "User created. Invite email sent.", invite_error: "Failed to resend invitation email", reset_sent: "Password reset email sent successfully", reset_error: "Failed to send password reset email", created: "User created. They will soon receive an email to set their password.", create_error: "An error occurred while creating the user.", updated: "User updated successfully", error: "An error occurred. Please try again.", }, dialog: { resend_invitation: { title: "Resend Invitation", description: "Send a new invitation email to %{email}?", fresh_link: "This will send them a fresh invitation link to set up their account.", }, reset_password: { title: "Send Password Reset", description: "Send a password reset email to %{email}?", reset_link: "This will send them a link to reset their password.", }, }, }, auth: { login_with_code: "Login with code", enter_email_for_code: "Enter your email to receive a 6-digit login code", code_sent: "A 6-digit code has been sent to your email", enter_verification_code: "Enter verification code", code_sent_to: "We've sent a 6-digit code to %{email}", invalid_code: "Invalid or expired code. Please try again.", verify_code: "Verify code", verifying: "Verifying...", resend_code: "Resend code", back_to_email: "Back to email", back_to_login: "Back to login", no_access: "You do not have access to this application. Please contact your administrator.", login_successful: "Login successful!", set_new_password: "Set new password", choose_password_details: "Choose a secure password for your account", password_min_length: "Password must be at least 6 characters", passwords_do_not_match: "Passwords do not match", password_updated: "Password updated successfully", update_password: "Update password", updating_password: "Updating...", failed_to_update_password: "Failed to update password", forgot_password_code_verified: "Code verified! Please set your new password.", sign_in: "Sign in", login_otp_link: "Login with email code (OTP)", send_code: "Send code", }, signup: { title: "Welcome to %{title}", subtitle: "Create the first user account to complete the setup.", action: { create: "Create account", creating: "Creating...", }, notification: { success: "Initial user successfully created", error: "An error occurred. Please try again.", }, }, settings: { section: { profile: "My Profile", organization: "Organization Branding", email: "Email Settings", }, notification: { profile_updated: "Your profile has been updated", error: "An error occurred. Please try again", }, action: { change_password: "Change password", }, inbound_email: { title: "Inbound email", description: "You can start sending emails to your server's inbound email address, e.g. by adding it to the Cc: field. RealTimeX CRM will process the emails and add notes to the corresponding contacts.", }, database: { title: "Database Connection", description: "Manage your Supabase database connection settings", connected: "Connected", not_connected: "Not Connected", no_config: "No Supabase database is configured", configured_on: "Configured on %{date}", env_hint: "Using configuration from environment variables. You can override this by setting up a new connection via the UI.", setup_hint: "Connect to a Supabase database to start using RealTimeX CRM. You can create a free project at", anon_key: "Anonymous Key", confirm_clear: "Are you sure you want to clear the database configuration? The app will need to be reconfigured on next launch.", action: { change: "Change Connection", clear: "Clear Configuration", connect: "Connect to Supabase", }, }, }, migration: { banner: { title: "Database Update Available", subtitle: "Schema v%{version} is ready to install", view_details: "View Details", later: "Later", command_copied: "Command copied!", dismiss: "Dismiss", }, modal: { title: "Database Migration Required", description: "Your database schema needs to be updated to v%{version}. Follow the steps below to complete the migration.", overview: { title: "What will happen:", update_schema: "Database schema will be updated to v%{version}", enable_features: "New features and improvements will be enabled", data_safe: "Your existing data will not be affected", duration: "This process usually takes less than 2 minutes", }, prerequisites: { title: "Prerequisites", intro: "Ensure you have the following:", cli_installed: "Supabase CLI installed (see installation below)", project_id: "Your Supabase project ID:", db_password: "Your database password (you'll be prompted)", }, install_cli: { title: "Install Supabase CLI (if not already installed)", macos: "macOS / Linux:", windows_scoop: "Windows (Scoop):", windows_npm: "Windows (npm):", view_all: "View all installation methods", }, run_migration: { title: "Run Migration Command", intro: "Open your terminal and run:", tool_intro: "The migration tool will:", steps: { login: "Prompt you to log in to Supabase (if not already)", project_id: "Ask for your project ID", password: "Request your database password", apply: "Apply all pending migrations automatically", deploy: "Deploy updated edge functions", }, }, refresh: { title: "Refresh the Application", description: "After the migration completes successfully, refresh this page to access the new features.", }, troubleshooting: { title: "Troubleshooting:", logout_prefix: "If login fails, run", logout_suffix: "then try again", password: "Ensure your database password is correct (found in the Supabase Dashboard)", report: "If issues persist, report at", report_link: "GitHub Issues", }, auto: { tab_title: "✨ Auto-Migrate (Recommended)", manual_tab_title: "🛠️ Manual Instructions", title: "One-Click Migration", description: "We will automatically run the migration scripts for you.", project_id: "Project ID", access_token: "Supabase Access Token", generate_token: "Generate Token", access_token_hint: "Required if you are not logged in to the CLI globally.", db_password: "Database Password (Optional)", db_password_placeholder: "Enter only if your project is not linked yet", db_password_hint: "Only required if this is your first time connecting to this project from this machine.", migrating: "Migrating...", start: "Start Migration", logs_placeholder: "Logs will appear here...", init_log: "🚀 Initializing migration process...", error_prefix: "❌ Error: ", failure_toast: "Migration failed. See logs for details.", missing_project_id: "Could not determine Project ID from configuration.", reload_message: "✅ Migration completed! Reloading application...", }, close: "Close", copy: { unsupported: "Copy not supported in this environment — please copy manually.", success: "Copied to clipboard!", error: "Copy failed — please copy manually.", copy_label: "Copy", copied_label: "Copied", }, }, }, common: { activity: "Activity", contacts: "1 Contact |||| %{smart_count} Contacts", notes: "1 Note |||| %{smart_count} Notes", deals: "1 Deal |||| %{smart_count} Deals", invoices: "1 Invoice |||| %{smart_count} Invoices", tasks: "1 Task |||| %{smart_count} Tasks", last_activity: "last activity %{distance} ago", add_contact: "Add contact", add_invoice: "Add invoice", }, days_overdue: "days overdue", }, resources: { contacts: { name: "Contact |||| Contacts", fields: { first_name: "First name", last_name: "Last name", title: "Title", company_id: "Company", email: "Email", phone_number: "Phone number", linkedin_url: "LinkedIn URL", sales_id: "Account manager", nb_tasks: "Tasks", last_seen: "Last activity", }, }, companies: { name: "Company |||| Companies", fields: { name: "Name", website: "Website", phone_number: "Phone number", sector: "Sector", size: "Size", sales_id: "Account manager", nb_contacts: "Contacts", nb_deals: "Deals", created_at: "Added on", context_links: "Context links", }, }, deals: { name: "Deal |||| Deals", fields: { name: "Name", amount: "Amount", category: "Category", stage: "Stage", company_id: "Company", sales_id: "Owner", }, }, tasks: { name: "Task |||| Tasks", fields: { title: "Title", description: "Description", type: "Type", due_date: "Due date", status: "Status", priority: "Priority", sales_id: "Assigned to", contact_id: "Contact", company_id: "Company", deal_id: "Deal", }, }, sales: { name: "User |||| Users", fields: { first_name: "First name", last_name: "Last name", email: "Email", administrator: "Admin", disabled: "Disabled", }, }, invoices: { name: "Invoice |||| Invoices", fields: { invoice_number: "Invoice #", reference: "Reference", company_id: "Company", contact_id: "Contact", deal_id: "Deal", status: "Status", issue_date: "Issue Date", due_date: "Due Date", paid_at: "Paid At", currency: "Currency", subtotal: "Subtotal", discount: "Discount", tax_total: "Tax", total: "Total", amount_paid: "Amount Paid", balance_due: "Balance Due", notes: "Notes", payment_terms: "Payment Terms", terms_and_conditions: "Terms & Conditions", sent_at: "Sent At", viewed_at: "Viewed At", created_at: "Created At", }, status: { draft: "Draft", sent: "Sent", paid: "Paid", overdue: "Overdue", cancelled: "Cancelled", }, section: { details: "Details", billing: "Billing To", items: "Line Items", activity: "Activity", activity_description: "Track all updates and communications for this invoice", actions: "Actions", assigned_to: "Created By", }, item: { name: "Item", description_placeholder: "Add details...", quantity: "Qty", unit_price: "Unit Price", tax: "Tax", total: "Total", tax_rate: "Tax Rate", }, item_type: { service: "Service", product: "Product", hour: "Hour", day: "Day", deposit: "Deposit", }, action: { new_invoice: "New Invoice", add_item: "Add Line Item", edit: "Edit Invoice", mark_as_sent: "Mark as Sent", mark_as_paid: "Mark as Paid", mark_as_cancelled: "Mark as Cancelled", print: "Print", suggest_number: "Suggest Number", export_csv: "Export to CSV", send_email: "Send by Email", download_pdf: "Download PDF", }, notification: { status_updated: "Invoice status updated to %{status}", email_sent: "Invoice #%{number} has been sent to the client's email address", pdf_downloaded: "Invoice #%{number} PDF has been downloaded", }, helper: { invoice_number: "Unique invoice identifier", reference: "Optional external reference number", payment_terms: "e.g., Net 30, Due on receipt", select_company_for_contacts: "Select a company to see its contacts", select_company_for_deals: "Select a company to see its deals", }, email: { subject: "Subject", body: "Message Body", description: "Review and customize the email message before sending it to the client.", body_intro: "Please find attached your invoice #%{number}.", message_label: "Message (Optional)", message_placeholder: "Add a personal message to include in the email...", message_help: "A professional invoice email will be generated automatically with all invoice details.", attachment_title: "PDF Attachment", attachment_help: "Invoice %{number}.pdf will be automatically attached", cc: "CC", cc_placeholder: "cc@example.com, other@example.com", }, empty_items: "No line items added yet", days_overdue: "days overdue", }, business_profile: { name: "Business Profile", fields: { name: "Organization Name", logo: "Organization Logo", address: "Official Address", tax_id: "Tax ID / VAT Number", bank_details: "Bank Details (Payment Instructions)", default_payment_terms: "Default Payment Terms", default_terms_and_conditions: "Default Terms & Conditions", email_from_name: "Email Sender Name", email_from_email: "Email Sender Address", resend_api_key: "Resend API Key", }, notification: { updated: "Organization profile updated successfully", }, }, invoice_templates: { name: "Template |||| Templates", fields: { name: "Template Name", description: "Description", default_payment_terms: "Default Payment Terms", default_terms_and_conditions: "Default Terms & Conditions", default_due_days: "Default Due Days", items: "Line Items", }, action: { create: "New Template", load_template: "Load from Template", save_as_template: "Save as Template", }, notification: { created: "Template created successfully", updated: "Template updated successfully", deleted: "Template deleted successfully", loaded: "Template loaded successfully", }, }, invoice_template_items: { name: "Template Item |||| Template Items", }, }, "ra-supabase": { auth: { password_reset: "Check your emails for a Reset Password message.", }, reset_password: { forgot_password: "Forgot password?", forgot_password_details: "Enter your email to receive a 6-digit code.", }, }, };