import React, { createContext, ReactNode, useContext, useState } from 'react';

export type Language = 'en' | 'pt' | 'es';

interface LanguageContextType {
  language: Language;
  setLanguage: (lang: Language) => void;
  t: (key: string, params?: Record<string, unknown>) => string;
}

const LanguageContext = createContext<LanguageContextType | undefined>(undefined);

const translations = {
  en: {
    // Common
    'common.loading': 'Loading...',
    
    // Navigation
    'nav.dashboard': 'Dashboard',
    'nav.account': 'Account',
    'nav.logout': 'Logout',
    'nav.getStarted': 'Get Started',
    'nav.tagline': 'Talk to your data',
    
    // Hero Section
    'hero.title': 'Turn your data into intelligent conversations',
    'hero.subtitle': 'Connect your data sources and ask questions in natural language. Get instant insights without complex queries.',
    'hero.getStarted': 'Get Started',
    'hero.howItWorks': 'How it works',
    
    // How it works
    'howItWorks.title': 'How it works',
    'howItWorks.step1.title': 'Connect your data',
    'howItWorks.step1.description': 'Upload CSV files, connect to BigQuery, or add other data sources',
    'howItWorks.step2.title': 'Ask questions',
    'howItWorks.step2.description': 'Use natural language to query your data',
    'howItWorks.step3.title': 'Get insights',
    'howItWorks.step3.description': 'Receive instant answers with charts and visualizations',
    'howItWorks.step4.title': 'Alerts',
    'howItWorks.step4.description': 'Create alerts to monitor metrics and receive notifications',
    
    // Benefits
    'benefits.title': 'Benefits',
    'benefits.easy.title': 'Easy to use',
    'benefits.easy.description': 'No need to learn SQL or complex query languages',
    'benefits.easy.extended': 'Ask questions in natural language and get insights without writing complex queries.',
    'benefits.easy.tagline': 'Simplified data analysis.',
    'benefits.fast.title': 'Fast insights',
    'benefits.fast.description': 'Get answers in seconds, not hours',
    'benefits.fast.extended': 'Connect your data sources and start asking questions immediately to get instant answers.',
    'benefits.fast.tagline': 'Make decisions with agility.',
    'benefits.secure.title': 'Secure',
    'benefits.secure.description': 'Your data remains private and secure',
    'benefits.secure.extended': 'Your data is encrypted and you maintain full control over who can access it.',
    'benefits.secure.tagline': 'Privacy guaranteed.',
    
    // Auth
    'auth.title': 'Access your account',
    'auth.login': 'Login',
    'auth.register': 'Register',
    'auth.username': 'Username',
    'auth.email': 'Email',
    'auth.password': 'Password',
    'auth.name': 'Name',
    'auth.loginButton': 'Sign in',
    'auth.registerButton': 'Create account',
    'auth.loginError': 'Failed to sign in. Try again.',
    'auth.registerError': 'Failed to register. Try again.',
    'auth.registerSuccess': 'Registration successful! Check your email to confirm and then sign in.',
    'auth.forgotPassword': 'Forgot password?',
    
    // Settings
    'settings.title': 'Settings',
    'settings.subscription': 'Account',
    'settings.users': 'Users',
    'settings.workspaceAccess': 'Access Control',
    'settings.language': 'Language',
    'nav.flows': 'Flows (how it works)',
    'nav.documentation': 'Docs',
    'doc.title': 'Documentation',
    'doc.subtitle': 'How Data Talks works: from adding sources to the agent\'s question and answer, by source type.',
    'doc.searchPlaceholder': 'Search documentation...',
    'settings.logout': 'Logout',
    'settings.newWorkspace': 'New workspace',
    
    // Dashboard
    'dashboard.title': 'Dashboard',
    'dashboard.dataSources': 'Data Sources',
    'dashboard.connectedSources': 'connected source(s)',
    'dashboard.addSource': 'Configure Sources',
    'dashboard.agentConfig': 'Agent Configuration',
    'dashboard.agentConfigDesc': 'Add source details for the agent to understand the context.',
    'dashboard.configureAgent': 'Configure Agent',
    'dashboard.questionsAnswers': 'Questions & Answers',
    'dashboard.activeAgents': 'active agent(s)',
    'dashboard.newQuestion': 'New Question',
    'dashboard.alerts': 'Alerts',
    'dashboard.configuredAlerts': 'configured alert(s)',
    'dashboard.createAlert': 'Create Alert',
    'dashboard.channelConfig': 'Channel Configuration',
    'dashboard.channelConfigDesc': 'Configure which channels your agents will be available on.',
    'dashboard.configureChannels': 'Configure Channels',
    'dashboard.dataExplore': 'Data Explore',
    'dashboard.dataExploreDesc': 'Explore and analyze your data with interactive visualizations and insights.',
    'dashboard.autoML': 'Auto ML',
    'dashboard.autoMLDesc': 'Automatically build and deploy machine learning models from your data.',
    'dashboard.comingSoon': 'Coming Soon',
    
    // Sources
    'sources.title': 'Sources',
    'sources.add': 'Add',
    'sources.filesTab': 'Files (CSV/XLSX)',
    'sources.bigQueryTab': 'Google BigQuery',
    'sources.uploadButton': 'Upload',
    'sources.uploading': 'Uploading...',
    'sources.connectBigQuery': 'Connect BigQuery',
    'sources.connecting': 'Connecting...',
    'sources.credentials': 'Credentials (JSON)',
    'sources.project': 'Project',
    'sources.dataset': 'Dataset',
    'sources.allowedTables': 'Allowed tables (comma separated)',
    'sources.projectPlaceholder': 'my-project',
    'sources.datasetPlaceholder': 'analytics',
    'sources.tablesPlaceholder': 'orders, customers',
    'sources.noSourcesFound': 'No data sources found. Upload CSV or XLSX files above.',
    'sources.deleteConfirm': 'Are you sure you want to delete this data source?',
    'sources.uploadError': 'Upload error:',
    'sources.selectCredentialsFile': 'Please select the JSON credentials file',
    'sources.fillRequiredFields': 'Please fill in all required fields',
    'sources.bigQueryConnected': 'BigQuery connected successfully! Source:',
    'sources.bigQueryError': 'Error connecting BigQuery:',
    'sources.unknownError': 'Unknown error',
    'sources.createdAt': 'Created at:',
    'sources.langflowIntegration': 'Langflow Integration',
    'sources.langflowName': 'Name in Langflow:',
    'sources.langflowPath': 'Path:',
    'sources.warning': 'Warning:',
    'sources.fileNotUploaded': 'File was not uploaded to Langflow',
    'sources.rows': 'Rows:',
    'sources.columns': 'Columns',
    'sources.firstRows': 'First rows:',
    'sources.size': 'Size:',
    'sources.connectedTables': 'Connected tables:',
    'sources.tablesNotFound': 'Tables not found:',
    'sources.removeFile': 'Remove',
    'sources.bigQueryInstructions': 'How to get your BigQuery credentials JSON file:',
    'sources.bigQueryStep1': '1. Go to Google Cloud Console',
    'sources.bigQueryStep2': '2. Navigate to APIs & Services > Credentials',
    'sources.bigQueryStep3': '3. Click "Create Credentials" > "Service Account"',
    'sources.bigQueryStep4': '4. Fill in the service account details and click "Create"',
    'sources.bigQueryStep5': '5. Click on the created service account',
    'sources.bigQueryStep6': '6. Go to "Keys" tab and click "Add Key" > "Create new key"',
    'sources.bigQueryStep7': '7. Select "JSON" format and download the file',
    'sources.bigQueryStep8': '8. Upload the downloaded JSON file above',
    'sources.bigQueryDocsLink': 'View official documentation',
    'sources.useExistingCredential': 'Use existing credential',
    'sources.selectCredential': 'Select a credential',
    'sources.savedSourcesAppear': 'Saved sources will appear here',
    'sources.addSourcesInstructions': 'Click Add above to add CSV or XLSX files, connect to BigQuery, or link Google Sheets.',
    'sources.relationships': 'SQL Links',
    'sources.active': 'Active',
    'sources.sourceActivated': 'Source activated successfully',
    'sources.sqlSourceActivated': 'SQL source activated successfully',
    'sources.sqlSourceDeactivated': 'SQL source deactivated successfully',
    'sources.activateError': 'Error activating source',

    // SQL Relationships
    'sqlRelationships.title': 'SQL Relationships',
    'sqlRelationships.description': 'Connect SQL sources so the workspace can query related tables together.',
    'sqlRelationships.loadError': 'Failed to load SQL relationships',
    'sqlRelationships.saveSuccess': 'SQL relationships saved successfully',
    'sqlRelationships.saveError': 'Failed to save SQL relationships',
    'sqlRelationships.needMoreSourcesTitle': 'Add more SQL sources',
    'sqlRelationships.needMoreSourcesDescription': 'You need at least two SQL sources in this workspace to create relationships.',
    'sqlRelationships.suggestionsTitle': 'Automatic suggestions',
    'sqlRelationships.suggestionsDescription': 'Columns with the same name are suggested automatically.',
    'sqlRelationships.addManual': 'Add relationship',
    'sqlRelationships.noSuggestions': 'No automatic suggestions were found for the current SQL sources.',
    'sqlRelationships.useSuggestion': 'Use suggestion',
    'sqlRelationships.dismissSuggestion': 'Exclude (hide permanently)',
    'sqlRelationships.relationshipsTitle': 'Configured relationships',
    'sqlRelationships.relationshipsDescription': 'These links will be used automatically in multi-source SQL questions.',
    'sqlRelationships.noRelationships': 'No relationships configured yet.',
    'sqlRelationships.relationshipLabel': 'Relationship {index}',
    'sqlRelationships.leftSide': 'Left side',
    'sqlRelationships.rightSide': 'Right side',
    'sqlRelationships.swapSides': 'Swap sides',
    'sqlRelationships.selectSource': 'Select source',
    'sqlRelationships.selectTable': 'Select table',
    'sqlRelationships.selectColumn': 'Select column',
    'sqlRelationships.cancel': 'Cancel',
    'sqlRelationships.save': 'Save relationships',
    'sqlRelationships.diagramTab': 'ER Diagram',
    'sqlRelationships.connectionsTab': 'Connections',
    'sqlRelationships.diagramTitle': 'Entity relationship view',
    'sqlRelationships.diagramDescription': 'See how the selected SQL tables connect through the configured relationships.',
    'sqlRelationships.diagramEmpty': 'Add at least one relationship to render the ER diagram.',
    'sqlRelationships.diagramPanHint': 'Drag the diagram with the mouse to navigate',
    'sqlRelationships.diagramEditorTitle': 'Edit from diagram',
    'sqlRelationships.diagramEditorDescription': 'Click a connection line to edit or remove it here.',
    'sqlRelationships.diagramSelectedTitle': 'Selected connection',
    'sqlRelationships.diagramSelectedDescription': 'Adjust the relationship directly from the ER diagram view.',
    'sqlRelationships.diagramSelectRelationship': 'Select a connection in the diagram to edit it here.',
    
    // Agent
    'agent.title': 'Agent Configuration',
    'agent.name': 'Name',
    'agent.namePlaceholder': 'E.g.: Sales Analysis 2025',
    'agent.selectAgent': 'Select Agent',
    'agent.description': 'Description',
    'agent.descriptionPlaceholder': 'Describe what this agent should do...',
    'agent.dataSource': 'Data Source',
    'agent.selectDataSource': 'Select a data source',
    'agent.sharing': 'Sharing',
    'agent.enableSharing': 'Enable sharing',
    'agent.sharePassword': 'Share password',
    'agent.sharePasswordPlaceholder': 'Leave empty for no password',
    'agent.shareLink': 'Share link',
    'agent.copyLink': 'Copy link',
    'agent.linkCopied': 'Link copied!',
    'agent.suggestedQuestions': 'Suggested Questions',
    'agent.addQuestion': 'Add question',
    'agent.questionPlaceholder': 'Enter a suggested question...',
    'agent.save': 'Save',
    'agent.saving': 'Saving...',
    'agent.delete': 'Delete',
    'agent.deleting': 'Deleting...',
    'agent.deleteConfirm': 'Are you sure you want to delete the agent "{name}"? This action cannot be undone.',
    'agent.deleted': 'Agent deleted',
    'agent.deletedSuccess': 'Agent deleted successfully',
    'agent.error': 'Error',
    'agent.saved': 'Agent saved',
    'agent.savedSuccess': 'Agent saved successfully',
    'agent.createAgent': 'Create Agent',
    'agent.saveChanges': 'Save Changes',
    'agent.newAgent': 'New agent',
    'agent.noDataSourcesFound': 'No data sources found. Add sources first.',
    'agent.selectDataSourceHelp': 'Select the data source that this agent will have access to answer questions.',
    'agent.addSuggestedQuestionsHelp': 'Add questions that will appear as suggestions when someone uses this agent.',
    'agent.enableSharingHelp': 'Allows external people to access this agent',
    'agent.linkCopiedDescription': 'Shareable link copied to clipboard',
    'agent.passwordProtected': 'Password protected access',
    'agent.publicAccess': 'Public access - anyone with the link can access',
    'agent.passwordUpdated': 'Password updated',
    'agent.passwordUpdatedSuccess': 'Share password updated successfully',
    'agent.sharingEnabled': 'Sharing enabled',
    'agent.sharingDisabled': 'Sharing disabled',
    'agent.sharingEnabledSuccess': 'Shareable link created successfully',
    'agent.sharingDisabledSuccess': 'Shareable link removed',
    
     // Questions
     'questions.title': 'Questions',
     'questions.beforeStart': 'Before you start',
     'questions.createAgentFirst': 'Create an agent in "Briefing" to start asking questions.',
     'questions.agent': 'Agent',
     'questions.questionPlaceholder': 'Ex.: What is the revenue for the last 3 months by region?',
     'questions.ask': 'Ask',
     'questions.processing': 'Processing...',
     'questions.error': 'Error:',
     'questions.feedbackError': 'Error saving feedback:',
     'questions.suggestedQuestions': 'Suggested Questions',
     'questions.suggestedQuestionsLabel': 'Suggested Questions',
     'questions.clickToAsk': 'Click to ask',
     'questions.noSessions': 'No questions asked yet.',
     'questions.noQuestionsFound': 'No questions found yet.',
     'questions.processingQuestion': 'Processing your question...',
     'questions.question': 'Question',
     'questions.answerNotAvailable': 'Answer not available',
     'questions.analysisResult': 'Analysis Result',
     'questions.followUpQuestions': 'Follow-up Questions',
     'questions.positiveFeedbackLabel': 'Mark as positive feedback',
     'questions.negativeFeedbackLabel': 'Mark as negative feedback',
     'questions.deleteQuestionLabel': 'Delete question',
     'questions.deleteQuestionConfirm': 'Are you sure you want to delete this question?',
     'questions.status': 'Status',
     'questions.availableColumns': 'Available Columns',
     'questions.kpis': 'KPIs',
     'questions.warmupQuestions': 'Warmup Questions',
     'filters.button': 'Filters',
     'filters.title': 'Filters',
     'filters.help': 'Applied as a constraint prefix on every question you send.',
     'filters.clearAll': 'Clear',
     'filters.any': 'Any',
     'onboarding.filtersTitle': 'Suggested filters',
     'onboarding.filtersHint': 'Date and category filters become a workspace-level menu next to the logs button.',
     'onboarding.filtersEmpty': 'No filters suggested. You can add them later in the source settings.',
     'questions.clearConversation': 'Clear conversation',
     'questions.seoDescription': 'Ask questions in natural language',
     'questions.dateFormat': 'en-US',
     
     // Agent Settings
     'agentSettings.title': 'Agent Settings',
     'agentSettings.sqlMode': 'SQL Mode',
    'agentSettings.sqlModeHelp': 'When enabled, the agent will respond with the SQL query instead of the final answer.',
    'agentSettings.instructions': 'Specific Instructions for the Agent',
     'agentSettings.instructionsPlaceholder': 'Enter specific instructions that the agent should follow when answering questions...',
     'agentSettings.instructionsHelp': 'These instructions will be used by the agent to customize responses.',
     'agentSettings.warmupQuestions': 'Warmup Questions',
     'agentSettings.warmupQuestionsHelp': 'These questions will appear below the available columns to help users get started.',
     'agentSettings.addQuestion': 'Add new warmup question...',
     'agentSettings.cancel': 'Cancel',
     'agentSettings.save': 'Save',
     'agentSettings.saving': 'Saving...',
     'agentSettings.loadError': 'Error loading settings',
     'agentSettings.saveSuccess': 'Settings saved successfully',
     'agentSettings.saveError': 'Error saving settings',

    // Telegram
    'telegram.title': 'Telegram Integration',
    'telegram.description': 'Connect this workspace to a Telegram group. The bot will answer messages using this workspace data.',
    'telegram.connections': 'Connected groups',
    'telegram.refresh': 'Refresh',
    'telegram.connect': 'Connect',
    'telegram.generatingLink': 'Connecting...',
    'telegram.instructionsReady': 'Instructions generated. Follow the steps below in Telegram to finish the connection.',
    'telegram.linkOpened': 'Telegram link opened. Add the bot to the group and wait for the connection.',
    'telegram.notConfigured': 'No Telegram bot configuration is available. Configure the default bot in the backend .env or add one in Account > Connections.',
    'telegram.connectError': 'Error generating connection link',
    'telegram.configLoadError': 'Error loading Telegram configurations',
    'telegram.connectionConfigLabel': 'Telegram configuration',
    'telegram.connectionConfigPlaceholder': 'Select a bot configuration',
    'telegram.selectConfigRequired': 'Select a Telegram configuration before connecting.',
    'telegram.noBotConfigTitle': 'No Telegram configuration available',
    'telegram.noBotConfigDescriptionPrefix': 'Configure TELEGRAM_BOT_TOKEN and TELEGRAM_BOT_USERNAME in the backend .env or add a new Telegram connection in ',
    'telegram.configureConnectionsLink': 'Account > Connections',
    'telegram.noBotConfigDescriptionSuffix': '.',
    'telegram.noConnections': 'No groups connected yet. Click',
    'telegram.noConnectionsSuffix': 'to get started.',
    'telegram.remove': 'Remove connection',
    'telegram.removeConfirm': 'Remove the connection with',
    'telegram.removeSuccess': 'Connection removed successfully.',
    'telegram.removeError': 'Error removing connection',
    'telegram.fallbackTitle': 'Connection instructions',
    'telegram.fallbackDescription': 'Use the temporary command below to connect the bot manually. You do not need to open a Telegram link from here.',
    'telegram.fallbackExpires': 'Valid until:',
    'telegram.fallbackStep1': '1. Create or open the target group in Telegram.',
    'telegram.fallbackStep2': '2. Add the bot',
    'telegram.fallbackStep3': '3. Send the command below in the group to connect it to this workspace.',
    'telegram.copyCommand': 'Copy command',
    'telegram.copyLink': 'Copy link',
    'telegram.commandCopied': 'Command copied.',
    'telegram.linkCopied': 'Link copied.',
    'telegram.copyError': 'Could not copy to clipboard.',
    'whatsapp.title': 'WhatsApp Integration',
    'whatsapp.description': 'Connect this workspace to a WhatsApp Business phone number. Messages sent to that number will be answered using this workspace data.',
    'whatsapp.connect': 'Connect',
    'whatsapp.connecting': 'Connecting...',
    'whatsapp.refresh': 'Refresh',
    'whatsapp.connectionConfigLabel': 'WhatsApp configuration',
    'whatsapp.connectionConfigPlaceholder': 'Select a WhatsApp configuration',
    'whatsapp.selectConfigRequired': 'Select a WhatsApp configuration before connecting.',
    'whatsapp.noBotConfigTitle': 'No WhatsApp configuration available',
    'whatsapp.noBotConfigDescriptionPrefix': 'Configure WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_ACCESS_TOKEN and WHATSAPP_VERIFY_TOKEN in the backend .env or add a new WhatsApp connection in ',
    'whatsapp.configureConnectionsLink': 'Account > Connections',
    'whatsapp.noBotConfigDescriptionSuffix': '.',
    'whatsapp.noConnections': 'No phone number connected yet. Click',
    'whatsapp.noConnectionsSuffix': 'to connect.',
    'whatsapp.remove': 'Remove connection',
    'whatsapp.removeConfirm': 'Remove the WhatsApp connection for',
    'whatsapp.removeSuccess': 'Connection removed successfully.',
    'whatsapp.removeError': 'Error removing connection',
    'whatsapp.connectSuccess': 'WhatsApp connected successfully.',
    'whatsapp.connectError': 'Error connecting WhatsApp',
    'whatsapp.configLoadError': 'Error loading WhatsApp configurations',
    'whatsapp.webhookTitle': 'Webhook configuration',
    'whatsapp.webhookDescription': 'Register the following URL in your Meta App dashboard as the webhook URL for WhatsApp:',
    'whatsapp.webhookCopied': 'Webhook URL copied.',
    'whatsapp.copyWebhook': 'Copy URL',
    'slack.title': 'Slack Integration',
    'slack.description': 'Connect this workspace to a Slack channel. The bot will answer messages and slash commands using this workspace data.',
    'slack.connect': 'Connect channel',
    'slack.connecting': 'Connecting...',
    'slack.refresh': 'Refresh',
    'slack.addToSlack': 'Add to Slack',
    'slack.connectionConfigLabel': 'Slack configuration',
    'slack.connectionConfigPlaceholder': 'Select a Slack configuration',
    'slack.selectConfigRequired': 'Select a Slack configuration before connecting.',
    'slack.channelId': 'Channel ID',
    'slack.channelIdPlaceholder': 'e.g. C01ABCDEF23',
    'slack.channelIdRequired': 'Enter the Slack channel ID to connect.',
    'slack.needsOAuth': 'Needs OAuth',
    'slack.oauthSuccess': 'Slack workspace connected successfully. Refresh the list to see the update.',
    'slack.noBotConfigTitle': 'No Slack configuration available',
    'slack.noBotConfigDescriptionPrefix': 'Add a Slack app configuration in ',
    'slack.configureConnectionsLink': 'Account > Connections',
    'slack.noBotConfigDescriptionSuffix': ' to get started.',
    'slack.noConnections': 'No channels connected yet. Click',
    'slack.noConnectionsSuffix': 'to connect a channel.',
    'slack.remove': 'Remove connection',
    'slack.removeConfirm': 'Remove the Slack connection for',
    'slack.removeSuccess': 'Connection removed successfully.',
    'slack.removeError': 'Error removing connection',
    'slack.connectSuccess': 'Slack channel connected successfully.',
    'slack.connectError': 'Error connecting Slack channel',
    'slack.configLoadError': 'Error loading Slack configurations',
    'slack.webhookUrls': 'Webhook URLs',
    'slack.webhookUrlsHint': 'Configure these URLs in your Slack app settings (Event Subscriptions and Slash Commands).',
    'slack.urlCopied': 'URL copied.',
    'slack.copyError': 'Could not copy to clipboard.',
    'connections.title': 'Connections',
    'connections.add': 'Add connection',
    'connections.addTitle': 'Add Telegram connection',
    'connections.addDescription': 'Save a Telegram bot configuration to use when connecting workspaces.',
    'connections.nameLabel': 'Connection name',
    'connections.namePlaceholder': 'e.g. Sales bot',
    'connections.telegramTokenLabel': 'TELEGRAM_BOT_TOKEN',
    'connections.telegramUsernameLabel': 'TELEGRAM_BOT_USERNAME',
    'connections.envBadge': 'Default (.env)',
    'connections.help': 'Saved Telegram configurations can be selected when connecting a workspace.',
    'connections.empty': 'No connection configurations yet',
    'connections.emptyDescription': 'Add a Telegram bot here or configure the default bot in the backend .env file.',
    'connections.emptyHelp': 'You do not have a default Telegram bot in the environment or any saved connection yet.',
    'connections.loading': 'Loading connections...',
    'connections.loadError': 'Could not load connections',
    'connections.requiredFields': 'Fill in all required fields',
    'connections.saveSuccess': 'Connection saved successfully',
    'connections.saveError': 'Error saving connection',
    'connections.delete': 'Delete connection',
    'connections.deleteTitle': 'Delete connection',
    'connections.deleteDescription': 'Delete the connection "{name}"?',
    'connections.deleteConfirm': 'Delete',
    'connections.deleteSuccess': 'Connection deleted successfully',
    'connections.deleteError': 'Error deleting connection',
    'connections.cancel': 'Cancel',
    'connections.saving': 'Saving...',
    'connections.telegramSection': 'Telegram',
    'connections.whatsappSection': 'WhatsApp',
    'connections.addWhatsApp': 'Add WhatsApp',
    'connections.addWhatsAppTitle': 'Add WhatsApp connection',
    'connections.addWhatsAppDescription': 'Save a WhatsApp Business API configuration to use when connecting workspaces.',
    'connections.whatsappPhoneNumberIdLabel': 'WHATSAPP_PHONE_NUMBER_ID',
    'connections.whatsappAccessTokenLabel': 'WHATSAPP_ACCESS_TOKEN',
    'connections.whatsappVerifyTokenLabel': 'WHATSAPP_VERIFY_TOKEN',
    'connections.whatsappVerifyTokenPlaceholder': 'A secret string you define',
    'connections.whatsappEmpty': 'No WhatsApp configurations yet',
    'connections.whatsappEmptyDescription': 'Add a WhatsApp Business API config here or set the defaults in the backend .env file.',
    'connections.slackClientIdLabel': 'Slack Client ID',
    'connections.slackClientSecretLabel': 'Slack Client Secret',
    'connections.slackSigningSecretLabel': 'Slack Signing Secret',
    'connections.typeLabel': 'Type',
    
    // Alerts
    'alerts.title': 'Alerts',
    'alerts.beforeStart': 'Before you start',
    'alerts.createAgentFirst': 'Create an agent in "Briefing" to start creating alerts.',
    'alerts.agent': 'Agent',
    'alerts.alertName': 'Alert Name',
    'alerts.question': 'Question',
    'alerts.email': 'Email',
    'alerts.emailPlaceholder': 'your@email.com',
    'alerts.frequency': 'Frequency',
    'alerts.daily': 'Daily',
    'alerts.weekly': 'Weekly',
    'alerts.monthly': 'Monthly',
    'alerts.executionTime': 'Execution Time',
    'alerts.dayOfWeek': 'Day of Week',
    'alerts.dayOfMonth': 'Day of Month',
    'alerts.monday': 'Monday',
    'alerts.tuesday': 'Tuesday',
    'alerts.wednesday': 'Wednesday',
    'alerts.thursday': 'Thursday',
    'alerts.friday': 'Friday',
    'alerts.saturday': 'Saturday',
    'alerts.sunday': 'Sunday',
    'alerts.createAlert': 'Create Alert',
    'alerts.creating': 'Creating...',
    'alerts.fillRequiredFields': 'Please fill in all required fields',
    'alerts.success': 'Success',
    'alerts.alertCreated': 'Alert created successfully!',
    'alerts.errorCreatingAlert': 'Error creating alert',
    'alerts.error': 'Error',
    'alerts.noAlerts': 'No alerts configured yet.',
    'alerts.deleteConfirm': 'Are you sure you want to delete this alert?',
    'alerts.deleted': 'Alert deleted',
    'alerts.deletedSuccess': 'Alert deleted successfully',
    'alerts.newAlert': 'New Alert',
    'alerts.alertNameLabel': 'Alert Name',
    'alerts.alertNamePlaceholder': 'Alert name',
    'alerts.agentLabel': 'Agent',
    'alerts.selectAgentPlaceholder': 'Select an agent',
    'alerts.emailLabel': 'Email for notification',
    'alerts.questionLabel': 'Question/Query',
    'alerts.questionPlaceholder': 'What question or condition to monitor?',
    'alerts.frequencyLabel': 'Frequency',
    'alerts.executionTimeLabel': 'Execution Time',
    'alerts.dayOfWeekLabel': 'Day of Week',
    'alerts.dayOfMonthLabel': 'Day of Month',
    'alerts.noAlertsConfigured': 'No alerts configured. Create your first alert above.',
    'alerts.remove': 'Remove',
    'alerts.questionField': 'Question:',
    'alerts.emailField': 'Email:',
    'alerts.scheduleField': 'Schedule:',
    'alerts.at': 'at',
    'alerts.day': 'Day',
    'alerts.createdAt': 'Created at:',
    'alerts.nextExecution': 'Next execution:',
    'alerts.alertRemoved': 'Alert removed',
    'alerts.alertType': 'Type',
    'alerts.typeAlert': 'Alert',
    'alerts.typeReport': 'Scheduled Report',
    'alerts.activeAlerts': 'Active Alerts',
    'alerts.pause': 'Pause',
    'alerts.resume': 'Resume',
    'alerts.test': 'Test',
    'alerts.testing': 'Testing...',
    'alerts.testSuccess': 'Alert executed successfully!',
    'alerts.testFailed': 'Alert test failed',
    'alerts.history': 'History',
    'alerts.lastRun': 'Last run:',
    'alerts.noExecutions': 'No executions yet.',
    'alerts.executionDate': 'Date',
    'alerts.status': 'Status',
    'alerts.emailSent': 'Email',
    'alerts.webhooksFired': 'Webhooks',
    'alerts.duration': 'Duration',
    'alerts.webhooks': 'Outgoing Webhooks',
    'alerts.addWebhook': 'Add Webhook',
    'alerts.webhookName': 'Webhook Name',
    'alerts.webhookNamePlaceholder': 'My webhook',
    'alerts.webhookUrl': 'URL',
    'alerts.createWebhook': 'Create Webhook',
    'alerts.noWebhooks': 'No webhooks configured.',
    'alerts.webhookCreated': 'Webhook created!',
    'alerts.webhookRemoved': 'Webhook removed',
    'alerts.events': 'Events',
    'alerts.lastTriggered': 'Last triggered:',
    'alerts.cancel': 'Cancel',
    'alerts.reportQuestionPlaceholder': 'What report should be generated?',

    // Account
    'account.title': 'Account',
    
    // BigQuery Credentials
    'bigquery.addCredential.title': 'Add New Credential',
    'bigquery.addCredential.description': 'Upload a new BigQuery service key',
    'bigquery.addCredential.nameLabel': 'Credential Name',
    'bigquery.addCredential.namePlaceholder': 'E.g.: Production, Development, etc.',
    'bigquery.addCredential.fileLabel': 'Credentials File (.json)',
    'bigquery.addCredential.fileSelected': 'Selected file:',
    'bigquery.addCredential.uploadButton': 'Add Credential',
    'bigquery.addCredential.uploading': 'Uploading...',
    'bigquery.configured.title': 'Configured Credentials',
    'bigquery.configured.description': 'Manage your credentials',
    'bigquery.configured.loading': 'Loading credentials...',
    'bigquery.configured.empty': 'No credentials configured. Add one above.',
    'bigquery.configured.name': 'Name',
    'bigquery.configured.projectId': 'Project ID',
    'bigquery.configured.langflowPath': 'Langflow Path',
    'bigquery.configured.createdAt': 'Created at',
    'bigquery.configured.actions': 'Actions',
    'bigquery.delete.title': 'Confirm deletion',
    'bigquery.delete.description': 'Are you sure you want to remove the credential "{name}"? This action cannot be undone.',
    'bigquery.delete.cancel': 'Cancel',
    'bigquery.delete.confirm': 'Delete',
    'bigquery.errors.invalidFile': 'Please select a valid JSON file',
    'bigquery.errors.missingFields': 'Please fill in the name and select a file',
    'bigquery.errors.invalidJson': 'Invalid JSON file',
    'bigquery.errors.uploadFailed': 'Error adding credential',
    'bigquery.errors.loadFailed': 'Error loading credentials',
    'bigquery.errors.deleteFailed': 'Error removing credential',
    'bigquery.success.added': 'Credential added successfully!',
    'bigquery.success.deleted': 'Credential removed successfully',

    'credentials.sql.title': 'SQL Connections',
    'credentials.sql.loading': 'Loading SQL connections...',
    'credentials.sql.empty': 'No SQL connections configured.',
    'credentials.sql.emptyHint': 'Add a SQL database source to see connections here.',
    'credentials.sql.tables': 'tables',
    
    // Footer
    'footer.copyright': '© {year} Talk to your data. All rights reserved.',
    
         // Channels
     'channels.title': 'Channels',
     'channels.subtitle': 'Connect and manage your communication channels to streamline customer interactions',
     'channels.whatsapp.name': 'WhatsApp',
     'channels.whatsapp.description': 'Connect your WhatsApp Business API to receive and respond to messages',
     'channels.slack.name': 'Slack',
     'channels.slack.description': 'Integrate with Slack to manage conversations and notifications',
     'channels.telegram.name': 'Telegram',
     'channels.telegram.description': 'Connect Telegram bot for automated customer support',
     'channels.comingSoon': 'Coming Soon',
     'channels.available': 'Available',
     'channels.connectWhatsApp': 'Connect WhatsApp',
     'channels.connectSlack': 'Connect Slack',
     'channels.connectTelegram': 'Connect Telegram',
     'channels.connecting': 'Connecting...',
     'channels.connected': 'Connected',
     'channels.needMoreIntegrations.title': 'Need More Integrations?',
     'channels.needMoreIntegrations.description': 'We\'re constantly adding new channel integrations. Contact our support team to request specific platforms.',
     'channels.requestIntegration': 'Request Integration',
     
     // Pricing
     'pricing.title': 'Pricing',
     'pricing.subtitle': 'Choose the plan that best fits your needs',
           'pricing.free.title': 'Free',
      'pricing.free.price': '$0',
      'pricing.free.period': '/month',
      'pricing.free.description': 'Perfect for getting started',
      'pricing.free.button': 'Get Started',
                       'pricing.pro.title': 'Pro',
       'pricing.pro.price': '$199',
       'pricing.pro.period': '/month',
      'pricing.pro.description': 'Ideal for growing teams',
      'pricing.pro.button': 'Start Pro Trial',
           'pricing.enterprise.title': 'Enterprise',
      'pricing.enterprise.price': 'Custom',
      'pricing.enterprise.period': '',
      'pricing.enterprise.description': 'For large organizations',
      'pricing.enterprise.button': 'Contact Sales',
     'pricing.features': 'Features',
     'pricing.mostPopular': 'Most Popular',
     'pricing.billedAnnually': 'Billed annually',
     'pricing.billedMonthly': 'Billed monthly',
     'pricing.save20': 'Save 20%',
     'pricing.needCustom': 'Need something custom?',
     'pricing.contactUs': 'Contact us',
     
     // Account Page Tabs
      'account.tabs.usage': 'Usage',
      'account.tabs.llm': 'LLM / AI',
      'account.tabs.sources': 'Data Sources',
      'account.tabs.credentials': 'Credentials',
      'account.tabs.connections': 'Connections',
      'account.tabs.users': 'Users',
      'account.tabs.organization': 'Organization',
      'account.tabs.audit': 'Audit Trail',
    // Audit Trail
    'audit.title': 'Audit Trail',
    'audit.search': 'Search',
    'audit.searchPlaceholder': 'Search actions, users, resources...',
    'audit.category': 'Category',
    'audit.allCategories': 'All categories',
    'audit.dateFrom': 'From',
    'audit.dateTo': 'To',
    'audit.filter': 'Filter',
    'audit.noResults': 'No audit records found.',
    'audit.totalRecords': 'records',
    'audit.page': 'Page',
    'audit.exportSuccess': 'CSV exported successfully.',
    'audit.retention': 'Retention',
    'audit.retentionTitle': 'Retention Policy',
    'audit.retentionDescription': 'Set how long audit logs are kept. Older records will be deleted when the policy is applied.',
    'audit.retentionDays': 'Retention period',
    'audit.days': 'days',
    'audit.forever': 'Forever (no deletion)',
    'audit.retentionSaved': 'Retention policy saved.',
    'audit.retentionApplied': 'Retention applied',
    'audit.recordsDeleted': 'records deleted',
    'audit.applyNow': 'Apply now',
    'audit.cancel': 'Cancel',
    'audit.save': 'Save',
    'audit.col.timestamp': 'Timestamp',
    'audit.col.action': 'Action',
    'audit.col.category': 'Category',
    'audit.col.user': 'User',
    'audit.col.resource': 'Resource',
    'audit.col.detail': 'Detail',
    // LLM Settings
    'llmSettings.title': 'LLM / AI Settings',
    'llmSettings.description': 'Configure the AI model used to answer questions. Use OpenAI-compatible endpoints, Ollama, or LiteLLM proxy.',
    'llmSettings.provider': 'Provider',
    'llmSettings.openaiApiKey': 'OpenAI API Key',
    'llmSettings.openaiApiKeyHelp': 'Your API key from platform.openai.com. Leave blank to keep existing key.',
    'llmSettings.openaiBaseUrl': 'OpenAI-Compatible URL',
    'llmSettings.openaiBaseUrlHelp': 'Default: https://api.openai.com/v1. You can also use compatible endpoints such as Gemini OpenAI-compatible APIs.',
    'llmSettings.openaiModel': 'OpenAI Model',
    'llmSettings.openaiModelHelp': 'Enter any compatible model name, such as gpt-4o-mini or gemini-2.0-flash.',
    'llmSettings.openaiAudioModel': 'OpenAI Audio Model',
    'llmSettings.ollamaBaseUrl': 'Ollama Server URL',
    'llmSettings.ollamaBaseUrlHelp': 'Local: http://localhost:11434 or remote server URL.',
    'llmSettings.ollamaModel': 'Ollama Model',
    'llmSettings.ollamaModelPlaceholder': 'Select or type model name',
    'llmSettings.ollamaModelHelp': 'Type the model name (e.g. llama3.2) or fetch available models.',
    'llmSettings.litellmBaseUrl': 'LiteLLM Proxy URL',
    'llmSettings.litellmBaseUrlHelp': 'URL of the LiteLLM proxy (e.g. http://localhost:4000).',
    'llmSettings.litellmApiKey': 'API Key (optional)',
    'llmSettings.litellmApiKeyHelp': 'Some proxies require an API key. Leave blank if not needed.',
    'llmSettings.litellmModel': 'Model',
    'llmSettings.litellmAudioModel': 'Audio Model',
    'llmSettings.litellmModelPlaceholder': 'Select or type model name',
    'llmSettings.litellmModelHelp': 'Model name as configured in the LiteLLM proxy.',
    'llmSettings.googleApiKey': 'Google API Key',
    'llmSettings.googleApiKeyHelp': 'Your API key from Google AI Studio (aistudio.google.com).',
    'llmSettings.googleModel': 'Gemini Model',
    'llmSettings.googleModelHelp': 'Enter a Gemini model name (e.g. gemini-2.0-flash, gemini-1.5-pro).',
    'llmSettings.anthropicApiKey': 'Anthropic API Key',
    'llmSettings.anthropicApiKeyHelp': 'Your API key from console.anthropic.com.',
    'llmSettings.anthropicModel': 'Claude Model',
    'llmSettings.anthropicModelHelp': 'Enter a Claude model name (e.g. claude-sonnet-4-20250514, claude-haiku-4-5-20251001).',
    'llmSettings.fetchModels': 'Fetch available models',
    'llmSettings.loading': 'Loading settings...',
    'llmSettings.save': 'Save',
    'llmSettings.saving': 'Saving...',
    'llmSettings.saveSuccess': 'Settings saved successfully',
    'llmSettings.saveError': 'Error saving settings',
    'llmSettings.loadError': 'Error loading settings',
    'llmSettings.modelsFetched': 'Models loaded',
    'llmSettings.modelsFetchError': 'Could not fetch models',
    'llmSettings.noModelsFound': 'No models found on the Ollama server',
    'llmSettings.accountDefaultTitle': 'Environment default configuration',
    'llmSettings.accountDefaultDescription': 'Loaded from backend environment settings and used as fallback when no saved LLM configuration is selected.',
    'llmConfig.add': 'Add',
    'llmConfig.addTitle': 'Add LLM Configuration',
    'llmConfig.addDescription': 'Add a new model/provider configuration to use in workspaces.',
    'llmConfig.nameLabel': 'Name',
    'llmConfig.namePlaceholder': 'e.g. OpenAI GPT-4, Ollama Local',
    'llmConfig.nameRequired': 'Name is required',
    'llmConfig.empty': 'No LLM configurations yet',
    'llmConfig.emptyHelp': 'Add a configuration to use in each workspace.',
    'llmConfig.delete': 'Delete',
    'llmConfig.deleteTitle': 'Delete LLM configuration',
    'llmConfig.deleteDescription': 'Are you sure you want to delete "{name}"? Workspaces using it will fall back to the default.',
    'llmConfig.deleted': 'Configuration deleted',
    'llmConfig.cancel': 'Cancel',
    'llmConfig.deleteConfirm': 'Delete',
    'llmConfig.workspaceModel': 'Model for this workspace',
    'llmConfig.defaultOption': 'Default (env/config)',
    'llmConfig.setAsDefault': 'Set as default',
    'llmConfig.default': 'Default',
    'llmConfig.edit': 'Edit',
    'llmConfig.editTitle': 'Edit LLM Configuration',
    'llmConfig.editDescription': 'Update the model and provider settings for this configuration.',
    'llmConfig.save': 'Save',
    'account.users.title': 'User management',
    'account.users.description': 'As the super user (admin), you can create and manage users.',
    'account.users.addUser': 'Add user',
    'account.users.email': 'Email',
    'account.users.password': 'Password',
    'account.users.role': 'Role',
    'account.users.roleUser': 'User',
    'account.users.roleAdmin': 'Admin',
    'account.users.adminOnly': 'Only the super user (admin) can manage users. Log in with the admin account.',
    'account.users.singleUserMode': 'Single user mode. Enable login (ENABLE_LOGIN=true) in the backend to use user management.',
    'account.users.loading': 'Loading users...',
    'account.users.empty': 'No users yet. Create the first user above.',
    'account.users.createSuccess': 'User created successfully',
    'account.users.createError': 'Error creating user',
    'account.users.loadError': 'Error loading users',
     
     // Add Source Modal
     'addSource.title': 'Add sources',
     'addSource.description': 'Transform your data into intelligent conversations. Connect your data sources and ask questions in natural language to get instant insights.',
     // --- Source onboarding (Task 3) ---
     'common.next': 'Next',
     'common.back': 'Back',
     'common.close': 'Close',
     'onboarding.title': 'Set up this data source',
     'onboarding.subtitle': 'Three quick steps so future questions about this source are accurate.',
     'onboarding.profiling': 'Profiling source and generating suggestions…',
     'onboarding.skip': 'Skip',
     'onboarding.saving': 'Saving…',
     'onboarding.finish': 'Finish',
     'onboarding.clarificationsTitle': 'Clarifying questions',
     'onboarding.noClarifications': 'No clarifying questions for this source — feel free to add one.',
     'onboarding.answerPlaceholder': 'Type your answer…',
     'onboarding.addClarification': 'Add clarification',
     'onboarding.warmupTitle': 'Suggested starter questions',
     'onboarding.warmupHint': 'Selected questions become quick-start chips on the agent.',
     'onboarding.kpisTitle': 'Candidate KPIs',
     'onboarding.kpisHint': 'KPIs are stored per workspace and can be reused across sources later.',
     'onboarding.kpiNamePlaceholder': 'KPI name',
     'onboarding.kpiDefPlaceholder': 'Definition',
     'sourceSettings.title': 'Source settings',
     'sourceSettings.titleEdit': 'Source settings',
     'sourceSettings.titleFresh': 'Re-run source setup',
     'sourceSettings.rerun': 'Re-run source setup',
     'sourceSettings.pickSource': 'Source',
     'sourceSettings.loading': 'Loading sources…',
     'sourceSettings.noSources': 'No active sources in this workspace.',
     'sourceSettings.allSources': 'All active sources',
     'onboarding.titleGroup': 'Set up these data sources',
     'onboarding.sourceInstructions': 'Source-specific instructions',
     'onboarding.sourceInstructionsPlaceholder': 'Notes that only apply when this source is in the workspace…',
     'onboarding.sourceInstructionsHelp': 'Layered on top of the agent-level instructions, only when this source is active.',
     // Relationships step (SQL-only — appended after KPIs when at least
     // one SQL source is in scope; mirrors the SQL Relationships modal).
     'onboarding.relationshipsTitle': 'Suggested table relationships',
     'onboarding.relationshipsHint': 'AI-detected joins between your SQL tables. Accepted ones power cross-table answers automatically.',
     'onboarding.relationshipsLoading': 'Looking for relationships across your tables…',
     'onboarding.relationshipsEmpty': 'No relationships were suggested. You can add them manually later in SQL Relationships.',
     'onboarding.relationshipsError': 'Could not generate suggestions. You can skip this step and add relationships manually later.',
     'onboarding.relationshipsAccept': 'Accept',
     'onboarding.relationshipsAccepted': 'Accepted',
     'onboarding.relationshipsDismiss': 'Dismiss',
     'onboarding.relationshipsRetry': 'Retry',
     'onboarding.relationshipsAcceptedCount': 'accepted',
     'addSource.examples': 'Supported sources: CSV/Excel files, Google BigQuery databases, and Google Sheets.',
     'addSource.sourceType': 'Source type',
     'addSource.selectSourceType': 'Select a source type...',
     'addSource.uploadTab': 'Upload',
     'addSource.bigQueryTab': 'BigQuery',
     'addSource.sheetsTab': 'Google Sheets',
     'addSource.uploadTitle': 'Upload sources',
     'addSource.dragDrop': 'Drag and drop or',
     'addSource.chooseFile': 'choose file',
     'addSource.uploadText': 'for upload',
     'addSource.supportedTypes': 'CSV and XLSX',
     'addSource.credentials': 'Credentials (JSON)',
     'addSource.project': 'Project',
     'addSource.dataset': 'Dataset',
     'addSource.allowedTables': 'Allowed tables (comma separated)',
     'addSource.projectPlaceholder': 'my-project',
     'addSource.datasetPlaceholder': 'analytics',
     'addSource.tablesPlaceholder': 'orders, customers',
     'addSource.connectBigQuery': 'Connect BigQuery',
      'addSource.connectFirebase': 'Connect Firebase',
      'addSource.sheetsUrl': 'Google Sheets link',
      'addSource.sheetsUrlPlaceholder': 'https://docs.google.com/spreadsheets/d/...',
      'addSource.sheetsDescription': 'Paste the sharing link of the Google Sheets you want to connect',
      'addSource.connectSheets': 'Connect Google Sheets',
      'addSource.sheetsImportant': 'Important:',
      'addSource.sheetsShareWith': 'The spreadsheet must be shared with the email:',
      'addSource.sheetsLoadingEmail': 'Loading...',
      'addSource.sheetsNotConfigured': 'Google Sheets is not configured on this server. Ask the administrator to set GOOGLE_SHEETS_SERVICE_ACCOUNT in the backend environment.',
      'addSource.sheetsId': 'Spreadsheet ID',
      'addSource.sheetsIdExample': 'Example: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms (found in the spreadsheet URL)',
      'addSource.sheetsIdPlaceholder': 'Paste the spreadsheet ID here',
      'addSource.listButton': 'List',
      'addSource.selectSheet': 'Select a sheet',
      'addSource.selectSheetPlaceholder': 'Select a sheet',
      'addSource.connecting': 'Connecting...',
      'addSource.selectTable': 'Select a table',
      'addSource.loadingProjects': 'Loading available projects...',
      'addSource.loadCredentialsFirst': 'Load credentials first',
      'addSource.selectProject': 'Select a project',
      'addSource.loadingDatasets': 'Loading datasets...',
      'addSource.selectProjectFirst': 'Select a project first',
      'addSource.noDatasets': 'No datasets found',
      'addSource.selectDataset': 'Select a dataset',
      'addSource.loadingTables': 'Loading tables...',
      'addSource.selectTablePlaceholder': 'Select a table',
      
      // SQL Database
      'addSource.sqlTab': 'SQL Database',
      'addSource.sqlConnectionString': 'Connection String',
      'addSource.sqlConnectionStringPlaceholder': 'postgresql://user:password@host:port/database',
      'addSource.sqlDatabaseType': 'Database Type',
      'addSource.sqlSelectType': 'Select database type',
      'addSource.sqlImportant': 'Important:',
      'addSource.sqlSecurityWarning': 'Make sure your database accepts connections from the server running this Data Talks backend.',
      'addSource.sqlSelfHostedNote': 'Use a host and port reachable from the backend environment, and grant network access with the database credentials you provide.',
      'addSource.sqlTableName': 'Table Name',
      'addSource.sqlSelectedTables': 'Tables',
      'addSource.sqlSelectedTablesCount': '{count} table(s) selected',
      'addSource.sqlUseExistingCredential': 'Use saved SQL connection',
      'addSource.sqlSelectCredential': 'Select a saved SQL connection',
      'addSource.sqlTableNamePlaceholder': 'Enter table name (e.g., users, products)',
      'addSource.sqlLoadTablesFirst': 'List tables first',
      'addSource.sqlNoTablesFound': 'No tables found for this connection',
      'addSource.sqlListError': 'Error listing SQL tables',
      'addSource.sqlFillFields': 'Please fill in all required fields',
      'addSource.sqlConnect': 'Connect Database',
      'addSource.sqlConnectSuccess': 'SQL Database connected successfully!',
      'addSource.sqlConnectError': 'Error connecting SQL Database',
      'addSource.sqlExample': 'Example',
      
        // Workspace
        'workspace.chat': 'Chat',
        'workspace.addSourceToStart': 'Add a source to start',
        'workspace.addSourceDescription': 'Upload your data sources to start asking questions and getting insights.',
        'workspace.uploadSource': 'Upload Source',
        'workspace.inputPlaceholder': 'Ask a question about your data...',
        'workspace.addSourceFirst': 'Add a source first to start asking questions',
        'workspace.noLlmConfigured': 'No LLM configured. Go to Account > LLM / AI to add a configuration.',
        'workspace.startConversation': 'Start a conversation',
        'workspace.startConversationDescription': 'Ask questions about your data to get insights and answers.',
        'addSource.sourceLimit': 'Source limit',
        'addSource.filesUploaded': 'Files uploaded successfully!',
        'addSource.uploadError': 'Error uploading files',
        // dbt
        'addSource.dbtManifestOrigin': 'Manifest origin',
        'addSource.dbtGithub': 'GitHub',
        'addSource.dbtCloud': 'dbt Cloud',
        'addSource.dbtGithubToken': 'GitHub Token',
        'addSource.dbtGithubRepo': 'Repository',
        'addSource.dbtGithubBranch': 'Branch',
        'addSource.dbtManifestPath': 'Manifest path',
        'addSource.dbtCloudToken': 'dbt Cloud Service Token',
        'addSource.dbtCloudAccountId': 'Account ID',
        'addSource.dbtCloudJobId': 'Job ID',
        'addSource.dbtFetchModels': 'Fetch models from manifest',
        'addSource.dbtFetchingModels': 'Fetching models...',
        'addSource.dbtModelsSelected': '{selected}/{total} models selected',
        'addSource.dbtConnectionString': 'Warehouse connection string',
        'addSource.dbtConnectionStringHint': 'The same connection string used by dbt to execute queries.',
        'addSource.dbtConnect': 'Connect dbt source',
        'addSource.dbtConnectSuccess': 'dbt source created successfully!',
        'addSource.dbtConnectError': 'Error creating dbt source',
        'addSource.dbtFetchError': 'Error fetching manifest',
        'addSource.dbtNoModels': 'No models found in manifest.',
        'addSource.dbtModelsFound': '{count} models found.',
        // GitHub File
        'addSource.githubToken': 'GitHub Token',
        'addSource.githubRepo': 'Repository',
        'addSource.githubBranch': 'Branch',
        'addSource.githubFilePath': 'File path',
        'addSource.githubSupportedFormats': 'Supported formats: CSV, TSV, JSON (array of objects), JSONL.',
        'addSource.githubPreview': 'Preview file',
        'addSource.githubPreviewing': 'Loading preview...',
        'addSource.githubConnect': 'Connect GitHub file',
        'addSource.githubConnectSuccess': 'GitHub File source created successfully!',
        'addSource.githubConnectError': 'Error creating GitHub File source',
        'addSource.githubValidateError': 'Error validating file',
        'addSource.githubRowsColumns': '{rows} rows • {cols} columns',
        'addSource.firebaseDescription': 'Upload the Firebase service account JSON file to connect to your Firestore database.',
        'addSource.firebaseHint': 'Go to Firebase Console → Project settings → Service accounts → Generate new private key.',
        'addSource.firebaseCredentials': 'Credentials file (JSON)',
        'addSource.firebaseLoadingCollections': 'Loading collections...',
        'addSource.firebaseAvailableCollections': 'Available collections',
        'addSource.firebaseSelectedCount': '{count} collection(s) selected',
        'addSource.firebaseSelectCredentials': 'Please select the Firebase credentials file',
        'addSource.firebaseSelectCollections': 'Please select at least one collection',
        'addSource.firebaseConnectSuccess': 'Firebase connected successfully!',
        'addSource.firebaseConnectError': 'Error connecting Firebase',
        // MongoDB
        'addSource.connectMongoDB': 'Connect MongoDB',
        'addSource.mongodbDescription': 'Connect to your MongoDB database to analyze your collections with natural language.',
        'addSource.mongodbHint': 'Provide the MongoDB connection string (mongodb:// or mongodb+srv://) to connect.',
        'addSource.mongodbConnectionString': 'Connection String',
        'addSource.mongodbConnectionStringPlaceholder': 'mongodb+srv://user:password@cluster.mongodb.net',
        'addSource.mongodbTestConnection': 'Test Connection',
        'addSource.mongodbTestingConnection': 'Testing...',
        'addSource.mongodbConnectionSuccess': 'Connection successful!',
        'addSource.mongodbConnectionFailed': 'Connection failed',
        'addSource.mongodbDatabase': 'Database',
        'addSource.mongodbSelectDatabase': 'Select a database',
        'addSource.mongodbLoadingDatabases': 'Loading databases...',
        'addSource.mongodbCollection': 'Collection',
        'addSource.mongodbSelectCollection': 'Select a collection',
        'addSource.mongodbLoadingCollections': 'Loading collections...',
        'addSource.mongodbConnectSuccess': 'MongoDB connected successfully!',
        'addSource.mongodbConnectError': 'Error connecting MongoDB',
        'addSource.mongodbFillFields': 'Please fill in all required fields',
        // Snowflake
        'addSource.connectSnowflake': 'Connect Snowflake',
        'addSource.snowflakeDescription': 'Connect to your Snowflake data warehouse for natural language analysis.',
        'addSource.snowflakeHint': 'Enter your Snowflake account identifier, username, and password.',
        'addSource.snowflakeAccount': 'Account',
        'addSource.snowflakeAccountPlaceholder': 'xy12345.us-east-1',
        'addSource.snowflakeUser': 'User',
        'addSource.snowflakeUserPlaceholder': 'analyst',
        'addSource.snowflakePassword': 'Password',
        'addSource.snowflakeTestConnection': 'Test Connection',
        'addSource.snowflakeTestingConnection': 'Testing...',
        'addSource.snowflakeConnectionSuccess': 'Connection successful!',
        'addSource.snowflakeConnectionFailed': 'Connection failed',
        'addSource.snowflakeWarehouse': 'Warehouse',
        'addSource.snowflakeSelectWarehouse': 'Select a warehouse',
        'addSource.snowflakeLoadingWarehouses': 'Loading warehouses...',
        'addSource.snowflakeDatabase': 'Database',
        'addSource.snowflakeSelectDatabase': 'Select a database',
        'addSource.snowflakeLoadingDatabases': 'Loading databases...',
        'addSource.snowflakeSchema': 'Schema',
        'addSource.snowflakeSelectSchema': 'Select a schema',
        'addSource.snowflakeLoadingSchemas': 'Loading schemas...',
        'addSource.snowflakeTables': 'Tables',
        'addSource.snowflakeSelectedTables': '{count} table(s) selected',
        'addSource.snowflakeLoadingTables': 'Loading tables...',
        'addSource.snowflakeConnectSuccess': 'Snowflake connected successfully!',
        'addSource.snowflakeConnectError': 'Error connecting Snowflake',
        'addSource.snowflakeFillFields': 'Please fill in all required fields',
        // Notion
        'addSource.connectNotion': 'Connect Notion',
        'addSource.notionDescription': 'Connect a Notion database to analyze your data with natural language.',
        'addSource.notionHint': 'Create an Internal Integration at notion.so/my-integrations and share the database with it.',
        'addSource.notionToken': 'Integration Token',
        'addSource.notionTokenPlaceholder': 'secret_...',
        'addSource.notionTestConnection': 'Test Connection',
        'addSource.notionTestingConnection': 'Testing...',
        'addSource.notionConnectionSuccess': 'Connection successful!',
        'addSource.notionConnectionFailed': 'Connection failed',
        'addSource.notionDatabase': 'Database',
        'addSource.notionSelectDatabase': 'Select a database',
        'addSource.notionLoadingDatabases': 'Loading databases...',
        'addSource.notionNoDatabases': 'No databases found. Make sure you shared at least one database with the integration.',
        'addSource.notionConnectSuccess': 'Notion connected successfully!',
        'addSource.notionConnectError': 'Error connecting Notion',
        'addSource.notionFillFields': 'Please fill in all required fields',
        // Jira
        'addSource.connectJira': 'Connect Jira',
        'addSource.jiraDescription': 'Connect your Jira Cloud instance to analyze issues, sprints, and team workload with natural language.',
        'addSource.jiraHint': 'Create an API token at id.atlassian.com/manage-profile/security/api-tokens.',
        'addSource.jiraDomain': 'Domain',
        'addSource.jiraDomainPlaceholder': 'mycompany',
        'addSource.jiraDomainHint': 'Your Atlassian domain (e.g., "mycompany" from mycompany.atlassian.net)',
        'addSource.jiraEmail': 'Email',
        'addSource.jiraEmailPlaceholder': 'you@company.com',
        'addSource.jiraApiToken': 'API Token',
        'addSource.jiraApiTokenPlaceholder': 'Your Jira API token',
        'addSource.jiraTestConnection': 'Test Connection',
        'addSource.jiraTestingConnection': 'Testing...',
        'addSource.jiraConnectionSuccess': 'Connection successful!',
        'addSource.jiraConnectionFailed': 'Connection failed',
        'addSource.jiraConnectedAs': 'Connected as',
        'addSource.jiraLoadingDiscovery': 'Discovering projects and boards...',
        'addSource.jiraDiscoveryResult': 'Found {projects} projects and {boards} boards.',
        'addSource.jiraConnectSuccess': 'Jira connected successfully!',
        'addSource.jiraConnectError': 'Error connecting Jira',
        'addSource.jiraFillFields': 'Please fill in all required fields',
        // HubSpot CRM
        'addSource.connectHubspot': 'Connect HubSpot',
        'addSource.hubspotDescription': 'Connect your HubSpot CRM to analyze contacts, companies, deals, tickets, and more.',
        'addSource.hubspotHint': 'Create a Private App in HubSpot Settings > Integrations > Private Apps to get an access token.',
        'addSource.hubspotApiKey': 'Access Token',
        'addSource.hubspotApiKeyPlaceholder': 'pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
        'addSource.hubspotTestConnection': 'Test Connection',
        'addSource.hubspotTestingConnection': 'Testing...',
        'addSource.hubspotConnectionSuccess': 'Connected!',
        'addSource.hubspotConnectionFailed': 'Connection failed',
        'addSource.hubspotObjectsFound': 'Objects found',
        'addSource.hubspotConnectSuccess': 'HubSpot CRM connected successfully!',
        'addSource.hubspotConnectError': 'Error connecting HubSpot',
        'addSource.hubspotFillFields': 'Please provide your HubSpot access token',
        // Stripe
        'addSource.connectStripe': 'Connect Stripe',
        'addSource.stripeDescription': 'Connect your Stripe account to analyze customers, subscriptions, invoices, charges, and revenue with natural language.',
        'addSource.stripeHint': 'Use a Stripe Secret API Key (sk_live_... or sk_test_...) from your Stripe Dashboard > Developers > API keys.',
        'addSource.stripeApiKey': 'Secret API Key',
        'addSource.stripeTestConnection': 'Test Connection',
        'addSource.stripeTesting': 'Testing...',
        'addSource.stripeDiscovering': 'Discovering resources...',
        'addSource.stripeTestSuccess': 'Connection successful!',
        'addSource.stripeTestFailed': 'Connection failed',
        'addSource.stripeResources': 'Available Resources',
        'addSource.stripeResourceError': 'Error',
        'addSource.stripeRecords': 'records',
        'addSource.stripeSelectedCount': '{count} resources selected',
        'addSource.stripeSelectTables': 'Please select at least one resource',
        'addSource.stripeFillFields': 'Please provide your Stripe API key',
        'addSource.stripeConnectSuccess': 'Stripe connected successfully!',
        'addSource.stripeConnectError': 'Error connecting Stripe',
        // Pipedrive CRM
        'addSource.connectPipedrive': 'Connect Pipedrive',
        'addSource.pipedriveDescription': 'Connect your Pipedrive CRM to analyze deals, contacts, activities, and sales pipeline with natural language.',
        'addSource.pipedriveHint': 'Find your API token in Pipedrive under Settings > Personal preferences > API.',
        'addSource.pipedriveApiToken': 'API Token',
        'addSource.pipedriveApiTokenPlaceholder': 'Your Pipedrive API token',
        'addSource.pipedriveTestConnection': 'Test Connection',
        'addSource.pipedriveTestingConnection': 'Testing...',
        'addSource.pipedriveConnectionSuccess': 'Connection successful!',
        'addSource.pipedriveConnectionFailed': 'Connection failed',
        'addSource.pipedriveResourcesFound': 'Resources Found',
        'addSource.pipedriveConnectSuccess': 'Pipedrive connected successfully!',
        'addSource.pipedriveConnectError': 'Error connecting Pipedrive',
        'addSource.pipedriveFillFields': 'Please provide your Pipedrive API token',
        // Salesforce CRM
        'addSource.connectSalesforce': 'Connect Salesforce',
        'addSource.salesforceDescription': 'Connect your Salesforce CRM to analyze accounts, contacts, opportunities, leads, cases, and more.',
        'addSource.salesforceHint': 'Use a Connected App in Salesforce Setup to generate an access token.',
        'addSource.salesforceAccessToken': 'Access Token',
        'addSource.salesforceAccessTokenPlaceholder': 'Enter your Salesforce access token',
        'addSource.salesforceInstanceUrl': 'Instance URL',
        'addSource.salesforceInstanceUrlPlaceholder': 'https://your-instance.salesforce.com',
        'addSource.salesforceTestConnection': 'Test Connection',
        'addSource.salesforceTestingConnection': 'Testing...',
        'addSource.salesforceConnectionSuccess': 'Connected!',
        'addSource.salesforceConnectionFailed': 'Connection failed',
        'addSource.salesforceObjectsFound': 'Objects found',
        'addSource.salesforceConnectSuccess': 'Salesforce CRM connected successfully!',
        'addSource.salesforceConnectError': 'Error connecting Salesforce',
        'addSource.salesforceFillFields': 'Please provide your Salesforce access token and instance URL',
        // Google Analytics 4
        'addSource.connectGA4': 'Connect Google Analytics 4',
        'addSource.ga4Description': 'Connect your GA4 property to analyze sessions, events, page views, conversions, and more.',
        'addSource.ga4Hint': 'Create a service account in Google Cloud Console and grant it Viewer access to your GA4 property.',
        'addSource.ga4Credentials': 'Service Account JSON',
        'addSource.ga4CredentialsPlaceholder': 'Paste your service account JSON key here',
        'addSource.ga4PropertyId': 'Property ID',
        'addSource.ga4PropertyIdPlaceholder': 'e.g. 123456789',
        'addSource.ga4TestConnection': 'Test Connection',
        'addSource.ga4TestingConnection': 'Testing...',
        'addSource.ga4ConnectionSuccess': 'Connected!',
        'addSource.ga4ConnectionFailed': 'Connection failed',
        'addSource.ga4TablesFound': 'Tables found',
        'addSource.ga4ConnectSuccess': 'GA4 connected successfully!',
        'addSource.ga4ConnectError': 'Error connecting GA4',
        'addSource.ga4FillFields': 'Please provide your service account credentials and property ID',
        // Intercom
        'addSource.connectIntercom': 'Connect Intercom',
        'addSource.intercomDescription': 'Connect your Intercom workspace to analyze contacts, companies, conversations, and more.',
        'addSource.intercomHint': 'Create an access token in Intercom Developer Hub > Your Apps.',
        'addSource.intercomAccessToken': 'Access Token',
        'addSource.intercomAccessTokenPlaceholder': 'Enter your Intercom access token',
        'addSource.intercomTestConnection': 'Test Connection',
        'addSource.intercomTestingConnection': 'Testing...',
        'addSource.intercomConnectionSuccess': 'Connected!',
        'addSource.intercomConnectionFailed': 'Connection failed',
        'addSource.intercomResourcesFound': 'Resources found',
        'addSource.intercomConnectSuccess': 'Intercom connected successfully!',
        'addSource.intercomConnectError': 'Error connecting Intercom',
        'addSource.intercomFillFields': 'Please provide your Intercom access token',
        // GitHub Analytics
        'addSource.connectGithubAnalytics': 'Connect GitHub Analytics',
        'addSource.githubAnalyticsDescription': 'Connect a GitHub repository to analyze PRs, issues, commits, releases, workflows, and contributors.',
        'addSource.githubAnalyticsHint': 'Create a personal access token (classic) with repo scope in GitHub Settings > Developer settings.',
        'addSource.githubAnalyticsToken': 'Personal Access Token',
        'addSource.githubAnalyticsTokenPlaceholder': 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'addSource.githubAnalyticsOwner': 'Repository Owner',
        'addSource.githubAnalyticsOwnerPlaceholder': 'e.g. facebook',
        'addSource.githubAnalyticsRepo': 'Repository Name',
        'addSource.githubAnalyticsRepoPlaceholder': 'e.g. react',
        'addSource.githubAnalyticsTestConnection': 'Test Connection',
        'addSource.githubAnalyticsTestingConnection': 'Testing...',
        'addSource.githubAnalyticsConnectionSuccess': 'Connected!',
        'addSource.githubAnalyticsConnectionFailed': 'Connection failed',
        'addSource.githubAnalyticsTablesFound': 'Tables found',
        'addSource.githubAnalyticsConnectSuccess': 'GitHub Analytics connected successfully!',
        'addSource.githubAnalyticsConnectError': 'Error connecting GitHub Analytics',
        'addSource.githubAnalyticsFillFields': 'Please provide your token, owner, and repository name',
        // Shopify
        'addSource.connectShopify': 'Connect Shopify',
        'addSource.shopifyDescription': 'Connect your Shopify store to analyze orders, customers, products, inventory, and more.',
        'addSource.shopifyHint': 'Create a custom app in Shopify Admin > Settings > Apps and sales channels > Develop apps.',
        'addSource.shopifyStore': 'Store Name',
        'addSource.shopifyStorePlaceholder': 'your-store (without .myshopify.com)',
        'addSource.shopifyAccessToken': 'Admin API Access Token',
        'addSource.shopifyAccessTokenPlaceholder': 'shpat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'addSource.shopifyTestConnection': 'Test Connection',
        'addSource.shopifyTestingConnection': 'Testing...',
        'addSource.shopifyConnectionSuccess': 'Connected!',
        'addSource.shopifyConnectionFailed': 'Connection failed',
        'addSource.shopifyResourcesFound': 'Resources found',
        'addSource.shopifyConnectSuccess': 'Shopify connected successfully!',
        'addSource.shopifyConnectError': 'Error connecting Shopify',
        'addSource.shopifyFillFields': 'Please provide your store name and access token',
        // Excel Online
        'addSource.connectExcelOnline': 'Connect Excel Online',
        'addSource.excelOnlineDescription': 'Connect Excel files from OneDrive or SharePoint for natural language analysis.',
        'addSource.excelOnlineHint': 'Provide a Microsoft Graph API access token with Files.Read permissions. You can obtain one from the Azure portal or via OAuth2 flow.',
        'addSource.excelOnlineToken': 'Access Token',
        'addSource.excelOnlineTokenPlaceholder': 'Paste your Microsoft Graph API access token',
        'addSource.excelOnlineListFiles': 'List Files',
        'addSource.excelOnlineLoadingFiles': 'Loading...',
        'addSource.excelOnlineListError': 'Error listing files',
        'addSource.excelOnlineFile': 'Excel File',
        'addSource.excelOnlineSelectFile': 'Select a file',
        'addSource.excelOnlineSheet': 'Sheet',
        'addSource.excelOnlineSelectSheet': 'Select a sheet',
        'addSource.excelOnlineLoadingSheets': 'Loading sheets...',
        'addSource.excelOnlineNoSheets': 'No sheets found',
        'addSource.excelOnlineConnectSuccess': 'Excel Online connected successfully!',
        'addSource.excelOnlineConnectError': 'Error connecting Excel Online',
        'addSource.excelOnlineFillFields': 'Please fill in all required fields',
        // S3 / MinIO
        'addSource.connectS3': 'Connect S3',
        'addSource.s3Description': 'Connect to Amazon S3 or MinIO to import CSV, JSON, and Parquet files from your buckets.',
        'addSource.s3Hint': 'Provide your AWS Access Key and Secret Key (or MinIO credentials with a custom endpoint).',
        'addSource.s3AccessKeyId': 'Access Key ID',
        'addSource.s3SecretAccessKey': 'Secret Access Key',
        'addSource.s3Region': 'Region',
        'addSource.s3Endpoint': 'Endpoint (optional)',
        'addSource.s3EndpointPlaceholder': 'https://minio.example.com (leave empty for AWS)',
        'addSource.s3TestConnection': 'Test Connection',
        'addSource.s3TestingConnection': 'Testing...',
        'addSource.s3ConnectionSuccess': 'Connection successful!',
        'addSource.s3ConnectionFailed': 'Connection failed',
        'addSource.s3Bucket': 'Bucket',
        'addSource.s3SelectBucket': 'Select a bucket',
        'addSource.s3LoadingBuckets': 'Loading buckets...',
        'addSource.s3File': 'File',
        'addSource.s3SelectFile': 'Select a file',
        'addSource.s3LoadingFiles': 'Loading files...',
        'addSource.s3NoFiles': 'No supported files found (csv, json, parquet)',
        'addSource.s3ConnectSuccess': 'S3 connected successfully!',
        'addSource.s3ConnectError': 'Error connecting S3',
        'addSource.s3FillFields': 'Please fill in all required fields',
        // REST API
        'addSource.connectRestApi': 'Connect API',
        'addSource.restApiDescription': 'Connect any REST API that returns JSON data for natural language analysis.',
        'addSource.restApiHint': 'Provide the API URL, method, headers, and optionally a data path to locate the data array in the response.',
        'addSource.restApiUrl': 'URL',
        'addSource.restApiMethod': 'Method',
        'addSource.restApiHeaders': 'Headers',
        'addSource.restApiAddHeader': 'Add',
        'addSource.restApiDataPath': 'Data path (dot notation)',
        'addSource.restApiDataPathPlaceholder': 'e.g. data.results (leave empty if response is an array)',
        'addSource.restApiTestRequest': 'Test Request',
        'addSource.restApiTesting': 'Testing...',
        'addSource.restApiTestSuccess': 'Request successful!',
        'addSource.restApiTestFailed': 'Request failed',
        'addSource.restApiPreview': 'Preview',
        'addSource.restApiConnectSuccess': 'REST API connected successfully!',
        'addSource.restApiConnectError': 'Error connecting REST API',
        'addSource.restApiFillFields': 'Please provide the API URL',
        'workspace.title': 'Workspaces',
       'workspace.createNewWorkspace': 'Create new workspace',
       'workspace.newWorkspace': 'New workspace',
       'workspace.chooseType': 'Choose Workspace Type',
       'workspace.chooseTypeDesc': 'Select the type of workspace you want to create.',
       'workspace.mostRecent': 'Most recent',
       'workspace.oldest': 'Oldest',
       'workspace.nameAZ': 'Name (A-Z)',
       'workspace.sources': 'sources',
       'workspace.source': 'source',
       'workspace.rename': 'Rename',
       'workspace.renameWorkspace': 'Rename workspace',
       'workspace.renameDescription': 'Enter the new name for the workspace',
       'workspace.name': 'Name',
       'workspace.cancel': 'Cancel',
       'workspace.delete': 'Delete',
       'workspace.edit': 'Edit',
       'workspace.description': 'Manage your workspaces',
       'workspace.errorCreatingWorkspace': 'Error creating workspace',
       'workspace.renameSuccess': 'Workspace renamed successfully',
       'workspace.renameError': 'Error renaming workspace',
       'workspace.deleteConfirm': 'Are you sure you want to delete the workspace "{name}"? This action cannot be undone.',
       'workspace.deleteSuccess': 'Workspace deleted successfully',
       'workspace.deleteError': 'Error deleting workspace',
       'workspace.dataPreview': 'Data Preview',
       'workspace.dataPreviewDescription': 'Viewing the first rows of the data source',
       'workspace.noPreviewData': 'No preview data available',
       'workspace.previousConversations': 'Previous Conversations',
       'workspace.previousConversationsDescription': 'Select a conversation to continue from where you left off',
       'workspace.noPreviousConversations': 'No previous conversations found',
       'workspace.llmSelector': 'LLM for this workspace',
       'workspace.llmUseDefault': 'Use default',
       'workspace.llmConfigUpdated': 'LLM configuration updated',
       'workspace.llmConfigError': 'Error updating LLM',
       'workspace.generateChart': 'Generate chart',
       'workspace.generatingChart': 'Generating chart...',
       'workspace.generatedSql': 'Generated SQL',
       'workspace.generatedCode': 'Generated code',
       'workspace.copySql': 'Copy',
       'workspace.sqlCopied': 'Copied',
       'workspace.chartGeneratedSuccess': 'Chart generated successfully',
       'workspace.chartGeneratedError': 'Error generating chart',
       'workspace.removeImage': 'Remove image',
       'workspace.imageRemoved': 'Image removed from conversation',
       'workspace.imageRemoveError': 'Error removing image',
       
       // Studio
       'studio.title': 'Studio',
      'studio.graphDescription': 'View data as a graph',
      'studio.summaryCardDescription': 'Executive summary of table',
      'studio.summaryTitle': 'Table Summary',
      'studio.summaryDescription': 'Generate an executive report from the selected table using LLM and analytical queries.',
      'studio.summarySource': 'Table / Source',
      'studio.summaryNoBigQuerySource': 'Add a BigQuery source to this workspace to generate summaries.',
      'studio.summaryNoSource': 'Add a data source to this workspace to generate summaries.',
      'studio.summarySelectSource': 'Select source',
      'studio.summaryGenerate': 'Generate summary',
      'studio.summarySaved': 'Summary saved. You can find it in the list below.',
      'studio.summaryGenerateError': 'Error generating summary',
      'studio.summaryGenerating': 'Generating summary…',
      'studio.summaryReport': 'Report',
      'studio.summarySavedList': 'Saved summaries',
      'studio.summaryNoSaved': 'No saved summaries yet. Generate one above.',
      'studio.summaryDeleted': 'Summary deleted',
      'studio.summaryDeleteError': 'Error deleting summary',
      'studio.summaryLoadError': 'Error loading sources and summaries',
      'studio.audioTitle': 'Audio Overview',
      'studio.audioDescription': 'Generate a concise spoken overview from the selected source.',
      'studio.audioGenerate': 'Generate audio',
      'studio.audioGenerating': 'Generating audio…',
      'studio.audioPreparing': 'Preparing audio playback…',
      'studio.audioSaved': 'Audio overview saved. You can find it in the list below.',
      'studio.audioSavedList': 'Saved audio overviews',
      'studio.audioNoSaved': 'No saved audio overviews yet. Generate one above.',
      'studio.audioDeleted': 'Audio overview deleted',
      'studio.audioDeleteError': 'Error deleting audio overview',
      'studio.audioLoadError': 'Error loading sources and audio overviews',
      'studio.audioGenerateError': 'Error generating audio overview',
      'studio.audioPlaybackError': 'Error loading audio',
      'studio.audioRequiresConfig': 'To use this feature, first add or select an audio model in Account > LLM / AI settings for this workspace.',
      'studio.audioOverview': 'Audio Overview',
      'studio.autoML': 'Auto ML',
      'studio.autoMLTitle': 'Auto ML',
      'studio.autoMLDescription': 'Train a machine learning model on your data with one click.',
      'studio.autoMLSelectSource': 'Select a data source',
      'studio.autoMLSelectTarget': 'Select target column',
      'studio.autoMLTrain': 'Train Model',
      'studio.autoMLTraining': 'Training model...',
      'studio.autoMLTaskClassification': 'Classification',
      'studio.autoMLTaskRegression': 'Regression',
      'studio.autoMLTaskType': 'Task Type',
      'studio.autoMLMetrics': 'Metrics',
      'studio.autoMLFeatureImportance': 'Feature Importance',
      'studio.autoMLReport': 'Report',
      'studio.autoMLSavedList': 'Previous Runs',
      'studio.autoMLNoSaved': 'No previous runs yet.',
      'studio.autoMLNoSource': 'Add a data source first to use Auto ML.',
      'studio.autoMLTrainSuccess': 'Model trained successfully!',
      'studio.autoMLTrainError': 'Error training model',
      'studio.autoMLDeleted': 'Run deleted.',
      'studio.autoMLDeleteError': 'Error deleting run.',
      'studio.autoMLLoadError': 'Error loading Auto ML data.',
      'studio.templates': 'Templates',
      'studio.templateDescription': 'Pre-configured reports for your data sources.',
      'studio.templateTitle': 'Report Templates',
      'studio.templateBrowse': 'Browse Templates',
      'studio.templateRun': 'Run Template',
      'studio.templateRunning': 'Running template...',
      'studio.templateNoTemplates': 'No templates available for this source type.',
      'studio.templateCreateLabel': 'Create template with AI',
      'studio.templateCreatePlaceholder': "Describe the report you want (optional)... e.g. 'Monthly revenue by category with trends'",
      'studio.templateGenerate': 'Generate Template',
      'studio.templateGenerating': 'Generating...',
      'studio.templateGenerated': 'Template generated!',
      'studio.templateGenerateError': 'Failed to generate template',
      'studio.templateDeleted': 'Template deleted',
      'studio.templateDeleteError': 'Failed to delete template',
      'studio.templateGenerateReport': 'Full Report',
      'studio.templateGeneratingReport': 'Generating report...',
      'studio.templateReportGenerated': 'Report generated!',
      'studio.templateReportError': 'Failed to generate report',
      'studio.templateSelectSource': 'Select a data source',
      'studio.templateResults': 'Results',
      'studio.templateCustomize': 'Customize',
      'studio.templateResetCustomization': 'Reset to defaults',
      'studio.templateRunHistory': 'Run History',
      'studio.templateRunSuccess': 'Template executed successfully!',
      'studio.templateRunError': 'Error executing template',
      'studio.templateRunPartial': 'Some queries failed',
      'studio.templateFilters': 'Filters',
      'studio.templateDateRange': 'Date Range',
      'studio.templateUseInChat': 'Use in Chat',
      'studio.templateNoSource': 'Add a data source first to use Templates.',
      'studio.templateLoadError': 'Error loading templates.',
      'studio.reports': 'Reports',
      'studio.alertConfig': 'Alert Configuration',
      'studio.connectWhatsApp': 'Connect to WhatsApp',
      'studio.connectSlack': 'Connect to Slack',
      'studio.connectTelegram': 'Connect to Telegram',
      'studio.connectApi': 'API Access',
      'studio.connections': 'Connections',

      // API Access Panel
      'apiAccess.title': 'API Access',
      'apiAccess.description': 'Use API keys to query this agent programmatically.',
      'apiAccess.noKeys': 'No API keys yet. Create one to get started.',
      'apiAccess.createKey': 'New API Key',
      'apiAccess.keyName': 'Key name',
      'apiAccess.keyNamePlaceholder': 'e.g. My App Key',
      'apiAccess.create': 'Create',
      'apiAccess.cancel': 'Cancel',
      'apiAccess.copyKey': 'Copy key',
      'apiAccess.keyCopied': 'Key copied!',
      'apiAccess.keyCreatedWarning': 'Save your key now — it won\'t be shown again.',
      'apiAccess.deleteKey': 'Revoke',
      'apiAccess.deleteConfirm': 'Are you sure you want to revoke this key?',
      'apiAccess.deleteSuccess': 'Key revoked',
      'apiAccess.createSuccess': 'API key created',
      'apiAccess.createError': 'Error creating key',
      'apiAccess.active': 'Active',
      'apiAccess.inactive': 'Inactive',
      'apiAccess.lastUsed': 'Last used',
      'apiAccess.never': 'Never',
      'apiAccess.viewSnippet': 'View code snippet',
      'apiAccess.snippetTitle': 'API Code Snippet',
      'apiAccess.snippetDescription': 'Use the examples below to consume this agent via API.',
      'apiAccess.snippetSources': 'Restrict to specific sources (optional)',
      'apiAccess.snippetSqlMode': 'SQL mode (return raw SQL query)',
      'apiAccess.snippetSelectSources': 'All sources (default)',
      'apiAccess.copy': 'Copy',
      'apiAccess.copied': 'Copied!',
      'apiAccess.endpoint': 'Endpoint',
      'studio.addNote': 'Add note',
      'studio.comingSoon': 'Coming soon',
      'studio.comingSoonDescription': 'This feature will be available soon.',

      // Report (Studio)
      'studio.reportTitle': 'Exploratory Report',
      'studio.reportDescription': 'Generate a rich HTML report with exploratory charts and observations about your data source.',
      'studio.reportSource': 'Data source',
      'studio.reportSelectSource': 'Select a source...',
      'studio.reportNoSource': 'No data sources available.',
      'studio.reportGenerate': 'Generate Report',
      'studio.reportGenerating': 'Generating...',
      'studio.reportGeneratingHint': 'This may take a minute — analyzing data and creating charts.',
      'studio.reportSaved': 'Report generated successfully!',
      'studio.reportSavedList': 'Saved reports',
      'studio.reportNoSaved': 'No reports generated yet.',
      'studio.reportDownload': 'Download',
      'studio.reportOpenNewTab': 'Open in new tab',
      'studio.reportLoadError': 'Failed to load reports.',
      'studio.reportGenerateError': 'Failed to generate report.',
      'studio.reportDeleted': 'Report deleted.',
      'studio.reportDeleteError': 'Failed to delete report.',
      'studio.reportLoadingHtml': 'Loading report...',
      'studio.reportSelectToView': 'Select a report to view.',

      // Graph (Studio)
      'graph.title': 'Graph / Data as Graph',
      'graph.description': 'Transform your table into a graph. Choose source and target columns to build nodes and edges.',
      'graph.maximize': 'Maximize for better view',
      'graph.restore': 'Restore window',
      'graph.sourceColumn': 'Source column (from)',
      'graph.targetColumn': 'Target column (to)',
      'graph.selectSource': 'Select source column',
      'graph.selectTarget': 'Select target column',
      'graph.noData': 'Add a data source with preview to visualize a graph.',
      'graph.noPreview': 'No preview data available for this source.',
      'graph.selectColumns': 'Select source and target columns above.',
      'graph.dataSource': 'Data source',
      'graph.noEdges': 'No edges with the selected columns. Try other columns.',
      'graph.nodes': 'nodes',
      'graph.links': 'links',
      'graph.modeLabel': 'Graph type',
      'graph.modeColumnPair': 'Column pair',
      'graph.modeColumnPairDesc': 'Values as nodes. Source→target edges per row.',
      'graph.modeProperty': 'Property graph',
      'graph.modePropertyDesc': 'Rows as nodes. Edges when A[source]=B[target] (FK-style).',
      'graph.modeBipartite': 'Bipartite',
      'graph.modeBipartiteDesc': 'Entity nodes (rows) + value nodes. Rows sharing a value connect through it.',
      'graph.valueColumn': 'Value column',
      'graph.selectValueColumn': 'Select column for value nodes',
      
      // Logs
      'logs.title': 'Platform logs',
      'logs.button': 'Logs',
      'logs.action': 'Action',
      'logs.channel': 'Channel',
      'logs.timestamp': 'Date/Time',
      'logs.provider': 'Provider',
      'logs.model': 'Model',
      'logs.tokensIn': 'Tokens in',
      'logs.tokensOut': 'Tokens out',
      'logs.source': 'Source',
      'logs.refresh': 'Refresh',
      'logs.close': 'Close',
      'logs.loading': 'Loading logs...',
      'logs.empty': 'No logs recorded yet.',
      'logs.emptyDescription': 'Ask questions or generate summaries to see logs here.',
      'logs.error': 'Error loading logs',
      'logs.actionQuestion': 'Question',
      'logs.actionSummary': 'Summary',
      'logs.details': 'Details',
      'logs.trace': 'LLM Trace',
      'logs.expand': 'Expand',
      'logs.collapse': 'Collapse',
      'logs.noTrace': 'No trace data available',
      'logs.stage': 'Stage',
      
      // Users Management
      'users.title': 'User Management',
      'users.description': 'Manage system users and permissions',
      'users.addUser': 'Add User',
      'users.addUserButton': 'Add User',
      'users.newUser': 'New User',
      'users.inviteNewUser': 'Invite New User',
      'users.inviteDescription': 'Invite a new user to access the system',
      'users.email': 'Email',
      'users.emailPlaceholder': 'user@example.com',
      'users.role': 'Role',
      'users.profile': 'Profile',
      'users.admin': 'Administrator',
      'users.member': 'Member',
      'users.createdAt': 'Created',
      'users.actions': 'Actions',
      'users.cancel': 'Cancel',
      'users.add': 'Add',
      'users.adding': 'Adding...',
      'users.addSuccess': 'User added successfully',
      'users.addError': 'Error adding user:',
      'users.emailAlreadyExists': 'This email is already registered in the system',
      'users.removeSuccess': 'User removed successfully',
      'users.removeError': 'Error removing user:',
      'users.noUsersFound': 'No users found',
      'users.validEmailError': 'Enter a valid email',
      'users.systemUsers': 'System Users',
      'users.inviteSuccess': 'User invited successfully! They will receive an email to set their password.',
      
      // Workspace Access Management
      'workspaceAccess.title': 'Workspace Access Control',
      'workspaceAccess.description': 'Manage user access to workspaces',
      'workspaceAccess.grantAccess': 'Grant Access',
      'workspaceAccess.grantAccessDescription': 'Allow users to access specific workspaces',
      'workspaceAccess.selectWorkspace': 'Select a workspace',
      'workspaceAccess.selectUser': 'Select a user',
      'workspaceAccess.grant': 'Grant',
      'workspaceAccess.grantedAccess': 'Granted Access',
      'workspaceAccess.grantedAccessDescription': 'List of users with access to each workspace',
      'workspaceAccess.workspace': 'Workspace',
      'workspaceAccess.user': 'User',
      'workspaceAccess.grantedAt': 'Granted Date',
      'workspaceAccess.actions': 'Actions',
      'workspaceAccess.noAccessGranted': 'No access granted',
      'workspaceAccess.selectWorkspaceAndUser': 'Select a workspace and a user',
      'workspaceAccess.accessGrantedSuccess': 'Access granted successfully',
      'workspaceAccess.accessGrantedError': 'Error granting access:',
      'workspaceAccess.accessRevokedSuccess': 'Access revoked successfully',
      'workspaceAccess.accessRevokedError': 'Error revoking access:',

      // Dashboards (Modal)
      'dashboardModal.title': 'Dashboards',
      'dashboard.createNew': 'Create dashboard',
      'dashboard.createNewDashboard': 'Create new dashboard',
      'dashboard.createDescription': 'Create a dashboard to organize your charts and visualizations.',
      'dashboard.name': 'Dashboard name',
      'dashboard.description': 'Description',
      'dashboard.descriptionOptional': 'Description (optional)',
      'dashboard.namePlaceholder': 'Ex: Sales Report',
      'dashboard.descriptionPlaceholder': 'Describe the purpose of this dashboard',
      'dashboard.cancel': 'Cancel',
      'dashboard.create': 'Create dashboard',
      'dashboard.edit': 'Edit',
      'dashboard.rename': 'Rename',
      'dashboard.delete': 'Delete',
      'dashboard.view': 'View',
      'dashboard.charts': 'charts',
      'dashboard.chart': 'chart',
      'dashboard.noCharts': 'No charts added',
      'dashboard.noChartsDescription': 'Go to a workspace and generate charts with your agents. Then, click "Add to dashboard" to add them here.',
      'dashboard.goToWorkspaces': 'Go to workspaces',
      'dashboard.addToDashboard': 'Add to dashboard',
      'dashboard.selectDashboard': 'Select a dashboard',
      'dashboard.selectDashboardPlaceholder': 'Select a dashboard',
      'dashboard.noDashboardsFound': 'No dashboards found. Create a dashboard first on the home page.',
      'dashboard.add': 'Add',
      'dashboard.addToTitle': 'Add to dashboard',
      'dashboard.addToDescription': 'Select a dashboard to add this chart.',
      'dashboard.createSuccess': 'Dashboard created successfully!',
      'dashboard.createError': 'Error creating dashboard',
      'dashboard.loadError': 'Error loading dashboards',
      'dashboard.updateSuccess': 'Dashboard updated successfully!',
      'dashboard.updateError': 'Error updating dashboard',
      'dashboard.deleteSuccess': 'Dashboard deleted successfully!',
      'dashboard.deleteError': 'Error deleting dashboard',
      'dashboard.deleteConfirm': 'Are you sure you want to delete the dashboard "{name}"?',
      'dashboard.chartAddedSuccess': 'Chart added to dashboard!',
      'dashboard.chartAddedError': 'Error adding chart to dashboard',
      'dashboard.chartRemovedSuccess': 'Chart removed from dashboard!',
      'dashboard.chartRemovedError': 'Error removing chart',
      'dashboard.chartRemoveConfirm': 'Are you sure you want to remove this chart from the dashboard?',
      'dashboard.editDashboard': 'Edit dashboard',
      'dashboard.editDashboardDescription': 'Update your dashboard information.',
      'dashboard.saveChanges': 'Save changes',
      'dashboard.editChart': 'Edit chart',
      'dashboard.editChartDescription': 'Update the chart title and description.',
      'dashboard.chartTitle': 'Chart title',
      'dashboard.chartDescription': 'Description',
      'dashboard.chartTitlePlaceholder': 'Chart title',
      'dashboard.chartDescriptionPlaceholder': 'Chart description',
      'dashboard.untitledChart': 'Untitled chart',
      'dashboard.question': 'Question',
      'dashboard.notFound': 'Dashboard not found',
      'dashboard.notFoundDescription': 'The dashboard you are looking for does not exist.',
      'dashboard.backToHome': 'Back to home',
      'dashboard.loading': 'Loading dashboard...',
      'dashboard.seoDescription': 'Visualize your charts and data',
      'dashboard.remove': 'Remove',
      'dashboard.chartUpdateSuccess': 'Chart updated successfully!',
      'dashboard.chartUpdateError': 'Error updating chart',
      'dashboard.chartLoadError': 'Could not load chart image',

      // Walkthrough
      'walkthrough.stepOf': '{current} of {total}',
      'walkthrough.skip': 'Skip tutorial',
      'walkthrough.next': 'Next',
      'walkthrough.prev': 'Back',
      'walkthrough.finish': 'Finish',

      // Walkthrough — Index
      'walkthrough.index.welcome.title': 'Welcome to Data Talks!',
      'walkthrough.index.welcome.description': 'This is your home page where you manage all your workspaces. Each workspace is a separate data analysis environment.',
      'walkthrough.index.create.title': 'Create a workspace',
      'walkthrough.index.create.description': 'Click here to create a new workspace and start analyzing your data with AI.',
      'walkthrough.index.agents.title': 'Your workspaces',
      'walkthrough.index.agents.description': 'Your workspaces will appear here. Click on any card to open it and start asking questions.',
      'walkthrough.index.viewSort.title': 'View & sort',
      'walkthrough.index.viewSort.description': 'Switch between grid and list views, or sort your workspaces by date or name.',
      'walkthrough.index.settings.title': 'Settings menu',
      'walkthrough.index.settings.description': 'Access your account settings, AI model configuration, data connections, and user management from here.',

      // Walkthrough — Workspace
      'walkthrough.workspace.welcome.title': 'Your workspace',
      'walkthrough.workspace.welcome.description': 'This is the main area for data analysis. Here you connect data sources and ask questions in natural language.',
      'walkthrough.workspace.sources.title': 'Data sources',
      'walkthrough.workspace.sources.description': 'Your connected data sources appear in this panel. You can have CSV files, databases, Google Sheets, and more.',
      'walkthrough.workspace.addSource.title': 'Add a data source',
      'walkthrough.workspace.addSource.description': 'Click here to connect a new data source — upload a CSV, connect to a database, BigQuery, or Google Sheets.',
      'walkthrough.workspace.chatInput.title': 'Ask a question',
      'walkthrough.workspace.chatInput.description': 'Type your questions here in natural language. For example: "What were the top 5 products by revenue last month?"',
      'walkthrough.workspace.chatArea.title': 'AI responses',
      'walkthrough.workspace.chatArea.description': 'The AI responses with text, tables, and charts will appear here. You can also see follow-up suggestions.',
      'walkthrough.workspace.logs.title': 'Execution logs',
      'walkthrough.workspace.logs.description': 'View the SQL queries and Python code generated by the AI. Useful for debugging or understanding how your question was answered.',
      'walkthrough.workspace.clear.title': 'Clear conversation',
      'walkthrough.workspace.clear.description': 'Reset the current conversation and start fresh. Your previous conversations are still available in the history.',
      'walkthrough.workspace.agentSettings.title': 'Agent settings',
      'walkthrough.workspace.agentSettings.description': 'Configure this agent — change its name, description, connected data sources, and suggested questions.',
      'walkthrough.workspace.studio.title': 'Tools & integrations',
      'walkthrough.workspace.studio.description': 'Use these tools to generate reports, summaries, audio overviews, and connect to Slack, Telegram, or WhatsApp.',
      'walkthrough.workspace.history.title': 'Conversation history',
      'walkthrough.workspace.history.description': 'Access your previous conversations and resume them anytime.',

      // Walkthrough — Dashboard
      'walkthrough.dashboard.overview.title': 'Your dashboard',
      'walkthrough.dashboard.overview.description': 'Dashboards display your saved charts in a visual layout. Organize your most important visualizations here.',
      'walkthrough.dashboard.charts.title': 'Chart cards',
      'walkthrough.dashboard.charts.description': 'Each card shows a chart from your analysis sessions. Add charts from the workspace to build your dashboard.',
      'walkthrough.dashboard.actions.title': 'Chart actions',
      'walkthrough.dashboard.actions.description': 'Edit titles, descriptions, or remove charts using the menu on each card.',

      // Walkthrough — Agent Briefing
      'walkthrough.agentBriefing.nameDesc.title': 'Name your agent',
      'walkthrough.agentBriefing.nameDesc.description': 'Give your agent a name and description so you can easily identify it later.',
      'walkthrough.agentBriefing.sources.title': 'Select data sources',
      'walkthrough.agentBriefing.sources.description': 'Choose which data sources this agent will have access to for answering questions.',
      'walkthrough.agentBriefing.questions.title': 'Suggested questions',
      'walkthrough.agentBriefing.questions.description': 'Add suggested questions that will appear as quick-start prompts when users open this workspace.',
      'walkthrough.agentBriefing.save.title': 'Save your agent',
      'walkthrough.agentBriefing.save.description': 'When you are done configuring, click save to create or update your agent.',

      // Walkthrough — Account
      'walkthrough.account.overview.title': 'Settings',
      'walkthrough.account.overview.description': 'Manage your account settings, AI model configuration, connections, and more from this sidebar.',
      'walkthrough.account.llm.title': 'AI model settings',
      'walkthrough.account.llm.description': 'Configure which AI model (OpenAI, Ollama, or LiteLLM) is used for your data analysis.',
      'walkthrough.account.connections.title': 'Connections',
      'walkthrough.account.connections.description': 'Manage your database and API connections here.',
      'walkthrough.account.sources.title': 'Data sources',
      'walkthrough.account.sources.description': 'View and manage all your connected data sources across workspaces.',

      // Walkthrough — Alerts
      'walkthrough.alerts.overview.title': 'Alerts',
      'walkthrough.alerts.overview.description': 'Set up automated alerts to monitor your data and receive notifications by email or webhook.',
      'walkthrough.alerts.create.title': 'Create an alert',
      'walkthrough.alerts.create.description': 'Define what to monitor, how often to check, and where to send notifications.',
      'walkthrough.alerts.webhooks.title': 'Webhooks',
      'walkthrough.alerts.webhooks.description': 'Configure webhook URLs for advanced integrations with external tools.',
   },
  pt: {
    // Common
    'common.loading': 'Carregando...',
    
    // Navigation
    'nav.dashboard': 'Painel',
    'nav.account': 'Conta',
    'nav.logout': 'Sair',
    'nav.getStarted': 'Começar agora',
    'nav.tagline': 'Converse com seus dados',
    
    // Hero Section
    'hero.title': 'Transforme seus dados em conversas inteligentes',
    'hero.subtitle': 'Conecte suas fontes de dados e faça perguntas em linguagem natural. Obtenha insights instantâneos sem consultas complexas.',
    'hero.getStarted': 'Começar agora',
    'hero.howItWorks': 'Como funciona',
    
    // How it works
    'howItWorks.title': 'Como funciona',
    'howItWorks.step1.title': 'Conecte seus dados',
    'howItWorks.step1.description': 'Carregue arquivos CSV, conecte ao BigQuery ou adicione outras fontes de dados',
    'howItWorks.step2.title': 'Faça perguntas',
    'howItWorks.step2.description': 'Use linguagem natural para consultar seus dados',
    'howItWorks.step3.title': 'Obtenha insights',
    'howItWorks.step3.description': 'Receba respostas instantâneas com gráficos e visualizações',
    'howItWorks.step4.title': 'Alertas',
    'howItWorks.step4.description': 'Crie alertas para monitorar métricas e receber notificações',
    
    // Benefits
    'benefits.title': 'Benefícios',
    'benefits.easy.title': 'Fácil de usar',
    'benefits.easy.description': 'Não é necessário aprender SQL ou linguagens de consulta complexas',
    'benefits.easy.extended': 'Faça perguntas em linguagem natural e obtenha insights sem precisar escrever consultas complexas.',
    'benefits.easy.tagline': 'Análise de dados simplificada.',
    'benefits.fast.title': 'Insights rápidos',
    'benefits.fast.description': 'Obtenha respostas em segundos, não em horas',
    'benefits.fast.extended': 'Conecte suas fontes de dados e comece a fazer perguntas imediatamente para obter respostas instantâneas.',
    'benefits.fast.tagline': 'Tome decisões com agilidade.',
    'benefits.secure.title': 'Seguro',
    'benefits.secure.description': 'Seus dados permanecem privados e seguros',
    'benefits.secure.extended': 'Seus dados são criptografados e você mantém total controle sobre quem pode acessá-los.',
    'benefits.secure.tagline': 'Privacidade garantida.',
    
    // Auth
    'auth.title': 'Acessar sua conta',
    'auth.login': 'Login',
    'auth.register': 'Registrar',
    'auth.username': 'Usuário',
    'auth.email': 'E-mail',
    'auth.password': 'Senha',
    'auth.name': 'Nome',
    'auth.loginButton': 'Entrar',
    'auth.registerButton': 'Criar conta',
    'auth.loginError': 'Falha ao entrar. Tente novamente.',
    'auth.registerError': 'Falha ao registrar. Tente novamente.',
    'auth.registerSuccess': 'Cadastro realizado! Verifique seu e-mail para confirmar e então faça login.',
    'auth.forgotPassword': 'Esqueceu a senha?',
    
    // Dashboard
    'dashboard.title': 'Dashboard',
    'dashboard.dataSources': 'Fontes de Dados',
    'dashboard.connectedSources': 'fonte(s) conectada(s)',
    'dashboard.addSource': 'Configurar Fontes',
    'dashboard.agentConfig': 'Configuração do Agente',
    'dashboard.agentConfigDesc': 'Adicione o detalhamento das fontes para o agente entender o contexto.',
    'dashboard.configureAgent': 'Configurar Agente',
    'dashboard.questionsAnswers': 'Perguntas & Respostas',
    'dashboard.activeAgents': 'agente(s) ativo(s)',
    'dashboard.newQuestion': 'Nova Pergunta',
    'dashboard.alerts': 'Alertas',
    'dashboard.configuredAlerts': 'alerta(s) configurado(s)',
    'dashboard.createAlert': 'Criar Alerta',
    'dashboard.channelConfig': 'Configuração de Canais',
    'dashboard.channelConfigDesc': 'Configure em quais canais seus agentes estarão disponíveis.',
    'dashboard.configureChannels': 'Configurar Canais',
    'dashboard.dataExplore': 'Exploração de Dados',
    'dashboard.dataExploreDesc': 'Explore e analise seus dados com visualizações interativas e insights.',
    'dashboard.autoML': 'Auto ML',
    'dashboard.autoMLDesc': 'Construa e implante automaticamente modelos de machine learning a partir dos seus dados.',
    'dashboard.comingSoon': 'Em Breve',
    
    // Sources
    'sources.title': 'Fontes',
    'sources.add': 'Adicionar',
    'sources.filesTab': 'Arquivos (CSV/XLSX)',
    'sources.bigQueryTab': 'Google BigQuery',
    'sources.uploadButton': 'Fazer upload',
    'sources.uploading': 'Enviando...',
    'sources.connectBigQuery': 'Conectar BigQuery',
    'sources.connecting': 'Conectando...',
    'sources.credentials': 'Credenciais (JSON)',
    'sources.project': 'Projeto',
    'sources.dataset': 'Dataset',
    'sources.allowedTables': 'Tabelas permitidas (separadas por vírgula)',
    'sources.projectPlaceholder': 'meu-projeto',
    'sources.datasetPlaceholder': 'analytics',
    'sources.tablesPlaceholder': 'orders, customers',
    'sources.noSourcesFound': 'Nenhuma fonte de dados encontrada. Faça upload de arquivos CSV ou XLSX acima.',
    'sources.deleteConfirm': 'Tem certeza que deseja deletar esta fonte de dados?',
    'sources.uploadError': 'Erro no upload:',
    'sources.selectCredentialsFile': 'Por favor, selecione o arquivo de credenciais JSON',
    'sources.fillRequiredFields': 'Por favor, preencha todos os campos obrigatórios',
    'sources.bigQueryConnected': 'BigQuery conectado com sucesso! Fonte:',
    'sources.bigQueryError': 'Erro ao conectar BigQuery:',
    'sources.unknownError': 'Erro desconhecido',
    'sources.createdAt': 'Criado em:',
    'sources.langflowIntegration': 'Integração Langflow',
    'sources.langflowName': 'Nome no Langflow:',
    'sources.langflowPath': 'Caminho:',
    'sources.warning': 'Aviso:',
    'sources.fileNotUploaded': 'Arquivo não foi carregado no Langflow',
    'sources.rows': 'Linhas:',
    'sources.columns': 'Colunas',
    'sources.firstRows': 'Primeiras linhas:',
    'sources.size': 'Tamanho:',
    'sources.connectedTables': 'Tabelas conectadas:',
    'sources.tablesNotFound': 'Tabelas não encontradas:',
    'sources.removeFile': 'Remover',
    'sources.bigQueryInstructions': 'Como obter seu arquivo JSON de credenciais do BigQuery:',
    'sources.bigQueryStep1': '1. Acesse o Google Cloud Console',
    'sources.bigQueryStep2': '2. Navegue para APIs e Serviços > Credenciais',
    'sources.bigQueryStep3': '3. Clique em "Criar Credenciais" > "Conta de Serviço"',
    'sources.bigQueryStep4': '4. Preencha os detalhes da conta de serviço e clique em "Criar"',
    'sources.bigQueryStep5': '5. Clique na conta de serviço criada',
    'sources.bigQueryStep6': '6. Vá para a aba "Chaves" e clique em "Adicionar Chave" > "Criar nova chave"',
    'sources.bigQueryStep7': '7. Selecione o formato "JSON" e baixe o arquivo',
    'sources.bigQueryStep8': '8. Faça upload do arquivo JSON baixado acima',
    'sources.bigQueryDocsLink': 'Ver documentação oficial',
    'sources.useExistingCredential': 'Usar credencial existente',
    'sources.selectCredential': 'Selecione uma credencial',
    'sources.savedSourcesAppear': 'As fontes salvas aparecerão aqui',
    'sources.addSourcesInstructions': 'Clique em Adicionar acima para adicionar arquivos CSV ou XLSX, conectar ao BigQuery ou vincular Google Sheets.',
    'sources.relationships': 'Vínculos SQL',
    'sources.active': 'Ativa',
    'sources.sourceActivated': 'Fonte ativada com sucesso',
    'sources.sqlSourceActivated': 'Fonte SQL ativada com sucesso',
    'sources.sqlSourceDeactivated': 'Fonte SQL desativada com sucesso',
    'sources.activateError': 'Erro ao ativar fonte',

    // SQL Relationships
    'sqlRelationships.title': 'Relacionamentos SQL',
    'sqlRelationships.description': 'Conecte fontes SQL para que o workspace consulte tabelas relacionadas em conjunto.',
    'sqlRelationships.loadError': 'Erro ao carregar relacionamentos SQL',
    'sqlRelationships.saveSuccess': 'Relacionamentos SQL salvos com sucesso',
    'sqlRelationships.saveError': 'Erro ao salvar relacionamentos SQL',
    'sqlRelationships.needMoreSourcesTitle': 'Adicione mais fontes SQL',
    'sqlRelationships.needMoreSourcesDescription': 'Você precisa de pelo menos duas fontes SQL neste workspace para criar relacionamentos.',
    'sqlRelationships.suggestionsTitle': 'Sugestões automáticas',
    'sqlRelationships.suggestionsDescription': 'Colunas com o mesmo nome são sugeridas automaticamente.',
    'sqlRelationships.addManual': 'Adicionar relacionamento',
    'sqlRelationships.noSuggestions': 'Nenhuma sugestão automática foi encontrada para as fontes SQL atuais.',
    'sqlRelationships.useSuggestion': 'Usar sugestão',
    'sqlRelationships.dismissSuggestion': 'Excluir (ocultar permanentemente)',
    'sqlRelationships.relationshipsTitle': 'Relacionamentos configurados',
    'sqlRelationships.relationshipsDescription': 'Esses vínculos serão usados automaticamente nas perguntas SQL multi-source.',
    'sqlRelationships.noRelationships': 'Nenhum relacionamento configurado ainda.',
    'sqlRelationships.relationshipLabel': 'Relacionamento {index}',
    'sqlRelationships.leftSide': 'Lado esquerdo',
    'sqlRelationships.rightSide': 'Lado direito',
    'sqlRelationships.swapSides': 'Inverter lados',
    'sqlRelationships.selectSource': 'Selecionar fonte',
    'sqlRelationships.selectTable': 'Selecionar tabela',
    'sqlRelationships.selectColumn': 'Selecionar coluna',
    'sqlRelationships.cancel': 'Cancelar',
    'sqlRelationships.save': 'Salvar relacionamentos',
    'sqlRelationships.diagramTab': 'Diagrama ER',
    'sqlRelationships.connectionsTab': 'Conexões',
    'sqlRelationships.diagramTitle': 'Visão de relacionamento entre entidades',
    'sqlRelationships.diagramDescription': 'Veja como as tabelas SQL selecionadas se conectam pelos relacionamentos configurados.',
    'sqlRelationships.diagramEmpty': 'Adicione pelo menos um relacionamento para renderizar o diagrama ER.',
    'sqlRelationships.diagramPanHint': 'Arraste o diagrama com o mouse para navegar',
    'sqlRelationships.diagramEditorTitle': 'Editar pelo diagrama',
    'sqlRelationships.diagramEditorDescription': 'Clique em uma linha de conexão para editar ou remover aqui.',
    'sqlRelationships.diagramSelectedTitle': 'Conexão selecionada',
    'sqlRelationships.diagramSelectedDescription': 'Ajuste o relacionamento diretamente pela visualização do diagrama ER.',
    'sqlRelationships.diagramSelectRelationship': 'Selecione uma conexão no diagrama para editá-la aqui.',
    
    // Agent
    'agent.title': 'Configuração do Agente',
    'agent.name': 'Nome',
    'agent.namePlaceholder': 'Ex.: Análises de Vendas 2025',
    'agent.selectAgent': 'Selecionar Agente',
    'agent.description': 'Descrição',
    'agent.descriptionPlaceholder': 'Descreva o que este agente deve fazer...',
    'agent.dataSource': 'Fonte de Dados',
    'agent.selectDataSource': 'Selecione uma fonte de dados',
    'agent.sharing': 'Compartilhamento',
    'agent.enableSharing': 'Habilitar compartilhamento',
    'agent.sharePassword': 'Senha de compartilhamento',
    'agent.sharePasswordPlaceholder': 'Deixe vazio para sem senha',
    'agent.shareLink': 'Link de compartilhamento',
    'agent.copyLink': 'Copiar link',
    'agent.linkCopied': 'Link copiado!',
    'agent.suggestedQuestions': 'Perguntas Sugeridas',
    'agent.addQuestion': 'Adicionar pergunta',
    'agent.questionPlaceholder': 'Digite uma pergunta sugerida...',
    'agent.save': 'Salvar',
    'agent.saving': 'Salvando...',
    'agent.delete': 'Deletar',
    'agent.deleting': 'Deletando...',
    'agent.deleteConfirm': 'Tem certeza que deseja deletar o agente "{name}"? Esta ação não pode ser desfeita.',
    'agent.deleted': 'Agente deletado',
    'agent.deletedSuccess': 'Agente deletado com sucesso',
    'agent.error': 'Erro',
    'agent.saved': 'Agente salvo',
    'agent.savedSuccess': 'Agente salvo com sucesso',
    'agent.createAgent': 'Criar Agente',
    'agent.saveChanges': 'Salvar Alterações',
    'agent.newAgent': 'Novo agente',
    'agent.noDataSourcesFound': 'Nenhuma fonte de dados encontrada. Adicione fontes primeiro.',
    'agent.selectDataSourceHelp': 'Selecione a fonte de dados que este agente terá acesso para responder perguntas.',
    'agent.addSuggestedQuestionsHelp': 'Adicione perguntas que aparecerão como sugestões quando alguém usar este agente.',
    'agent.enableSharingHelp': 'Permite que pessoas externas acessem este agente',
    'agent.linkCopiedDescription': 'Link compartilhável copiado para a área de transferência',
    'agent.passwordProtected': 'Acesso protegido por senha',
    'agent.publicAccess': 'Acesso público - qualquer pessoa com o link pode acessar',
    'agent.passwordUpdated': 'Senha atualizada',
    'agent.passwordUpdatedSuccess': 'Senha de compartilhamento atualizada com sucesso',
    'agent.sharingEnabled': 'Compartilhamento ativado',
    'agent.sharingDisabled': 'Compartilhamento desativado',
    'agent.sharingEnabledSuccess': 'Link compartilhável criado com sucesso',
    'agent.sharingDisabledSuccess': 'Link compartilhável removido',
    
    // Questions
    'questions.title': 'Perguntas',
    'questions.beforeStart': 'Antes de começar',
    'questions.createAgentFirst': 'Crie um agente em "Briefing" para começar a perguntar.',
    'questions.agent': 'Agente',
    'questions.questionPlaceholder': 'Ex.: Qual a receita dos últimos 3 meses por região?',
    'questions.ask': 'Perguntar',
    'questions.processing': 'Processando...',
    'questions.error': 'Erro:',
    'questions.feedbackError': 'Erro ao salvar feedback:',
    'questions.suggestedQuestions': 'Perguntas Sugeridas',
    'questions.suggestedQuestionsLabel': 'Perguntas Sugeridas',
    'questions.clickToAsk': 'Clique para perguntar',
    'questions.noSessions': 'Nenhuma pergunta feita ainda.',
    'questions.noQuestionsFound': 'Nenhuma pergunta encontrada ainda.',
    'questions.processingQuestion': 'Processando sua pergunta...',
    'questions.question': 'Pergunta',
    'questions.answerNotAvailable': 'Resposta não disponível',
    'questions.analysisResult': 'Resultado da Análise',
    'questions.followUpQuestions': 'Perguntas de Acompanhamento',
    'questions.positiveFeedbackLabel': 'Marcar como feedback positivo',
    'questions.negativeFeedbackLabel': 'Marcar como feedback negativo',
    'questions.deleteQuestionLabel': 'Deletar pergunta',
    'questions.deleteQuestionConfirm': 'Tem certeza que deseja deletar esta pergunta?',
     'questions.status': 'Status',
     'questions.availableColumns': 'Colunas disponíveis',
     'questions.kpis': 'KPIs',
     'filters.button': 'Filtros',
     'filters.title': 'Filtros',
     'filters.help': 'Aplicados como prefixo de restrição em cada pergunta enviada.',
     'filters.clearAll': 'Limpar',
     'filters.any': 'Qualquer',
     'onboarding.filtersTitle': 'Filtros sugeridos',
     'onboarding.filtersHint': 'Filtros de data e categoria viram um menu no workspace ao lado do botão de logs.',
     'onboarding.filtersEmpty': 'Nenhum filtro sugerido. Você pode adicioná-los depois nas configurações da fonte.',
     'questions.warmupQuestions': 'Perguntas de Aquecimento',
     'questions.clearConversation': 'Limpar conversa',
     'questions.seoDescription': 'Faça perguntas em linguagem natural',
     'questions.dateFormat': 'pt-BR',
     
     // Agent Settings
     'agentSettings.title': 'Configurações do Agente',
     'agentSettings.sqlMode': 'Modo SQL',
    'agentSettings.sqlModeHelp': 'Quando ativado, o agente responderá com a query SQL em vez da resposta final.',
    'agentSettings.instructions': 'Orientações Específicas para o Agente',
     'agentSettings.instructionsPlaceholder': 'Digite as orientações específicas que o agente deve seguir ao responder perguntas...',
     'agentSettings.instructionsHelp': 'Essas orientações serão usadas pelo agente para personalizar as respostas.',
     'agentSettings.warmupQuestions': 'Perguntas de Aquecimento',
     'agentSettings.warmupQuestionsHelp': 'Essas perguntas aparecerão abaixo das colunas disponíveis para ajudar os usuários a começar.',
     'agentSettings.addQuestion': 'Digite uma nova pergunta de aquecimento...',
     'agentSettings.cancel': 'Cancelar',
     'agentSettings.save': 'Salvar',
     'agentSettings.saving': 'Salvando...',
     'agentSettings.loadError': 'Erro ao carregar configurações',
     'agentSettings.saveSuccess': 'Configurações salvas com sucesso',
     'agentSettings.saveError': 'Erro ao salvar configurações',

     // Telegram
     'telegram.title': 'Integração com Telegram',
     'telegram.description': 'Conecte este workspace a um grupo do Telegram. O bot responderá mensagens usando os dados deste workspace.',
     'telegram.connections': 'Grupos conectados',
     'telegram.refresh': 'Atualizar',
     'telegram.connect': 'Conectar',
     'telegram.generatingLink': 'Conectando...',
     'telegram.instructionsReady': 'Instruções geradas. Siga os passos abaixo no Telegram para concluir a conexão.',
     'telegram.linkOpened': 'Link do Telegram aberto. Adicione o bot ao grupo e aguarde a conexão.',
     'telegram.notConfigured': 'Nenhuma configuração de bot do Telegram está disponível. Configure o bot padrão no .env do backend ou adicione uma em Conta > Connections.',
     'telegram.connectError': 'Erro ao gerar link de conexão',
     'telegram.configLoadError': 'Erro ao carregar configurações do Telegram',
     'telegram.connectionConfigLabel': 'Configuração do Telegram',
     'telegram.connectionConfigPlaceholder': 'Selecione uma configuração de bot',
     'telegram.selectConfigRequired': 'Selecione uma configuração do Telegram antes de conectar.',
     'telegram.noBotConfigTitle': 'Nenhuma configuração do Telegram disponível',
     'telegram.noBotConfigDescriptionPrefix': 'Configure TELEGRAM_BOT_TOKEN e TELEGRAM_BOT_USERNAME no .env do backend ou adicione uma nova conexão em ',
     'telegram.configureConnectionsLink': 'Conta > Connections',
     'telegram.noBotConfigDescriptionSuffix': '.',
     'telegram.noConnections': 'Nenhum grupo conectado ainda. Clique em',
     'telegram.noConnectionsSuffix': 'para começar.',
     'telegram.remove': 'Remover conexão',
     'telegram.removeConfirm': 'Remover a conexão com',
     'telegram.removeSuccess': 'Conexão removida com sucesso.',
     'telegram.removeError': 'Erro ao remover conexão',
     'telegram.fallbackTitle': 'Instruções de conexão',
     'telegram.fallbackDescription': 'Use o comando temporário abaixo para conectar o bot manualmente. Você não precisa abrir um link do Telegram por aqui.',
     'telegram.fallbackExpires': 'Válido até:',
     'telegram.fallbackStep1': '1. Crie ou abra o grupo de destino no Telegram.',
     'telegram.fallbackStep2': '2. Adicione o bot',
     'telegram.fallbackStep3': '3. Envie o comando abaixo no grupo para conectá-lo a este workspace.',
     'telegram.copyCommand': 'Copiar comando',
     'telegram.copyLink': 'Copiar link',
     'telegram.commandCopied': 'Comando copiado.',
     'telegram.linkCopied': 'Link copiado.',
     'telegram.copyError': 'Não foi possível copiar para a área de transferência.',
     'whatsapp.title': 'Integração com WhatsApp',
     'whatsapp.description': 'Conecte este workspace a um número de telefone WhatsApp Business. As mensagens enviadas para esse número serão respondidas usando os dados deste workspace.',
     'whatsapp.connect': 'Conectar',
     'whatsapp.connecting': 'Conectando...',
     'whatsapp.refresh': 'Atualizar',
     'whatsapp.connectionConfigLabel': 'Configuração do WhatsApp',
     'whatsapp.connectionConfigPlaceholder': 'Selecione uma configuração do WhatsApp',
     'whatsapp.selectConfigRequired': 'Selecione uma configuração do WhatsApp antes de conectar.',
     'whatsapp.noBotConfigTitle': 'Nenhuma configuração do WhatsApp disponível',
     'whatsapp.noBotConfigDescriptionPrefix': 'Configure WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_ACCESS_TOKEN e WHATSAPP_VERIFY_TOKEN no .env do backend ou adicione uma nova conexão em ',
     'whatsapp.configureConnectionsLink': 'Conta > Connections',
     'whatsapp.noBotConfigDescriptionSuffix': '.',
     'whatsapp.noConnections': 'Nenhum número conectado ainda. Clique em',
     'whatsapp.noConnectionsSuffix': 'para conectar.',
     'whatsapp.remove': 'Remover conexão',
     'whatsapp.removeConfirm': 'Remover a conexão do WhatsApp para',
     'whatsapp.removeSuccess': 'Conexão removida com sucesso.',
     'whatsapp.removeError': 'Erro ao remover conexão',
     'whatsapp.connectSuccess': 'WhatsApp conectado com sucesso.',
     'whatsapp.connectError': 'Erro ao conectar WhatsApp',
     'whatsapp.configLoadError': 'Erro ao carregar configurações do WhatsApp',
     'whatsapp.webhookTitle': 'Configuração do webhook',
     'whatsapp.webhookDescription': 'Registre a URL abaixo no painel do seu App Meta como URL de webhook do WhatsApp:',
     'whatsapp.webhookCopied': 'URL do webhook copiada.',
     'whatsapp.copyWebhook': 'Copiar URL',
     'slack.title': 'Integração com Slack',
     'slack.description': 'Conecte este workspace a um canal do Slack. O bot responderá mensagens e comandos slash usando os dados deste workspace.',
     'slack.connect': 'Conectar canal',
     'slack.connecting': 'Conectando...',
     'slack.refresh': 'Atualizar',
     'slack.addToSlack': 'Adicionar ao Slack',
     'slack.connectionConfigLabel': 'Configuração do Slack',
     'slack.connectionConfigPlaceholder': 'Selecione uma configuração do Slack',
     'slack.selectConfigRequired': 'Selecione uma configuração do Slack antes de conectar.',
     'slack.channelId': 'ID do canal',
     'slack.channelIdPlaceholder': 'ex: C01ABCDEF23',
     'slack.channelIdRequired': 'Informe o ID do canal do Slack para conectar.',
     'slack.needsOAuth': 'Precisa de OAuth',
     'slack.oauthSuccess': 'Workspace do Slack conectado com sucesso. Atualize a lista para ver a mudança.',
     'slack.noBotConfigTitle': 'Nenhuma configuração do Slack disponível',
     'slack.noBotConfigDescriptionPrefix': 'Adicione uma configuração de app Slack em ',
     'slack.configureConnectionsLink': 'Conta > Conexões',
     'slack.noBotConfigDescriptionSuffix': ' para começar.',
     'slack.noConnections': 'Nenhum canal conectado ainda. Clique em',
     'slack.noConnectionsSuffix': 'para conectar um canal.',
     'slack.remove': 'Remover conexão',
     'slack.removeConfirm': 'Remover a conexão do Slack com',
     'slack.removeSuccess': 'Conexão removida com sucesso.',
     'slack.removeError': 'Erro ao remover conexão',
     'slack.connectSuccess': 'Canal do Slack conectado com sucesso.',
     'slack.connectError': 'Erro ao conectar canal do Slack',
     'slack.configLoadError': 'Erro ao carregar configurações do Slack',
     'slack.webhookUrls': 'URLs de Webhook',
     'slack.webhookUrlsHint': 'Configure essas URLs nas configurações do seu app Slack (Event Subscriptions e Slash Commands).',
     'slack.urlCopied': 'URL copiada.',
     'slack.copyError': 'Não foi possível copiar para a área de transferência.',
     'connections.title': 'Connections',
     'connections.add': 'Adicionar conexão',
     'connections.addTitle': 'Adicionar conexão do Telegram',
     'connections.addDescription': 'Salve uma configuração de bot do Telegram para usar ao conectar workspaces.',
     'connections.nameLabel': 'Nome da conexão',
     'connections.namePlaceholder': 'ex: Bot de vendas',
     'connections.telegramTokenLabel': 'TELEGRAM_BOT_TOKEN',
     'connections.telegramUsernameLabel': 'TELEGRAM_BOT_USERNAME',
     'connections.envBadge': 'Padrão (.env)',
     'connections.help': 'As configurações salvas de Telegram podem ser selecionadas ao conectar um workspace.',
     'connections.empty': 'Nenhuma configuração de conexão ainda',
     'connections.emptyDescription': 'Adicione um bot do Telegram aqui ou configure o bot padrão no arquivo .env do backend.',
     'connections.emptyHelp': 'Você não tem bot padrão no environment nem conexões salvas ainda.',
     'connections.loading': 'Carregando conexões...',
     'connections.loadError': 'Não foi possível carregar as conexões',
     'connections.requiredFields': 'Preencha todos os campos obrigatórios',
     'connections.saveSuccess': 'Conexão salva com sucesso',
     'connections.saveError': 'Erro ao salvar conexão',
     'connections.delete': 'Excluir conexão',
     'connections.deleteTitle': 'Excluir conexão',
     'connections.deleteDescription': 'Excluir a conexão "{name}"?',
     'connections.deleteConfirm': 'Excluir',
     'connections.deleteSuccess': 'Conexão excluída com sucesso',
     'connections.deleteError': 'Erro ao excluir conexão',
     'connections.cancel': 'Cancelar',
     'connections.saving': 'Salvando...',
     'connections.telegramSection': 'Telegram',
     'connections.whatsappSection': 'WhatsApp',
     'connections.addWhatsApp': 'Adicionar WhatsApp',
     'connections.addWhatsAppTitle': 'Adicionar conexão do WhatsApp',
     'connections.addWhatsAppDescription': 'Salve uma configuração de WhatsApp Business API para usar ao conectar workspaces.',
     'connections.whatsappPhoneNumberIdLabel': 'WHATSAPP_PHONE_NUMBER_ID',
     'connections.whatsappAccessTokenLabel': 'WHATSAPP_ACCESS_TOKEN',
     'connections.whatsappVerifyTokenLabel': 'WHATSAPP_VERIFY_TOKEN',
     'connections.whatsappVerifyTokenPlaceholder': 'Uma string secreta que você define',
     'connections.whatsappEmpty': 'Nenhuma configuração do WhatsApp ainda',
     'connections.whatsappEmptyDescription': 'Adicione uma configuração de WhatsApp Business API aqui ou configure os valores padrão no arquivo .env do backend.',
     'connections.slackClientIdLabel': 'Slack Client ID',
     'connections.slackClientSecretLabel': 'Slack Client Secret',
     'connections.slackSigningSecretLabel': 'Slack Signing Secret',
     'connections.typeLabel': 'Tipo',

     // Alerts
    'alerts.title': 'Alertas',
    'alerts.beforeStart': 'Antes de começar',
    'alerts.createAgentFirst': 'Crie um agente em "Briefing" para começar a criar alertas.',
    'alerts.agent': 'Agente',
    'alerts.alertName': 'Nome do Alerta',
    'alerts.question': 'Pergunta',
    'alerts.email': 'E-mail',
    'alerts.emailPlaceholder': 'seu@email.com',
    'alerts.frequency': 'Frequência',
    'alerts.daily': 'Diário',
    'alerts.weekly': 'Semanal',
    'alerts.monthly': 'Mensal',
    'alerts.executionTime': 'Horário de Execução',
    'alerts.dayOfWeek': 'Dia da Semana',
    'alerts.dayOfMonth': 'Dia do Mês',
    'alerts.monday': 'Segunda-feira',
    'alerts.tuesday': 'Terça-feira',
    'alerts.wednesday': 'Quarta-feira',
    'alerts.thursday': 'Quinta-feira',
    'alerts.friday': 'Sexta-feira',
    'alerts.saturday': 'Sábado',
    'alerts.sunday': 'Domingo',
    'alerts.createAlert': 'Criar Alerta',
    'alerts.creating': 'Criando...',
    'alerts.fillRequiredFields': 'Preencha todos os campos obrigatórios',
    'alerts.success': 'Sucesso',
    'alerts.alertCreated': 'Alerta criado com sucesso!',
    'alerts.errorCreatingAlert': 'Erro ao criar alerta',
    'alerts.error': 'Erro',
    'alerts.noAlerts': 'Nenhum alerta configurado ainda.',
    'alerts.deleteConfirm': 'Tem certeza que deseja deletar este alerta?',
    'alerts.deleted': 'Alerta deletado',
    'alerts.deletedSuccess': 'Alerta deletado com sucesso',
    'alerts.newAlert': 'Novo Alerta',
    'alerts.alertNameLabel': 'Nome do Alerta',
    'alerts.alertNamePlaceholder': 'Nome do alerta',
    'alerts.agentLabel': 'Agente',
    'alerts.selectAgentPlaceholder': 'Selecione um agente',
    'alerts.emailLabel': 'E-mail para notificação',
    'alerts.questionLabel': 'Pergunta/Query',
    'alerts.questionPlaceholder': 'Qual pergunta ou condição monitorar?',
    'alerts.frequencyLabel': 'Frequência',
    'alerts.executionTimeLabel': 'Horário de Execução',
    'alerts.dayOfWeekLabel': 'Dia da Semana',
    'alerts.dayOfMonthLabel': 'Dia do Mês',
    'alerts.noAlertsConfigured': 'Nenhum alerta configurado. Crie seu primeiro alerta acima.',
    'alerts.remove': 'Remover',
    'alerts.questionField': 'Pergunta:',
    'alerts.emailField': 'Email:',
    'alerts.scheduleField': 'Agendamento:',
    'alerts.at': 'às',
    'alerts.day': 'Dia',
    'alerts.createdAt': 'Criado em:',
    'alerts.nextExecution': 'Próxima execução:',
    'alerts.alertRemoved': 'Alerta removido',
    'alerts.alertType': 'Tipo',
    'alerts.typeAlert': 'Alerta',
    'alerts.typeReport': 'Relatório Agendado',
    'alerts.activeAlerts': 'Alertas Ativos',
    'alerts.pause': 'Pausar',
    'alerts.resume': 'Retomar',
    'alerts.test': 'Testar',
    'alerts.testing': 'Testando...',
    'alerts.testSuccess': 'Alerta executado com sucesso!',
    'alerts.testFailed': 'Falha no teste do alerta',
    'alerts.history': 'Histórico',
    'alerts.lastRun': 'Última execução:',
    'alerts.noExecutions': 'Nenhuma execução ainda.',
    'alerts.executionDate': 'Data',
    'alerts.status': 'Status',
    'alerts.emailSent': 'Email',
    'alerts.webhooksFired': 'Webhooks',
    'alerts.duration': 'Duração',
    'alerts.webhooks': 'Webhooks de Saída',
    'alerts.addWebhook': 'Adicionar Webhook',
    'alerts.webhookName': 'Nome do Webhook',
    'alerts.webhookNamePlaceholder': 'Meu webhook',
    'alerts.webhookUrl': 'URL',
    'alerts.createWebhook': 'Criar Webhook',
    'alerts.noWebhooks': 'Nenhum webhook configurado.',
    'alerts.webhookCreated': 'Webhook criado!',
    'alerts.webhookRemoved': 'Webhook removido',
    'alerts.events': 'Eventos',
    'alerts.lastTriggered': 'Último disparo:',
    'alerts.cancel': 'Cancelar',
    'alerts.reportQuestionPlaceholder': 'Qual relatório deve ser gerado?',

    // Account
    'account.title': 'Conta',

    // BigQuery Credentials
    'bigquery.addCredential.title': 'Adicionar Nova Credencial',
    'bigquery.addCredential.description': 'Faça upload de uma nova chave de serviço do BigQuery',
    'bigquery.addCredential.nameLabel': 'Nome da Credencial',
    'bigquery.addCredential.namePlaceholder': 'Ex: Produção, Desenvolvimento, etc.',
    'bigquery.addCredential.fileLabel': 'Arquivo de Credenciais (.json)',
    'bigquery.addCredential.fileSelected': 'Arquivo selecionado:',
    'bigquery.addCredential.uploadButton': 'Adicionar Credencial',
    'bigquery.addCredential.uploading': 'Enviando...',
    'bigquery.configured.title': 'Credenciais Configuradas',
    'bigquery.configured.description': 'Gerencie suas credenciais',
    'bigquery.configured.loading': 'Carregando credenciais...',
    'bigquery.configured.empty': 'Nenhuma credencial configurada. Adicione uma acima.',
    'bigquery.configured.name': 'Nome',
    'bigquery.configured.projectId': 'Project ID',
    'bigquery.configured.langflowPath': 'Caminho Langflow',
    'bigquery.configured.createdAt': 'Criado em',
    'bigquery.configured.actions': 'Ações',
    'bigquery.delete.title': 'Confirmar exclusão',
    'bigquery.delete.description': 'Tem certeza que deseja remover a credencial "{name}"? Esta ação não pode ser desfeita.',
    'bigquery.delete.cancel': 'Cancelar',
    'bigquery.delete.confirm': 'Excluir',
    'bigquery.errors.invalidFile': 'Por favor, selecione um arquivo JSON válido',
    'bigquery.errors.missingFields': 'Por favor, preencha o nome e selecione um arquivo',
    'bigquery.errors.invalidJson': 'Arquivo JSON inválido',
    'bigquery.errors.uploadFailed': 'Erro ao adicionar credencial',
    'bigquery.errors.loadFailed': 'Erro ao carregar credenciais',
    'bigquery.errors.deleteFailed': 'Erro ao remover credencial',
    'bigquery.success.added': 'Credencial adicionada com sucesso!',
    'bigquery.success.deleted': 'Credencial removida com sucesso',

    'credentials.sql.title': 'Conexões SQL',
    'credentials.sql.loading': 'Carregando conexões SQL...',
    'credentials.sql.empty': 'Nenhuma conexão SQL configurada.',
    'credentials.sql.emptyHint': 'Adicione uma fonte de banco SQL para ver as conexões aqui.',
    'credentials.sql.tables': 'tabelas',
    
    // Footer
    'footer.copyright': '© {year} Converse com seus dados. Todos os direitos reservados.',
    
         // Channels
     'channels.title': 'Canais',
     'channels.subtitle': 'Conecte e gerencie seus canais de comunicação para otimizar as interações com clientes',
     'channels.whatsapp.name': 'WhatsApp',
     'channels.whatsapp.description': 'Conecte sua API do WhatsApp Business para receber e responder mensagens',
     'channels.slack.name': 'Slack',
     'channels.slack.description': 'Integre com o Slack para gerenciar conversas e notificações',
     'channels.telegram.name': 'Telegram',
     'channels.telegram.description': 'Conecte bot do Telegram para suporte automatizado ao cliente',
     'channels.comingSoon': 'Em Breve',
     'channels.available': 'Disponível',
     'channels.connectWhatsApp': 'Conectar WhatsApp',
     'channels.connectSlack': 'Conectar Slack',
     'channels.connectTelegram': 'Conectar Telegram',
     'channels.connecting': 'Conectando...',
     'channels.connected': 'Conectado',
     'channels.needMoreIntegrations.title': 'Precisa de Mais Integrações?',
     'channels.needMoreIntegrations.description': 'Estamos constantemente adicionando novas integrações de canais. Entre em contato com nossa equipe de suporte para solicitar plataformas específicas.',
     'channels.requestIntegration': 'Solicitar Integração',
     
     // Pricing
     'pricing.title': 'Preços',
     'pricing.subtitle': 'Escolha o plano que melhor atende às suas necessidades',
           'pricing.free.title': 'Grátis',
      'pricing.free.price': 'R$0',
      'pricing.free.period': '/mês',
      'pricing.free.description': 'Perfeito para começar',
      'pricing.free.button': 'Começar Agora',
                       'pricing.pro.title': 'Pro',
       'pricing.pro.price': 'R$199',
       'pricing.pro.period': '/mês',
      'pricing.pro.description': 'Ideal para equipes em crescimento',
      'pricing.pro.button': 'Iniciar Teste Pro',
           'pricing.enterprise.title': 'Empresarial',
      'pricing.enterprise.price': 'Personalizado',
      'pricing.enterprise.period': '',
      'pricing.enterprise.description': 'Para grandes organizações',
      'pricing.enterprise.button': 'Falar com Vendas',
     'pricing.features': 'Recursos',
     'pricing.mostPopular': 'Mais Popular',
     'pricing.billedAnnually': 'Cobrado anualmente',
     'pricing.billedMonthly': 'Cobrado mensalmente',
     'pricing.save20': 'Economize 20%',
     'pricing.needCustom': 'Precisa de algo personalizado?',
     'pricing.contactUs': 'Entre em contato conosco',
     
     // Settings
     'settings.title': 'Configurações',
     'settings.subscription': 'Conta',
     'settings.users': 'Usuários',
     'settings.workspaceAccess': 'Controle de Acesso',
     'settings.language': 'Idioma',
     'settings.logout': 'Sair',
     'settings.newWorkspace': 'Novo workspace',
     'nav.flows': 'Fluxos (como funciona)',
    'nav.documentation': 'Docs',
    'doc.title': 'Documentação',
    'doc.subtitle': 'Como o Data Talks funciona: da adição das fontes até a pergunta e resposta pelo agente, por tipo de fonte.',
    'doc.searchPlaceholder': 'Buscar na documentação...',
      
      // Account Page Tabs
      'account.tabs.usage': 'Uso',
      'account.tabs.llm': 'LLM / IA',
      'account.tabs.sources': 'Fontes de Dados',
      'account.tabs.credentials': 'Credenciais',
      'account.tabs.connections': 'Connections',
      'account.tabs.users': 'Usuários',
      'account.tabs.organization': 'Organização',
      'account.tabs.audit': 'Trilha de Auditoria',
    // Audit Trail
    'audit.title': 'Trilha de Auditoria',
    'audit.search': 'Buscar',
    'audit.searchPlaceholder': 'Buscar ações, usuários, recursos...',
    'audit.category': 'Categoria',
    'audit.allCategories': 'Todas as categorias',
    'audit.dateFrom': 'De',
    'audit.dateTo': 'Até',
    'audit.filter': 'Filtrar',
    'audit.noResults': 'Nenhum registro de auditoria encontrado.',
    'audit.totalRecords': 'registros',
    'audit.page': 'Página',
    'audit.exportSuccess': 'CSV exportado com sucesso.',
    'audit.retention': 'Retenção',
    'audit.retentionTitle': 'Política de Retenção',
    'audit.retentionDescription': 'Defina por quanto tempo os logs de auditoria são mantidos. Registros mais antigos serão excluídos quando a política for aplicada.',
    'audit.retentionDays': 'Período de retenção',
    'audit.days': 'dias',
    'audit.forever': 'Para sempre (sem exclusão)',
    'audit.retentionSaved': 'Política de retenção salva.',
    'audit.retentionApplied': 'Retenção aplicada',
    'audit.recordsDeleted': 'registros excluídos',
    'audit.applyNow': 'Aplicar agora',
    'audit.cancel': 'Cancelar',
    'audit.save': 'Salvar',
    'audit.col.timestamp': 'Data/Hora',
    'audit.col.action': 'Ação',
    'audit.col.category': 'Categoria',
    'audit.col.user': 'Usuário',
    'audit.col.resource': 'Recurso',
    'audit.col.detail': 'Detalhe',
    // LLM Settings
    'llmSettings.title': 'Configurações LLM / IA',
    'llmSettings.description': 'Configure o modelo de IA usado para responder perguntas. Use endpoints compatíveis com OpenAI, Ollama ou proxy LiteLLM.',
    'llmSettings.provider': 'Provedor',
    'llmSettings.openaiApiKey': 'Chave da API OpenAI',
    'llmSettings.openaiApiKeyHelp': 'Sua chave de API em platform.openai.com. Deixe em branco para manter a chave existente.',
    'llmSettings.openaiBaseUrl': 'URL compatível com OpenAI',
    'llmSettings.openaiBaseUrlHelp': 'Padrão: https://api.openai.com/v1. Você também pode usar endpoints compatíveis, como APIs Gemini compatíveis com OpenAI.',
    'llmSettings.openaiModel': 'Modelo OpenAI',
    'llmSettings.openaiModelHelp': 'Informe qualquer nome de modelo compatível, como gpt-4o-mini ou gemini-2.0-flash.',
    'llmSettings.openaiAudioModel': 'Modelo de Áudio OpenAI',
    'llmSettings.ollamaBaseUrl': 'URL do servidor Ollama',
    'llmSettings.ollamaBaseUrlHelp': 'Local: http://localhost:11434 ou URL de servidor remoto.',
    'llmSettings.ollamaModel': 'Modelo Ollama',
    'llmSettings.ollamaModelPlaceholder': 'Selecione ou digite o nome do modelo',
    'llmSettings.ollamaModelHelp': 'Digite o nome do modelo (ex: llama3.2) ou busque os modelos disponíveis.',
    'llmSettings.litellmBaseUrl': 'URL do Proxy LiteLLM',
    'llmSettings.litellmBaseUrlHelp': 'URL do proxy LiteLLM (ex: http://localhost:4000).',
    'llmSettings.litellmApiKey': 'Chave da API (opcional)',
    'llmSettings.litellmApiKeyHelp': 'Alguns proxies exigem chave de API. Deixe em branco se não precisar.',
    'llmSettings.litellmModel': 'Modelo',
    'llmSettings.litellmAudioModel': 'Modelo de Áudio',
    'llmSettings.litellmModelPlaceholder': 'Selecione ou digite o nome do modelo',
    'llmSettings.litellmModelHelp': 'Nome do modelo configurado no proxy LiteLLM.',
    'llmSettings.googleApiKey': 'Chave de API do Google',
    'llmSettings.googleApiKeyHelp': 'Sua chave de API do Google AI Studio (aistudio.google.com).',
    'llmSettings.googleModel': 'Modelo Gemini',
    'llmSettings.googleModelHelp': 'Digite o nome do modelo Gemini (ex: gemini-2.0-flash, gemini-1.5-pro).',
    'llmSettings.anthropicApiKey': 'Chave de API da Anthropic',
    'llmSettings.anthropicApiKeyHelp': 'Sua chave de API do console.anthropic.com.',
    'llmSettings.anthropicModel': 'Modelo Claude',
    'llmSettings.anthropicModelHelp': 'Digite o nome do modelo Claude (ex: claude-sonnet-4-20250514, claude-haiku-4-5-20251001).',
    'llmSettings.fetchModels': 'Buscar modelos disponíveis',
    'llmSettings.loading': 'Carregando configurações...',
    'llmSettings.save': 'Salvar',
    'llmSettings.saving': 'Salvando...',
    'llmSettings.saveSuccess': 'Configurações salvas com sucesso',
    'llmSettings.saveError': 'Erro ao salvar configurações',
    'llmSettings.loadError': 'Erro ao carregar configurações',
    'llmSettings.modelsFetched': 'Modelos carregados',
    'llmSettings.modelsFetchError': 'Não foi possível buscar os modelos',
    'llmSettings.noModelsFound': 'Nenhum modelo encontrado no servidor Ollama',
    'llmSettings.accountDefaultTitle': 'Configuração padrão do environment',
    'llmSettings.accountDefaultDescription': 'Carregada das configurações de environment do backend e usada como fallback quando nenhuma configuração LLM salva está selecionada.',
    'llmConfig.add': 'Adicionar',
    'llmConfig.addTitle': 'Adicionar configuração LLM',
    'llmConfig.addDescription': 'Adicione uma configuração de modelo/provedor para usar nos workspaces.',
    'llmConfig.nameLabel': 'Nome',
    'llmConfig.namePlaceholder': 'ex: OpenAI GPT-4, Ollama Local',
    'llmConfig.nameRequired': 'Nome é obrigatório',
    'llmConfig.empty': 'Nenhuma configuração LLM ainda',
    'llmConfig.emptyHelp': 'Adicione uma configuração para usar em cada workspace.',
    'llmConfig.delete': 'Excluir',
    'llmConfig.deleteTitle': 'Excluir configuração LLM',
    'llmConfig.deleteDescription': 'Tem certeza que deseja excluir "{name}"? Workspaces que a usam voltarão ao padrão.',
    'llmConfig.deleted': 'Configuração excluída',
    'llmConfig.cancel': 'Cancelar',
    'llmConfig.deleteConfirm': 'Excluir',
'llmConfig.workspaceModel': 'Modelo deste workspace',
   'llmConfig.defaultOption': 'Padrão (env/config)',
   'llmConfig.setAsDefault': 'Definir como padrão',
   'llmConfig.default': 'Padrão',
   'llmConfig.edit': 'Editar',
   'llmConfig.editTitle': 'Editar configuração LLM',
   'llmConfig.editDescription': 'Atualize o modelo e as configurações do provedor.',
   'llmConfig.save': 'Salvar',
    'account.users.title': 'Gestão de usuários',
    'account.users.description': 'Como super usuário (admin), você pode criar e gerenciar usuários.',
    'account.users.addUser': 'Adicionar usuário',
    'account.users.email': 'Email',
    'account.users.password': 'Senha',
    'account.users.role': 'Função',
    'account.users.roleUser': 'Usuário',
    'account.users.roleAdmin': 'Admin',
    'account.users.adminOnly': 'Apenas o super usuário (admin) pode gerenciar usuários. Faça login com a conta admin.',
    'account.users.singleUserMode': 'Modo usuário único. Habilite o login (ENABLE_LOGIN=true) no backend para usar a gestão de usuários.',
    'account.users.loading': 'Carregando usuários...',
    'account.users.empty': 'Nenhum usuário ainda. Crie o primeiro usuário acima.',
    'account.users.createSuccess': 'Usuário criado com sucesso',
    'account.users.createError': 'Erro ao criar usuário',
    'account.users.loadError': 'Erro ao carregar usuários',
     
     // Add Source Modal
     // --- Source onboarding (Task 3) ---
     'common.next': 'Próximo',
     'common.back': 'Voltar',
     'common.close': 'Fechar',
     'onboarding.title': 'Configure esta fonte de dados',
     'onboarding.subtitle': 'Três passos rápidos para que respostas futuras sejam precisas.',
     'onboarding.profiling': 'Analisando a fonte e gerando sugestões…',
     'onboarding.skip': 'Pular',
     'onboarding.saving': 'Salvando…',
     'onboarding.finish': 'Concluir',
     'onboarding.clarificationsTitle': 'Perguntas de esclarecimento',
     'onboarding.noClarifications': 'Sem perguntas de esclarecimento para esta fonte — fique à vontade para adicionar uma.',
     'onboarding.answerPlaceholder': 'Digite sua resposta…',
     'onboarding.addClarification': 'Adicionar esclarecimento',
     'onboarding.warmupTitle': 'Perguntas iniciais sugeridas',
     'onboarding.warmupHint': 'Perguntas selecionadas viram atalhos rápidos no agente.',
     'onboarding.kpisTitle': 'KPIs candidatos',
     'onboarding.kpisHint': 'KPIs são armazenados por workspace e podem ser reusados em outras fontes depois.',
     'onboarding.kpiNamePlaceholder': 'Nome do KPI',
     'onboarding.kpiDefPlaceholder': 'Definição',
     'sourceSettings.title': 'Configurações da fonte',
     'sourceSettings.titleEdit': 'Configurações da fonte',
     'sourceSettings.titleFresh': 'Refazer setup da fonte',
     'sourceSettings.rerun': 'Refazer setup da fonte',
     'sourceSettings.pickSource': 'Fonte',
     'sourceSettings.loading': 'Carregando fontes…',
     'sourceSettings.noSources': 'Sem fontes ativas neste workspace.',
     'sourceSettings.allSources': 'Todas as fontes ativas',
     'onboarding.titleGroup': 'Configurar estas fontes de dados',
     'onboarding.sourceInstructions': 'Instruções específicas da fonte',
     'onboarding.sourceInstructionsPlaceholder': 'Anotações que só se aplicam quando esta fonte está no workspace…',
     'onboarding.sourceInstructionsHelp': 'Aplicadas em conjunto com as instruções do agente, somente quando esta fonte está ativa.',
     'onboarding.relationshipsTitle': 'Relacionamentos sugeridos',
     'onboarding.relationshipsHint': 'Conexões detectadas pela IA entre suas tabelas SQL. As aceitas são usadas automaticamente em respostas que cruzam tabelas.',
     'onboarding.relationshipsLoading': 'Procurando relacionamentos entre suas tabelas…',
     'onboarding.relationshipsEmpty': 'Nenhum relacionamento foi sugerido. Você pode adicionar manualmente depois em Relacionamentos SQL.',
     'onboarding.relationshipsError': 'Não foi possível gerar sugestões. Você pode pular esta etapa e adicionar manualmente depois.',
     'onboarding.relationshipsAccept': 'Aceitar',
     'onboarding.relationshipsAccepted': 'Aceito',
     'onboarding.relationshipsDismiss': 'Descartar',
     'onboarding.relationshipsRetry': 'Tentar novamente',
     'onboarding.relationshipsAcceptedCount': 'aceitos',
     'addSource.title': 'Adicionar fontes',
     'addSource.description': 'Transforme seus dados em conversas inteligentes. Conecte suas fontes de dados e faça perguntas em linguagem natural para obter insights instantâneos.',
     'addSource.examples': 'Fontes suportadas: arquivos CSV/Excel, bancos de dados Google BigQuery e Google Sheets.',
     'addSource.sourceType': 'Tipo de fonte',
     'addSource.selectSourceType': 'Selecione um tipo de fonte...',
     'addSource.uploadTab': 'Upload',
     'addSource.bigQueryTab': 'BigQuery',
     'addSource.sheetsTab': 'Google Sheets',
     'addSource.uploadTitle': 'Upload de fontes',
     'addSource.dragDrop': 'Arraste e solte ou',
     'addSource.chooseFile': 'escolha arquivo',
     'addSource.uploadText': 'para upload',
     'addSource.supportedTypes': 'CSV and XLSX',
     'addSource.credentials': 'Credenciais (JSON)',
     'addSource.project': 'Projeto',
     'addSource.dataset': 'Dataset',
     'addSource.allowedTables': 'Tabelas permitidas (separadas por vírgula)',
     'addSource.projectPlaceholder': 'meu-projeto',
     'addSource.datasetPlaceholder': 'analytics',
     'addSource.tablesPlaceholder': 'orders, customers',
     'addSource.connectBigQuery': 'Conectar BigQuery',
      'addSource.connectFirebase': 'Conectar Firebase',
      'addSource.sheetsUrl': 'Link do Google Sheets',
      'addSource.sheetsUrlPlaceholder': 'https://docs.google.com/spreadsheets/d/...',
      'addSource.sheetsDescription': 'Cole o link de compartilhamento do Google Sheets que você deseja conectar',
      'addSource.connectSheets': 'Conectar Google Sheets',
      'addSource.sheetsImportant': 'Importante:',
      'addSource.sheetsShareWith': 'A planilha deve estar compartilhada com o email:',
      'addSource.sheetsLoadingEmail': 'Carregando...',
      'addSource.sheetsNotConfigured': 'Google Sheets não está configurado neste servidor. Peça ao administrador para definir GOOGLE_SHEETS_SERVICE_ACCOUNT no ambiente do backend.',
      'addSource.sheetsId': 'ID da Planilha',
      'addSource.sheetsIdExample': 'Exemplo: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms (encontrado na URL da planilha)',
      'addSource.sheetsIdPlaceholder': 'Cole o ID da planilha aqui',
      'addSource.listButton': 'Listar',
       'addSource.selectSheet': 'Selecione uma aba',
       'addSource.selectSheetPlaceholder': 'Selecione uma aba',
       'addSource.connecting': 'Conectando...',
       'addSource.selectTable': 'Selecione uma tabela',
       'addSource.loadingProjects': 'Buscando projetos disponíveis...',
       'addSource.loadCredentialsFirst': 'Carregue credenciais primeiro',
       'addSource.selectProject': 'Selecione um projeto',
       'addSource.loadingDatasets': 'Buscando datasets...',
       'addSource.selectProjectFirst': 'Selecione um projeto primeiro',
       'addSource.noDatasets': 'Nenhum dataset encontrado',
       'addSource.selectDataset': 'Selecione um dataset',
       'addSource.loadingTables': 'Buscando tabelas...',
       'addSource.selectTablePlaceholder': 'Selecione uma tabela',
       'addSource.sourceLimit': 'Limite de fontes',
       'addSource.filesUploaded': 'Arquivos enviados com sucesso!',
       'addSource.uploadError': 'Erro ao enviar arquivos',
        // dbt
        'addSource.dbtManifestOrigin': 'Origem do manifest',
        'addSource.dbtGithub': 'GitHub',
        'addSource.dbtCloud': 'dbt Cloud',
        'addSource.dbtGithubToken': 'GitHub Token',
        'addSource.dbtGithubRepo': 'Repositório',
        'addSource.dbtGithubBranch': 'Branch',
        'addSource.dbtManifestPath': 'Caminho do manifest',
        'addSource.dbtCloudToken': 'dbt Cloud Service Token',
        'addSource.dbtCloudAccountId': 'Account ID',
        'addSource.dbtCloudJobId': 'Job ID',
        'addSource.dbtFetchModels': 'Buscar modelos do manifest',
        'addSource.dbtFetchingModels': 'Buscando modelos...',
        'addSource.dbtModelsSelected': '{selected}/{total} modelos selecionados',
        'addSource.dbtConnectionString': 'Connection string do warehouse',
        'addSource.dbtConnectionStringHint': 'A mesma connection string usada pelo dbt para executar as queries.',
        'addSource.dbtConnect': 'Conectar fonte dbt',
        'addSource.dbtConnectSuccess': 'Fonte dbt criada com sucesso!',
        'addSource.dbtConnectError': 'Erro ao criar fonte dbt',
        'addSource.dbtFetchError': 'Erro ao buscar manifest',
        'addSource.dbtNoModels': 'Nenhum modelo encontrado no manifest.',
        'addSource.dbtModelsFound': '{count} modelos encontrados.',
        // GitHub File
        'addSource.githubToken': 'GitHub Token',
        'addSource.githubRepo': 'Repositório',
        'addSource.githubBranch': 'Branch',
        'addSource.githubFilePath': 'Caminho do arquivo',
        'addSource.githubSupportedFormats': 'Formatos suportados: CSV, TSV, JSON (array de objetos), JSONL.',
        'addSource.githubPreview': 'Preview do arquivo',
        'addSource.githubPreviewing': 'Carregando preview...',
        'addSource.githubConnect': 'Conectar arquivo GitHub',
        'addSource.githubConnectSuccess': 'Fonte GitHub File criada com sucesso!',
        'addSource.githubConnectError': 'Erro ao criar fonte GitHub File',
        'addSource.githubValidateError': 'Erro ao validar arquivo',
        'addSource.githubRowsColumns': '{rows} linhas • {cols} colunas',
        'addSource.firebaseDescription': 'Faça upload do arquivo JSON de conta de serviço do Firebase para conectar ao seu banco Firestore.',
        'addSource.firebaseHint': 'Acesse o Console do Firebase → Configurações do projeto → Contas de serviço → Gerar nova chave privada.',
        'addSource.firebaseCredentials': 'Arquivo de credenciais (JSON)',
        'addSource.firebaseLoadingCollections': 'Carregando coleções...',
        'addSource.firebaseAvailableCollections': 'Coleções disponíveis',
        'addSource.firebaseSelectedCount': '{count} coleção(ões) selecionada(s)',
        'addSource.firebaseSelectCredentials': 'Por favor, selecione o arquivo de credenciais do Firebase',
        'addSource.firebaseSelectCollections': 'Por favor, selecione pelo menos uma coleção',
        'addSource.firebaseConnectSuccess': 'Firebase conectado com sucesso!',
        'addSource.firebaseConnectError': 'Erro ao conectar Firebase',
        // MongoDB
        'addSource.connectMongoDB': 'Conectar MongoDB',
        'addSource.mongodbDescription': 'Conecte ao seu banco MongoDB para analisar suas collections com linguagem natural.',
        'addSource.mongodbHint': 'Forneça a connection string do MongoDB (mongodb:// ou mongodb+srv://) para conectar.',
        'addSource.mongodbConnectionString': 'Connection String',
        'addSource.mongodbConnectionStringPlaceholder': 'mongodb+srv://usuario:senha@cluster.mongodb.net',
        'addSource.mongodbTestConnection': 'Testar Conexão',
        'addSource.mongodbTestingConnection': 'Testando...',
        'addSource.mongodbConnectionSuccess': 'Conexão bem-sucedida!',
        'addSource.mongodbConnectionFailed': 'Falha na conexão',
        'addSource.mongodbDatabase': 'Banco de dados',
        'addSource.mongodbSelectDatabase': 'Selecione um banco de dados',
        'addSource.mongodbLoadingDatabases': 'Carregando bancos de dados...',
        'addSource.mongodbCollection': 'Collection',
        'addSource.mongodbSelectCollection': 'Selecione uma collection',
        'addSource.mongodbLoadingCollections': 'Carregando collections...',
        'addSource.mongodbConnectSuccess': 'MongoDB conectado com sucesso!',
        'addSource.mongodbConnectError': 'Erro ao conectar MongoDB',
        'addSource.mongodbFillFields': 'Preencha todos os campos obrigatórios',
        // Snowflake
        'addSource.connectSnowflake': 'Conectar Snowflake',
        'addSource.snowflakeDescription': 'Conecte ao seu data warehouse Snowflake para análise com linguagem natural.',
        'addSource.snowflakeHint': 'Insira o identificador da conta Snowflake, nome de usuário e senha.',
        'addSource.snowflakeAccount': 'Conta',
        'addSource.snowflakeAccountPlaceholder': 'xy12345.us-east-1',
        'addSource.snowflakeUser': 'Usuário',
        'addSource.snowflakeUserPlaceholder': 'analista',
        'addSource.snowflakePassword': 'Senha',
        'addSource.snowflakeTestConnection': 'Testar Conexão',
        'addSource.snowflakeTestingConnection': 'Testando...',
        'addSource.snowflakeConnectionSuccess': 'Conexão bem-sucedida!',
        'addSource.snowflakeConnectionFailed': 'Falha na conexão',
        'addSource.snowflakeWarehouse': 'Warehouse',
        'addSource.snowflakeSelectWarehouse': 'Selecione um warehouse',
        'addSource.snowflakeLoadingWarehouses': 'Carregando warehouses...',
        'addSource.snowflakeDatabase': 'Banco de dados',
        'addSource.snowflakeSelectDatabase': 'Selecione um banco de dados',
        'addSource.snowflakeLoadingDatabases': 'Carregando bancos de dados...',
        'addSource.snowflakeSchema': 'Schema',
        'addSource.snowflakeSelectSchema': 'Selecione um schema',
        'addSource.snowflakeLoadingSchemas': 'Carregando schemas...',
        'addSource.snowflakeTables': 'Tabelas',
        'addSource.snowflakeSelectedTables': '{count} tabela(s) selecionada(s)',
        'addSource.snowflakeLoadingTables': 'Carregando tabelas...',
        'addSource.snowflakeConnectSuccess': 'Snowflake conectado com sucesso!',
        'addSource.snowflakeConnectError': 'Erro ao conectar Snowflake',
        'addSource.snowflakeFillFields': 'Preencha todos os campos obrigatórios',
        // Notion
        'addSource.connectNotion': 'Conectar Notion',
        'addSource.notionDescription': 'Conecte um banco de dados Notion para analisar seus dados com linguagem natural.',
        'addSource.notionHint': 'Crie uma Integração Interna em notion.so/my-integrations e compartilhe o banco de dados com ela.',
        'addSource.notionToken': 'Token de Integração',
        'addSource.notionTokenPlaceholder': 'secret_...',
        'addSource.notionTestConnection': 'Testar Conexão',
        'addSource.notionTestingConnection': 'Testando...',
        'addSource.notionConnectionSuccess': 'Conexão bem-sucedida!',
        'addSource.notionConnectionFailed': 'Falha na conexão',
        'addSource.notionDatabase': 'Banco de dados',
        'addSource.notionSelectDatabase': 'Selecione um banco de dados',
        'addSource.notionLoadingDatabases': 'Carregando bancos de dados...',
        'addSource.notionNoDatabases': 'Nenhum banco encontrado. Verifique se compartilhou pelo menos um banco com a integração.',
        'addSource.notionConnectSuccess': 'Notion conectado com sucesso!',
        'addSource.notionConnectError': 'Erro ao conectar Notion',
        'addSource.notionFillFields': 'Preencha todos os campos obrigatórios',
        // Jira
        'addSource.connectJira': 'Conectar Jira',
        'addSource.jiraDescription': 'Conecte sua instância Jira Cloud para analisar issues, sprints e carga de trabalho da equipe com linguagem natural.',
        'addSource.jiraHint': 'Crie um token de API em id.atlassian.com/manage-profile/security/api-tokens.',
        'addSource.jiraDomain': 'Domínio',
        'addSource.jiraDomainPlaceholder': 'minhaempresa',
        'addSource.jiraDomainHint': 'Seu domínio Atlassian (ex: "minhaempresa" de minhaempresa.atlassian.net)',
        'addSource.jiraEmail': 'E-mail',
        'addSource.jiraEmailPlaceholder': 'voce@empresa.com',
        'addSource.jiraApiToken': 'Token de API',
        'addSource.jiraApiTokenPlaceholder': 'Seu token de API do Jira',
        'addSource.jiraTestConnection': 'Testar Conexão',
        'addSource.jiraTestingConnection': 'Testando...',
        'addSource.jiraConnectionSuccess': 'Conexão bem-sucedida!',
        'addSource.jiraConnectionFailed': 'Falha na conexão',
        'addSource.jiraConnectedAs': 'Conectado como',
        'addSource.jiraLoadingDiscovery': 'Descobrindo projetos e boards...',
        'addSource.jiraDiscoveryResult': 'Encontrados {projects} projetos e {boards} boards.',
        'addSource.jiraConnectSuccess': 'Jira conectado com sucesso!',
        'addSource.jiraConnectError': 'Erro ao conectar Jira',
        'addSource.jiraFillFields': 'Preencha todos os campos obrigatórios',
        // HubSpot CRM
        'addSource.connectHubspot': 'Conectar HubSpot',
        'addSource.hubspotDescription': 'Conecte seu HubSpot CRM para analisar contatos, empresas, negócios, tickets e mais.',
        'addSource.hubspotHint': 'Crie um App Privado em HubSpot Configurações > Integrações > Apps Privados para obter um token de acesso.',
        'addSource.hubspotApiKey': 'Token de Acesso',
        'addSource.hubspotApiKeyPlaceholder': 'pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
        'addSource.hubspotTestConnection': 'Testar Conexão',
        'addSource.hubspotTestingConnection': 'Testando...',
        'addSource.hubspotConnectionSuccess': 'Conectado!',
        'addSource.hubspotConnectionFailed': 'Falha na conexão',
        'addSource.hubspotObjectsFound': 'Objetos encontrados',
        'addSource.hubspotConnectSuccess': 'HubSpot CRM conectado com sucesso!',
        'addSource.hubspotConnectError': 'Erro ao conectar HubSpot',
        'addSource.hubspotFillFields': 'Forneça seu token de acesso do HubSpot',
        // Stripe
        'addSource.connectStripe': 'Conectar Stripe',
        'addSource.stripeDescription': 'Conecte sua conta Stripe para analisar clientes, assinaturas, faturas, cobranças e receita com linguagem natural.',
        'addSource.stripeHint': 'Use uma Chave Secreta da API Stripe (sk_live_... ou sk_test_...) do seu Painel Stripe > Developers > API keys.',
        'addSource.stripeApiKey': 'Chave Secreta da API',
        'addSource.stripeTestConnection': 'Testar Conexão',
        'addSource.stripeTesting': 'Testando...',
        'addSource.stripeDiscovering': 'Descobrindo recursos...',
        'addSource.stripeTestSuccess': 'Conexão bem-sucedida!',
        'addSource.stripeTestFailed': 'Falha na conexão',
        'addSource.stripeResources': 'Recursos Disponíveis',
        'addSource.stripeResourceError': 'Erro',
        'addSource.stripeRecords': 'registros',
        'addSource.stripeSelectedCount': '{count} recursos selecionados',
        'addSource.stripeSelectTables': 'Selecione pelo menos um recurso',
        'addSource.stripeFillFields': 'Forneça sua chave de API do Stripe',
        'addSource.stripeConnectSuccess': 'Stripe conectado com sucesso!',
        'addSource.stripeConnectError': 'Erro ao conectar Stripe',
        // Pipedrive CRM
        'addSource.connectPipedrive': 'Conectar Pipedrive',
        'addSource.pipedriveDescription': 'Conecte seu CRM Pipedrive para analisar negócios, contatos, atividades e pipeline de vendas com linguagem natural.',
        'addSource.pipedriveHint': 'Encontre seu token de API no Pipedrive em Configurações > Preferências pessoais > API.',
        'addSource.pipedriveApiToken': 'Token de API',
        'addSource.pipedriveApiTokenPlaceholder': 'Seu token de API do Pipedrive',
        'addSource.pipedriveTestConnection': 'Testar Conexão',
        'addSource.pipedriveTestingConnection': 'Testando...',
        'addSource.pipedriveConnectionSuccess': 'Conexão bem-sucedida!',
        'addSource.pipedriveConnectionFailed': 'Falha na conexão',
        'addSource.pipedriveResourcesFound': 'Recursos Encontrados',
        'addSource.pipedriveConnectSuccess': 'Pipedrive conectado com sucesso!',
        'addSource.pipedriveConnectError': 'Erro ao conectar Pipedrive',
        'addSource.pipedriveFillFields': 'Forneça seu token de API do Pipedrive',
        // Salesforce CRM
        'addSource.connectSalesforce': 'Conectar Salesforce',
        'addSource.salesforceDescription': 'Conecte seu Salesforce CRM para analisar contas, contatos, oportunidades, leads, casos e mais.',
        'addSource.salesforceHint': 'Use um Connected App no Salesforce Setup para gerar um token de acesso.',
        'addSource.salesforceAccessToken': 'Token de Acesso',
        'addSource.salesforceAccessTokenPlaceholder': 'Insira seu token de acesso do Salesforce',
        'addSource.salesforceInstanceUrl': 'URL da Instância',
        'addSource.salesforceInstanceUrlPlaceholder': 'https://sua-instancia.salesforce.com',
        'addSource.salesforceTestConnection': 'Testar Conexão',
        'addSource.salesforceTestingConnection': 'Testando...',
        'addSource.salesforceConnectionSuccess': 'Conectado!',
        'addSource.salesforceConnectionFailed': 'Falha na conexão',
        'addSource.salesforceObjectsFound': 'Objetos encontrados',
        'addSource.salesforceConnectSuccess': 'Salesforce CRM conectado com sucesso!',
        'addSource.salesforceConnectError': 'Erro ao conectar Salesforce',
        'addSource.salesforceFillFields': 'Forneça seu token de acesso e URL da instância do Salesforce',
        // Google Analytics 4
        'addSource.connectGA4': 'Conectar Google Analytics 4',
        'addSource.ga4Description': 'Conecte sua propriedade GA4 para analisar sessões, eventos, visualizações de página, conversões e mais.',
        'addSource.ga4Hint': 'Crie uma conta de serviço no Google Cloud Console e conceda acesso de Leitor à sua propriedade GA4.',
        'addSource.ga4Credentials': 'JSON da Conta de Serviço',
        'addSource.ga4CredentialsPlaceholder': 'Cole o JSON da chave da conta de serviço aqui',
        'addSource.ga4PropertyId': 'ID da Propriedade',
        'addSource.ga4PropertyIdPlaceholder': 'ex. 123456789',
        'addSource.ga4TestConnection': 'Testar Conexão',
        'addSource.ga4TestingConnection': 'Testando...',
        'addSource.ga4ConnectionSuccess': 'Conectado!',
        'addSource.ga4ConnectionFailed': 'Falha na conexão',
        'addSource.ga4TablesFound': 'Tabelas encontradas',
        'addSource.ga4ConnectSuccess': 'GA4 conectado com sucesso!',
        'addSource.ga4ConnectError': 'Erro ao conectar GA4',
        'addSource.ga4FillFields': 'Forneça as credenciais da conta de serviço e o ID da propriedade',
        // Intercom
        'addSource.connectIntercom': 'Conectar Intercom',
        'addSource.intercomDescription': 'Conecte seu workspace Intercom para analisar contatos, empresas, conversas e mais.',
        'addSource.intercomHint': 'Crie um token de acesso no Intercom Developer Hub > Your Apps.',
        'addSource.intercomAccessToken': 'Token de Acesso',
        'addSource.intercomAccessTokenPlaceholder': 'Insira seu token de acesso do Intercom',
        'addSource.intercomTestConnection': 'Testar Conexão',
        'addSource.intercomTestingConnection': 'Testando...',
        'addSource.intercomConnectionSuccess': 'Conectado!',
        'addSource.intercomConnectionFailed': 'Falha na conexão',
        'addSource.intercomResourcesFound': 'Recursos encontrados',
        'addSource.intercomConnectSuccess': 'Intercom conectado com sucesso!',
        'addSource.intercomConnectError': 'Erro ao conectar Intercom',
        'addSource.intercomFillFields': 'Forneça seu token de acesso do Intercom',
        // GitHub Analytics
        'addSource.connectGithubAnalytics': 'Conectar GitHub Analytics',
        'addSource.githubAnalyticsDescription': 'Conecte um repositório GitHub para analisar PRs, issues, commits, releases, workflows e contribuidores.',
        'addSource.githubAnalyticsHint': 'Crie um token de acesso pessoal (clássico) com escopo repo em GitHub Settings > Developer settings.',
        'addSource.githubAnalyticsToken': 'Token de Acesso Pessoal',
        'addSource.githubAnalyticsTokenPlaceholder': 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'addSource.githubAnalyticsOwner': 'Dono do Repositório',
        'addSource.githubAnalyticsOwnerPlaceholder': 'ex. facebook',
        'addSource.githubAnalyticsRepo': 'Nome do Repositório',
        'addSource.githubAnalyticsRepoPlaceholder': 'ex. react',
        'addSource.githubAnalyticsTestConnection': 'Testar Conexão',
        'addSource.githubAnalyticsTestingConnection': 'Testando...',
        'addSource.githubAnalyticsConnectionSuccess': 'Conectado!',
        'addSource.githubAnalyticsConnectionFailed': 'Falha na conexão',
        'addSource.githubAnalyticsTablesFound': 'Tabelas encontradas',
        'addSource.githubAnalyticsConnectSuccess': 'GitHub Analytics conectado com sucesso!',
        'addSource.githubAnalyticsConnectError': 'Erro ao conectar GitHub Analytics',
        'addSource.githubAnalyticsFillFields': 'Forneça seu token, owner e nome do repositório',
        // Shopify
        'addSource.connectShopify': 'Conectar Shopify',
        'addSource.shopifyDescription': 'Conecte sua loja Shopify para analisar pedidos, clientes, produtos, estoque e mais.',
        'addSource.shopifyHint': 'Crie um app personalizado em Shopify Admin > Configurações > Apps e canais de vendas > Desenvolver apps.',
        'addSource.shopifyStore': 'Nome da Loja',
        'addSource.shopifyStorePlaceholder': 'sua-loja (sem .myshopify.com)',
        'addSource.shopifyAccessToken': 'Token de Acesso Admin API',
        'addSource.shopifyAccessTokenPlaceholder': 'shpat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'addSource.shopifyTestConnection': 'Testar Conexão',
        'addSource.shopifyTestingConnection': 'Testando...',
        'addSource.shopifyConnectionSuccess': 'Conectado!',
        'addSource.shopifyConnectionFailed': 'Falha na conexão',
        'addSource.shopifyResourcesFound': 'Recursos encontrados',
        'addSource.shopifyConnectSuccess': 'Shopify conectado com sucesso!',
        'addSource.shopifyConnectError': 'Erro ao conectar Shopify',
        'addSource.shopifyFillFields': 'Forneça o nome da loja e o token de acesso',
        // Excel Online
        'addSource.connectExcelOnline': 'Conectar Excel Online',
        'addSource.excelOnlineDescription': 'Conecte arquivos Excel do OneDrive ou SharePoint para análise com linguagem natural.',
        'addSource.excelOnlineHint': 'Forneça um token de acesso da Microsoft Graph API com permissões Files.Read.',
        'addSource.excelOnlineToken': 'Token de Acesso',
        'addSource.excelOnlineTokenPlaceholder': 'Cole seu token de acesso da Microsoft Graph API',
        'addSource.excelOnlineListFiles': 'Listar Arquivos',
        'addSource.excelOnlineLoadingFiles': 'Carregando...',
        'addSource.excelOnlineListError': 'Erro ao listar arquivos',
        'addSource.excelOnlineFile': 'Arquivo Excel',
        'addSource.excelOnlineSelectFile': 'Selecione um arquivo',
        'addSource.excelOnlineSheet': 'Planilha',
        'addSource.excelOnlineSelectSheet': 'Selecione uma planilha',
        'addSource.excelOnlineLoadingSheets': 'Carregando planilhas...',
        'addSource.excelOnlineNoSheets': 'Nenhuma planilha encontrada',
        'addSource.excelOnlineConnectSuccess': 'Excel Online conectado com sucesso!',
        'addSource.excelOnlineConnectError': 'Erro ao conectar Excel Online',
        'addSource.excelOnlineFillFields': 'Preencha todos os campos obrigatórios',
        // S3 / MinIO
        'addSource.connectS3': 'Conectar S3',
        'addSource.s3Description': 'Conecte ao Amazon S3 ou MinIO para importar arquivos CSV, JSON e Parquet dos seus buckets.',
        'addSource.s3Hint': 'Forneça seu Access Key e Secret Key da AWS (ou credenciais MinIO com endpoint customizado).',
        'addSource.s3AccessKeyId': 'Access Key ID',
        'addSource.s3SecretAccessKey': 'Secret Access Key',
        'addSource.s3Region': 'Região',
        'addSource.s3Endpoint': 'Endpoint (opcional)',
        'addSource.s3EndpointPlaceholder': 'https://minio.exemplo.com (deixe vazio para AWS)',
        'addSource.s3TestConnection': 'Testar Conexão',
        'addSource.s3TestingConnection': 'Testando...',
        'addSource.s3ConnectionSuccess': 'Conexão bem-sucedida!',
        'addSource.s3ConnectionFailed': 'Falha na conexão',
        'addSource.s3Bucket': 'Bucket',
        'addSource.s3SelectBucket': 'Selecione um bucket',
        'addSource.s3LoadingBuckets': 'Carregando buckets...',
        'addSource.s3File': 'Arquivo',
        'addSource.s3SelectFile': 'Selecione um arquivo',
        'addSource.s3LoadingFiles': 'Carregando arquivos...',
        'addSource.s3NoFiles': 'Nenhum arquivo suportado encontrado (csv, json, parquet)',
        'addSource.s3ConnectSuccess': 'S3 conectado com sucesso!',
        'addSource.s3ConnectError': 'Erro ao conectar S3',
        'addSource.s3FillFields': 'Preencha todos os campos obrigatórios',
        // REST API
        'addSource.connectRestApi': 'Conectar API',
        'addSource.restApiDescription': 'Conecte qualquer API REST que retorne JSON para análise com linguagem natural.',
        'addSource.restApiHint': 'Forneça a URL da API, método, headers e opcionalmente o caminho dos dados na resposta.',
        'addSource.restApiUrl': 'URL',
        'addSource.restApiMethod': 'Método',
        'addSource.restApiHeaders': 'Headers',
        'addSource.restApiAddHeader': 'Adicionar',
        'addSource.restApiDataPath': 'Caminho dos dados (notação com ponto)',
        'addSource.restApiDataPathPlaceholder': 'ex: data.results (deixe vazio se a resposta for um array)',
        'addSource.restApiTestRequest': 'Testar Requisição',
        'addSource.restApiTesting': 'Testando...',
        'addSource.restApiTestSuccess': 'Requisição bem-sucedida!',
        'addSource.restApiTestFailed': 'Falha na requisição',
        'addSource.restApiPreview': 'Preview',
        'addSource.restApiConnectSuccess': 'REST API conectada com sucesso!',
        'addSource.restApiConnectError': 'Erro ao conectar REST API',
        'addSource.restApiFillFields': 'Forneça a URL da API',
        // SQL Database
        'addSource.sqlTab': 'Banco SQL',
        'addSource.sqlConnectionString': 'String de Conexão',
        'addSource.sqlConnectionStringPlaceholder': 'postgresql://usuario:senha@host:porta/banco',
        'addSource.sqlDatabaseType': 'Tipo de Banco',
        'addSource.sqlSelectType': 'Selecione o tipo de banco',
        'addSource.sqlImportant': 'Importante:',
        'addSource.sqlSecurityWarning': 'Garanta que seu banco aceite conexoes a partir do servidor onde este backend do Data Talks esta rodando.',
        'addSource.sqlSelfHostedNote': 'Use um host e uma porta acessiveis pelo backend e libere o acesso de rede com as credenciais informadas na conexao.',
        'addSource.sqlTableName': 'Nome da Tabela',
        'addSource.sqlSelectedTables': 'Tabelas',
        'addSource.sqlSelectedTablesCount': '{count} tabela(s) selecionada(s)',
        'addSource.sqlUseExistingCredential': 'Usar conexão SQL salva',
        'addSource.sqlSelectCredential': 'Selecione uma conexão SQL salva',
        'addSource.sqlTableNamePlaceholder': 'Digite o nome da tabela (ex: usuarios, produtos)',
        'addSource.sqlLoadTablesFirst': 'Liste as tabelas primeiro',
        'addSource.sqlNoTablesFound': 'Nenhuma tabela encontrada para essa conexao',
        'addSource.sqlListError': 'Erro ao listar tabelas SQL',
        'addSource.sqlFillFields': 'Por favor, preencha todos os campos obrigatórios',
        'addSource.sqlConnect': 'Conectar Banco de Dados',
        'addSource.sqlConnectSuccess': 'Banco SQL conectado com sucesso!',
        'addSource.sqlConnectError': 'Erro ao conectar Banco SQL',
        'addSource.sqlExample': 'Exemplo',
      
       // Workspace
       'workspace.chat': 'Chat',
       'workspace.addSourceToStart': 'Adicione uma fonte para começar',
       'workspace.addSourceDescription': 'Carregue suas fontes de dados para começar a fazer perguntas e obter insights.',
       'workspace.uploadSource': 'Carregar Fonte',
       'workspace.inputPlaceholder': 'Faça uma pergunta sobre seus dados...',
       'workspace.addSourceFirst': 'Adicione uma fonte primeiro para fazer perguntas',
       'workspace.noLlmConfigured': 'Nenhuma LLM configurada. Vá em Conta > LLM / AI para adicionar uma configuração.',
       'workspace.startConversation': 'Inicie uma conversa',
       'workspace.startConversationDescription': 'Faça perguntas sobre seus dados para obter insights e respostas.',
       'workspace.title': 'Workspaces',
       'workspace.createNewWorkspace': 'Criar novo workspace',
       'workspace.newWorkspace': 'Novo workspace',
       'workspace.chooseType': 'Escolha o tipo de Workspace',
       'workspace.chooseTypeDesc': 'Selecione o tipo de workspace que deseja criar.',
       'workspace.mostRecent': 'Mais recentes',
       'workspace.oldest': 'Mais antigos',
       'workspace.nameAZ': 'Nome (A-Z)',
       'workspace.sources': 'fontes',
       'workspace.source': 'fonte',
       'workspace.rename': 'Renomear',
       'workspace.renameWorkspace': 'Renomear workspace',
       'workspace.renameDescription': 'Digite o novo nome para o workspace',
       'workspace.name': 'Nome',
       'workspace.cancel': 'Cancelar',
       'workspace.delete': 'Excluir',
       'workspace.edit': 'Editar',
       'workspace.description': 'Gerencie seus workspaces',
       'workspace.errorCreatingWorkspace': 'Erro ao criar workspace',
       'workspace.renameSuccess': 'Workspace renomeado com sucesso',
       'workspace.renameError': 'Erro ao renomear workspace',
       'workspace.deleteConfirm': 'Tem certeza que deseja excluir o workspace "{name}"? Esta ação não pode ser desfeita.',
       'workspace.deleteSuccess': 'Workspace excluído com sucesso',
       'workspace.deleteError': 'Erro ao excluir workspace',
       'workspace.dataPreview': 'Preview dos Dados',
       'workspace.dataPreviewDescription': 'Visualização das primeiras linhas da fonte de dados',
       'workspace.noPreviewData': 'Nenhum dado de preview disponível',
       'workspace.previousConversations': 'Conversas Anteriores',
       'workspace.previousConversationsDescription': 'Selecione uma conversa para continuar de onde parou',
       'workspace.noPreviousConversations': 'Nenhuma conversa anterior encontrada',
       'workspace.llmSelector': 'LLM deste workspace',
       'workspace.llmUseDefault': 'Usar padrão',
       'workspace.llmConfigUpdated': 'Configuração LLM atualizada',
       'workspace.llmConfigError': 'Erro ao atualizar LLM',
       'workspace.generateChart': 'Gerar gráfico',
       'workspace.generatingChart': 'Gerando gráfico...',
       'workspace.generatedSql': 'SQL gerado',
       'workspace.generatedCode': 'Código gerado',
       'workspace.copySql': 'Copiar',
       'workspace.sqlCopied': 'Copiado',
       'workspace.chartGeneratedSuccess': 'Gráfico gerado com sucesso',
       'workspace.chartGeneratedError': 'Erro ao gerar gráfico',
       'workspace.removeImage': 'Remover imagem',
       'workspace.imageRemoved': 'Imagem removida da conversa',
       'workspace.imageRemoveError': 'Erro ao remover imagem',
       
      // Studio
      'studio.title': 'Studio',
      'studio.graphDescription': 'Visualizar dados como grafo',
      'studio.summaryCardDescription': 'Resumo executivo da tabela',
      'studio.summaryTitle': 'Resumo da Tabela',
      'studio.summaryDescription': 'Gere um relatório executivo da tabela selecionada usando LLM e consultas analíticas.',
      'studio.summarySource': 'Tabela / Fonte',
      'studio.summaryNoBigQuerySource': 'Adicione uma fonte BigQuery ao workspace para gerar resumos.',
      'studio.summaryNoSource': 'Adicione uma fonte de dados ao workspace para gerar resumos.',
      'studio.summarySelectSource': 'Selecionar fonte',
      'studio.summaryGenerate': 'Gerar resumo',
      'studio.summarySaved': 'Resumo salvo. Encontre-o na lista abaixo.',
      'studio.summaryGenerateError': 'Erro ao gerar resumo',
      'studio.summaryGenerating': 'Gerando resumo…',
      'studio.summaryReport': 'Relatório',
      'studio.summarySavedList': 'Resumos salvos',
      'studio.summaryNoSaved': 'Nenhum resumo salvo. Gere um acima.',
      'studio.summaryDeleted': 'Resumo excluído',
      'studio.summaryDeleteError': 'Erro ao excluir resumo',
      'studio.summaryLoadError': 'Erro ao carregar fontes e resumos',
      'studio.audioTitle': 'Visão Geral em Áudio',
      'studio.audioDescription': 'Gere uma visão geral falada e concisa da fonte selecionada.',
      'studio.audioGenerate': 'Gerar áudio',
      'studio.audioGenerating': 'Gerando áudio…',
      'studio.audioPreparing': 'Preparando reprodução do áudio…',
      'studio.audioSaved': 'Visão geral em áudio salva. Encontre-a na lista abaixo.',
      'studio.audioSavedList': 'Áudios salvos',
      'studio.audioNoSaved': 'Nenhum áudio salvo ainda. Gere um acima.',
      'studio.audioDeleted': 'Áudio excluído',
      'studio.audioDeleteError': 'Erro ao excluir áudio',
      'studio.audioLoadError': 'Erro ao carregar fontes e áudios',
      'studio.audioGenerateError': 'Erro ao gerar áudio',
      'studio.audioPlaybackError': 'Erro ao carregar áudio',
      'studio.audioRequiresConfig': 'Para usar esta funcionalidade, primeiro adicione ou selecione um modelo de áudio em Account > LLM / AI settings para este workspace.',
      'studio.audioOverview': 'Visão Geral de Áudio',
      'studio.autoML': 'Auto ML',
      'studio.autoMLTitle': 'Auto ML',
      'studio.autoMLDescription': 'Treine um modelo de machine learning nos seus dados com um clique.',
      'studio.autoMLSelectSource': 'Selecione uma fonte de dados',
      'studio.autoMLSelectTarget': 'Selecione a coluna alvo',
      'studio.autoMLTrain': 'Treinar Modelo',
      'studio.autoMLTraining': 'Treinando modelo...',
      'studio.autoMLTaskClassification': 'Classificação',
      'studio.autoMLTaskRegression': 'Regressão',
      'studio.autoMLTaskType': 'Tipo de Tarefa',
      'studio.autoMLMetrics': 'Métricas',
      'studio.autoMLFeatureImportance': 'Importância das Features',
      'studio.autoMLReport': 'Relatório',
      'studio.autoMLSavedList': 'Execuções Anteriores',
      'studio.autoMLNoSaved': 'Nenhuma execução anterior.',
      'studio.autoMLNoSource': 'Adicione uma fonte de dados primeiro para usar o Auto ML.',
      'studio.autoMLTrainSuccess': 'Modelo treinado com sucesso!',
      'studio.autoMLTrainError': 'Erro ao treinar modelo',
      'studio.autoMLDeleted': 'Execução excluída.',
      'studio.autoMLDeleteError': 'Erro ao excluir execução.',
      'studio.autoMLLoadError': 'Erro ao carregar dados do Auto ML.',
      'studio.templates': 'Templates',
      'studio.templateDescription': 'Relatórios pré-configurados para suas fontes de dados.',
      'studio.templateTitle': 'Templates de Relatório',
      'studio.templateBrowse': 'Navegar Templates',
      'studio.templateRun': 'Executar Template',
      'studio.templateRunning': 'Executando template...',
      'studio.templateNoTemplates': 'Nenhum template disponível para este tipo de fonte.',
      'studio.templateCreateLabel': 'Criar template com IA',
      'studio.templateCreatePlaceholder': "Descreva o relatório que deseja (opcional)... ex: 'Receita mensal por categoria com tendências'",
      'studio.templateGenerate': 'Gerar Template',
      'studio.templateGenerating': 'Gerando...',
      'studio.templateGenerated': 'Template gerado!',
      'studio.templateGenerateError': 'Falha ao gerar template',
      'studio.templateDeleted': 'Template excluído',
      'studio.templateDeleteError': 'Falha ao excluir template',
      'studio.templateGenerateReport': 'Report Completo',
      'studio.templateGeneratingReport': 'Gerando report...',
      'studio.templateReportGenerated': 'Report gerado!',
      'studio.templateReportError': 'Falha ao gerar report',
      'studio.templateSelectSource': 'Selecione uma fonte de dados',
      'studio.templateResults': 'Resultados',
      'studio.templateCustomize': 'Personalizar',
      'studio.templateResetCustomization': 'Restaurar padrões',
      'studio.templateRunHistory': 'Histórico de Execuções',
      'studio.templateRunSuccess': 'Template executado com sucesso!',
      'studio.templateRunError': 'Erro ao executar template',
      'studio.templateRunPartial': 'Algumas consultas falharam',
      'studio.templateFilters': 'Filtros',
      'studio.templateDateRange': 'Período',
      'studio.templateUseInChat': 'Usar no Chat',
      'studio.templateNoSource': 'Adicione uma fonte de dados primeiro para usar Templates.',
      'studio.templateLoadError': 'Erro ao carregar templates.',
      'studio.reports': 'Relatórios',
      'studio.alertConfig': 'Configuração de Alertas',
      'studio.connectWhatsApp': 'Conectar ao WhatsApp',
      'studio.connectSlack': 'Conectar ao Slack',
      'studio.connectTelegram': 'Conectar ao Telegram',
      'studio.connectApi': 'Acesso via API',
      'studio.connections': 'Conexões',

      // API Access Panel
      'apiAccess.title': 'Acesso via API',
      'apiAccess.description': 'Use chaves de API para consultar este agente programaticamente.',
      'apiAccess.noKeys': 'Nenhuma chave de API ainda. Crie uma para começar.',
      'apiAccess.createKey': 'Nova Chave de API',
      'apiAccess.keyName': 'Nome da chave',
      'apiAccess.keyNamePlaceholder': 'ex: Minha App',
      'apiAccess.create': 'Criar',
      'apiAccess.cancel': 'Cancelar',
      'apiAccess.copyKey': 'Copiar chave',
      'apiAccess.keyCopied': 'Chave copiada!',
      'apiAccess.keyCreatedWarning': 'Salve sua chave agora — ela não será exibida novamente.',
      'apiAccess.deleteKey': 'Revogar',
      'apiAccess.deleteConfirm': 'Tem certeza que deseja revogar esta chave?',
      'apiAccess.deleteSuccess': 'Chave revogada',
      'apiAccess.createSuccess': 'Chave de API criada',
      'apiAccess.createError': 'Erro ao criar chave',
      'apiAccess.active': 'Ativa',
      'apiAccess.inactive': 'Inativa',
      'apiAccess.lastUsed': 'Último uso',
      'apiAccess.never': 'Nunca',
      'apiAccess.viewSnippet': 'Ver snippet de código',
      'apiAccess.snippetTitle': 'Snippet de Código da API',
      'apiAccess.snippetDescription': 'Use os exemplos abaixo para consumir este agente via API.',
      'apiAccess.snippetSources': 'Restringir a fontes específicas (opcional)',
      'apiAccess.snippetSqlMode': 'Modo SQL (retornar query SQL bruta)',
      'apiAccess.snippetSelectSources': 'Todas as fontes (padrão)',
      'apiAccess.copy': 'Copiar',
      'apiAccess.copied': 'Copiado!',
      'apiAccess.endpoint': 'Endpoint',
      'studio.addNote': 'Adicionar nota',
      'studio.comingSoon': 'Recurso em breve',
       'studio.comingSoonDescription': 'Esta funcionalidade estará disponível em breve.',

       // Report (Studio)
       'studio.reportTitle': 'Relatório Exploratório',
       'studio.reportDescription': 'Gere um relatório HTML rico com gráficos exploratórios e observações sobre sua fonte de dados.',
       'studio.reportSource': 'Fonte de dados',
       'studio.reportSelectSource': 'Selecione uma fonte...',
       'studio.reportNoSource': 'Nenhuma fonte de dados disponível.',
       'studio.reportGenerate': 'Gerar Relatório',
       'studio.reportGenerating': 'Gerando...',
       'studio.reportGeneratingHint': 'Isso pode levar um minuto — analisando dados e criando gráficos.',
       'studio.reportSaved': 'Relatório gerado com sucesso!',
       'studio.reportSavedList': 'Relatórios salvos',
       'studio.reportNoSaved': 'Nenhum relatório gerado ainda.',
       'studio.reportDownload': 'Download',
       'studio.reportOpenNewTab': 'Abrir em nova aba',
       'studio.reportLoadError': 'Falha ao carregar relatórios.',
       'studio.reportGenerateError': 'Falha ao gerar relatório.',
       'studio.reportDeleted': 'Relatório excluído.',
       'studio.reportDeleteError': 'Falha ao excluir relatório.',
       'studio.reportLoadingHtml': 'Carregando relatório...',
       'studio.reportSelectToView': 'Selecione um relatório para visualizar.',

       // Graph (Studio)
       'graph.title': 'Grafo / Dados como Grafo',
       'graph.description': 'Transforme sua tabela em um grafo. Escolha as colunas de origem e destino para construir nós e arestas.',
       'graph.maximize': 'Maximizar para melhor visualização',
       'graph.restore': 'Restaurar janela',
       'graph.sourceColumn': 'Coluna de origem (de)',
       'graph.targetColumn': 'Coluna de destino (para)',
       'graph.selectSource': 'Selecione a coluna de origem',
       'graph.selectTarget': 'Selecione a coluna de destino',
       'graph.noData': 'Adicione uma fonte de dados com preview para visualizar um grafo.',
       'graph.noPreview': 'Nenhum dado de preview disponível para esta fonte.',
       'graph.selectColumns': 'Selecione as colunas de origem e destino acima.',
       'graph.dataSource': 'Fonte de dados',
       'graph.noEdges': 'Nenhuma aresta com as colunas selecionadas. Tente outras colunas.',
       'graph.nodes': 'nós',
       'graph.links': 'arestas',
       'graph.modeLabel': 'Tipo de grafo',
       'graph.modeColumnPair': 'Par de colunas',
       'graph.modeColumnPairDesc': 'Valores como nós. Arestas origem→destino por linha.',
       'graph.modeProperty': 'Grafo de propriedades',
       'graph.modePropertyDesc': 'Linhas como nós. Arestas quando A[origem]=B[destino] (estilo FK).',
       'graph.modeBipartite': 'Bipartido',
       'graph.modeBipartiteDesc': 'Nós de entidade (linhas) + nós de valor. Linhas que compartilham valor se conectam.',
       'graph.valueColumn': 'Coluna de valor',
       'graph.selectValueColumn': 'Selecione a coluna para nós de valor',
       
       // Logs
       'logs.title': 'Logs da plataforma',
       'logs.button': 'Logs',
       'logs.action': 'Ação',
       'logs.channel': 'Canal',
       'logs.timestamp': 'Data/Hora',
       'logs.provider': 'Provedor',
       'logs.model': 'Modelo',
       'logs.tokensIn': 'Tokens entrada',
       'logs.tokensOut': 'Tokens saída',
       'logs.source': 'Fonte',
       'logs.refresh': 'Atualizar',
       'logs.close': 'Fechar',
       'logs.loading': 'Carregando logs...',
       'logs.empty': 'Nenhum log registrado ainda.',
       'logs.emptyDescription': 'Faça perguntas ou gere summaries para ver os logs aqui.',
       'logs.error': 'Erro ao carregar logs',
       'logs.actionQuestion': 'Pergunta',
       'logs.actionSummary': 'Summary',
       'logs.details': 'Detalhes',
       'logs.trace': 'Trace LLM',
       'logs.expand': 'Expandir',
       'logs.collapse': 'Recolher',
       'logs.noTrace': 'Nenhum dado de trace disponível',
       'logs.stage': 'Etapa',
       
       // Users Management
       'users.title': 'Gestão de Usuários',
        'users.description': 'Gerencie os usuários e suas permissões de acesso',
        'users.addUser': 'Adicionar Usuário',
        'users.addUserButton': 'Adicionar Usuário',
        'users.newUser': 'Novo Usuário',
        'users.inviteNewUser': 'Convidar Novo Usuário',
        'users.inviteDescription': 'Um email será enviado ao usuário com instruções para definir sua senha e acessar o sistema.',
        'users.email': 'Email',
        'users.emailPlaceholder': 'usuario@exemplo.com',
        'users.role': 'Perfil',
        'users.profile': 'Perfil',
        'users.admin': 'Administrador',
        'users.member': 'Membro',
        'users.createdAt': 'Data de Criação',
        'users.actions': 'Ações',
        'users.cancel': 'Cancelar',
        'users.add': 'Adicionar',
        'users.adding': 'Adicionando...',
        'users.inviteSuccess': 'Usuário convidado com sucesso! Ele receberá um email para definir sua senha.',
        'users.addSuccess': 'Usuário adicionado com sucesso',
        'users.addError': 'Erro ao adicionar usuário:',
        'users.emailAlreadyExists': 'Este email já está registrado no sistema',
        'users.removeSuccess': 'Usuário removido com sucesso',
        'users.removeError': 'Erro ao remover usuário:',
        'users.noUsersFound': 'Nenhum usuário encontrado',
        'users.validEmailError': 'Digite um email válido',
        'users.systemUsers': 'Usuários do Sistema',
       
       // Workspace Access Management
       'workspaceAccess.title': 'Controle de Acesso aos Workspaces',
       'workspaceAccess.description': 'Gerencie o acesso dos usuários aos workspaces',
       'workspaceAccess.grantAccess': 'Conceder Acesso',
       'workspaceAccess.grantAccessDescription': 'Permita que usuários acessem workspaces específicos',
       'workspaceAccess.selectWorkspace': 'Selecione um workspace',
       'workspaceAccess.selectUser': 'Selecione um usuário',
       'workspaceAccess.grant': 'Conceder',
       'workspaceAccess.grantedAccess': 'Acessos Concedidos',
       'workspaceAccess.grantedAccessDescription': 'Lista de usuários com acesso a cada workspace',
       'workspaceAccess.workspace': 'Workspace',
       'workspaceAccess.user': 'Usuário',
       'workspaceAccess.grantedAt': 'Data de Concessão',
       'workspaceAccess.actions': 'Ações',
       'workspaceAccess.noAccessGranted': 'Nenhum acesso concedido',
       'workspaceAccess.selectWorkspaceAndUser': 'Selecione um workspace e um usuário',
       'workspaceAccess.accessGrantedSuccess': 'Acesso concedido com sucesso',
      'workspaceAccess.accessGrantedError': 'Erro ao conceder acesso:',
      'workspaceAccess.accessRevokedSuccess': 'Acesso revogado com sucesso',
      'workspaceAccess.accessRevokedError': 'Erro ao revogar acesso:',

      // Dashboards (Modal)
      'dashboardModal.title': 'Dashboards',
      'dashboard.createNew': 'Criar dashboard',
      'dashboard.createNewDashboard': 'Criar novo dashboard',
      'dashboard.createDescription': 'Crie um dashboard para organizar seus gráficos e visualizações.',
      'dashboard.name': 'Nome do dashboard',
      'dashboard.description': 'Descrição',
      'dashboard.descriptionOptional': 'Descrição (opcional)',
      'dashboard.namePlaceholder': 'Ex: Relatório de Vendas',
      'dashboard.descriptionPlaceholder': 'Descreva o propósito deste dashboard',
      'dashboard.cancel': 'Cancelar',
      'dashboard.create': 'Criar dashboard',
      'dashboard.edit': 'Editar',
      'dashboard.rename': 'Renomear',
      'dashboard.delete': 'Excluir',
      'dashboard.view': 'Visualizar',
      'dashboard.charts': 'gráficos',
      'dashboard.chart': 'gráfico',
      'dashboard.noCharts': 'Nenhum gráfico adicionado',
      'dashboard.noChartsDescription': 'Vá para um workspace e gere gráficos com seus agentes. Depois, clique em "Adicionar ao dashboard" para adicioná-los aqui.',
      'dashboard.goToWorkspaces': 'Ir para workspaces',
      'dashboard.addToDashboard': 'Adicionar ao dashboard',
      'dashboard.selectDashboard': 'Selecionar um dashboard',
      'dashboard.selectDashboardPlaceholder': 'Selecione um dashboard',
      'dashboard.noDashboardsFound': 'Nenhum dashboard encontrado. Crie um dashboard primeiro na página inicial.',
      'dashboard.add': 'Adicionar',
      'dashboard.addToTitle': 'Adicionar ao dashboard',
      'dashboard.addToDescription': 'Selecione um dashboard para adicionar este gráfico.',
      'dashboard.createSuccess': 'Dashboard criado com sucesso!',
      'dashboard.createError': 'Erro ao criar dashboard',
      'dashboard.loadError': 'Erro ao carregar dashboards',
      'dashboard.updateSuccess': 'Dashboard atualizado com sucesso!',
      'dashboard.updateError': 'Erro ao atualizar dashboard',
      'dashboard.deleteSuccess': 'Dashboard excluído com sucesso!',
      'dashboard.deleteError': 'Erro ao excluir dashboard',
      'dashboard.deleteConfirm': 'Tem certeza que deseja excluir o dashboard "{name}"?',
      'dashboard.chartAddedSuccess': 'Gráfico adicionado ao dashboard!',
      'dashboard.chartAddedError': 'Erro ao adicionar gráfico ao dashboard',
      'dashboard.chartRemovedSuccess': 'Gráfico removido do dashboard!',
      'dashboard.chartRemovedError': 'Erro ao remover gráfico',
      'dashboard.chartRemoveConfirm': 'Tem certeza que deseja remover este gráfico do dashboard?',
      'dashboard.editDashboard': 'Editar dashboard',
      'dashboard.editDashboardDescription': 'Atualize as informações do seu dashboard.',
      'dashboard.saveChanges': 'Salvar alterações',
      'dashboard.editChart': 'Editar gráfico',
      'dashboard.editChartDescription': 'Atualize o título e descrição do gráfico.',
      'dashboard.chartTitle': 'Título do gráfico',
      'dashboard.chartDescription': 'Descrição',
      'dashboard.chartTitlePlaceholder': 'Título do gráfico',
      'dashboard.chartDescriptionPlaceholder': 'Descrição do gráfico',
      'dashboard.untitledChart': 'Gráfico sem título',
      'dashboard.question': 'Pergunta',
      'dashboard.notFound': 'Dashboard não encontrado',
      'dashboard.notFoundDescription': 'O dashboard que você está procurando não existe.',
      'dashboard.backToHome': 'Voltar ao início',
      'dashboard.loading': 'Carregando dashboard...',
      'dashboard.seoDescription': 'Visualize seus gráficos e dados',
      'dashboard.remove': 'Remover',
      'dashboard.chartUpdateSuccess': 'Gráfico atualizado com sucesso!',
      'dashboard.chartUpdateError': 'Erro ao atualizar gráfico',
      'dashboard.chartLoadError': 'Nao foi possivel carregar a imagem do grafico',

      // Walkthrough
      'walkthrough.stepOf': '{current} de {total}',
      'walkthrough.skip': 'Pular tutorial',
      'walkthrough.next': 'Proximo',
      'walkthrough.prev': 'Voltar',
      'walkthrough.finish': 'Concluir',

      // Walkthrough — Index
      'walkthrough.index.welcome.title': 'Bem-vindo ao Data Talks!',
      'walkthrough.index.welcome.description': 'Esta e sua pagina inicial onde voce gerencia todos os seus workspaces. Cada workspace e um ambiente separado de analise de dados.',
      'walkthrough.index.create.title': 'Crie um workspace',
      'walkthrough.index.create.description': 'Clique aqui para criar um novo workspace e comecar a analisar seus dados com IA.',
      'walkthrough.index.agents.title': 'Seus workspaces',
      'walkthrough.index.agents.description': 'Seus workspaces aparecerao aqui. Clique em qualquer card para abri-lo e comecar a fazer perguntas.',
      'walkthrough.index.viewSort.title': 'Visualizacao e ordenacao',
      'walkthrough.index.viewSort.description': 'Alterne entre visualizacao em grade e lista, ou ordene seus workspaces por data ou nome.',
      'walkthrough.index.settings.title': 'Menu de configuracoes',
      'walkthrough.index.settings.description': 'Acesse as configuracoes da sua conta, modelo de IA, conexoes de dados e gerenciamento de usuarios por aqui.',

      // Walkthrough — Workspace
      'walkthrough.workspace.welcome.title': 'Seu workspace',
      'walkthrough.workspace.welcome.description': 'Esta e a area principal de analise de dados. Aqui voce conecta fontes de dados e faz perguntas em linguagem natural.',
      'walkthrough.workspace.sources.title': 'Fontes de dados',
      'walkthrough.workspace.sources.description': 'Suas fontes de dados conectadas aparecem neste painel. Voce pode ter arquivos CSV, bancos de dados, Google Sheets e mais.',
      'walkthrough.workspace.addSource.title': 'Adicionar fonte de dados',
      'walkthrough.workspace.addSource.description': 'Clique aqui para conectar uma nova fonte — envie um CSV, conecte a um banco de dados, BigQuery ou Google Sheets.',
      'walkthrough.workspace.chatInput.title': 'Faca uma pergunta',
      'walkthrough.workspace.chatInput.description': 'Digite suas perguntas aqui em linguagem natural. Ex: "Quais foram os 5 principais produtos por receita no ultimo mes?"',
      'walkthrough.workspace.chatArea.title': 'Respostas da IA',
      'walkthrough.workspace.chatArea.description': 'As respostas da IA com texto, tabelas e graficos aparecerao aqui. Voce tambem vera sugestoes de perguntas.',
      'walkthrough.workspace.logs.title': 'Logs de execucao',
      'walkthrough.workspace.logs.description': 'Veja as queries SQL e codigo Python gerados pela IA. Util para depuracao ou entender como sua pergunta foi respondida.',
      'walkthrough.workspace.clear.title': 'Limpar conversa',
      'walkthrough.workspace.clear.description': 'Reinicie a conversa atual e comece do zero. Suas conversas anteriores continuam disponiveis no historico.',
      'walkthrough.workspace.agentSettings.title': 'Configuracoes do agente',
      'walkthrough.workspace.agentSettings.description': 'Configure este agente — altere nome, descricao, fontes de dados conectadas e perguntas sugeridas.',
      'walkthrough.workspace.studio.title': 'Ferramentas e integracoes',
      'walkthrough.workspace.studio.description': 'Use estas ferramentas para gerar relatorios, resumos, audio e conectar ao Slack, Telegram ou WhatsApp.',
      'walkthrough.workspace.history.title': 'Historico de conversas',
      'walkthrough.workspace.history.description': 'Acesse suas conversas anteriores e retome-as a qualquer momento.',

      // Walkthrough — Dashboard
      'walkthrough.dashboard.overview.title': 'Seu dashboard',
      'walkthrough.dashboard.overview.description': 'Dashboards exibem seus graficos salvos em um layout visual. Organize suas visualizacoes mais importantes aqui.',
      'walkthrough.dashboard.charts.title': 'Cards de graficos',
      'walkthrough.dashboard.charts.description': 'Cada card mostra um grafico de suas sessoes de analise. Adicione graficos do workspace para montar seu dashboard.',
      'walkthrough.dashboard.actions.title': 'Acoes do grafico',
      'walkthrough.dashboard.actions.description': 'Edite titulos, descricoes ou remova graficos usando o menu em cada card.',

      // Walkthrough — Agent Briefing
      'walkthrough.agentBriefing.nameDesc.title': 'Nomeie seu agente',
      'walkthrough.agentBriefing.nameDesc.description': 'De um nome e descricao ao seu agente para identifica-lo facilmente depois.',
      'walkthrough.agentBriefing.sources.title': 'Selecione fontes de dados',
      'walkthrough.agentBriefing.sources.description': 'Escolha quais fontes de dados este agente tera acesso para responder perguntas.',
      'walkthrough.agentBriefing.questions.title': 'Perguntas sugeridas',
      'walkthrough.agentBriefing.questions.description': 'Adicione perguntas sugeridas que aparecerao como atalhos quando usuarios abrirem este workspace.',
      'walkthrough.agentBriefing.save.title': 'Salvar agente',
      'walkthrough.agentBriefing.save.description': 'Quando terminar de configurar, clique em salvar para criar ou atualizar seu agente.',

      // Walkthrough — Account
      'walkthrough.account.overview.title': 'Configuracoes',
      'walkthrough.account.overview.description': 'Gerencie suas configuracoes de conta, modelo de IA, conexoes e mais nesta barra lateral.',
      'walkthrough.account.llm.title': 'Configuracoes do modelo de IA',
      'walkthrough.account.llm.description': 'Configure qual modelo de IA (OpenAI, Ollama ou LiteLLM) sera usado para sua analise de dados.',
      'walkthrough.account.connections.title': 'Conexoes',
      'walkthrough.account.connections.description': 'Gerencie suas conexoes com bancos de dados e APIs aqui.',
      'walkthrough.account.sources.title': 'Fontes de dados',
      'walkthrough.account.sources.description': 'Visualize e gerencie todas as suas fontes de dados conectadas em todos os workspaces.',

      // Walkthrough — Alerts
      'walkthrough.alerts.overview.title': 'Alertas',
      'walkthrough.alerts.overview.description': 'Configure alertas automatizados para monitorar seus dados e receber notificacoes por e-mail ou webhook.',
      'walkthrough.alerts.create.title': 'Criar um alerta',
      'walkthrough.alerts.create.description': 'Defina o que monitorar, com que frequencia verificar e para onde enviar notificacoes.',
      'walkthrough.alerts.webhooks.title': 'Webhooks',
      'walkthrough.alerts.webhooks.description': 'Configure URLs de webhook para integracoes avancadas com ferramentas externas.',
   },
  es: {
    // Common
    'common.loading': 'Cargando...',
    // Navigation
    'nav.dashboard': 'Panel',
    'nav.account': 'Cuenta',
    'nav.logout': 'Cerrar sesión',
    'nav.getStarted': 'Comenzar',
    'nav.tagline': 'Habla con tus datos',
    // Hero Section
    'hero.title': 'Convierte tus datos en conversaciones inteligentes',
    'hero.subtitle': 'Conecta tus fuentes de datos y haz preguntas en lenguaje natural. Obtén insights instantáneos sin consultas complejas.',
    'hero.getStarted': 'Comenzar',
    'hero.howItWorks': 'Cómo funciona',
    // How it works
    'howItWorks.title': 'Cómo funciona',
    'howItWorks.step1.title': 'Conecta tus datos',
    'howItWorks.step1.description': 'Sube archivos CSV, conecta BigQuery o añade otras fuentes de datos',
    'howItWorks.step2.title': 'Haz preguntas',
    'howItWorks.step2.description': 'Usa lenguaje natural para consultar tus datos',
    'howItWorks.step3.title': 'Obtén insights',
    'howItWorks.step3.description': 'Recibe respuestas instantáneas con gráficos y visualizaciones',
    'howItWorks.step4.title': 'Alertas',
    'howItWorks.step4.description': 'Crea alertas para monitorear métricas y recibir notificaciones',
    // Benefits
    'benefits.title': 'Beneficios',
    'benefits.easy.title': 'Fácil de usar',
    'benefits.easy.description': 'No necesitas aprender SQL ni lenguajes de consulta complejos',
    'benefits.easy.extended': 'Haz preguntas en lenguaje natural y obtén insights sin escribir consultas complejas.',
    'benefits.easy.tagline': 'Análisis de datos simplificado.',
    'benefits.fast.title': 'Insights rápidos',
    'benefits.fast.description': 'Obtén respuestas en segundos, no en horas',
    'benefits.fast.extended': 'Conecta tus fuentes de datos y comienza a hacer preguntas inmediatamente.',
    'benefits.fast.tagline': 'Toma decisiones con agilidad.',
    'benefits.secure.title': 'Seguro',
    'benefits.secure.description': 'Tus datos permanecen privados y seguros',
    'benefits.secure.extended': 'Tus datos están cifrados y mantienes el control total sobre quién puede acceder.',
    'benefits.secure.tagline': 'Privacidad garantizada.',
    // Auth
    'auth.title': 'Accede a tu cuenta',
    'auth.login': 'Iniciar sesión',
    'auth.register': 'Registrarse',
    'auth.username': 'Usuario',
    'auth.email': 'Email',
    'auth.password': 'Contraseña',
    'auth.name': 'Nombre',
    'auth.loginButton': 'Entrar',
    'auth.registerButton': 'Crear cuenta',
    'auth.loginError': 'Error al iniciar sesión. Intenta de nuevo.',
    'auth.registerError': 'Error al registrarse. Intenta de nuevo.',
    'auth.registerSuccess': '¡Registro exitoso! Revisa tu email para confirmar e iniciar sesión.',
    'auth.forgotPassword': '¿Olvidaste tu contraseña?',
    // Settings
    'settings.title': 'Configuración',
    'settings.subscription': 'Cuenta',
    'settings.users': 'Usuarios',
    'settings.workspaceAccess': 'Control de acceso',
    'settings.language': 'Idioma',
    'settings.logout': 'Cerrar sesión',
    'settings.newWorkspace': 'Nuevo workspace',
    // Dashboard
    'dashboard.title': 'Panel',
    'dashboard.dataSources': 'Fuentes de datos',
    'dashboard.connectedSources': 'fuente(s) conectada(s)',
    'dashboard.addSource': 'Configurar fuentes',
    'dashboard.agentConfig': 'Configuración del agente',
    'dashboard.agentConfigDesc': 'Añade detalles de fuentes para que el agente entienda el contexto.',
    'dashboard.configureAgent': 'Configurar agente',
    'dashboard.questionsAnswers': 'Preguntas y respuestas',
    'dashboard.activeAgents': 'agente(s) activo(s)',
    'dashboard.newQuestion': 'Nueva pregunta',
    'dashboard.alerts': 'Alertas',
    'dashboard.configuredAlerts': 'alerta(s) configurada(s)',
    'dashboard.createAlert': 'Crear alerta',
    'dashboard.channelConfig': 'Configuración de canales',
    'dashboard.channelConfigDesc': 'Configura en qué canales estarán disponibles tus agentes.',
    'dashboard.configureChannels': 'Configurar canales',
    'dashboard.dataExplore': 'Explorar datos',
    'dashboard.dataExploreDesc': 'Explora y analiza tus datos con visualizaciones interactivas.',
    'dashboard.autoML': 'Auto ML',
    'dashboard.autoMLDesc': 'Construye y despliega modelos de machine learning automáticamente.',
    'dashboard.comingSoon': 'Próximamente',
    // Account
    'account.title': 'Cuenta',
    'account.tabs.usage': 'Uso',
    'account.tabs.llm': 'LLM / IA',
    'account.tabs.sources': 'Fuentes de datos',
    'account.tabs.credentials': 'Credenciales',
    'account.tabs.connections': 'Connections',
    'account.tabs.users': 'Usuarios',
    'account.tabs.organization': 'Organización',
    'account.tabs.audit': 'Auditoría',
    // Audit Trail
    'audit.title': 'Registro de Auditoría',
    'audit.search': 'Buscar',
    'audit.searchPlaceholder': 'Buscar acciones, usuarios, recursos...',
    'audit.category': 'Categoría',
    'audit.allCategories': 'Todas las categorías',
    'audit.dateFrom': 'Desde',
    'audit.dateTo': 'Hasta',
    'audit.filter': 'Filtrar',
    'audit.noResults': 'No se encontraron registros de auditoría.',
    'audit.totalRecords': 'registros',
    'audit.page': 'Página',
    'audit.exportSuccess': 'CSV exportado con éxito.',
    'audit.retention': 'Retención',
    'audit.retentionTitle': 'Política de Retención',
    'audit.retentionDescription': 'Establezca cuánto tiempo se mantienen los registros de auditoría. Los registros más antiguos se eliminarán cuando se aplique la política.',
    'audit.retentionDays': 'Período de retención',
    'audit.days': 'días',
    'audit.forever': 'Para siempre (sin eliminación)',
    'audit.retentionSaved': 'Política de retención guardada.',
    'audit.retentionApplied': 'Retención aplicada',
    'audit.recordsDeleted': 'registros eliminados',
    'audit.applyNow': 'Aplicar ahora',
    'audit.cancel': 'Cancelar',
    'audit.save': 'Guardar',
    'audit.col.timestamp': 'Fecha/Hora',
    'audit.col.action': 'Acción',
    'audit.col.category': 'Categoría',
    'audit.col.user': 'Usuario',
    'audit.col.resource': 'Recurso',
    'audit.col.detail': 'Detalle',
    // LLM Settings
    'llmSettings.title': 'Configuración LLM / IA',
    'llmSettings.description': 'Configura el modelo de IA usado para responder preguntas. Elige OpenAI, Ollama o proxy LiteLLM.',
    'llmSettings.provider': 'Proveedor',
    'llmSettings.openaiApiKey': 'Clave API OpenAI',
    'llmSettings.openaiApiKeyHelp': 'Tu clave de API de platform.openai.com. Deja en blanco para mantener la clave existente.',
    'llmSettings.openaiModel': 'Modelo OpenAI',
    'llmSettings.openaiAudioModel': 'Modelo de Audio OpenAI',
    'llmSettings.ollamaBaseUrl': 'URL del servidor Ollama',
    'llmSettings.ollamaBaseUrlHelp': 'Local: http://localhost:11434 o URL de servidor remoto.',
    'llmSettings.ollamaModel': 'Modelo Ollama',
    'llmSettings.ollamaModelPlaceholder': 'Selecciona o escribe el nombre del modelo',
    'llmSettings.ollamaModelHelp': 'Escribe el nombre del modelo (ej: llama3.2) o busca los modelos disponibles.',
    'llmSettings.litellmBaseUrl': 'URL del Proxy LiteLLM',
    'llmSettings.litellmBaseUrlHelp': 'URL del proxy LiteLLM (ej: http://localhost:4000).',
    'llmSettings.litellmApiKey': 'Clave API (opcional)',
    'llmSettings.litellmApiKeyHelp': 'Algunos proxies requieren clave API. Deja en blanco si no es necesario.',
    'llmSettings.litellmModel': 'Modelo',
    'llmSettings.litellmAudioModel': 'Modelo de Audio',
    'llmSettings.litellmModelPlaceholder': 'Selecciona o escribe el nombre del modelo',
    'llmSettings.litellmModelHelp': 'Nombre del modelo configurado en el proxy LiteLLM.',
    'llmSettings.googleApiKey': 'Clave de API de Google',
    'llmSettings.googleApiKeyHelp': 'Tu clave de API de Google AI Studio (aistudio.google.com).',
    'llmSettings.googleModel': 'Modelo Gemini',
    'llmSettings.googleModelHelp': 'Ingresa el nombre del modelo Gemini (ej: gemini-2.0-flash, gemini-1.5-pro).',
    'llmSettings.anthropicApiKey': 'Clave de API de Anthropic',
    'llmSettings.anthropicApiKeyHelp': 'Tu clave de API de console.anthropic.com.',
    'llmSettings.anthropicModel': 'Modelo Claude',
    'llmSettings.anthropicModelHelp': 'Ingresa el nombre del modelo Claude (ej: claude-sonnet-4-20250514, claude-haiku-4-5-20251001).',
    'llmSettings.fetchModels': 'Buscar modelos disponibles',
    'llmSettings.loading': 'Cargando configuración...',
    'llmSettings.save': 'Guardar',
    'llmSettings.saving': 'Guardando...',
    'llmSettings.saveSuccess': 'Configuración guardada correctamente',
    'llmSettings.saveError': 'Error al guardar configuración',
    'llmSettings.loadError': 'Error al cargar configuración',
    'llmSettings.modelsFetched': 'Modelos cargados',
    'llmSettings.modelsFetchError': 'No se pudieron obtener los modelos',
    'llmSettings.noModelsFound': 'No se encontraron modelos en el servidor Ollama',
    'llmSettings.accountDefaultTitle': 'Configuración predeterminada del environment',
    'llmSettings.accountDefaultDescription': 'Se carga desde la configuración de environment del backend y se usa como fallback cuando no hay una configuración LLM guardada seleccionada.',
    'llmConfig.add': 'Añadir',
    'llmConfig.addTitle': 'Añadir configuración LLM',
    'llmConfig.addDescription': 'Añade una configuración de modelo/proveedor para usar en los workspaces.',
    'llmConfig.nameLabel': 'Nombre',
    'llmConfig.namePlaceholder': 'ej: OpenAI GPT-4, Ollama Local',
    'llmConfig.nameRequired': 'El nombre es obligatorio',
    'llmConfig.empty': 'Sin configuraciones LLM aún',
    'llmConfig.emptyHelp': 'Añade una configuración para usar en cada workspace.',
    'llmConfig.delete': 'Eliminar',
    'llmConfig.deleteTitle': 'Eliminar configuración LLM',
    'llmConfig.deleteDescription': '¿Seguro que quieres eliminar "{name}"? Los workspaces que la usan volverán al predeterminado.',
    'llmConfig.deleted': 'Configuración eliminada',
    'llmConfig.cancel': 'Cancelar',
    'llmConfig.deleteConfirm': 'Eliminar',
'llmConfig.workspaceModel': 'Modelo para este workspace',
   'llmConfig.defaultOption': 'Predeterminado (env/config)',
   'llmConfig.setAsDefault': 'Establecer como predeterminado',
   'llmConfig.default': 'Predeterminado',
   'llmConfig.edit': 'Editar',
   'llmConfig.editTitle': 'Editar configuración LLM',
   'llmConfig.editDescription': 'Actualiza el modelo y la configuración del proveedor.',
   'llmConfig.save': 'Guardar',
    'nav.flows': 'Flujos (cómo funciona)',
    'nav.documentation': 'Docs',
    'doc.title': 'Documentación',
    'doc.subtitle': 'Cómo funciona Data Talks: desde añadir fuentes hasta la pregunta y respuesta del agente, por tipo de fuente.',
    'doc.searchPlaceholder': 'Buscar en la documentación...',
    // Sources
    'sources.title': 'Fuentes',
    'sources.add': 'Añadir',
    'sources.filesTab': 'Archivos (CSV/XLSX)',
    'sources.bigQueryTab': 'Google BigQuery',
    'sources.uploadButton': 'Subir',
    'sources.uploading': 'Subiendo...',
    'sources.connectBigQuery': 'Conectar BigQuery',
    'sources.connecting': 'Conectando...',
    'sources.credentials': 'Credenciales (JSON)',
    'sources.project': 'Proyecto',
    'sources.dataset': 'Dataset',
    'sources.allowedTables': 'Tablas permitidas (separadas por coma)',
    'sources.projectPlaceholder': 'mi-proyecto',
    'sources.datasetPlaceholder': 'analytics',
    'sources.tablesPlaceholder': 'ordenes, clientes',
    'sources.noSourcesFound': 'No se encontraron fuentes de datos. Sube archivos CSV o XLSX arriba.',
    'sources.deleteConfirm': '¿Estás seguro de que deseas eliminar esta fuente de datos?',
    'sources.uploadError': 'Error al subir:',
    'sources.selectCredentialsFile': 'Por favor selecciona el archivo JSON de credenciales',
    'sources.fillRequiredFields': 'Por favor completa todos los campos requeridos',
    'sources.bigQueryConnected': '¡BigQuery conectado exitosamente! Fuente:',
    'sources.bigQueryError': 'Error al conectar BigQuery:',
    'sources.unknownError': 'Error desconocido',
    'sources.createdAt': 'Creado:',
    'sources.langflowIntegration': 'Integración Langflow',
    'sources.langflowName': 'Nombre en Langflow:',
    'sources.langflowPath': 'Ruta:',
    'sources.warning': 'Advertencia:',
    'sources.fileNotUploaded': 'El archivo no se subió a Langflow',
    'sources.rows': 'Filas:',
    'sources.columns': 'Columnas',
    'sources.firstRows': 'Primeras filas:',
    'sources.size': 'Tamaño:',
    'sources.connectedTables': 'Tablas conectadas:',
    'sources.tablesNotFound': 'Tablas no encontradas:',
    'sources.removeFile': 'Eliminar',
    'sources.bigQueryInstructions': 'Cómo obtener tu archivo JSON de credenciales BigQuery:',
    'sources.bigQueryStep1': '1. Ve a Google Cloud Console',
    'sources.bigQueryStep2': '2. Navega a APIs y Servicios > Credenciales',
    'sources.bigQueryStep3': '3. Haz clic en "Crear credenciales" > "Cuenta de servicio"',
    'sources.bigQueryStep4': '4. Completa los detalles y haz clic en "Crear"',
    'sources.bigQueryStep5': '5. Haz clic en la cuenta de servicio creada',
    'sources.bigQueryStep6': '6. Ve a la pestaña "Claves" y haz clic en "Añadir clave" > "Crear clave nueva"',
    'sources.bigQueryStep7': '7. Selecciona formato "JSON" y descarga el archivo',
    'sources.bigQueryStep8': '8. Sube el archivo JSON descargado arriba',
    'sources.bigQueryDocsLink': 'Ver documentación oficial',
    'sources.useExistingCredential': 'Usar credencial existente',
    'sources.selectCredential': 'Seleccionar una credencial',
    'sources.savedSourcesAppear': 'Las fuentes guardadas aparecerán aquí',
    'sources.addSourcesInstructions': 'Haz clic en Añadir para subir archivos CSV o XLSX, conectar BigQuery o enlazar Google Sheets.',
    'sources.relationships': 'Vínculos SQL',
    'sources.active': 'Activa',
    'sources.sourceActivated': 'Fuente activada correctamente',
    'sources.sqlSourceActivated': 'Fuente SQL activada correctamente',
    'sources.sqlSourceDeactivated': 'Fuente SQL desactivada correctamente',
    'sources.activateError': 'Error al activar la fuente',

    // SQL Relationships
    'sqlRelationships.title': 'Relaciones SQL',
    'sqlRelationships.description': 'Conecta fuentes SQL para que el workspace consulte tablas relacionadas en conjunto.',
    'sqlRelationships.loadError': 'Error al cargar relaciones SQL',
    'sqlRelationships.saveSuccess': 'Relaciones SQL guardadas correctamente',
    'sqlRelationships.saveError': 'Error al guardar relaciones SQL',
    'sqlRelationships.needMoreSourcesTitle': 'Añade más fuentes SQL',
    'sqlRelationships.needMoreSourcesDescription': 'Necesitas al menos dos fuentes SQL en este workspace para crear relaciones.',
    'sqlRelationships.suggestionsTitle': 'Sugerencias automáticas',
    'sqlRelationships.suggestionsDescription': 'Las columnas con el mismo nombre se sugieren automáticamente.',
    'sqlRelationships.addManual': 'Añadir relación',
    'sqlRelationships.noSuggestions': 'No se encontraron sugerencias automáticas para las fuentes SQL actuales.',
    'sqlRelationships.useSuggestion': 'Usar sugerencia',
    'sqlRelationships.dismissSuggestion': 'Excluir (ocultar permanentemente)',
    'sqlRelationships.relationshipsTitle': 'Relaciones configuradas',
    'sqlRelationships.relationshipsDescription': 'Estos vínculos se usarán automáticamente en las preguntas SQL multi-source.',
    'sqlRelationships.noRelationships': 'Todavía no hay relaciones configuradas.',
    'sqlRelationships.relationshipLabel': 'Relación {index}',
    'sqlRelationships.leftSide': 'Lado izquierdo',
    'sqlRelationships.rightSide': 'Lado derecho',
    'sqlRelationships.swapSides': 'Invertir lados',
    'sqlRelationships.selectSource': 'Seleccionar fuente',
    'sqlRelationships.selectTable': 'Seleccionar tabla',
    'sqlRelationships.selectColumn': 'Seleccionar columna',
    'sqlRelationships.cancel': 'Cancelar',
    'sqlRelationships.save': 'Guardar relaciones',
    'sqlRelationships.diagramTab': 'Diagrama ER',
    'sqlRelationships.connectionsTab': 'Conexiones',
    'sqlRelationships.diagramTitle': 'Vista de relación entre entidades',
    'sqlRelationships.diagramDescription': 'Mira cómo las tablas SQL seleccionadas se conectan mediante las relaciones configuradas.',
    'sqlRelationships.diagramEmpty': 'Añade al menos una relación para renderizar el diagrama ER.',
    'sqlRelationships.diagramPanHint': 'Arrastra el diagrama con el ratón para navegar',
    'sqlRelationships.diagramEditorTitle': 'Editar desde el diagrama',
    'sqlRelationships.diagramEditorDescription': 'Haz clic en una línea de conexión para editarla o eliminarla aquí.',
    'sqlRelationships.diagramSelectedTitle': 'Conexión seleccionada',
    'sqlRelationships.diagramSelectedDescription': 'Ajusta la relación directamente desde la vista del diagrama ER.',
    'sqlRelationships.diagramSelectRelationship': 'Selecciona una conexión en el diagrama para editarla aquí.',
    // Agent
    'agent.title': 'Configuración del agente',
    'agent.name': 'Nombre',
    'agent.namePlaceholder': 'Ej.: Análisis de ventas 2025',
    'agent.selectAgent': 'Seleccionar agente',
    'agent.description': 'Descripción',
    'agent.descriptionPlaceholder': 'Describe qué debe hacer este agente...',
    'agent.dataSource': 'Fuente de datos',
    'agent.selectDataSource': 'Seleccionar una fuente de datos',
    'agent.sharing': 'Compartir',
    'agent.enableSharing': 'Habilitar compartir',
    'agent.sharePassword': 'Contraseña para compartir',
    'agent.sharePasswordPlaceholder': 'Deja vacío para sin contraseña',
    'agent.shareLink': 'Enlace para compartir',
    'agent.copyLink': 'Copiar enlace',
    'agent.linkCopied': '¡Enlace copiado!',
    'agent.suggestedQuestions': 'Preguntas sugeridas',
    'agent.addQuestion': 'Añadir pregunta',
    'agent.questionPlaceholder': 'Introduce una pregunta sugerida...',
    'agent.save': 'Guardar',
    'agent.saving': 'Guardando...',
    'agent.delete': 'Eliminar',
    'agent.deleting': 'Eliminando...',
    'agent.deleteConfirm': '¿Estás seguro de que deseas eliminar el agente "{name}"? Esta acción no se puede deshacer.',
    'agent.deleted': 'Agente eliminado',
    'agent.deletedSuccess': 'Agente eliminado exitosamente',
    'agent.error': 'Error',
    'agent.saved': 'Agente guardado',
    'agent.savedSuccess': 'Agente guardado exitosamente',
    'agent.createAgent': 'Crear agente',
    'agent.saveChanges': 'Guardar cambios',
    'agent.newAgent': 'Nuevo agente',
    'agent.noDataSourcesFound': 'No se encontraron fuentes de datos. Añade fuentes primero.',
    'agent.selectDataSourceHelp': 'Selecciona la fuente de datos a la que este agente tendrá acceso para responder preguntas.',
    'agent.addSuggestedQuestionsHelp': 'Añade preguntas que aparecerán como sugerencias cuando alguien use este agente.',
    'agent.enableSharingHelp': 'Permite que personas externas accedan a este agente',
    'agent.linkCopiedDescription': 'Enlace compartible copiado al portapapeles',
    'agent.passwordProtected': 'Acceso protegido con contraseña',
    'agent.publicAccess': 'Acceso público: cualquiera con el enlace puede acceder',
    'agent.passwordUpdated': 'Contraseña actualizada',
    'agent.passwordUpdatedSuccess': 'Contraseña de compartir actualizada exitosamente',
    'agent.sharingEnabled': 'Compartir habilitado',
    'agent.sharingDisabled': 'Compartir deshabilitado',
    'agent.sharingEnabledSuccess': '¡Enlace compartible creado exitosamente!',
    'agent.sharingDisabledSuccess': 'Enlace compartible eliminado',
    // Questions
    'questions.title': 'Preguntas',
    'questions.beforeStart': 'Antes de comenzar',
    'questions.createAgentFirst': 'Crea un agente en "Briefing" para empezar a hacer preguntas.',
    'questions.agent': 'Agente',
    'questions.questionPlaceholder': 'Ej.: ¿Cuál es el ingreso de los últimos 3 meses por región?',
    'questions.ask': 'Preguntar',
    'questions.processing': 'Procesando...',
    'questions.error': 'Error:',
    'questions.feedbackError': 'Error al guardar la valoración:',
    'questions.suggestedQuestions': 'Preguntas sugeridas',
    'questions.suggestedQuestionsLabel': 'Preguntas sugeridas',
    'questions.clickToAsk': 'Clic para preguntar',
    'questions.noSessions': 'Aún no hay preguntas.',
    'questions.noQuestionsFound': 'Aún no se encontraron preguntas.',
    'questions.processingQuestion': 'Procesando tu pregunta...',
    'questions.question': 'Pregunta',
    'questions.answerNotAvailable': 'Respuesta no disponible',
    'questions.analysisResult': 'Resultado del análisis',
    'questions.followUpQuestions': 'Preguntas de seguimiento',
    'questions.positiveFeedbackLabel': 'Marcar como valoración positiva',
    'questions.negativeFeedbackLabel': 'Marcar como valoración negativa',
    'questions.deleteQuestionLabel': 'Eliminar pregunta',
    'questions.deleteQuestionConfirm': '¿Estás seguro de que deseas eliminar esta pregunta?',
    'questions.status': 'Estado',
    'questions.availableColumns': 'Columnas disponibles',
    'questions.kpis': 'KPIs',
    'filters.button': 'Filtros',
    'filters.title': 'Filtros',
    'filters.help': 'Aplicados como prefijo de restricción en cada pregunta enviada.',
    'filters.clearAll': 'Limpiar',
    'filters.any': 'Cualquiera',
    'onboarding.filtersTitle': 'Filtros sugeridos',
    'onboarding.filtersHint': 'Filtros de fecha y categoría aparecen en un menú al lado del botón de logs.',
    'onboarding.filtersEmpty': 'Sin filtros sugeridos. Puedes añadirlos luego en los ajustes de la fuente.',
    'questions.warmupQuestions': 'Preguntas de calentamiento',
    'questions.clearConversation': 'Limpiar conversación',
    'questions.seoDescription': 'Haz preguntas en lenguaje natural',
    'questions.dateFormat': 'es-ES',
    // Agent Settings
    'agentSettings.title': 'Configuración del agente',
    'agentSettings.sqlMode': 'Modo SQL',
    'agentSettings.sqlModeHelp': 'Cuando está activado, el agente responderá con la consulta SQL en lugar de la respuesta final.',
    'agentSettings.instructions': 'Instrucciones específicas para el agente',
    'agentSettings.instructionsPlaceholder': 'Introduce instrucciones específicas que el agente debe seguir al responder...',
    'agentSettings.instructionsHelp': 'Estas instrucciones se usarán para personalizar las respuestas del agente.',
    'agentSettings.warmupQuestions': 'Preguntas de calentamiento',
    'agentSettings.warmupQuestionsHelp': 'Estas preguntas aparecerán debajo de las columnas disponibles para ayudar a los usuarios.',
    'agentSettings.addQuestion': 'Añadir nueva pregunta de calentamiento...',
    'agentSettings.cancel': 'Cancelar',
    'agentSettings.save': 'Guardar',
    'agentSettings.saving': 'Guardando...',
    'agentSettings.loadError': 'Error al cargar la configuración',
    'agentSettings.saveSuccess': 'Configuración guardada exitosamente',
    'agentSettings.saveError': 'Error al guardar la configuración',

    // Telegram
    'telegram.title': 'Integración con Telegram',
    'telegram.description': 'Conecta este workspace a un grupo de Telegram. El bot responderá mensajes usando los datos de este workspace.',
    'telegram.connections': 'Grupos conectados',
    'telegram.refresh': 'Actualizar',
    'telegram.connect': 'Conectar',
    'telegram.generatingLink': 'Conectando...',
    'telegram.instructionsReady': 'Instrucciones generadas. Sigue los pasos de abajo en Telegram para terminar la conexión.',
    'telegram.linkOpened': 'Enlace de Telegram abierto. Añade el bot al grupo y espera la conexión.',
    'telegram.notConfigured': 'No hay ninguna configuración de bot de Telegram disponible. Configura el bot por defecto en el .env del backend o añade una en Cuenta > Connections.',
    'telegram.connectError': 'Error al generar el enlace de conexión',
    'telegram.configLoadError': 'Error al cargar configuraciones de Telegram',
    'telegram.connectionConfigLabel': 'Configuración de Telegram',
    'telegram.connectionConfigPlaceholder': 'Selecciona una configuración de bot',
    'telegram.selectConfigRequired': 'Selecciona una configuración de Telegram antes de conectar.',
    'telegram.noBotConfigTitle': 'No hay configuración de Telegram disponible',
    'telegram.noBotConfigDescriptionPrefix': 'Configura TELEGRAM_BOT_TOKEN y TELEGRAM_BOT_USERNAME en el .env del backend o añade una nueva conexión en ',
    'telegram.configureConnectionsLink': 'Cuenta > Connections',
    'telegram.noBotConfigDescriptionSuffix': '.',
    'telegram.noConnections': 'Aún no hay grupos conectados. Haz clic en',
    'telegram.noConnectionsSuffix': 'para comenzar.',
    'telegram.remove': 'Eliminar conexión',
    'telegram.removeConfirm': 'Eliminar la conexión con',
    'telegram.removeSuccess': 'Conexión eliminada correctamente.',
    'telegram.removeError': 'Error al eliminar la conexión',
    'telegram.fallbackTitle': 'Instrucciones de conexión',
    'telegram.fallbackDescription': 'Usa el comando temporal de abajo para conectar el bot manualmente. No necesitas abrir un enlace de Telegram desde aquí.',
    'telegram.fallbackExpires': 'Válido hasta:',
    'telegram.fallbackStep1': '1. Crea o abre el grupo de destino en Telegram.',
    'telegram.fallbackStep2': '2. Añade el bot',
    'telegram.fallbackStep3': '3. Envía el comando de abajo en el grupo para conectarlo a este workspace.',
    'telegram.copyCommand': 'Copiar comando',
    'telegram.copyLink': 'Copiar enlace',
    'telegram.commandCopied': 'Comando copiado.',
    'telegram.linkCopied': 'Enlace copiado.',
    'telegram.copyError': 'No se pudo copiar al portapapeles.',
    'whatsapp.title': 'Integración con WhatsApp',
    'whatsapp.description': 'Conecta este workspace a un número de teléfono de WhatsApp Business. Los mensajes enviados a ese número serán respondidos usando los datos de este workspace.',
    'whatsapp.connect': 'Conectar',
    'whatsapp.connecting': 'Conectando...',
    'whatsapp.refresh': 'Actualizar',
    'whatsapp.connectionConfigLabel': 'Configuración de WhatsApp',
    'whatsapp.connectionConfigPlaceholder': 'Selecciona una configuración de WhatsApp',
    'whatsapp.selectConfigRequired': 'Selecciona una configuración de WhatsApp antes de conectar.',
    'whatsapp.noBotConfigTitle': 'No hay configuración de WhatsApp disponible',
    'whatsapp.noBotConfigDescriptionPrefix': 'Configura WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_ACCESS_TOKEN y WHATSAPP_VERIFY_TOKEN en el .env del backend o añade una nueva conexión en ',
    'whatsapp.configureConnectionsLink': 'Cuenta > Connections',
    'whatsapp.noBotConfigDescriptionSuffix': '.',
    'whatsapp.noConnections': 'Aún no hay número conectado. Haz clic en',
    'whatsapp.noConnectionsSuffix': 'para conectar.',
    'whatsapp.remove': 'Eliminar conexión',
    'whatsapp.removeConfirm': 'Eliminar la conexión de WhatsApp para',
    'whatsapp.removeSuccess': 'Conexión eliminada correctamente.',
    'whatsapp.removeError': 'Error al eliminar la conexión',
    'whatsapp.connectSuccess': 'WhatsApp conectado correctamente.',
    'whatsapp.connectError': 'Error al conectar WhatsApp',
    'whatsapp.configLoadError': 'Error al cargar configuraciones de WhatsApp',
    'whatsapp.webhookTitle': 'Configuración del webhook',
    'whatsapp.webhookDescription': 'Registra la siguiente URL en el panel de tu App de Meta como URL de webhook de WhatsApp:',
    'whatsapp.webhookCopied': 'URL del webhook copiada.',
    'whatsapp.copyWebhook': 'Copiar URL',
    'slack.title': 'Integración con Slack',
    'slack.description': 'Conecta este workspace a un canal de Slack. El bot responderá mensajes y comandos slash usando los datos de este workspace.',
    'slack.connect': 'Conectar canal',
    'slack.connecting': 'Conectando...',
    'slack.refresh': 'Actualizar',
    'slack.addToSlack': 'Agregar a Slack',
    'slack.connectionConfigLabel': 'Configuración de Slack',
    'slack.connectionConfigPlaceholder': 'Selecciona una configuración de Slack',
    'slack.selectConfigRequired': 'Selecciona una configuración de Slack antes de conectar.',
    'slack.channelId': 'ID del canal',
    'slack.channelIdPlaceholder': 'ej: C01ABCDEF23',
    'slack.channelIdRequired': 'Ingresa el ID del canal de Slack para conectar.',
    'slack.needsOAuth': 'Necesita OAuth',
    'slack.oauthSuccess': 'Workspace de Slack conectado exitosamente. Actualiza la lista para ver el cambio.',
    'slack.noBotConfigTitle': 'No hay configuración de Slack disponible',
    'slack.noBotConfigDescriptionPrefix': 'Agrega una configuración de app Slack en ',
    'slack.configureConnectionsLink': 'Cuenta > Conexiones',
    'slack.noBotConfigDescriptionSuffix': ' para comenzar.',
    'slack.noConnections': 'Ningún canal conectado aún. Haz clic en',
    'slack.noConnectionsSuffix': 'para conectar un canal.',
    'slack.remove': 'Eliminar conexión',
    'slack.removeConfirm': 'Eliminar la conexión de Slack con',
    'slack.removeSuccess': 'Conexión eliminada correctamente.',
    'slack.removeError': 'Error al eliminar la conexión',
    'slack.connectSuccess': 'Canal de Slack conectado exitosamente.',
    'slack.connectError': 'Error al conectar canal de Slack',
    'slack.configLoadError': 'Error al cargar configuraciones de Slack',
    'slack.webhookUrls': 'URLs de Webhook',
    'slack.webhookUrlsHint': 'Configura estas URLs en la configuración de tu app Slack (Event Subscriptions y Slash Commands).',
    'slack.urlCopied': 'URL copiada.',
    'slack.copyError': 'No se pudo copiar al portapapeles.',
    'connections.title': 'Connections',
    'connections.add': 'Agregar conexión',
    'connections.addTitle': 'Agregar conexión de Telegram',
    'connections.addDescription': 'Guarda una configuración de bot de Telegram para usarla al conectar workspaces.',
    'connections.nameLabel': 'Nombre de la conexión',
    'connections.namePlaceholder': 'p. ej. Bot de ventas',
    'connections.telegramTokenLabel': 'TELEGRAM_BOT_TOKEN',
    'connections.telegramUsernameLabel': 'TELEGRAM_BOT_USERNAME',
    'connections.envBadge': 'Predeterminado (.env)',
    'connections.help': 'Las configuraciones guardadas de Telegram se pueden seleccionar al conectar un workspace.',
    'connections.empty': 'Todavía no hay configuraciones de conexión',
    'connections.emptyDescription': 'Agrega aquí un bot de Telegram o configura el bot predeterminado en el archivo .env del backend.',
    'connections.emptyHelp': 'No tienes bot predeterminado en el entorno ni conexiones guardadas todavía.',
    'connections.loading': 'Cargando conexiones...',
    'connections.loadError': 'No se pudieron cargar las conexiones',
    'connections.requiredFields': 'Completa todos los campos obligatorios',
    'connections.saveSuccess': 'Conexión guardada correctamente',
    'connections.saveError': 'Error al guardar la conexión',
    'connections.delete': 'Eliminar conexión',
    'connections.deleteTitle': 'Eliminar conexión',
    'connections.deleteDescription': '¿Eliminar la conexión "{name}"?',
    'connections.deleteConfirm': 'Eliminar',
    'connections.deleteSuccess': 'Conexión eliminada correctamente',
    'connections.deleteError': 'Error al eliminar la conexión',
    'connections.cancel': 'Cancelar',
    'connections.saving': 'Guardando...',
    'connections.telegramSection': 'Telegram',
    'connections.whatsappSection': 'WhatsApp',
    'connections.addWhatsApp': 'Agregar WhatsApp',
    'connections.addWhatsAppTitle': 'Agregar conexión de WhatsApp',
    'connections.addWhatsAppDescription': 'Guarda una configuración de WhatsApp Business API para usarla al conectar workspaces.',
    'connections.whatsappPhoneNumberIdLabel': 'WHATSAPP_PHONE_NUMBER_ID',
    'connections.whatsappAccessTokenLabel': 'WHATSAPP_ACCESS_TOKEN',
    'connections.whatsappVerifyTokenLabel': 'WHATSAPP_VERIFY_TOKEN',
    'connections.whatsappVerifyTokenPlaceholder': 'Una cadena secreta que tú defines',
    'connections.whatsappEmpty': 'Aún no hay configuraciones de WhatsApp',
    'connections.whatsappEmptyDescription': 'Añade una configuración de WhatsApp Business API aquí o configura los valores por defecto en el archivo .env del backend.',
    'connections.slackClientIdLabel': 'Slack Client ID',
    'connections.slackClientSecretLabel': 'Slack Client Secret',
    'connections.slackSigningSecretLabel': 'Slack Signing Secret',
    'connections.typeLabel': 'Tipo',
    // Alerts
    'alerts.title': 'Alertas',
    'alerts.beforeStart': 'Antes de comenzar',
    'alerts.createAgentFirst': 'Crea un agente en "Briefing" para empezar a crear alertas.',
    'alerts.agent': 'Agente',
    'alerts.alertName': 'Nombre de la alerta',
    'alerts.question': 'Pregunta',
    'alerts.email': 'Email',
    'alerts.emailPlaceholder': 'tu@email.com',
    'alerts.frequency': 'Frecuencia',
    'alerts.daily': 'Diario',
    'alerts.weekly': 'Semanal',
    'alerts.monthly': 'Mensual',
    'alerts.executionTime': 'Hora de ejecución',
    'alerts.dayOfWeek': 'Día de la semana',
    'alerts.dayOfMonth': 'Día del mes',
    'alerts.monday': 'Lunes',
    'alerts.tuesday': 'Martes',
    'alerts.wednesday': 'Miércoles',
    'alerts.thursday': 'Jueves',
    'alerts.friday': 'Viernes',
    'alerts.saturday': 'Sábado',
    'alerts.sunday': 'Domingo',
    'alerts.createAlert': 'Crear alerta',
    'alerts.creating': 'Creando...',
    'alerts.fillRequiredFields': 'Por favor completa todos los campos requeridos',
    'alerts.success': 'Éxito',
    'alerts.alertCreated': '¡Alerta creada exitosamente!',
    'alerts.errorCreatingAlert': 'Error al crear la alerta',
    'alerts.error': 'Error',
    'alerts.noAlerts': 'Aún no hay alertas configuradas.',
    'alerts.deleteConfirm': '¿Estás seguro de que deseas eliminar esta alerta?',
    'alerts.deleted': 'Alerta eliminada',
    'alerts.deletedSuccess': 'Alerta eliminada exitosamente',
    'alerts.newAlert': 'Nueva alerta',
    'alerts.alertNameLabel': 'Nombre de la alerta',
    'alerts.alertNamePlaceholder': 'Nombre de la alerta',
    'alerts.agentLabel': 'Agente',
    'alerts.selectAgentPlaceholder': 'Seleccionar un agente',
    'alerts.emailLabel': 'Email para notificación',
    'alerts.questionLabel': 'Pregunta/Consulta',
    'alerts.questionPlaceholder': '¿Qué pregunta o condición monitorear?',
    'alerts.frequencyLabel': 'Frecuencia',
    'alerts.executionTimeLabel': 'Hora de ejecución',
    'alerts.dayOfWeekLabel': 'Día de la semana',
    'alerts.dayOfMonthLabel': 'Día del mes',
    'alerts.noAlertsConfigured': 'No hay alertas configuradas. Crea tu primera alerta arriba.',
    'alerts.remove': 'Eliminar',
    'alerts.questionField': 'Pregunta:',
    'alerts.emailField': 'Email:',
    'alerts.scheduleField': 'Programación:',
    'alerts.at': 'a las',
    'alerts.day': 'Día',
    'alerts.createdAt': 'Creado:',
    'alerts.nextExecution': 'Próxima ejecución:',
    'alerts.alertRemoved': 'Alerta eliminada',
    'alerts.alertType': 'Tipo',
    'alerts.typeAlert': 'Alerta',
    'alerts.typeReport': 'Reporte Programado',
    'alerts.activeAlerts': 'Alertas Activas',
    'alerts.pause': 'Pausar',
    'alerts.resume': 'Reanudar',
    'alerts.test': 'Probar',
    'alerts.testing': 'Probando...',
    'alerts.testSuccess': '¡Alerta ejecutada exitosamente!',
    'alerts.testFailed': 'Fallo en la prueba de alerta',
    'alerts.history': 'Historial',
    'alerts.lastRun': 'Última ejecución:',
    'alerts.noExecutions': 'Sin ejecuciones aún.',
    'alerts.executionDate': 'Fecha',
    'alerts.status': 'Estado',
    'alerts.emailSent': 'Email',
    'alerts.webhooksFired': 'Webhooks',
    'alerts.duration': 'Duración',
    'alerts.webhooks': 'Webhooks de Salida',
    'alerts.addWebhook': 'Agregar Webhook',
    'alerts.webhookName': 'Nombre del Webhook',
    'alerts.webhookNamePlaceholder': 'Mi webhook',
    'alerts.webhookUrl': 'URL',
    'alerts.createWebhook': 'Crear Webhook',
    'alerts.noWebhooks': 'No hay webhooks configurados.',
    'alerts.webhookCreated': '¡Webhook creado!',
    'alerts.webhookRemoved': 'Webhook eliminado',
    'alerts.events': 'Eventos',
    'alerts.lastTriggered': 'Último disparo:',
    'alerts.cancel': 'Cancelar',
    'alerts.reportQuestionPlaceholder': '¿Qué reporte debe generarse?',
    // BigQuery Credentials
    'bigquery.addCredential.title': 'Añadir nueva credencial',
    'bigquery.addCredential.description': 'Sube una nueva clave de servicio BigQuery',
    'bigquery.addCredential.nameLabel': 'Nombre de la credencial',
    'bigquery.addCredential.namePlaceholder': 'Ej.: Producción, Desarrollo, etc.',
    'bigquery.addCredential.fileLabel': 'Archivo de credenciales (.json)',
    'bigquery.addCredential.fileSelected': 'Archivo seleccionado:',
    'bigquery.addCredential.uploadButton': 'Añadir credencial',
    'bigquery.addCredential.uploading': 'Subiendo...',
    'bigquery.configured.title': 'Credenciales configuradas',
    'bigquery.configured.description': 'Gestiona tus credenciales',
    'bigquery.configured.loading': 'Cargando credenciales...',
    'bigquery.configured.empty': 'No hay credenciales configuradas. Añade una arriba.',
    'bigquery.configured.name': 'Nombre',
    'bigquery.configured.projectId': 'Project ID',
    'bigquery.configured.langflowPath': 'Ruta Langflow',
    'bigquery.configured.createdAt': 'Creado',
    'bigquery.configured.actions': 'Acciones',
    'bigquery.delete.title': 'Confirmar eliminación',
    'bigquery.delete.description': '¿Estás seguro de que deseas eliminar la credencial "{name}"? Esta acción no se puede deshacer.',
    'bigquery.delete.cancel': 'Cancelar',
    'bigquery.delete.confirm': 'Eliminar',
    'bigquery.errors.invalidFile': 'Por favor selecciona un archivo JSON válido',
    'bigquery.errors.missingFields': 'Por favor completa el nombre y selecciona un archivo',
    'bigquery.errors.invalidJson': 'Archivo JSON inválido',
    'bigquery.errors.uploadFailed': 'Error al añadir credencial',
    'bigquery.errors.loadFailed': 'Error al cargar credenciales',
    'bigquery.errors.deleteFailed': 'Error al eliminar credencial',
    'bigquery.success.added': '¡Credencial añadida exitosamente!',
    'bigquery.success.deleted': 'Credencial eliminada exitosamente',

    'credentials.sql.title': 'Conexiones SQL',
    'credentials.sql.loading': 'Cargando conexiones SQL...',
    'credentials.sql.empty': 'No hay conexiones SQL configuradas.',
    'credentials.sql.emptyHint': 'Añade una fuente de base de datos SQL para ver las conexiones aquí.',
    'credentials.sql.tables': 'tablas',
    // Channels
    'channels.title': 'Canales',
    'channels.subtitle': 'Conecta y gestiona tus canales de comunicación',
    'channels.whatsapp.name': 'WhatsApp',
    'channels.whatsapp.description': 'Conecta tu API de WhatsApp Business para recibir y responder mensajes',
    'channels.slack.name': 'Slack',
    'channels.slack.description': 'Integra con Slack para gestionar conversaciones y notificaciones',
    'channels.telegram.name': 'Telegram',
    'channels.telegram.description': 'Conecta bot de Telegram para soporte al cliente automatizado',
    'channels.comingSoon': 'Próximamente',
    'channels.available': 'Disponible',
    'channels.connectWhatsApp': 'Conectar WhatsApp',
    'channels.connectSlack': 'Conectar Slack',
    'channels.connectTelegram': 'Conectar Telegram',
    'channels.connecting': 'Conectando...',
    'channels.connected': 'Conectado',
    'channels.needMoreIntegrations.title': '¿Necesitas más integraciones?',
    'channels.needMoreIntegrations.description': 'Estamos añadiendo constantemente nuevas integraciones. Contacta a soporte para solicitar plataformas específicas.',
    'channels.requestIntegration': 'Solicitar integración',
    // Pricing
    'pricing.title': 'Precios',
    'pricing.subtitle': 'Elige el plan que mejor se adapte a tus necesidades',
    'pricing.free.title': 'Gratis',
    'pricing.free.price': '$0',
    'pricing.free.period': '/mes',
    'pricing.free.description': 'Perfecto para empezar',
    'pricing.free.button': 'Comenzar',
    'pricing.pro.title': 'Pro',
    'pricing.pro.price': '$199',
    'pricing.pro.period': '/mes',
    'pricing.pro.description': 'Ideal para equipos en crecimiento',
    'pricing.pro.button': 'Iniciar prueba Pro',
    'pricing.enterprise.title': 'Enterprise',
    'pricing.enterprise.price': 'Personalizado',
    'pricing.enterprise.period': '',
    'pricing.enterprise.description': 'Para grandes organizaciones',
    'pricing.enterprise.button': 'Contactar ventas',
    'pricing.features': 'Características',
    'pricing.mostPopular': 'Más popular',
    'pricing.billedAnnually': 'Facturación anual',
    'pricing.billedMonthly': 'Facturación mensual',
    'pricing.save20': 'Ahorra 20%',
    'pricing.needCustom': '¿Necesitas algo personalizado?',
    'pricing.contactUs': 'Contáctanos',
    // Account Users
    'account.users.title': 'Gestión de usuarios',
    'account.users.description': 'Como super usuario (admin), puedes crear y gestionar usuarios.',
    'account.users.addUser': 'Añadir usuario',
    'account.users.email': 'Email',
    'account.users.password': 'Contraseña',
    'account.users.role': 'Rol',
    'account.users.roleUser': 'Usuario',
    'account.users.roleAdmin': 'Admin',
    'account.users.adminOnly': 'Solo el super usuario (admin) puede gestionar usuarios. Inicia sesión con la cuenta admin.',
    'account.users.singleUserMode': 'Modo usuario único. Habilita el login (ENABLE_LOGIN=true) en el backend para usar la gestión de usuarios.',
    'account.users.loading': 'Cargando usuarios...',
    'account.users.empty': 'Aún no hay usuarios. Crea el primero arriba.',
    'account.users.createSuccess': 'Usuario creado exitosamente',
    'account.users.createError': 'Error al crear usuario',
    'account.users.loadError': 'Error al cargar usuarios',
    // Add Source Modal
    // --- Source onboarding (Task 3) ---
    'common.next': 'Siguiente',
    'common.back': 'Atrás',
    'common.close': 'Cerrar',
    'onboarding.title': 'Configura esta fuente de datos',
    'onboarding.subtitle': 'Tres pasos rápidos para que las respuestas futuras sean precisas.',
    'onboarding.profiling': 'Analizando la fuente y generando sugerencias…',
    'onboarding.skip': 'Omitir',
    'onboarding.saving': 'Guardando…',
    'onboarding.finish': 'Finalizar',
    'onboarding.clarificationsTitle': 'Preguntas de aclaración',
    'onboarding.noClarifications': 'Sin preguntas de aclaración para esta fuente — añade una si quieres.',
    'onboarding.answerPlaceholder': 'Escribe tu respuesta…',
    'onboarding.addClarification': 'Añadir aclaración',
    'onboarding.warmupTitle': 'Preguntas iniciales sugeridas',
    'onboarding.warmupHint': 'Las preguntas seleccionadas se convierten en atajos del agente.',
    'onboarding.kpisTitle': 'KPIs candidatos',
    'onboarding.kpisHint': 'Los KPIs se guardan por workspace y se pueden reusar en otras fuentes.',
    'onboarding.kpiNamePlaceholder': 'Nombre del KPI',
    'onboarding.kpiDefPlaceholder': 'Definición',
    'sourceSettings.title': 'Ajustes de la fuente',
    'sourceSettings.titleEdit': 'Ajustes de la fuente',
    'sourceSettings.titleFresh': 'Rehacer la configuración de la fuente',
    'sourceSettings.rerun': 'Rehacer la configuración de la fuente',
    'sourceSettings.pickSource': 'Fuente',
    'sourceSettings.loading': 'Cargando fuentes…',
    'sourceSettings.noSources': 'Sin fuentes activas en este workspace.',
    'sourceSettings.allSources': 'Todas las fuentes activas',
    'onboarding.titleGroup': 'Configurar estas fuentes de datos',
    'onboarding.sourceInstructions': 'Instrucciones específicas de la fuente',
    'onboarding.sourceInstructionsPlaceholder': 'Notas que solo aplican cuando esta fuente está en el workspace…',
    'onboarding.sourceInstructionsHelp': 'Se aplican junto con las instrucciones del agente, solo cuando esta fuente está activa.',
    'onboarding.relationshipsTitle': 'Relaciones sugeridas',
    'onboarding.relationshipsHint': 'Uniones detectadas por IA entre tus tablas SQL. Las aceptadas se usan automáticamente en respuestas que cruzan tablas.',
    'onboarding.relationshipsLoading': 'Buscando relaciones entre tus tablas…',
    'onboarding.relationshipsEmpty': 'No se sugirió ninguna relación. Puedes agregarlas manualmente luego en Relaciones SQL.',
    'onboarding.relationshipsError': 'No se pudo generar sugerencias. Puedes saltar este paso y agregar relaciones manualmente luego.',
    'onboarding.relationshipsAccept': 'Aceptar',
    'onboarding.relationshipsAccepted': 'Aceptada',
    'onboarding.relationshipsDismiss': 'Descartar',
    'onboarding.relationshipsRetry': 'Reintentar',
    'onboarding.relationshipsAcceptedCount': 'aceptadas',
    'addSource.title': 'Añadir fuentes',
    'addSource.description': 'Transforma tus datos en conversaciones inteligentes. Conecta tus fuentes y haz preguntas en lenguaje natural.',
    'addSource.examples': 'Fuentes soportadas: archivos CSV/Excel, bases BigQuery y Google Sheets.',
    'addSource.sourceType': 'Tipo de fuente',
    'addSource.selectSourceType': 'Selecciona un tipo de fuente...',
    'addSource.uploadTab': 'Subir',
    'addSource.bigQueryTab': 'BigQuery',
    'addSource.sheetsTab': 'Google Sheets',
    'addSource.uploadTitle': 'Subir fuentes',
    'addSource.dragDrop': 'Arrastra y suelta o',
    'addSource.chooseFile': 'elige archivo',
    'addSource.uploadText': 'para subir',
    'addSource.supportedTypes': 'CSV y XLSX',
    'addSource.credentials': 'Credenciales (JSON)',
    'addSource.project': 'Proyecto',
    'addSource.dataset': 'Dataset',
    'addSource.allowedTables': 'Tablas permitidas (separadas por coma)',
    'addSource.projectPlaceholder': 'mi-proyecto',
    'addSource.datasetPlaceholder': 'analytics',
    'addSource.tablesPlaceholder': 'ordenes, clientes',
    'addSource.connectBigQuery': 'Conectar BigQuery',
    'addSource.connectFirebase': 'Conectar Firebase',
    'addSource.sheetsUrl': 'Enlace de Google Sheets',
    'addSource.sheetsUrlPlaceholder': 'https://docs.google.com/spreadsheets/d/...',
    'addSource.sheetsDescription': 'Pega el enlace de compartir del Google Sheets que deseas conectar',
    'addSource.connectSheets': 'Conectar Google Sheets',
    'addSource.sheetsImportant': 'Importante:',
    'addSource.sheetsShareWith': 'La hoja debe estar compartida con el email:',
    'addSource.sheetsLoadingEmail': 'Cargando...',
    'addSource.sheetsNotConfigured': 'Google Sheets no está configurado en este servidor. Pida al administrador configurar GOOGLE_SHEETS_SERVICE_ACCOUNT en el entorno del backend.',
    'addSource.sheetsId': 'ID de la hoja',
    'addSource.sheetsIdExample': 'Ejemplo: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms (en la URL de la hoja)',
    'addSource.sheetsIdPlaceholder': 'Pega el ID de la hoja aquí',
    'addSource.listButton': 'Listar',
    'addSource.selectSheet': 'Seleccionar hoja',
    'addSource.selectSheetPlaceholder': 'Seleccionar hoja',
    'addSource.connecting': 'Conectando...',
    'addSource.selectTable': 'Seleccionar tabla',
    'addSource.loadingProjects': 'Cargando proyectos disponibles...',
    'addSource.loadCredentialsFirst': 'Carga las credenciales primero',
    'addSource.selectProject': 'Seleccionar proyecto',
    'addSource.loadingDatasets': 'Cargando datasets...',
    'addSource.selectProjectFirst': 'Selecciona un proyecto primero',
    'addSource.noDatasets': 'No se encontraron datasets',
    'addSource.selectDataset': 'Seleccionar dataset',
    'addSource.loadingTables': 'Cargando tablas...',
    'addSource.selectTablePlaceholder': 'Seleccionar tabla',
    'addSource.sqlTab': 'Base de datos SQL',
    'addSource.sqlConnectionString': 'Cadena de conexión',
    'addSource.sqlConnectionStringPlaceholder': 'postgresql://usuario:contraseña@host:puerto/base_de_datos',
    'addSource.sqlDatabaseType': 'Tipo de base de datos',
    'addSource.sqlSelectType': 'Seleccionar tipo de base de datos',
    'addSource.sqlImportant': 'Importante:',
    'addSource.sqlSecurityWarning': 'Asegurate de que tu base de datos acepte conexiones desde el servidor donde se ejecuta este backend de Data Talks.',
    'addSource.sqlSelfHostedNote': 'Usa un host y un puerto accesibles desde el backend y concede acceso de red con las credenciales que proporciones.',
    'addSource.sqlTableName': 'Nombre de la tabla',
    'addSource.sqlSelectedTables': 'Tablas',
    'addSource.sqlSelectedTablesCount': '{count} tabla(s) seleccionada(s)',
    'addSource.sqlUseExistingCredential': 'Usar conexión SQL guardada',
    'addSource.sqlSelectCredential': 'Selecciona una conexión SQL guardada',
    'addSource.sqlTableNamePlaceholder': 'Introduce el nombre de la tabla (ej.: usuarios, productos)',
    'addSource.sqlLoadTablesFirst': 'Lista las tablas primero',
    'addSource.sqlNoTablesFound': 'No se encontraron tablas para esta conexión',
    'addSource.sqlListError': 'Error al listar tablas SQL',
    'addSource.sqlFillFields': 'Por favor completa todos los campos requeridos',
    'addSource.sqlConnect': 'Conectar base de datos',
    'addSource.sqlConnectSuccess': '¡Base de datos SQL conectada exitosamente!',
    'addSource.sqlConnectError': 'Error al conectar la base de datos SQL',
    'addSource.sqlExample': 'Ejemplo',
    'addSource.sourceLimit': 'Límite de fuentes',
    'addSource.filesUploaded': '¡Archivos subidos exitosamente!',
    'addSource.uploadError': 'Error al subir archivos',
    // dbt
    'addSource.dbtManifestOrigin': 'Origen del manifest',
    'addSource.dbtGithub': 'GitHub',
    'addSource.dbtCloud': 'dbt Cloud',
    'addSource.dbtGithubToken': 'GitHub Token',
    'addSource.dbtGithubRepo': 'Repositorio',
    'addSource.dbtGithubBranch': 'Branch',
    'addSource.dbtManifestPath': 'Ruta del manifest',
    'addSource.dbtCloudToken': 'dbt Cloud Service Token',
    'addSource.dbtCloudAccountId': 'Account ID',
    'addSource.dbtCloudJobId': 'Job ID',
    'addSource.dbtFetchModels': 'Obtener modelos del manifest',
    'addSource.dbtFetchingModels': 'Buscando modelos...',
    'addSource.dbtModelsSelected': '{selected}/{total} modelos seleccionados',
    'addSource.dbtConnectionString': 'Connection string del warehouse',
    'addSource.dbtConnectionStringHint': 'La misma connection string que usa dbt para ejecutar las queries.',
    'addSource.dbtConnect': 'Conectar fuente dbt',
    'addSource.dbtConnectSuccess': '¡Fuente dbt creada exitosamente!',
    'addSource.dbtConnectError': 'Error al crear fuente dbt',
    'addSource.dbtFetchError': 'Error al obtener manifest',
    'addSource.dbtNoModels': 'No se encontraron modelos en el manifest.',
    'addSource.dbtModelsFound': '{count} modelos encontrados.',
    // GitHub File
    'addSource.githubToken': 'GitHub Token',
    'addSource.githubRepo': 'Repositorio',
    'addSource.githubBranch': 'Branch',
    'addSource.githubFilePath': 'Ruta del archivo',
    'addSource.githubSupportedFormats': 'Formatos soportados: CSV, TSV, JSON (array de objetos), JSONL.',
    'addSource.githubPreview': 'Vista previa del archivo',
    'addSource.githubPreviewing': 'Cargando vista previa...',
    'addSource.githubConnect': 'Conectar archivo GitHub',
    'addSource.githubConnectSuccess': '¡Fuente GitHub File creada exitosamente!',
    'addSource.githubConnectError': 'Error al crear fuente GitHub File',
    'addSource.githubValidateError': 'Error al validar archivo',
    'addSource.githubRowsColumns': '{rows} filas • {cols} columnas',
    'addSource.firebaseDescription': 'Sube el archivo JSON de cuenta de servicio de Firebase para conectarte a tu base de datos Firestore.',
    'addSource.firebaseHint': 'Ve a la Consola de Firebase → Configuración del proyecto → Cuentas de servicio → Generar nueva clave privada.',
    'addSource.firebaseCredentials': 'Archivo de credenciales (JSON)',
    'addSource.firebaseLoadingCollections': 'Cargando colecciones...',
    'addSource.firebaseAvailableCollections': 'Colecciones disponibles',
    'addSource.firebaseSelectedCount': '{count} colección(es) seleccionada(s)',
    'addSource.firebaseSelectCredentials': 'Por favor, selecciona el archivo de credenciales de Firebase',
    'addSource.firebaseSelectCollections': 'Por favor, selecciona al menos una colección',
    'addSource.firebaseConnectSuccess': '¡Firebase conectado exitosamente!',
    'addSource.firebaseConnectError': 'Error al conectar Firebase',
        // MongoDB
        'addSource.connectMongoDB': 'Conectar MongoDB',
        'addSource.mongodbDescription': 'Conecta tu base de datos MongoDB para analizar tus colecciones con lenguaje natural.',
        'addSource.mongodbHint': 'Proporciona la cadena de conexión de MongoDB (mongodb:// o mongodb+srv://) para conectar.',
        'addSource.mongodbConnectionString': 'Cadena de conexión',
        'addSource.mongodbConnectionStringPlaceholder': 'mongodb+srv://usuario:contraseña@cluster.mongodb.net',
        'addSource.mongodbTestConnection': 'Probar conexión',
        'addSource.mongodbTestingConnection': 'Probando...',
        'addSource.mongodbConnectionSuccess': '¡Conexión exitosa!',
        'addSource.mongodbConnectionFailed': 'Error de conexión',
        'addSource.mongodbDatabase': 'Base de datos',
        'addSource.mongodbSelectDatabase': 'Selecciona una base de datos',
        'addSource.mongodbLoadingDatabases': 'Cargando bases de datos...',
        'addSource.mongodbCollection': 'Colección',
        'addSource.mongodbSelectCollection': 'Selecciona una colección',
        'addSource.mongodbLoadingCollections': 'Cargando colecciones...',
        'addSource.mongodbConnectSuccess': '¡MongoDB conectado con éxito!',
        'addSource.mongodbConnectError': 'Error al conectar MongoDB',
        'addSource.mongodbFillFields': 'Por favor completa todos los campos requeridos',
        // Snowflake
        'addSource.connectSnowflake': 'Conectar Snowflake',
        'addSource.snowflakeDescription': 'Conecta tu almacén de datos Snowflake para análisis con lenguaje natural.',
        'addSource.snowflakeHint': 'Ingresa el identificador de la cuenta Snowflake, nombre de usuario y contraseña.',
        'addSource.snowflakeAccount': 'Cuenta',
        'addSource.snowflakeAccountPlaceholder': 'xy12345.us-east-1',
        'addSource.snowflakeUser': 'Usuario',
        'addSource.snowflakeUserPlaceholder': 'analista',
        'addSource.snowflakePassword': 'Contraseña',
        'addSource.snowflakeTestConnection': 'Probar conexión',
        'addSource.snowflakeTestingConnection': 'Probando...',
        'addSource.snowflakeConnectionSuccess': '¡Conexión exitosa!',
        'addSource.snowflakeConnectionFailed': 'Error de conexión',
        'addSource.snowflakeWarehouse': 'Warehouse',
        'addSource.snowflakeSelectWarehouse': 'Selecciona un warehouse',
        'addSource.snowflakeLoadingWarehouses': 'Cargando warehouses...',
        'addSource.snowflakeDatabase': 'Base de datos',
        'addSource.snowflakeSelectDatabase': 'Selecciona una base de datos',
        'addSource.snowflakeLoadingDatabases': 'Cargando bases de datos...',
        'addSource.snowflakeSchema': 'Schema',
        'addSource.snowflakeSelectSchema': 'Selecciona un schema',
        'addSource.snowflakeLoadingSchemas': 'Cargando schemas...',
        'addSource.snowflakeTables': 'Tablas',
        'addSource.snowflakeSelectedTables': '{count} tabla(s) seleccionada(s)',
        'addSource.snowflakeLoadingTables': 'Cargando tablas...',
        'addSource.snowflakeConnectSuccess': '¡Snowflake conectado con éxito!',
        'addSource.snowflakeConnectError': 'Error al conectar Snowflake',
        'addSource.snowflakeFillFields': 'Por favor completa todos los campos requeridos',
        // Notion
        'addSource.connectNotion': 'Conectar Notion',
        'addSource.notionDescription': 'Conecta una base de datos Notion para analizar tus datos con lenguaje natural.',
        'addSource.notionHint': 'Crea una Integración Interna en notion.so/my-integrations y comparte la base de datos con ella.',
        'addSource.notionToken': 'Token de Integración',
        'addSource.notionTokenPlaceholder': 'secret_...',
        'addSource.notionTestConnection': 'Probar conexión',
        'addSource.notionTestingConnection': 'Probando...',
        'addSource.notionConnectionSuccess': '¡Conexión exitosa!',
        'addSource.notionConnectionFailed': 'Error de conexión',
        'addSource.notionDatabase': 'Base de datos',
        'addSource.notionSelectDatabase': 'Selecciona una base de datos',
        'addSource.notionLoadingDatabases': 'Cargando bases de datos...',
        'addSource.notionNoDatabases': 'No se encontraron bases de datos. Asegúrate de compartir al menos una con la integración.',
        'addSource.notionConnectSuccess': '¡Notion conectado con éxito!',
        'addSource.notionConnectError': 'Error al conectar Notion',
        'addSource.notionFillFields': 'Por favor completa todos los campos requeridos',
        // Jira
        'addSource.connectJira': 'Conectar Jira',
        'addSource.jiraDescription': 'Conecta tu instancia de Jira Cloud para analizar issues, sprints y carga de trabajo del equipo con lenguaje natural.',
        'addSource.jiraHint': 'Crea un token de API en id.atlassian.com/manage-profile/security/api-tokens.',
        'addSource.jiraDomain': 'Dominio',
        'addSource.jiraDomainPlaceholder': 'miempresa',
        'addSource.jiraDomainHint': 'Tu dominio de Atlassian (ej: "miempresa" de miempresa.atlassian.net)',
        'addSource.jiraEmail': 'Correo electrónico',
        'addSource.jiraEmailPlaceholder': 'tu@empresa.com',
        'addSource.jiraApiToken': 'Token de API',
        'addSource.jiraApiTokenPlaceholder': 'Tu token de API de Jira',
        'addSource.jiraTestConnection': 'Probar conexión',
        'addSource.jiraTestingConnection': 'Probando...',
        'addSource.jiraConnectionSuccess': '¡Conexión exitosa!',
        'addSource.jiraConnectionFailed': 'Error de conexión',
        'addSource.jiraConnectedAs': 'Conectado como',
        'addSource.jiraLoadingDiscovery': 'Descubriendo proyectos y tableros...',
        'addSource.jiraDiscoveryResult': 'Se encontraron {projects} proyectos y {boards} tableros.',
        'addSource.jiraConnectSuccess': '¡Jira conectado con éxito!',
        'addSource.jiraConnectError': 'Error al conectar Jira',
        'addSource.jiraFillFields': 'Por favor completa todos los campos requeridos',
        // HubSpot CRM
        'addSource.connectHubspot': 'Conectar HubSpot',
        'addSource.hubspotDescription': 'Conecta tu HubSpot CRM para analizar contactos, empresas, negocios, tickets y más.',
        'addSource.hubspotHint': 'Crea una App Privada en HubSpot Configuración > Integraciones > Apps Privadas para obtener un token de acceso.',
        'addSource.hubspotApiKey': 'Token de Acceso',
        'addSource.hubspotApiKeyPlaceholder': 'pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
        'addSource.hubspotTestConnection': 'Probar Conexión',
        'addSource.hubspotTestingConnection': 'Probando...',
        'addSource.hubspotConnectionSuccess': '¡Conectado!',
        'addSource.hubspotConnectionFailed': 'Error de conexión',
        'addSource.hubspotObjectsFound': 'Objetos encontrados',
        'addSource.hubspotConnectSuccess': '¡HubSpot CRM conectado con éxito!',
        'addSource.hubspotConnectError': 'Error al conectar HubSpot',
        'addSource.hubspotFillFields': 'Proporciona tu token de acceso de HubSpot',
        // Stripe
        'addSource.connectStripe': 'Conectar Stripe',
        'addSource.stripeDescription': 'Conecta tu cuenta de Stripe para analizar clientes, suscripciones, facturas, cargos e ingresos con lenguaje natural.',
        'addSource.stripeHint': 'Usa una Clave Secreta de API de Stripe (sk_live_... o sk_test_...) desde tu Panel de Stripe > Developers > API keys.',
        'addSource.stripeApiKey': 'Clave Secreta de API',
        'addSource.stripeTestConnection': 'Probar conexión',
        'addSource.stripeTesting': 'Probando...',
        'addSource.stripeDiscovering': 'Descubriendo recursos...',
        'addSource.stripeTestSuccess': '¡Conexión exitosa!',
        'addSource.stripeTestFailed': 'Error de conexión',
        'addSource.stripeResources': 'Recursos Disponibles',
        'addSource.stripeResourceError': 'Error',
        'addSource.stripeRecords': 'registros',
        'addSource.stripeSelectedCount': '{count} recursos seleccionados',
        'addSource.stripeSelectTables': 'Selecciona al menos un recurso',
        'addSource.stripeFillFields': 'Proporciona tu clave de API de Stripe',
        'addSource.stripeConnectSuccess': '¡Stripe conectado con éxito!',
        'addSource.stripeConnectError': 'Error al conectar Stripe',
        // Pipedrive CRM
        'addSource.connectPipedrive': 'Conectar Pipedrive',
        'addSource.pipedriveDescription': 'Conecta tu CRM Pipedrive para analizar negocios, contactos, actividades y pipeline de ventas con lenguaje natural.',
        'addSource.pipedriveHint': 'Encuentra tu token de API en Pipedrive en Configuración > Preferencias personales > API.',
        'addSource.pipedriveApiToken': 'Token de API',
        'addSource.pipedriveApiTokenPlaceholder': 'Tu token de API de Pipedrive',
        'addSource.pipedriveTestConnection': 'Probar conexión',
        'addSource.pipedriveTestingConnection': 'Probando...',
        'addSource.pipedriveConnectionSuccess': '¡Conexión exitosa!',
        'addSource.pipedriveConnectionFailed': 'Error de conexión',
        'addSource.pipedriveResourcesFound': 'Recursos Encontrados',
        'addSource.pipedriveConnectSuccess': '¡Pipedrive conectado con éxito!',
        'addSource.pipedriveConnectError': 'Error al conectar Pipedrive',
        'addSource.pipedriveFillFields': 'Proporciona tu token de API de Pipedrive',
        // Salesforce CRM
        'addSource.connectSalesforce': 'Conectar Salesforce',
        'addSource.salesforceDescription': 'Conecta tu Salesforce CRM para analizar cuentas, contactos, oportunidades, leads, casos y más.',
        'addSource.salesforceHint': 'Usa una Connected App en Salesforce Setup para generar un token de acceso.',
        'addSource.salesforceAccessToken': 'Token de Acceso',
        'addSource.salesforceAccessTokenPlaceholder': 'Ingresa tu token de acceso de Salesforce',
        'addSource.salesforceInstanceUrl': 'URL de la Instancia',
        'addSource.salesforceInstanceUrlPlaceholder': 'https://tu-instancia.salesforce.com',
        'addSource.salesforceTestConnection': 'Probar Conexión',
        'addSource.salesforceTestingConnection': 'Probando...',
        'addSource.salesforceConnectionSuccess': '¡Conectado!',
        'addSource.salesforceConnectionFailed': 'Error de conexión',
        'addSource.salesforceObjectsFound': 'Objetos encontrados',
        'addSource.salesforceConnectSuccess': '¡Salesforce CRM conectado con éxito!',
        'addSource.salesforceConnectError': 'Error al conectar Salesforce',
        'addSource.salesforceFillFields': 'Proporciona tu token de acceso y URL de instancia de Salesforce',
        // Google Analytics 4
        'addSource.connectGA4': 'Conectar Google Analytics 4',
        'addSource.ga4Description': 'Conecta tu propiedad GA4 para analizar sesiones, eventos, vistas de página, conversiones y más.',
        'addSource.ga4Hint': 'Crea una cuenta de servicio en Google Cloud Console y otorga acceso de Lector a tu propiedad GA4.',
        'addSource.ga4Credentials': 'JSON de Cuenta de Servicio',
        'addSource.ga4CredentialsPlaceholder': 'Pega el JSON de la clave de cuenta de servicio aquí',
        'addSource.ga4PropertyId': 'ID de Propiedad',
        'addSource.ga4PropertyIdPlaceholder': 'ej. 123456789',
        'addSource.ga4TestConnection': 'Probar Conexión',
        'addSource.ga4TestingConnection': 'Probando...',
        'addSource.ga4ConnectionSuccess': '¡Conectado!',
        'addSource.ga4ConnectionFailed': 'Error de conexión',
        'addSource.ga4TablesFound': 'Tablas encontradas',
        'addSource.ga4ConnectSuccess': '¡GA4 conectado con éxito!',
        'addSource.ga4ConnectError': 'Error al conectar GA4',
        'addSource.ga4FillFields': 'Proporciona las credenciales de la cuenta de servicio y el ID de propiedad',
        // Intercom
        'addSource.connectIntercom': 'Conectar Intercom',
        'addSource.intercomDescription': 'Conecta tu workspace Intercom para analizar contactos, empresas, conversaciones y más.',
        'addSource.intercomHint': 'Crea un token de acceso en Intercom Developer Hub > Your Apps.',
        'addSource.intercomAccessToken': 'Token de Acceso',
        'addSource.intercomAccessTokenPlaceholder': 'Ingresa tu token de acceso de Intercom',
        'addSource.intercomTestConnection': 'Probar Conexión',
        'addSource.intercomTestingConnection': 'Probando...',
        'addSource.intercomConnectionSuccess': '¡Conectado!',
        'addSource.intercomConnectionFailed': 'Error de conexión',
        'addSource.intercomResourcesFound': 'Recursos encontrados',
        'addSource.intercomConnectSuccess': '¡Intercom conectado con éxito!',
        'addSource.intercomConnectError': 'Error al conectar Intercom',
        'addSource.intercomFillFields': 'Proporciona tu token de acceso de Intercom',
        // GitHub Analytics
        'addSource.connectGithubAnalytics': 'Conectar GitHub Analytics',
        'addSource.githubAnalyticsDescription': 'Conecta un repositorio GitHub para analizar PRs, issues, commits, releases, workflows y contribuidores.',
        'addSource.githubAnalyticsHint': 'Crea un token de acceso personal (clásico) con alcance repo en GitHub Settings > Developer settings.',
        'addSource.githubAnalyticsToken': 'Token de Acceso Personal',
        'addSource.githubAnalyticsTokenPlaceholder': 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'addSource.githubAnalyticsOwner': 'Dueño del Repositorio',
        'addSource.githubAnalyticsOwnerPlaceholder': 'ej. facebook',
        'addSource.githubAnalyticsRepo': 'Nombre del Repositorio',
        'addSource.githubAnalyticsRepoPlaceholder': 'ej. react',
        'addSource.githubAnalyticsTestConnection': 'Probar Conexión',
        'addSource.githubAnalyticsTestingConnection': 'Probando...',
        'addSource.githubAnalyticsConnectionSuccess': '¡Conectado!',
        'addSource.githubAnalyticsConnectionFailed': 'Error de conexión',
        'addSource.githubAnalyticsTablesFound': 'Tablas encontradas',
        'addSource.githubAnalyticsConnectSuccess': '¡GitHub Analytics conectado con éxito!',
        'addSource.githubAnalyticsConnectError': 'Error al conectar GitHub Analytics',
        'addSource.githubAnalyticsFillFields': 'Proporciona tu token, owner y nombre del repositorio',
        // Shopify
        'addSource.connectShopify': 'Conectar Shopify',
        'addSource.shopifyDescription': 'Conecta tu tienda Shopify para analizar pedidos, clientes, productos, inventario y más.',
        'addSource.shopifyHint': 'Crea una app personalizada en Shopify Admin > Configuración > Apps y canales de venta > Desarrollar apps.',
        'addSource.shopifyStore': 'Nombre de la Tienda',
        'addSource.shopifyStorePlaceholder': 'tu-tienda (sin .myshopify.com)',
        'addSource.shopifyAccessToken': 'Token de Acceso Admin API',
        'addSource.shopifyAccessTokenPlaceholder': 'shpat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'addSource.shopifyTestConnection': 'Probar Conexión',
        'addSource.shopifyTestingConnection': 'Probando...',
        'addSource.shopifyConnectionSuccess': '¡Conectado!',
        'addSource.shopifyConnectionFailed': 'Error de conexión',
        'addSource.shopifyResourcesFound': 'Recursos encontrados',
        'addSource.shopifyConnectSuccess': '¡Shopify conectado con éxito!',
        'addSource.shopifyConnectError': 'Error al conectar Shopify',
        'addSource.shopifyFillFields': 'Proporciona el nombre de la tienda y el token de acceso',
        // Excel Online
        'addSource.connectExcelOnline': 'Conectar Excel Online',
        'addSource.excelOnlineDescription': 'Conecta archivos Excel de OneDrive o SharePoint para análisis con lenguaje natural.',
        'addSource.excelOnlineHint': 'Proporciona un token de acceso de la Microsoft Graph API con permisos Files.Read.',
        'addSource.excelOnlineToken': 'Token de Acceso',
        'addSource.excelOnlineTokenPlaceholder': 'Pega tu token de acceso de la Microsoft Graph API',
        'addSource.excelOnlineListFiles': 'Listar Archivos',
        'addSource.excelOnlineLoadingFiles': 'Cargando...',
        'addSource.excelOnlineListError': 'Error al listar archivos',
        'addSource.excelOnlineFile': 'Archivo Excel',
        'addSource.excelOnlineSelectFile': 'Selecciona un archivo',
        'addSource.excelOnlineSheet': 'Hoja',
        'addSource.excelOnlineSelectSheet': 'Selecciona una hoja',
        'addSource.excelOnlineLoadingSheets': 'Cargando hojas...',
        'addSource.excelOnlineNoSheets': 'No se encontraron hojas',
        'addSource.excelOnlineConnectSuccess': '¡Excel Online conectado con éxito!',
        'addSource.excelOnlineConnectError': 'Error al conectar Excel Online',
        'addSource.excelOnlineFillFields': 'Por favor completa todos los campos requeridos',
        // S3 / MinIO
        'addSource.connectS3': 'Conectar S3',
        'addSource.s3Description': 'Conecta a Amazon S3 o MinIO para importar archivos CSV, JSON y Parquet desde tus buckets.',
        'addSource.s3Hint': 'Proporciona tu Access Key y Secret Key de AWS (o credenciales MinIO con endpoint personalizado).',
        'addSource.s3AccessKeyId': 'Access Key ID',
        'addSource.s3SecretAccessKey': 'Secret Access Key',
        'addSource.s3Region': 'Región',
        'addSource.s3Endpoint': 'Endpoint (opcional)',
        'addSource.s3EndpointPlaceholder': 'https://minio.ejemplo.com (dejar vacío para AWS)',
        'addSource.s3TestConnection': 'Probar conexión',
        'addSource.s3TestingConnection': 'Probando...',
        'addSource.s3ConnectionSuccess': '¡Conexión exitosa!',
        'addSource.s3ConnectionFailed': 'Error de conexión',
        'addSource.s3Bucket': 'Bucket',
        'addSource.s3SelectBucket': 'Selecciona un bucket',
        'addSource.s3LoadingBuckets': 'Cargando buckets...',
        'addSource.s3File': 'Archivo',
        'addSource.s3SelectFile': 'Selecciona un archivo',
        'addSource.s3LoadingFiles': 'Cargando archivos...',
        'addSource.s3NoFiles': 'No se encontraron archivos compatibles (csv, json, parquet)',
        'addSource.s3ConnectSuccess': '¡S3 conectado con éxito!',
        'addSource.s3ConnectError': 'Error al conectar S3',
        'addSource.s3FillFields': 'Por favor completa todos los campos requeridos',
        // REST API
        'addSource.connectRestApi': 'Conectar API',
        'addSource.restApiDescription': 'Conecta cualquier API REST que devuelva JSON para análisis con lenguaje natural.',
        'addSource.restApiHint': 'Proporciona la URL de la API, método, headers y opcionalmente la ruta de datos en la respuesta.',
        'addSource.restApiUrl': 'URL',
        'addSource.restApiMethod': 'Método',
        'addSource.restApiHeaders': 'Headers',
        'addSource.restApiAddHeader': 'Agregar',
        'addSource.restApiDataPath': 'Ruta de datos (notación con punto)',
        'addSource.restApiDataPathPlaceholder': 'ej: data.results (dejar vacío si la respuesta es un array)',
        'addSource.restApiTestRequest': 'Probar solicitud',
        'addSource.restApiTesting': 'Probando...',
        'addSource.restApiTestSuccess': '¡Solicitud exitosa!',
        'addSource.restApiTestFailed': 'Error en la solicitud',
        'addSource.restApiPreview': 'Vista previa',
        'addSource.restApiConnectSuccess': '¡REST API conectada con éxito!',
        'addSource.restApiConnectError': 'Error al conectar REST API',
        'addSource.restApiFillFields': 'Proporciona la URL de la API',
    // Workspace
    'workspace.chat': 'Chat',
    'workspace.addSourceToStart': 'Añade una fuente para comenzar',
    'workspace.addSourceDescription': 'Sube tus fuentes de datos para empezar a hacer preguntas y obtener insights.',
    'workspace.uploadSource': 'Subir fuente',
    'workspace.inputPlaceholder': 'Haz una pregunta sobre tus datos...',
    'workspace.addSourceFirst': 'Añade una fuente primero para hacer preguntas',
    'workspace.noLlmConfigured': 'No hay LLM configurado. Ve a Cuenta > LLM / AI para agregar una configuración.',
    'workspace.startConversation': 'Iniciar conversación',
    'workspace.startConversationDescription': 'Haz preguntas sobre tus datos para obtener insights y respuestas.',
    'workspace.title': 'Workspaces',
    'workspace.createNewWorkspace': 'Crear nuevo workspace',
    'workspace.newWorkspace': 'Nuevo workspace',
    'workspace.chooseType': 'Elige el tipo de Workspace',
    'workspace.chooseTypeDesc': 'Selecciona el tipo de workspace que deseas crear.',
    'workspace.mostRecent': 'Más recientes',
    'workspace.oldest': 'Más antiguos',
    'workspace.nameAZ': 'Nombre (A-Z)',
    'workspace.sources': 'fuentes',
    'workspace.source': 'fuente',
    'workspace.rename': 'Renombrar',
    'workspace.renameWorkspace': 'Renombrar workspace',
    'workspace.renameDescription': 'Introduce el nuevo nombre para el workspace',
    'workspace.name': 'Nombre',
    'workspace.cancel': 'Cancelar',
    'workspace.delete': 'Eliminar',
    'workspace.edit': 'Editar',
    'workspace.description': 'Gestiona tus workspaces',
    'workspace.errorCreatingWorkspace': 'Error al crear workspace',
    'workspace.renameSuccess': 'Workspace renombrado exitosamente',
    'workspace.renameError': 'Error al renombrar workspace',
    'workspace.deleteConfirm': '¿Estás seguro de que deseas eliminar el workspace "{name}"? Esta acción no se puede deshacer.',
    'workspace.deleteSuccess': 'Workspace eliminado exitosamente',
    'workspace.deleteError': 'Error al eliminar workspace',
    'workspace.dataPreview': 'Vista previa de datos',
    'workspace.dataPreviewDescription': 'Viendo las primeras filas de la fuente de datos',
    'workspace.noPreviewData': 'No hay datos de vista previa',
'workspace.previousConversations': 'Conversaciones anteriores',
       'workspace.previousConversationsDescription': 'Selecciona una conversación para continuar',
       'workspace.noPreviousConversations': 'No se encontraron conversaciones anteriores',
       'workspace.llmSelector': 'LLM de este workspace',
       'workspace.llmUseDefault': 'Usar predeterminado',
       'workspace.llmConfigUpdated': 'Configuración LLM actualizada',
       'workspace.llmConfigError': 'Error al actualizar LLM',
       'workspace.generateChart': 'Generar gráfico',
       'workspace.generatingChart': 'Generando gráfico...',
       'workspace.generatedSql': 'SQL generado',
       'workspace.generatedCode': 'Código generado',
       'workspace.copySql': 'Copiar',
       'workspace.sqlCopied': 'Copiado',
       'workspace.chartGeneratedSuccess': 'Gráfico generado con éxito',
       'workspace.chartGeneratedError': 'Error al generar gráfico',
       'workspace.removeImage': 'Quitar imagen',
       'workspace.imageRemoved': 'Imagen eliminada de la conversación',
       'workspace.imageRemoveError': 'Error al quitar la imagen',
    // Studio
    'studio.title': 'Studio',
    'studio.graphDescription': 'Ver datos como grafo',
    'studio.summaryCardDescription': 'Resumen ejecutivo de la tabla',
    'studio.summaryTitle': 'Resumen de Tabla',
    'studio.summaryDescription': 'Genera un informe ejecutivo de la tabla seleccionada con LLM y consultas analíticas.',
    'studio.summarySource': 'Tabla / Fuente',
    'studio.summaryNoBigQuerySource': 'Añade una fuente BigQuery al workspace para generar resúmenes.',
    'studio.summaryNoSource': 'Añade una fuente de datos al workspace para generar resúmenes.',
    'studio.summarySelectSource': 'Seleccionar fuente',
    'studio.summaryGenerate': 'Generar resumen',
    'studio.summarySaved': 'Resumen guardado. Puedes verlo en la lista inferior.',
    'studio.summaryGenerateError': 'Error al generar resumen',
    'studio.summaryGenerating': 'Generando resumen…',
    'studio.summaryReport': 'Informe',
    'studio.summarySavedList': 'Resúmenes guardados',
    'studio.summaryNoSaved': 'Aún no hay resúmenes guardados. Genera uno arriba.',
    'studio.summaryDeleted': 'Resumen eliminado',
    'studio.summaryDeleteError': 'Error al eliminar resumen',
    'studio.summaryLoadError': 'Error al cargar fuentes y resúmenes',
    'studio.audioTitle': 'Resumen de audio',
    'studio.audioDescription': 'Genera un resumen hablado y conciso de la fuente seleccionada.',
    'studio.audioGenerate': 'Generar audio',
    'studio.audioGenerating': 'Generando audio…',
    'studio.audioPreparing': 'Preparando la reproducción del audio…',
    'studio.audioSaved': 'Resumen de audio guardado. Puedes verlo en la lista inferior.',
    'studio.audioSavedList': 'Audios guardados',
    'studio.audioNoSaved': 'Aún no hay audios guardados. Genera uno arriba.',
    'studio.audioDeleted': 'Audio eliminado',
    'studio.audioDeleteError': 'Error al eliminar audio',
    'studio.audioLoadError': 'Error al cargar fuentes y audios',
    'studio.audioGenerateError': 'Error al generar audio',
    'studio.audioPlaybackError': 'Error al cargar audio',
    'studio.audioRequiresConfig': 'Para usar esta función, primero añade o selecciona un modelo de audio en Account > LLM / AI settings para este workspace.',
    'studio.audioOverview': 'Resumen de audio',
    'studio.autoML': 'Auto ML',
    'studio.autoMLTitle': 'Auto ML',
    'studio.autoMLDescription': 'Entrena un modelo de machine learning en tus datos con un clic.',
    'studio.autoMLSelectSource': 'Seleccionar fuente de datos',
    'studio.autoMLSelectTarget': 'Seleccionar columna objetivo',
    'studio.autoMLTrain': 'Entrenar Modelo',
    'studio.autoMLTraining': 'Entrenando modelo...',
    'studio.autoMLTaskClassification': 'Clasificación',
    'studio.autoMLTaskRegression': 'Regresión',
    'studio.autoMLTaskType': 'Tipo de Tarea',
    'studio.autoMLMetrics': 'Métricas',
    'studio.autoMLFeatureImportance': 'Importancia de Features',
    'studio.autoMLReport': 'Informe',
    'studio.autoMLSavedList': 'Ejecuciones Anteriores',
    'studio.autoMLNoSaved': 'Ninguna ejecución anterior.',
    'studio.autoMLNoSource': 'Agrega una fuente de datos primero para usar Auto ML.',
    'studio.autoMLTrainSuccess': 'Modelo entrenado exitosamente!',
    'studio.autoMLTrainError': 'Error al entrenar modelo',
    'studio.autoMLDeleted': 'Ejecución eliminada.',
    'studio.autoMLDeleteError': 'Error al eliminar ejecución.',
    'studio.autoMLLoadError': 'Error al cargar datos de Auto ML.',
    'studio.templates': 'Plantillas',
    'studio.templateDescription': 'Informes preconfigurados para tus fuentes de datos.',
    'studio.templateTitle': 'Plantillas de Informes',
    'studio.templateBrowse': 'Explorar Plantillas',
    'studio.templateRun': 'Ejecutar Plantilla',
    'studio.templateRunning': 'Ejecutando plantilla...',
    'studio.templateNoTemplates': 'No hay plantillas disponibles para este tipo de fuente.',
    'studio.templateCreateLabel': 'Crear plantilla con IA',
    'studio.templateCreatePlaceholder': "Describe el informe que deseas (opcional)... ej: 'Ingresos mensuales por categoría con tendencias'",
    'studio.templateGenerate': 'Generar Plantilla',
    'studio.templateGenerating': 'Generando...',
    'studio.templateGenerated': '¡Plantilla generada!',
    'studio.templateGenerateError': 'Error al generar plantilla',
    'studio.templateDeleted': 'Plantilla eliminada',
    'studio.templateDeleteError': 'Error al eliminar plantilla',
    'studio.templateGenerateReport': 'Informe Completo',
    'studio.templateGeneratingReport': 'Generando informe...',
    'studio.templateReportGenerated': '¡Informe generado!',
    'studio.templateReportError': 'Error al generar informe',
    'studio.templateSelectSource': 'Seleccionar fuente de datos',
    'studio.templateResults': 'Resultados',
    'studio.templateCustomize': 'Personalizar',
    'studio.templateResetCustomization': 'Restaurar valores predeterminados',
    'studio.templateRunHistory': 'Historial de Ejecuciones',
    'studio.templateRunSuccess': 'Plantilla ejecutada exitosamente!',
    'studio.templateRunError': 'Error al ejecutar plantilla',
    'studio.templateRunPartial': 'Algunas consultas fallaron',
    'studio.templateFilters': 'Filtros',
    'studio.templateDateRange': 'Rango de Fechas',
    'studio.templateUseInChat': 'Usar en Chat',
    'studio.templateNoSource': 'Agrega una fuente de datos primero para usar Plantillas.',
    'studio.templateLoadError': 'Error al cargar plantillas.',
    'studio.reports': 'Informes',
    'studio.alertConfig': 'Configuración de alertas',
    'studio.connectWhatsApp': 'Conectar WhatsApp',
    'studio.connectSlack': 'Conectar Slack',
    'studio.connectTelegram': 'Conectar Telegram',
    'studio.connectApi': 'Acceso vía API',
    'studio.connections': 'Conexiones',

    // API Access Panel
    'apiAccess.title': 'Acceso vía API',
    'apiAccess.description': 'Usa claves de API para consultar este agente programáticamente.',
    'apiAccess.noKeys': 'Aún no hay claves de API. Crea una para empezar.',
    'apiAccess.createKey': 'Nueva clave de API',
    'apiAccess.keyName': 'Nombre de la clave',
    'apiAccess.keyNamePlaceholder': 'ej: Mi App',
    'apiAccess.create': 'Crear',
    'apiAccess.cancel': 'Cancelar',
    'apiAccess.copyKey': 'Copiar clave',
    'apiAccess.keyCopied': '¡Clave copiada!',
    'apiAccess.keyCreatedWarning': 'Guarda tu clave ahora — no se mostrará de nuevo.',
    'apiAccess.deleteKey': 'Revocar',
    'apiAccess.deleteConfirm': '¿Estás seguro de que deseas revocar esta clave?',
    'apiAccess.deleteSuccess': 'Clave revocada',
    'apiAccess.createSuccess': 'Clave de API creada',
    'apiAccess.createError': 'Error al crear la clave',
    'apiAccess.active': 'Activa',
    'apiAccess.inactive': 'Inactiva',
    'apiAccess.lastUsed': 'Último uso',
    'apiAccess.never': 'Nunca',
    'apiAccess.viewSnippet': 'Ver snippet de código',
    'apiAccess.snippetTitle': 'Snippet de código de la API',
    'apiAccess.snippetDescription': 'Usa los ejemplos a continuación para consumir este agente via API.',
    'apiAccess.snippetSources': 'Restringir a fuentes específicas (opcional)',
    'apiAccess.snippetSqlMode': 'Modo SQL (retornar query SQL sin procesar)',
    'apiAccess.snippetSelectSources': 'Todas las fuentes (por defecto)',
    'apiAccess.copy': 'Copiar',
    'apiAccess.copied': '¡Copiado!',
    'apiAccess.endpoint': 'Endpoint',
    'studio.addNote': 'Añadir nota',
    'studio.comingSoon': 'Próximamente',
    'studio.comingSoonDescription': 'Esta función estará disponible pronto.',

    // Report (Studio)
    'studio.reportTitle': 'Informe Exploratorio',
    'studio.reportDescription': 'Genera un informe HTML rico con gráficos exploratorios y observaciones sobre tu fuente de datos.',
    'studio.reportSource': 'Fuente de datos',
    'studio.reportSelectSource': 'Selecciona una fuente...',
    'studio.reportNoSource': 'No hay fuentes de datos disponibles.',
    'studio.reportGenerate': 'Generar Informe',
    'studio.reportGenerating': 'Generando...',
    'studio.reportGeneratingHint': 'Esto puede tardar un minuto — analizando datos y creando gráficos.',
    'studio.reportSaved': '¡Informe generado con éxito!',
    'studio.reportSavedList': 'Informes guardados',
    'studio.reportNoSaved': 'Aún no se han generado informes.',
    'studio.reportDownload': 'Descargar',
    'studio.reportOpenNewTab': 'Abrir en nueva pestaña',
    'studio.reportLoadError': 'Error al cargar informes.',
    'studio.reportGenerateError': 'Error al generar informe.',
    'studio.reportDeleted': 'Informe eliminado.',
    'studio.reportDeleteError': 'Error al eliminar informe.',
    'studio.reportLoadingHtml': 'Cargando informe...',
    'studio.reportSelectToView': 'Selecciona un informe para ver.',

    // Graph (Studio)
    'graph.title': 'Grafo / Datos como Grafo',
    'graph.description': 'Transforma tu tabla en un grafo. Elige columnas de origen y destino para construir nodos y aristas.',
    'graph.maximize': 'Maximizar para mejor visualización',
    'graph.restore': 'Restaurar ventana',
    'graph.sourceColumn': 'Columna de origen (desde)',
    'graph.targetColumn': 'Columna de destino (hacia)',
    'graph.selectSource': 'Seleccionar columna de origen',
    'graph.selectTarget': 'Seleccionar columna de destino',
    'graph.noData': 'Añade una fuente de datos con vista previa para visualizar un grafo.',
    'graph.noPreview': 'No hay datos de vista previa para esta fuente.',
    'graph.selectColumns': 'Selecciona las columnas de origen y destino arriba.',
    'graph.dataSource': 'Fuente de datos',
    'graph.noEdges': 'No hay aristas con las columnas seleccionadas. Prueba otras columnas.',
    'graph.nodes': 'nodos',
    'graph.links': 'enlaces',
    'graph.modeLabel': 'Tipo de grafo',
    'graph.modeColumnPair': 'Par de columnas',
    'graph.modeColumnPairDesc': 'Valores como nodos. Aristas origen→destino por fila.',
    'graph.modeProperty': 'Grafo de propiedades',
    'graph.modePropertyDesc': 'Filas como nodos. Aristas cuando A[origen]=B[destino] (estilo FK).',
    'graph.modeBipartite': 'Bipartito',
    'graph.modeBipartiteDesc': 'Nodos de entidad (filas) + nodos de valor. Filas que comparten valor se conectan.',
    'graph.valueColumn': 'Columna de valor',
    'graph.selectValueColumn': 'Seleccionar columna para nodos de valor',
    // Logs
    'logs.title': 'Logs de la plataforma',
    'logs.button': 'Logs',
    'logs.action': 'Acción',
    'logs.channel': 'Canal',
    'logs.timestamp': 'Fecha/Hora',
    'logs.provider': 'Proveedor',
    'logs.model': 'Modelo',
    'logs.tokensIn': 'Tokens entrada',
    'logs.tokensOut': 'Tokens salida',
    'logs.source': 'Fuente',
    'logs.refresh': 'Actualizar',
    'logs.close': 'Cerrar',
    'logs.loading': 'Cargando logs...',
    'logs.empty': 'No hay logs registrados todavía.',
    'logs.emptyDescription': 'Haz preguntas o genera resúmenes para ver los logs aquí.',
    'logs.error': 'Error al cargar logs',
    'logs.actionQuestion': 'Pregunta',
    'logs.actionSummary': 'Resumen',
    'logs.details': 'Detalles',
    'logs.trace': 'Trace LLM',
    'logs.expand': 'Expandir',
    'logs.collapse': 'Colapsar',
    'logs.noTrace': 'No hay datos de trace disponibles',
    'logs.stage': 'Etapa',
    // Users Management
    'users.title': 'Gestión de usuarios',
    'users.description': 'Gestiona usuarios y permisos del sistema',
    'users.addUser': 'Añadir usuario',
    'users.addUserButton': 'Añadir usuario',
    'users.newUser': 'Nuevo usuario',
    'users.inviteNewUser': 'Invitar usuario',
    'users.inviteDescription': 'Invita un usuario para acceder al sistema',
    'users.email': 'Email',
    'users.emailPlaceholder': 'usuario@ejemplo.com',
    'users.role': 'Rol',
    'users.profile': 'Perfil',
    'users.admin': 'Administrador',
    'users.member': 'Miembro',
    'users.createdAt': 'Creado',
    'users.actions': 'Acciones',
    'users.cancel': 'Cancelar',
    'users.add': 'Añadir',
    'users.adding': 'Añadiendo...',
    'users.addSuccess': 'Usuario añadido exitosamente',
    'users.addError': 'Error al añadir usuario:',
    'users.emailAlreadyExists': 'Este email ya está registrado en el sistema',
    'users.removeSuccess': 'Usuario eliminado exitosamente',
    'users.removeError': 'Error al eliminar usuario:',
    'users.noUsersFound': 'No se encontraron usuarios',
    'users.validEmailError': 'Introduce un email válido',
    'users.systemUsers': 'Usuarios del sistema',
    'users.inviteSuccess': '¡Usuario invitado exitosamente! Recibirá un email para establecer su contraseña.',
    // Workspace Access Management
    'workspaceAccess.title': 'Control de acceso a workspaces',
    'workspaceAccess.description': 'Gestiona el acceso de usuarios a workspaces',
    'workspaceAccess.grantAccess': 'Otorgar acceso',
    'workspaceAccess.grantAccessDescription': 'Permite que usuarios accedan a workspaces específicos',
    'workspaceAccess.selectWorkspace': 'Seleccionar workspace',
    'workspaceAccess.selectUser': 'Seleccionar usuario',
    'workspaceAccess.grant': 'Otorgar',
    'workspaceAccess.grantedAccess': 'Acceso otorgado',
    'workspaceAccess.grantedAccessDescription': 'Usuarios con acceso a cada workspace',
    'workspaceAccess.workspace': 'Workspace',
    'workspaceAccess.user': 'Usuario',
    'workspaceAccess.grantedAt': 'Fecha de otorgamiento',
    'workspaceAccess.actions': 'Acciones',
    'workspaceAccess.noAccessGranted': 'No hay acceso otorgado',
    'workspaceAccess.selectWorkspaceAndUser': 'Selecciona un workspace y un usuario',
    'workspaceAccess.accessGrantedSuccess': 'Acceso otorgado exitosamente',
    'workspaceAccess.accessGrantedError': 'Error al otorgar acceso:',
    'workspaceAccess.accessRevokedSuccess': 'Acceso revocado exitosamente',
    'workspaceAccess.accessRevokedError': 'Error al revocar acceso:',
    // Dashboards (Modal)
    'dashboardModal.title': 'Dashboards',
    'dashboard.createNew': 'Crear dashboard',
    'dashboard.createNewDashboard': 'Crear nuevo dashboard',
    'dashboard.createDescription': 'Crea un dashboard para organizar tus gráficos y visualizaciones.',
    'dashboard.name': 'Nombre del dashboard',
    'dashboard.description': 'Descripción',
    'dashboard.descriptionOptional': 'Descripción (opcional)',
    'dashboard.namePlaceholder': 'Ej.: Informe de ventas',
    'dashboard.descriptionPlaceholder': 'Describe el propósito del dashboard',
    'dashboard.cancel': 'Cancelar',
    'dashboard.create': 'Crear dashboard',
    'dashboard.edit': 'Editar',
    'dashboard.rename': 'Renombrar',
    'dashboard.delete': 'Eliminar',
    'dashboard.view': 'Ver',
    'dashboard.charts': 'gráficos',
    'dashboard.chart': 'gráfico',
    'dashboard.noCharts': 'Sin gráficos añadidos',
    'dashboard.noChartsDescription': 'Ve a un workspace y genera gráficos con tus agentes. Luego haz clic en "Añadir al dashboard".',
    'dashboard.goToWorkspaces': 'Ir a workspaces',
    'dashboard.addToDashboard': 'Añadir al dashboard',
    'dashboard.selectDashboard': 'Seleccionar dashboard',
    'dashboard.selectDashboardPlaceholder': 'Seleccionar dashboard',
    'dashboard.noDashboardsFound': 'No se encontraron dashboards. Crea uno primero en la página principal.',
    'dashboard.add': 'Añadir',
    'dashboard.addToTitle': 'Añadir al dashboard',
    'dashboard.addToDescription': 'Selecciona un dashboard para añadir este gráfico.',
    'dashboard.createSuccess': '¡Dashboard creado exitosamente!',
    'dashboard.createError': 'Error al crear dashboard',
    'dashboard.loadError': 'Error al cargar dashboards',
    'dashboard.updateSuccess': '¡Dashboard actualizado exitosamente!',
    'dashboard.updateError': 'Error al actualizar dashboard',
    'dashboard.deleteSuccess': '¡Dashboard eliminado exitosamente!',
    'dashboard.deleteError': 'Error al eliminar dashboard',
    'dashboard.deleteConfirm': '¿Estás seguro de que deseas eliminar el dashboard "{name}"?',
    'dashboard.chartAddedSuccess': '¡Gráfico añadido al dashboard!',
    'dashboard.chartAddedError': 'Error al añadir gráfico al dashboard',
    'dashboard.chartRemovedSuccess': '¡Gráfico eliminado del dashboard!',
    'dashboard.chartRemovedError': 'Error al eliminar gráfico',
    'dashboard.chartRemoveConfirm': '¿Estás seguro de que deseas eliminar este gráfico del dashboard?',
    'dashboard.editDashboard': 'Editar dashboard',
    'dashboard.editDashboardDescription': 'Actualiza la información del dashboard.',
    'dashboard.saveChanges': 'Guardar cambios',
    'dashboard.editChart': 'Editar gráfico',
    'dashboard.editChartDescription': 'Actualiza el título y descripción del gráfico.',
    'dashboard.chartTitle': 'Título del gráfico',
    'dashboard.chartDescription': 'Descripción',
    'dashboard.chartTitlePlaceholder': 'Título del gráfico',
    'dashboard.chartDescriptionPlaceholder': 'Descripción del gráfico',
    'dashboard.untitledChart': 'Gráfico sin título',
    'dashboard.question': 'Pregunta',
    'dashboard.notFound': 'Dashboard no encontrado',
    'dashboard.notFoundDescription': 'El dashboard que buscas no existe.',
    'dashboard.backToHome': 'Volver al inicio',
    'dashboard.loading': 'Cargando dashboard...',
    'dashboard.seoDescription': 'Visualiza tus gráficos y datos',
    'dashboard.remove': 'Eliminar',
    'dashboard.chartUpdateSuccess': '¡Gráfico actualizado exitosamente!',
    'dashboard.chartUpdateError': 'Error al actualizar gráfico',
    'dashboard.chartLoadError': 'No se pudo cargar la imagen del grafico',

    // Walkthrough
    'walkthrough.stepOf': '{current} de {total}',
    'walkthrough.skip': 'Saltar tutorial',
    'walkthrough.next': 'Siguiente',
    'walkthrough.prev': 'Atras',
    'walkthrough.finish': 'Finalizar',

    // Walkthrough — Index
    'walkthrough.index.welcome.title': 'Bienvenido a Data Talks!',
    'walkthrough.index.welcome.description': 'Esta es tu pagina de inicio donde gestionas todos tus workspaces. Cada workspace es un entorno separado de analisis de datos.',
    'walkthrough.index.create.title': 'Crea un workspace',
    'walkthrough.index.create.description': 'Haz clic aqui para crear un nuevo workspace y comenzar a analizar tus datos con IA.',
    'walkthrough.index.agents.title': 'Tus workspaces',
    'walkthrough.index.agents.description': 'Tus workspaces apareceran aqui. Haz clic en cualquier tarjeta para abrirlo y comenzar a hacer preguntas.',
    'walkthrough.index.viewSort.title': 'Vista y orden',
    'walkthrough.index.viewSort.description': 'Alterna entre vista de cuadricula y lista, u ordena tus workspaces por fecha o nombre.',
    'walkthrough.index.settings.title': 'Menu de configuraciones',
    'walkthrough.index.settings.description': 'Accede a la configuracion de tu cuenta, modelo de IA, conexiones de datos y gestion de usuarios desde aqui.',

    // Walkthrough — Workspace
    'walkthrough.workspace.welcome.title': 'Tu workspace',
    'walkthrough.workspace.welcome.description': 'Esta es el area principal de analisis de datos. Aqui conectas fuentes de datos y haces preguntas en lenguaje natural.',
    'walkthrough.workspace.sources.title': 'Fuentes de datos',
    'walkthrough.workspace.sources.description': 'Tus fuentes de datos conectadas aparecen en este panel. Puedes tener archivos CSV, bases de datos, Google Sheets y mas.',
    'walkthrough.workspace.addSource.title': 'Agregar fuente de datos',
    'walkthrough.workspace.addSource.description': 'Haz clic aqui para conectar una nueva fuente — sube un CSV, conecta a una base de datos, BigQuery o Google Sheets.',
    'walkthrough.workspace.chatInput.title': 'Haz una pregunta',
    'walkthrough.workspace.chatInput.description': 'Escribe tus preguntas aqui en lenguaje natural. Ej: "Cuales fueron los 5 principales productos por ingresos el mes pasado?"',
    'walkthrough.workspace.chatArea.title': 'Respuestas de la IA',
    'walkthrough.workspace.chatArea.description': 'Las respuestas de la IA con texto, tablas y graficos apareceran aqui. Tambien veras sugerencias de preguntas.',
    'walkthrough.workspace.logs.title': 'Logs de ejecucion',
    'walkthrough.workspace.logs.description': 'Ve las consultas SQL y codigo Python generados por la IA. Util para depuracion o entender como se respondio tu pregunta.',
    'walkthrough.workspace.clear.title': 'Limpiar conversacion',
    'walkthrough.workspace.clear.description': 'Reinicia la conversacion actual y comienza de nuevo. Tus conversaciones anteriores siguen disponibles en el historial.',
    'walkthrough.workspace.agentSettings.title': 'Configuracion del agente',
    'walkthrough.workspace.agentSettings.description': 'Configura este agente — cambia nombre, descripcion, fuentes de datos conectadas y preguntas sugeridas.',
    'walkthrough.workspace.studio.title': 'Herramientas e integraciones',
    'walkthrough.workspace.studio.description': 'Usa estas herramientas para generar informes, resumenes, audio y conectar con Slack, Telegram o WhatsApp.',
    'walkthrough.workspace.history.title': 'Historial de conversaciones',
    'walkthrough.workspace.history.description': 'Accede a tus conversaciones anteriores y retormalas en cualquier momento.',

    // Walkthrough — Dashboard
    'walkthrough.dashboard.overview.title': 'Tu dashboard',
    'walkthrough.dashboard.overview.description': 'Los dashboards muestran tus graficos guardados en un diseno visual. Organiza tus visualizaciones mas importantes aqui.',
    'walkthrough.dashboard.charts.title': 'Tarjetas de graficos',
    'walkthrough.dashboard.charts.description': 'Cada tarjeta muestra un grafico de tus sesiones de analisis. Agrega graficos del workspace para armar tu dashboard.',
    'walkthrough.dashboard.actions.title': 'Acciones del grafico',
    'walkthrough.dashboard.actions.description': 'Edita titulos, descripciones o elimina graficos usando el menu de cada tarjeta.',

    // Walkthrough — Agent Briefing
    'walkthrough.agentBriefing.nameDesc.title': 'Nombra tu agente',
    'walkthrough.agentBriefing.nameDesc.description': 'Dale un nombre y descripcion a tu agente para identificarlo facilmente despues.',
    'walkthrough.agentBriefing.sources.title': 'Selecciona fuentes de datos',
    'walkthrough.agentBriefing.sources.description': 'Elige a que fuentes de datos tendra acceso este agente para responder preguntas.',
    'walkthrough.agentBriefing.questions.title': 'Preguntas sugeridas',
    'walkthrough.agentBriefing.questions.description': 'Agrega preguntas sugeridas que apareceran como atajos cuando los usuarios abran este workspace.',
    'walkthrough.agentBriefing.save.title': 'Guardar agente',
    'walkthrough.agentBriefing.save.description': 'Cuando termines de configurar, haz clic en guardar para crear o actualizar tu agente.',

    // Walkthrough — Account
    'walkthrough.account.overview.title': 'Configuraciones',
    'walkthrough.account.overview.description': 'Gestiona la configuracion de tu cuenta, modelo de IA, conexiones y mas desde esta barra lateral.',
    'walkthrough.account.llm.title': 'Configuracion del modelo de IA',
    'walkthrough.account.llm.description': 'Configura que modelo de IA (OpenAI, Ollama o LiteLLM) se usara para tu analisis de datos.',
    'walkthrough.account.connections.title': 'Conexiones',
    'walkthrough.account.connections.description': 'Gestiona tus conexiones a bases de datos y APIs aqui.',
    'walkthrough.account.sources.title': 'Fuentes de datos',
    'walkthrough.account.sources.description': 'Visualiza y gestiona todas tus fuentes de datos conectadas en todos los workspaces.',

    // Walkthrough — Alerts
    'walkthrough.alerts.overview.title': 'Alertas',
    'walkthrough.alerts.overview.description': 'Configura alertas automatizadas para monitorear tus datos y recibir notificaciones por correo o webhook.',
    'walkthrough.alerts.create.title': 'Crear una alerta',
    'walkthrough.alerts.create.description': 'Define que monitorear, con que frecuencia verificar y donde enviar notificaciones.',
    'walkthrough.alerts.webhooks.title': 'Webhooks',
    'walkthrough.alerts.webhooks.description': 'Configura URLs de webhook para integraciones avanzadas con herramientas externas.',

    // Footer
    'footer.copyright': '© {year} Habla con tus datos. Todos los derechos reservados.',
  }
};

export const LanguageProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
  const [language, setLanguage] = useState<Language>(() => {
    // Try to get the saved language from localStorage
    const savedLanguage = localStorage.getItem('language') as Language;
    return savedLanguage && ['en', 'pt', 'es'].includes(savedLanguage) ? savedLanguage : 'en';
  });

  const t = (key: string, params?: Record<string, unknown>): string => {
    const langTranslations = translations[language as keyof typeof translations];
    let text = (langTranslations?.[key] ?? translations.en[key] ?? key) as string;
    
    if (params) {
      Object.entries(params).forEach(([param, value]) => {
        text = text.replace(new RegExp(`{${param}}`, 'g'), String(value));
      });
    }
    
    return text;
  };

  const handleSetLanguage = (lang: Language) => {
    setLanguage(lang);
    localStorage.setItem('language', lang);
  };

  return (
    <LanguageContext.Provider value={{ language, setLanguage: handleSetLanguage, t }}>
      {children}
    </LanguageContext.Provider>
  );
};

export const useLanguage = () => {
  const context = useContext(LanguageContext);
  if (context === undefined) {
    throw new Error('useLanguage must be used within a LanguageProvider');
  }
  return context;
};