// Multi-language support const translations = { en: { // Navigation 'nav.dashboard': 'Dashboard', 'nav.transactions': 'Transactions', 'nav.recurring': 'Recurring', 'nav.import': 'Import CSV', 'nav.reports': 'Reports', 'nav.admin': 'Admin', 'nav.settings': 'Settings', 'nav.logout': 'Log out', // Dashboard 'dashboard.total_spent': 'Total Spent This Month', 'dashboard.active_categories': 'Active Categories', 'dashboard.total_transactions': 'Total Transactions', 'dashboard.vs_last_month': 'vs last month', 'dashboard.categories_in_use': 'categories in use', 'dashboard.this_month': 'current month', 'dashboard.spending_by_category': 'Spending by Category', 'dashboard.monthly_trend': 'Monthly Trend', 'dashboard.recent_transactions': 'Recent Transactions', 'dashboard.view_all': 'View All', 'dashboard.search': 'Search expenses...', 'dashboard.selectCategory': 'Select category...', 'dashboard.noTransactions': 'No transactions yet', 'dashboard.noData': 'No data available', 'dashboard.total': 'Total', 'dashboard.totalThisYear': 'Total This Year', 'dashboard.spending': 'Spending', 'dashboard.categoryBreakdownDesc': 'Breakdown by category', 'dashboard.lightMode': 'Light Mode', 'dashboard.darkMode': 'Dark Mode', 'dashboard.expenseAdded': 'Expense added successfully!', // Login 'login.title': 'Welcome Back', 'login.tagline': 'Track your expenses, manage your finances', 'login.remember_me': 'Remember me', 'login.sign_in': 'Sign In', 'login.no_account': "Don't have an account?", 'login.register': 'Register', // Register 'register.title': 'Create Account', 'register.tagline': 'Start managing your finances today', 'register.create_account': 'Create Account', 'register.have_account': 'Already have an account?', 'register.login': 'Login', // Forms 'form.email': 'Email', 'form.password': 'Password', 'form.username': 'Username', 'form.language': 'Language', 'form.currency': 'Currency', 'form.monthlyBudget': 'Monthly Budget', 'form.amount': 'Amount', 'form.description': 'Description', 'form.category': 'Category', 'form.date': 'Date', 'form.tags': 'Tags (comma separated)', 'form.receipt': 'Receipt (optional)', 'form.2fa_code': '2FA Code', 'form.chooseFile': 'Choose File', 'form.noFileChosen': 'No file chosen', // Transactions 'transactions.title': 'Transactions', 'transactions.export': 'Export CSV', 'transactions.import': 'Import CSV', 'transactions.addExpense': 'Add Expense', 'transactions.search': 'Search transactions...', 'transactions.date': 'Date', 'transactions.filters': 'Filters', 'transactions.category': 'Category', 'transactions.allCategories': 'Category', 'transactions.startDate': 'Start Date', 'transactions.endDate': 'End Date', 'transactions.tableTransaction': 'Transaction', 'transactions.tableCategory': 'Category', 'transactions.tableDate': 'Date', 'transactions.tablePayment': 'Payment', 'transactions.tableAmount': 'Amount', 'transactions.tableStatus': 'Status', 'transactions.tableActions': 'Actions', 'transactions.showing': 'Showing', 'transactions.to': 'to', 'transactions.of': 'of', 'transactions.results': 'results', 'transactions.previous': 'Previous', 'transactions.next': 'Next', 'transactions.noTransactions': 'No transactions found', 'transactions.expense': 'Expense', 'transactions.completed': 'Completed', 'transactions.pending': 'Pending', 'transactions.edit': 'Edit', 'transactions.delete': 'Delete', 'transactions.updated': 'Transaction updated successfully!', 'transactions.notFound': 'Transaction not found', 'modal.edit_expense': 'Edit Expense', 'actions.update': 'Update Expense', 'form.currentReceipt': 'Current receipt attached', 'form.receiptHelp': 'Upload a new file to replace existing receipt', 'transactions.viewReceipt': 'View Receipt', 'transactions.downloadReceipt': 'Download Receipt', 'transactions.transaction': 'transaction', 'transactions.transactions': 'transactions', 'transactions.deleteConfirm': 'Are you sure you want to delete this transaction?', 'transactions.deleted': 'Transaction deleted', 'transactions.imported': 'Imported', 'transactions.importSuccess': 'transactions', // Actions 'actions.add_expense': 'Add Expense', 'actions.save': 'Save Expense', 'actions.update': 'Update', // Modal 'modal.add_expense': 'Add Expense', // Recurring Expenses 'recurring.title': 'Recurring Expenses', 'recurring.subtitle': 'Manage subscriptions and recurring bills', 'recurring.detect': 'Detect Patterns', 'recurring.addNew': 'Add Recurring', 'recurring.noRecurring': 'No recurring expenses yet', 'recurring.addFirst': 'Add your first recurring expense or detect patterns from existing expenses', 'recurring.active': 'Active Recurring Expenses', 'recurring.inactive': 'Inactive', 'recurring.overdue': 'Overdue', 'recurring.dueToday': 'Due today', 'recurring.dueIn': 'Due in', 'recurring.day': 'day', 'recurring.days': 'days', 'recurring.autoCreate': 'Auto-create', 'recurring.detected': 'Auto-detected', 'recurring.createExpense': 'Create expense now', 'recurring.deactivate': 'Deactivate', 'recurring.activate': 'Activate', 'recurring.add': 'Add Recurring Expense', 'recurring.edit': 'Edit Recurring Expense', 'recurring.name': 'Name', 'recurring.frequency': 'Frequency', 'recurring.frequency.daily': 'Daily', 'recurring.frequency.weekly': 'Weekly', 'recurring.frequency.monthly': 'Monthly', 'recurring.frequency.yearly': 'Yearly', 'recurring.dayOfWeek': 'Day of week', 'recurring.dayOfMonth': 'Day of month', 'recurring.nextDue': 'Next Due Date', 'recurring.notes': 'Notes', 'recurring.autoCreateDesc': 'Automatically create an expense when due date arrives', 'recurring.errorLoading': 'Failed to load recurring expenses', 'recurring.expenseCreated': 'Expense created successfully!', 'recurring.errorCreating': 'Failed to create expense', 'recurring.activated': 'Recurring expense activated', 'recurring.deactivated': 'Recurring expense deactivated', 'recurring.deleteConfirm': 'Are you sure you want to delete this recurring expense?', 'recurring.deleted': 'Recurring expense deleted', 'recurring.created': 'Recurring expense created', 'recurring.updated': 'Recurring expense updated', 'recurring.detecting': 'Detecting...', 'recurring.noPatterns': 'No recurring patterns detected', 'recurring.patternsFound': 'Found recurring patterns', 'recurring.suggestionsTitle': 'Detected Recurring Patterns', 'recurring.suggestionsDesc': 'We found these potential recurring expenses based on your transaction history', 'recurring.occurrences': 'occurrences', 'recurring.confidence': 'confidence', 'recurring.accept': 'Accept', 'recurring.dismiss': 'Dismiss', 'recurring.suggestionAccepted': 'Recurring expense added', 'recurring.errorDetecting': 'Failed to detect patterns', 'recurring.lastCreated': 'Last created', 'recurring.never': 'Never', 'recurring.autoCreatedTag': 'Auto-created from recurring', // Days of week 'days.monday': 'Monday', 'days.tuesday': 'Tuesday', 'days.wednesday': 'Wednesday', 'days.thursday': 'Thursday', 'days.friday': 'Friday', 'days.saturday': 'Saturday', 'days.sunday': 'Sunday', // Search 'search.inputPlaceholder': 'Search everything...', 'search.placeholder': 'Search for transactions, documents, categories, or features', 'search.hint': 'Press Ctrl+K to open search', 'search.pressEnter': 'Press Enter to search', 'search.pressEsc': 'ESC to close', 'search.minChars': 'Type at least 2 characters to search', 'search.noResults': 'No results found', 'search.error': 'Search failed. Please try again.', 'search.features': 'Features', 'search.expenses': 'Expenses', 'search.documents': 'Documents', 'search.categories': 'Categories', 'search.recurring': 'Recurring', 'search.tags': 'Tags', 'search.ocrMatch': 'OCR Match', // Budget Alerts 'budget.alert': 'Budget Alert', 'budget.categoryAlert': 'Category Budget Alert', 'budget.overallAlert': 'Monthly Budget Alert', 'budget.exceededAlert': 'Budget Exceeded', 'budget.categoryAlertMessage': '⚠️ {category} has used {percentage}% of its budget', 'budget.overallAlertMessage': '⚠️ You have used {percentage}% of your monthly budget', 'budget.exceededAlertMessage': '🚨 {category} has exceeded its budget limit', 'budget.categoryWarning': '{category} is at {percentage}% ({spent} of {budget})', 'budget.overallWarning': 'Monthly budget is at {percentage}% ({spent} of {budget})', 'budget.viewAllAlerts': 'View all alerts', 'budget.activeAlerts': 'Active Budget Alerts', 'budget.monthlyBudget': 'Monthly Budget', 'budget.weeklySummary': 'Weekly Spending Summary', 'budget.weeklySummaryMessage': 'You spent {spent} this week ({change} vs last week). Top category: {category}', 'budget.noBudgetSet': 'No budget set', 'budget.setBudget': 'Set Budget', 'budget.editBudget': 'Edit Budget', 'budget.budgetAmount': 'Budget Amount', 'budget.alertThreshold': 'Alert Threshold', 'budget.alertThresholdHelp': 'Get notified when spending reaches this percentage (50-200%)', 'budget.save': 'Save Budget', 'budget.cancel': 'Cancel', 'budget.budgetUpdated': 'Budget updated successfully', 'budget.budgetError': 'Failed to update budget', // CSV Import 'import.title': 'Import CSV', 'import.subtitle': 'Import your bank statements or expense CSV files', 'import.stepUpload': 'Upload', 'import.stepReview': 'Review', 'import.stepMap': 'Map Categories', 'import.stepImport': 'Import', 'import.uploadTitle': 'Upload CSV File', 'import.uploadDesc': 'Upload your bank statement or expense CSV file', 'import.dragDrop': 'Drag and drop your CSV file here', 'import.orClick': 'or click to browse', 'import.supportedFormats': 'Supported Formats', 'import.formatRequirement1': 'CSV files with Date, Description, and Amount columns', 'import.formatRequirement2': 'Supports comma, semicolon, or tab delimiters', 'import.formatRequirement3': 'Date formats: DD/MM/YYYY, YYYY-MM-DD, etc.', 'import.formatRequirement4': 'Maximum file size: 10MB', 'import.parsing': 'Parsing CSV file...', 'import.errorInvalidFile': 'Please select a CSV file', 'import.errorFileTooLarge': 'File too large. Maximum 10MB', 'import.errorParsing': 'Failed to parse CSV file', 'import.errorLoadingCategories': 'Failed to load categories', 'import.reviewTitle': 'Review Transactions', 'import.totalFound': 'Total Found', 'import.newTransactions': 'New', 'import.duplicates': 'Duplicates', 'import.duplicate': 'Duplicate', 'import.nextMapCategories': 'Next: Map Categories', 'import.mapCategories': 'Map Categories', 'import.mapCategoriesDesc': 'Assign categories to your transactions', 'import.bankCategoryMapping': 'Bank Category Mapping', 'import.bankCategory': 'Bank Category', 'import.defaultCategory': 'Default Category', 'import.defaultCategoryDesc': 'Used for transactions without bank category', 'import.startImport': 'Import Transactions', 'import.importing': 'Importing transactions...', 'import.noTransactionsSelected': 'No transactions selected', 'import.errorImporting': 'Failed to import transactions', 'import.importComplete': 'Import Complete!', 'import.imported': 'Imported', 'import.skipped': 'Skipped', 'import.errors': 'Errors', 'import.viewTransactions': 'View Transactions', 'import.importAnother': 'Import Another File', // Reports 'reports.title': 'Financial Reports', 'reports.export': 'Export CSV', 'reports.analysisPeriod': 'Analysis Period:', 'reports.last30Days': 'Last 30 Days', 'reports.quarter': 'Quarter', 'reports.ytd': 'YTD', 'reports.allCategories': 'All Categories', 'reports.generate': 'Generate Report', 'reports.totalSpent': 'Total Spent', 'reports.topCategory': 'Top Category', 'reports.avgDaily': 'Avg. Daily', 'reports.savingsRate': 'Savings Rate', 'reports.vsLastMonth': 'vs last period', 'reports.spentThisPeriod': 'spent this period', 'reports.placeholder': 'Placeholder', 'reports.spendingTrend': 'Spending Trend', 'reports.categoryBreakdown': 'Category Breakdown', 'reports.monthlySpending': 'Monthly Spending', 'reports.smartRecommendations': 'Smart Recommendations', 'reports.noRecommendations': 'No recommendations at this time', // User 'user.admin': 'Admin', 'user.user': 'User', // Documents 'nav.documents': 'Documents', 'documents.title': 'Documents', 'documents.uploadTitle': 'Upload Documents', 'documents.dragDrop': 'Drag & drop files here or click to browse', 'documents.uploadDesc': 'Upload bank statements, invoices, or receipts.', 'documents.supportedFormats': 'Supported formats: CSV, PDF, XLS, XLSX, PNG, JPG (Max 10MB)', 'documents.yourFiles': 'Your Files', 'documents.searchPlaceholder': 'Search by name...', 'documents.tableDocName': 'Document Name', 'documents.tableUploadDate': 'Upload Date', 'documents.tableType': 'Type', 'documents.tableStatus': 'Status', 'documents.tableActions': 'Actions', 'documents.statusUploaded': 'Uploaded', 'documents.statusProcessing': 'Processing', 'documents.statusAnalyzed': 'Analyzed', 'documents.statusError': 'Error', 'documents.showing': 'Showing', 'documents.of': 'of', 'documents.documents': 'documents', 'documents.noDocuments': 'No documents found. Upload your first document!', 'documents.errorLoading': 'Failed to load documents. Please try again.', // Settings 'settings.title': 'Settings', 'settings.avatar': 'Profile Avatar', 'settings.uploadAvatar': 'Upload Custom', 'settings.avatarDesc': 'PNG, JPG, GIF, WEBP. Max 20MB', 'settings.defaultAvatars': 'Or choose a default avatar:', 'settings.profile': 'Profile Information', 'settings.saveProfile': 'Save Profile', 'settings.changePassword': 'Change Password', 'settings.currentPassword': 'Current Password', 'settings.newPassword': 'New Password', 'settings.confirmPassword': 'Confirm New Password', 'settings.updatePassword': 'Update Password', 'settings.twoFactor': 'Two-Factor Authentication', 'settings.twoFactorEnabled': '2FA is currently enabled for your account', 'settings.twoFactorDisabled': 'Add an extra layer of security to your account', 'settings.enabled': 'Enabled', 'settings.disabled': 'Disabled', 'settings.regenerateCodes': 'Regenerate Backup Codes', 'settings.enable2FA': 'Enable 2FA', 'settings.disable2FA': 'Disable 2FA', // Two-Factor Authentication 'twofa.setupTitle': 'Setup Two-Factor Authentication', 'twofa.setupDesc': 'Scan the QR code with your authenticator app', 'twofa.step1': 'Step 1: Scan QR Code', 'twofa.step1Desc': 'Open your authenticator app (Google Authenticator, Authy, etc.) and scan this QR code:', 'twofa.manualEntry': "Can't scan? Enter code manually", 'twofa.enterManually': 'Enter this code in your authenticator app:', 'twofa.step2': 'Step 2: Verify Code', 'twofa.step2Desc': 'Enter the 6-digit code from your authenticator app:', 'twofa.enable': 'Enable 2FA', 'twofa.infoText': "After enabling 2FA, you'll receive backup codes that you can use if you lose access to your authenticator app. Keep them in a safe place!", 'twofa.setupSuccess': 'Two-Factor Authentication Enabled!', 'twofa.backupCodesDesc': 'Save these backup codes in a secure location', 'twofa.important': 'Important!', 'twofa.backupCodesWarning': "Each backup code can only be used once. Store them securely - you'll need them if you lose access to your authenticator app.", 'twofa.yourBackupCodes': 'Your Backup Codes', 'twofa.downloadPDF': 'Download as PDF', 'twofa.print': 'Print Codes', 'twofa.continueToSettings': 'Continue to Settings', 'twofa.howToUse': 'How to use backup codes:', 'twofa.useWhen': "Use a backup code when you can't access your authenticator app", 'twofa.enterCode': 'Enter the code in the 2FA field when logging in', 'twofa.oneTimeUse': 'Each code works only once - it will be deleted after use', 'twofa.regenerate': 'You can regenerate codes anytime from Settings', // Admin 'admin.title': 'Admin Panel', 'admin.subtitle': 'Manage users and system settings', 'admin.totalUsers': 'Total Users', 'admin.adminUsers': 'Admin Users', 'admin.twoFAEnabled': '2FA Enabled', 'admin.users': 'Users', 'admin.createUser': 'Create User', 'admin.username': 'Username', 'admin.email': 'Email', 'admin.role': 'Role', 'admin.twoFA': '2FA', 'admin.language': 'Language', 'admin.currency': 'Currency', 'admin.joined': 'Joined', 'admin.actions': 'Actions', 'admin.admin': 'Admin', 'admin.user': 'User', 'admin.createNewUser': 'Create New User', 'admin.makeAdmin': 'Make admin', 'admin.create': 'Create', 'admin.noUsers': 'No users found', 'admin.errorLoading': 'Error loading users', 'admin.userCreated': 'User created successfully', 'admin.errorCreating': 'Error creating user', 'admin.confirmDelete': 'Are you sure you want to delete user', 'admin.userDeleted': 'User deleted successfully', 'admin.errorDeleting': 'Error deleting user', 'admin.editNotImplemented': 'Edit functionality coming soon', // Categories 'categories.foodDining': 'Food & Dining', 'categories.transportation': 'Transportation', 'categories.shopping': 'Shopping', 'categories.entertainment': 'Entertainment', 'categories.billsUtilities': 'Bills & Utilities', 'categories.healthcare': 'Healthcare', 'categories.education': 'Education', 'categories.other': 'Other', 'categories.manageTitle': 'Manage Categories', 'categories.addNew': 'Add New Category', 'categories.add': 'Add', 'categories.yourCategories': 'Your Categories', 'categories.dragToReorder': 'Drag to reorder', 'categories.created': 'Category created successfully', 'categories.updated': 'Category updated successfully', 'categories.deleted': 'Category deleted successfully', 'categories.hasExpenses': 'Cannot delete category with expenses', 'categories.reordered': 'Categories reordered successfully', 'categories.selectIcon': 'Select Icon', 'categories.searchIcons': 'Search icons...', 'categories.noExpenses': 'No expenses in this category', 'categories.viewExpenses': 'Click to view expenses', // Dashboard 'dashboard.expenseCategories': 'Expense Categories', 'dashboard.manageCategories': 'Manage', // Date formatting 'date.today': 'Today', 'date.yesterday': 'Yesterday', 'date.daysAgo': 'days ago', // Form 'form.name': 'Name', 'form.color': 'Color', 'form.icon': 'Icon', // Common 'common.cancel': 'Cancel', 'common.edit': 'Edit', 'common.delete': 'Delete', 'common.error': 'An error occurred. Please try again.', 'common.success': 'Operation completed successfully!', 'common.missingFields': 'Missing required fields', 'common.invalidCategory': 'Invalid category', // Tags 'tags.title': 'Smart Tags', 'tags.subtitle': 'Manage tags for your expenses', 'tags.add': 'Add Tag', 'tags.edit': 'Edit Tag', 'tags.delete': 'Delete Tag', 'tags.name': 'Tag Name', 'tags.color': 'Color', 'tags.icon': 'Icon', 'tags.useCount': 'Used', 'tags.times': 'times', 'tags.autoGenerated': 'Auto-generated', 'tags.manual': 'Manual', 'tags.popular': 'Popular Tags', 'tags.all': 'All Tags', 'tags.filter': 'Filter by Tag', 'tags.filterByTags': 'Filter by Tags', 'tags.selectTags': 'Select tags...', 'tags.noTags': 'No tags yet', 'tags.createFirst': 'Create your first tag or let the system auto-generate tags', 'tags.created': 'Tag created successfully', 'tags.updated': 'Tag updated successfully', 'tags.deleted': 'Tag deleted successfully', 'tags.errorCreating': 'Error creating tag', 'tags.errorUpdating': 'Error updating tag', 'tags.errorDeleting': 'Error deleting tag', 'tags.deleteConfirm': 'Are you sure you want to delete this tag?', 'tags.autoTagging': 'Auto-Tagging', 'tags.autoTaggingDesc': 'Automatically suggest tags based on OCR text and description', 'tags.enableAutoTagging': 'Enable auto-tagging', 'tags.suggestedTags': 'Suggested Tags', 'tags.manageTags': 'Manage Tags', 'tags.viewAll': 'View All Tags', 'tags.stats': 'Tag Statistics', 'tags.totalTags': 'Total Tags', 'tags.autoTags': 'Auto Tags', 'tags.manualTags': 'Manual Tags', 'tags.totalUses': 'Total Uses', 'tags.mostUsed': 'Most Used Tag', // Tags 'tags.title': 'Smart Tags', 'tags.subtitle': 'Manage tags for your expenses', 'tags.add': 'Add Tag', 'tags.edit': 'Edit Tag', 'tags.delete': 'Delete Tag', 'tags.name': 'Tag Name', 'tags.color': 'Color', 'tags.icon': 'Icon', 'tags.useCount': 'Used', 'tags.times': 'times', 'tags.autoGenerated': 'Auto-generated', 'tags.manual': 'Manual', 'tags.popular': 'Popular Tags', 'tags.all': 'All Tags', 'tags.filter': 'Filter by Tag', 'tags.filterByTags': 'Filter by Tags', 'tags.selectTags': 'Select tags...', 'tags.noTags': 'No tags yet', 'tags.createFirst': 'Create your first tag or let the system auto-generate tags', 'tags.created': 'Tag created successfully', 'tags.updated': 'Tag updated successfully', 'tags.deleted': 'Tag deleted successfully', 'tags.errorCreating': 'Error creating tag', 'tags.errorUpdating': 'Error updating tag', 'tags.errorDeleting': 'Error deleting tag', 'tags.deleteConfirm': 'Are you sure you want to delete this tag?', 'tags.autoTagging': 'Auto-Tagging', 'tags.autoTaggingDesc': 'Automatically suggest tags based on OCR text and description', 'tags.enableAutoTagging': 'Enable auto-tagging', 'tags.suggestedTags': 'Suggested Tags', 'tags.manageTags': 'Manage Tags', 'tags.viewAll': 'View All Tags', 'tags.stats': 'Tag Statistics', 'tags.totalTags': 'Total Tags', 'tags.autoTags': 'Auto Tags', 'tags.manualTags': 'Manual Tags', 'tags.totalUses': 'Total Uses', 'tags.mostUsed': 'Most Used Tag', // Actions 'actions.cancel': 'Cancel', // Income 'nav.income': 'Income', 'income.title': 'Income', 'income.subtitle': 'Track your income sources', 'income.addNew': 'Add Income', 'income.add': 'Add Income', 'income.edit': 'Edit Income', 'income.save': 'Save Income', 'income.source': 'Source', 'income.tableDescription': 'Description', 'income.tableDate': 'Date', 'income.tableSource': 'Source', 'income.tableAmount': 'Amount', 'income.tableActions': 'Actions', 'income.noIncome': 'No income entries yet', 'income.addFirst': 'Add your first income entry', 'income.created': 'Income added successfully', 'income.updated': 'Income updated successfully', 'income.deleted': 'Income deleted successfully', 'income.deleteConfirm': 'Are you sure you want to delete this income entry?', 'income.frequency': 'Payment Frequency', 'income.once': 'One-time', 'income.weekly': 'Weekly', 'income.biweekly': 'Every 2 Weeks', 'income.every4weeks': 'Every 4 Weeks', 'income.monthly': 'Monthly', 'income.custom': 'Custom (Freelance)', 'income.customDays': 'Custom Days Interval', 'income.customHelp': 'Enter the number of days between payments', 'income.customDaysRequired': 'Please enter a valid number of days for custom frequency', 'income.autoCreate': 'Automatically create income entries', 'income.autoCreateHelp': 'When enabled, income entries will be created automatically based on the frequency. You can edit or cancel at any time.', 'income.createNowConfirm': 'Create an income entry now from this recurring income?', 'form.selectSource': 'Select source...', 'dashboard.total_income': 'Total Income', 'dashboard.profit_loss': 'Profit/Loss', 'dashboard.income_vs_expenses': 'Income vs Expenses', 'dashboard.net_income': 'Net Income', // Reports 'reports.title': 'Financial Reports', 'reports.export': 'Export CSV', 'reports.analysisPeriod': 'Analysis Period', 'reports.last30Days': 'Last 30 Days', 'reports.quarter': 'Quarter', 'reports.ytd': 'YTD', 'reports.allCategories': 'All Categories', 'reports.generate': 'Generate Report', 'reports.totalIncome': 'Total Income', 'reports.totalSpent': 'Total Spent', 'reports.profitLoss': 'Profit/Loss', 'reports.topCategory': 'Top Category', 'reports.avgDaily': 'Avg. Daily', 'reports.savingsRate': 'Savings Rate', 'reports.vsLastMonth': 'vs last period', 'reports.spentThisPeriod': 'spent this period', 'reports.incomeVsExpenses': 'Income vs Expenses', 'reports.incomeSources': 'Income Sources', 'reports.categoryBreakdown': 'Expense Categories', 'reports.monthlyComparison': 'Monthly Comparison', 'reports.monthlySpending': 'Monthly Spending', 'reports.smartRecommendations': 'Smart Recommendations', 'reports.spendingTrend': 'Spending Trend' }, ro: { // Navigation 'nav.dashboard': 'Tablou de bord', 'nav.transactions': 'Tranzacții', 'nav.recurring': 'Recurente', 'nav.import': 'Import CSV', 'nav.reports': 'Rapoarte', 'nav.admin': 'Admin', 'nav.settings': 'Setări', 'nav.logout': 'Deconectare', // Dashboard 'dashboard.total_spent': 'Total Cheltuit Luna Aceasta', 'dashboard.active_categories': 'Categorii Active', 'dashboard.total_transactions': 'Total Tranzacții', 'dashboard.vs_last_month': 'față de luna trecută', 'dashboard.categories_in_use': 'categorii în uz', 'dashboard.this_month': 'luna curentă', 'dashboard.spending_by_category': 'Cheltuieli pe Categorii', 'dashboard.monthly_trend': 'Tendință Lunară', 'dashboard.recent_transactions': 'Tranzacții Recente', 'dashboard.view_all': 'Vezi Toate', 'dashboard.search': 'Caută cheltuieli...', 'dashboard.selectCategory': 'Selectează categoria...', 'dashboard.noTransactions': 'Nicio tranzacție încă', 'dashboard.noData': 'Nu există date disponibile', 'dashboard.total': 'Total', 'dashboard.totalThisYear': 'Total Anul Acesta', 'dashboard.spending': 'Cheltuieli', 'dashboard.categoryBreakdownDesc': 'Defalcare pe categorii', 'dashboard.lightMode': 'Mod Luminos', 'dashboard.darkMode': 'Mod Întunecat', 'dashboard.expenseAdded': 'Cheltuială adăugată cu succes!', // Login 'login.title': 'Bine ai revenit', 'login.tagline': 'Urmărește-ți cheltuielile, gestionează-ți finanțele', 'login.remember_me': 'Ține-mă minte', 'login.sign_in': 'Conectare', 'login.no_account': 'Nu ai un cont?', 'login.register': 'Înregistrare', // Register 'register.title': 'Creare Cont', 'register.tagline': 'Începe să îți gestionezi finanțele astăzi', 'register.create_account': 'Creează Cont', 'register.have_account': 'Ai deja un cont?', 'register.login': 'Conectare', // Forms 'form.email': 'Email', 'form.password': 'Parolă', 'form.username': 'Nume utilizator', 'form.language': 'Limbă', 'form.currency': 'Monedă', 'form.monthlyBudget': 'Buget Lunar', 'form.amount': 'Sumă', 'form.description': 'Descriere', 'form.category': 'Categorie', 'form.date': 'Dată', 'form.tags': 'Etichete (separate prin virgulă)', 'form.receipt': 'Chitanță (opțional)', 'form.2fa_code': 'Cod 2FA', 'form.chooseFile': 'Alege Fișier', 'form.noFileChosen': 'Niciun fișier ales', // Transactions 'transactions.title': 'Tranzacții', 'transactions.export': 'Exportă CSV', 'transactions.import': 'Importă CSV', 'transactions.addExpense': 'Adaugă Cheltuială', 'transactions.search': 'Caută tranzacții...', 'transactions.date': 'Dată', 'transactions.filters': 'Filtre', 'transactions.category': 'Categorie', 'transactions.allCategories': 'Categorie', 'transactions.startDate': 'Data Început', 'transactions.endDate': 'Data Sfârșit', 'transactions.tableTransaction': 'Tranzacție', 'transactions.tableCategory': 'Categorie', 'transactions.tableDate': 'Dată', 'transactions.tablePayment': 'Plată', 'transactions.tableAmount': 'Sumă', 'transactions.tableStatus': 'Stare', 'transactions.tableActions': 'Acțiuni', 'transactions.showing': 'Afișare', 'transactions.to': 'până la', 'transactions.of': 'din', 'transactions.results': 'rezultate', 'transactions.previous': 'Anterior', 'transactions.next': 'Următorul', 'transactions.noTransactions': 'Nu s-au găsit tranzacții', 'transactions.expense': 'Cheltuială', 'transactions.completed': 'Finalizat', 'transactions.pending': 'În așteptare', 'transactions.edit': 'Editează', 'transactions.delete': 'Șterge', 'transactions.updated': 'Tranzacție actualizată cu succes!', 'transactions.notFound': 'Tranzacție negăsită', 'modal.edit_expense': 'Editează Cheltuială', 'actions.update': 'Actualizează Cheltuială', 'form.currentReceipt': 'Chitanță curentă atașată', 'form.receiptHelp': 'Încarcă un fișier nou pentru a înlocui chitanța existentă', 'transactions.viewReceipt': 'Vezi Chitanța', 'transactions.downloadReceipt': 'Descarcă Chitanța', 'transactions.transaction': 'tranzacție', 'transactions.transactions': 'tranzacții', 'transactions.deleteConfirm': 'Ești sigur că vrei să ștergi această tranzacție?', 'transactions.deleted': 'Tranzacție ștearsă', 'transactions.imported': 'Importate', 'transactions.importSuccess': 'tranzacții', // Actions 'actions.add_expense': 'Adaugă Cheltuială', 'actions.save': 'Salvează Cheltuiala', 'actions.update': 'Actualizează', // Modal 'modal.add_expense': 'Adaugă Cheltuială', // Cheltuieli Recurente 'recurring.title': 'Cheltuieli Recurente', 'recurring.subtitle': 'Gestionează abonamente și facturi recurente', 'recurring.detect': 'Detectează Tipare', 'recurring.addNew': 'Adaugă Recurent', 'recurring.noRecurring': 'Nicio cheltuială recurentă încă', 'recurring.addFirst': 'Adaugă prima ta cheltuială recurentă sau detectează tipare din cheltuielile existente', 'recurring.active': 'Cheltuieli Recurente Active', 'recurring.inactive': 'Inactive', 'recurring.overdue': 'Întârziat', 'recurring.dueToday': 'Scadent astăzi', 'recurring.dueIn': 'Scadent în', 'recurring.day': 'zi', 'recurring.days': 'zile', 'recurring.autoCreate': 'Creare automată', 'recurring.detected': 'Auto-detectat', 'recurring.createExpense': 'Creează cheltuială acum', 'recurring.deactivate': 'Dezactivează', 'recurring.activate': 'Activează', 'recurring.add': 'Adaugă Cheltuială Recurentă', 'recurring.edit': 'Editează Cheltuială Recurentă', 'recurring.name': 'Nume', 'recurring.frequency': 'Frecvență', 'recurring.frequency.daily': 'Zilnic', 'recurring.frequency.weekly': 'Săptămânal', 'recurring.frequency.monthly': 'Lunar', 'recurring.frequency.yearly': 'Anual', 'recurring.dayOfWeek': 'Ziua săptămânii', 'recurring.dayOfMonth': 'Ziua lunii', 'recurring.nextDue': 'Următoarea Scadență', 'recurring.notes': 'Notițe', 'recurring.autoCreateDesc': 'Creează automat o cheltuială când vine data scadenței', 'recurring.errorLoading': 'Eroare la încărcarea cheltuielilor recurente', 'recurring.expenseCreated': 'Cheltuială creată cu succes!', 'recurring.errorCreating': 'Eroare la crearea cheltuielii', 'recurring.activated': 'Cheltuială recurentă activată', 'recurring.deactivated': 'Cheltuială recurentă dezactivată', 'recurring.deleteConfirm': 'Ești sigur că vrei să ștergi această cheltuială recurentă?', 'recurring.deleted': 'Cheltuială recurentă ștearsă', 'recurring.created': 'Cheltuială recurentă creată', 'recurring.updated': 'Cheltuială recurentă actualizată', 'recurring.detecting': 'Se detectează...', 'recurring.noPatterns': 'Nu s-au detectat tipare recurente', 'recurring.patternsFound': 'Tipare recurente găsite', 'recurring.suggestionsTitle': 'Tipare Recurente Detectate', 'recurring.suggestionsDesc': 'Am găsit aceste cheltuieli recurente potențiale bazate pe istoricul tău de tranzacții', 'recurring.occurrences': 'apariții', 'recurring.confidence': 'încredere', 'recurring.accept': 'Acceptă', 'recurring.dismiss': 'Respinge', 'recurring.suggestionAccepted': 'Cheltuială recurentă adăugată', 'recurring.errorDetecting': 'Eroare la detectarea tiparelor', 'recurring.lastCreated': 'Ultima creare', 'recurring.never': 'Niciodată', 'recurring.autoCreatedTag': 'Creat automat din recurent', // Zilele săptămânii 'days.monday': 'Luni', 'days.tuesday': 'Marți', 'days.wednesday': 'Miercuri', 'days.thursday': 'Joi', 'days.friday': 'Vineri', 'days.saturday': 'Sâmbătă', 'days.sunday': 'Duminică', // Search 'search.inputPlaceholder': 'Caută orice...', 'search.placeholder': 'Caută tranzacții, documente, categorii sau funcționalități', 'search.tags': 'Etichete', 'search.hint': 'Apasă Ctrl+K pentru căutare', 'search.pressEnter': 'Apasă Enter pentru căutare', 'search.pressEsc': 'ESC pentru închidere', 'search.minChars': 'Scrie cel puțin 2 caractere pentru căutare', 'search.noResults': 'Nu s-au găsit rezultate', 'search.error': 'Căutare eșuată. Te rog încearcă din nou.', 'search.features': 'Funcționalități', 'search.expenses': 'Cheltuieli', 'search.documents': 'Documente', 'search.categories': 'Categorii', 'search.recurring': 'Recurente', 'search.tags': 'Etichete', 'search.ocrMatch': 'Potrivire OCR', // Alerte Buget 'budget.alert': 'Alertă Buget', 'budget.categoryAlert': 'Alertă Buget Categorie', 'budget.overallAlert': 'Alertă Buget Lunar', 'budget.exceededAlert': 'Buget Depășit', 'budget.categoryAlertMessage': '⚠️ {category} a folosit {percentage}% din buget', 'budget.overallAlertMessage': '⚠️ Ai folosit {percentage}% din bugetul lunar', 'budget.exceededAlertMessage': '🚨 {category} a depășit limita bugetului', 'budget.categoryWarning': '{category} este la {percentage}% ({spent} din {budget})', 'budget.overallWarning': 'Bugetul lunar este la {percentage}% ({spent} din {budget})', 'budget.viewAllAlerts': 'Vezi toate alertele', 'budget.activeAlerts': 'Alerte de Buget Active', 'budget.monthlyBudget': 'Buget Lunar', 'budget.weeklySummary': 'Rezumat Cheltuieli Săptămânale', 'budget.weeklySummaryMessage': 'Ai cheltuit {spent} săptămâna aceasta ({change} față de săptămâna trecută). Categorie principală: {category}', 'budget.noBudgetSet': 'Niciun buget setat', 'budget.setBudget': 'Setează Buget', 'budget.editBudget': 'Editează Buget', 'budget.budgetAmount': 'Suma Bugetului', 'budget.alertThreshold': 'Prag de Alertă', 'budget.alertThresholdHelp': 'Primește notificări când cheltuielile ajung la acest procent (50-200%)', 'budget.save': 'Salvează Buget', 'budget.cancel': 'Anulează', 'budget.budgetUpdated': 'Buget actualizat cu succes', 'budget.budgetError': 'Eroare la actualizarea bugetului', // Import CSV 'import.title': 'Import CSV', 'import.subtitle': 'Importă extractele bancare sau fișierele CSV cu cheltuieli', 'import.stepUpload': 'Încărcare', 'import.stepReview': 'Revizuire', 'import.stepMap': 'Mapare Categorii', 'import.stepImport': 'Import', 'import.uploadTitle': 'Încarcă Fișier CSV', 'import.uploadDesc': 'Încarcă extractul bancar sau fișierul CSV cu cheltuieli', 'import.dragDrop': 'Trage și plasează fișierul CSV aici', 'import.orClick': 'sau click pentru a răsfoi', 'import.supportedFormats': 'Formate Suportate', 'import.formatRequirement1': 'Fișiere CSV cu coloane Dată, Descriere și Sumă', 'import.formatRequirement2': 'Suportă delimitatori virgulă, punct și virgulă sau tab', 'import.formatRequirement3': 'Formate dată: DD/MM/YYYY, YYYY-MM-DD, etc.', 'import.formatRequirement4': 'Dimensiune maximă fișier: 10MB', 'import.parsing': 'Se parsează fișierul CSV...', 'import.errorInvalidFile': 'Te rog selectează un fișier CSV', 'import.errorFileTooLarge': 'Fișier prea mare. Maxim 10MB', 'import.errorParsing': 'Eroare la parsarea fișierului CSV', 'import.errorLoadingCategories': 'Eroare la încărcarea categoriilor', 'import.reviewTitle': 'Revizuire Tranzacții', 'import.totalFound': 'Total Găsite', 'import.newTransactions': 'Noi', 'import.duplicates': 'Duplicate', 'import.duplicate': 'Duplicat', 'import.nextMapCategories': 'Următorul: Mapare Categorii', 'import.mapCategories': 'Mapare Categorii', 'import.mapCategoriesDesc': 'Asignează categorii tranzacțiilor tale', 'import.bankCategoryMapping': 'Mapare Categorii Bancare', 'import.bankCategory': 'Categorie Bancară', 'import.defaultCategory': 'Categorie Implicită', 'import.defaultCategoryDesc': 'Folosită pentru tranzacții fără categorie bancară', 'import.startImport': 'Importă Tranzacții', 'import.importing': 'Se importă tranzacții...', 'import.noTransactionsSelected': 'Nicio tranzacție selectată', 'import.errorImporting': 'Eroare la importarea tranzacțiilor', 'import.importComplete': 'Import Complet!', 'import.imported': 'Importate', 'import.skipped': 'Sărite', 'import.errors': 'Erori', 'import.viewTransactions': 'Vezi Tranzacții', 'import.importAnother': 'Importă Alt Fișier', // Reports 'reports.title': 'Rapoarte Financiare', 'reports.export': 'Exportă CSV', 'reports.analysisPeriod': 'Perioadă de Analiză:', 'reports.last30Days': 'Ultimele 30 Zile', 'reports.quarter': 'Trimestru', 'reports.ytd': 'An Curent', 'reports.allCategories': 'Toate Categoriile', 'reports.generate': 'Generează Raport', 'reports.totalSpent': 'Total Cheltuit', 'reports.topCategory': 'Categorie Principală', 'reports.avgDaily': 'Medie Zilnică', 'reports.savingsRate': 'Rată Economii', 'reports.vsLastMonth': 'față de perioada anterioară', 'reports.spentThisPeriod': 'cheltuit în această perioadă', 'reports.placeholder': 'Substituent', 'reports.spendingTrend': 'Tendință Cheltuieli', 'reports.categoryBreakdown': 'Defalcare pe Categorii', 'reports.monthlySpending': 'Cheltuieli Lunare', 'reports.smartRecommendations': 'Recomandări Inteligente', 'reports.noRecommendations': 'Nicio recomandare momentan', // User 'user.admin': 'Administrator', 'user.user': 'Utilizator', // Documents 'nav.documents': 'Documente', 'documents.title': 'Documente', 'documents.uploadTitle': 'Încarcă Documente', 'documents.dragDrop': 'Trage și plasează fișiere aici sau click pentru a căuta', 'documents.uploadDesc': 'Încarcă extrase de cont, facturi sau chitanțe.', 'documents.supportedFormats': 'Formate suportate: CSV, PDF, XLS, XLSX, PNG, JPG (Max 10MB)', 'documents.yourFiles': 'Fișierele Tale', 'documents.searchPlaceholder': 'Caută după nume...', 'documents.tableDocName': 'Nume Document', 'documents.tableUploadDate': 'Data Încărcării', 'documents.tableType': 'Tip', 'documents.tableStatus': 'Stare', 'documents.tableActions': 'Acțiuni', 'documents.statusUploaded': 'Încărcat', 'documents.statusProcessing': 'În procesare', 'documents.statusAnalyzed': 'Analizat', 'documents.statusError': 'Eroare', 'documents.showing': 'Afișare', 'documents.of': 'din', 'documents.documents': 'documente', 'documents.noDocuments': 'Nu s-au găsit documente. Încarcă primul tău document!', 'documents.errorLoading': 'Eroare la încărcarea documentelor. Te rugăm încearcă din nou.', // Settings 'settings.title': 'Setări', 'settings.avatar': 'Avatar Profil', 'settings.uploadAvatar': 'Încarcă Personalizat', 'settings.avatarDesc': 'PNG, JPG, GIF, WEBP. Max 20MB', 'settings.defaultAvatars': 'Sau alege un avatar prestabilit:', 'settings.profile': 'Informații Profil', 'settings.saveProfile': 'Salvează Profil', 'settings.changePassword': 'Schimbă Parola', 'settings.currentPassword': 'Parola Curentă', 'settings.newPassword': 'Parolă Nouă', 'settings.confirmPassword': 'Confirmă Parola Nouă', 'settings.updatePassword': 'Actualizează Parola', 'settings.twoFactor': 'Autentificare Doi Factori', 'settings.twoFactorEnabled': '2FA este activată pentru contul tău', 'settings.twoFactorDisabled': 'Adaugă un nivel suplimentar de securitate contului tău', 'settings.enabled': 'Activat', 'settings.disabled': 'Dezactivat', 'settings.regenerateCodes': 'Regenerează Coduri Backup', 'settings.enable2FA': 'Activează 2FA', 'settings.disable2FA': 'Dezactivează 2FA', // Two-Factor Authentication 'twofa.setupTitle': 'Configurare Autentificare Doi Factori', 'twofa.setupDesc': 'Scanează codul QR cu aplicația ta de autentificare', 'twofa.step1': 'Pasul 1: Scanează Codul QR', 'twofa.step1Desc': 'Deschide aplicația ta de autentificare (Google Authenticator, Authy, etc.) și scanează acest cod QR:', 'twofa.manualEntry': 'Nu poți scana? Introdu codul manual', 'twofa.enterManually': 'Introdu acest cod în aplicația ta de autentificare:', 'twofa.step2': 'Pasul 2: Verifică Codul', 'twofa.step2Desc': 'Introdu codul de 6 cifre din aplicația ta de autentificare:', 'twofa.enable': 'Activează 2FA', 'twofa.infoText': 'După activarea 2FA, vei primi coduri de backup pe care le poți folosi dacă pierzi accesul la aplicația ta de autentificare. Păstrează-le într-un loc sigur!', 'twofa.setupSuccess': 'Autentificare Doi Factori Activată!', 'twofa.backupCodesDesc': 'Salvează aceste coduri de backup într-o locație sigură', 'twofa.important': 'Important!', 'twofa.backupCodesWarning': 'Fiecare cod de backup poate fi folosit o singură dată. Păstrează-le în siguranță - vei avea nevoie de ele dacă pierzi accesul la aplicația ta de autentificare.', 'twofa.yourBackupCodes': 'Codurile Tale de Backup', 'twofa.downloadPDF': 'Descarcă ca PDF', 'twofa.print': 'Tipărește Coduri', 'twofa.continueToSettings': 'Continuă la Setări', 'twofa.howToUse': 'Cum să folosești codurile de backup:', 'twofa.useWhen': 'Folosește un cod de backup când nu poți accesa aplicația ta de autentificare', 'twofa.enterCode': 'Introdu codul în câmpul 2FA când te autentifici', 'twofa.oneTimeUse': 'Fiecare cod funcționează o singură dată - va fi șters după folosire', 'twofa.regenerate': 'Poți regenera coduri oricând din Setări', // Admin 'admin.title': 'Panou Administrare', 'admin.subtitle': 'Gestionează utilizatori și setări sistem', 'admin.totalUsers': 'Total Utilizatori', 'admin.adminUsers': 'Administratori', 'admin.twoFAEnabled': '2FA Activat', 'admin.users': 'Utilizatori', 'admin.createUser': 'Creează Utilizator', 'admin.username': 'Nume Utilizator', 'admin.email': 'Email', 'admin.role': 'Rol', 'admin.twoFA': '2FA', 'admin.language': 'Limbă', 'admin.currency': 'Monedă', 'admin.joined': 'Înregistrat', 'admin.actions': 'Acțiuni', 'admin.admin': 'Admin', 'admin.user': 'Utilizator', 'admin.createNewUser': 'Creează Utilizator Nou', 'admin.makeAdmin': 'Fă administrator', 'admin.create': 'Creează', 'admin.noUsers': 'Niciun utilizator găsit', 'admin.errorLoading': 'Eroare la încărcarea utilizatorilor', 'admin.userCreated': 'Utilizator creat cu succes', 'admin.errorCreating': 'Eroare la crearea utilizatorului', 'admin.confirmDelete': 'Sigur vrei să ștergi utilizatorul', 'admin.userDeleted': 'Utilizator șters cu succes', 'admin.errorDeleting': 'Eroare la ștergerea utilizatorului', 'admin.editNotImplemented': 'Funcționalitatea de editare va fi disponibilă în curând', // Common 'common.cancel': 'Anulează', 'common.edit': 'Editează', 'common.delete': 'Șterge', 'common.error': 'A apărut o eroare. Încercați din nou.', 'common.success': 'Operațiune finalizată cu succes!', 'common.missingFields': 'Lipsesc câmpuri obligatorii', 'common.invalidCategory': 'Categorie invalidă', // Etichete 'tags.title': 'Etichete Inteligente', 'tags.subtitle': 'Gestionează etichete pentru cheltuieli', 'tags.add': 'Adaugă Etichetă', 'tags.edit': 'Editează Etichetă', 'tags.delete': 'Șterge Etichetă', 'tags.name': 'Nume Etichetă', 'tags.color': 'Culoare', 'tags.icon': 'Pictogramă', 'tags.useCount': 'Folosit', 'tags.times': 'ori', 'tags.autoGenerated': 'Auto-generat', 'tags.manual': 'Manual', 'tags.popular': 'Etichete Populare', 'tags.all': 'Toate Etichetele', 'tags.filter': 'Filtrează după Etichetă', 'tags.filterByTags': 'Filtrează după Etichete', 'tags.selectTags': 'Selectează etichete...', 'tags.noTags': 'Nicio etichetă încă', 'tags.createFirst': 'Creează prima ta etichetă sau lasă sistemul să genereze automat', 'tags.created': 'Etichetă creată cu succes', 'tags.updated': 'Etichetă actualizată cu succes', 'tags.deleted': 'Etichetă ștearsă cu succes', 'tags.errorCreating': 'Eroare la crearea etichetei', 'tags.errorUpdating': 'Eroare la actualizarea etichetei', 'tags.errorDeleting': 'Eroare la ștergerea etichetei', 'tags.deleteConfirm': 'Ești sigur că vrei să ștergi această etichetă?', 'tags.autoTagging': 'Etichetare Automată', 'tags.autoTaggingDesc': 'Sugerează automat etichete bazate pe text OCR și descriere', 'tags.enableAutoTagging': 'Activează etichetarea automată', 'tags.suggestedTags': 'Etichete Sugerate', 'tags.manageTags': 'Gestionează Etichete', 'tags.viewAll': 'Vezi Toate Etichetele', 'tags.stats': 'Statistici Etichete', 'tags.totalTags': 'Total Etichete', 'tags.autoTags': 'Etichete Auto', 'tags.manualTags': 'Etichete Manuale', 'tags.totalUses': 'Utilizări Totale', 'tags.mostUsed': 'Eticheta Cea Mai Folosită', // Categorii 'categories.foodDining': 'Mâncare & Restaurant', 'categories.transportation': 'Transport', 'categories.shopping': 'Cumpărături', 'categories.entertainment': 'Divertisment', 'categories.billsUtilities': 'Facturi & Utilități', 'categories.healthcare': 'Sănătate', 'categories.education': 'Educație', 'categories.other': 'Altele', 'categories.manageTitle': 'Gestionează Categorii', 'categories.addNew': 'Adaugă Categorie Nouă', 'categories.add': 'Adaugă', 'categories.yourCategories': 'Categoriile Tale', 'categories.dragToReorder': 'Trage pentru a reordona', 'categories.created': 'Categorie creată cu succes', 'categories.updated': 'Categorie actualizată cu succes', 'categories.deleted': 'Categorie ștearsă cu succes', 'categories.hasExpenses': 'Nu se poate șterge categoria cu cheltuieli', 'categories.reordered': 'Categorii reordonate cu succes', 'categories.selectIcon': 'Selectează Iconiță', 'categories.searchIcons': 'Caută iconițe...', 'categories.noExpenses': 'Nicio cheltuială în această categorie', 'categories.viewExpenses': 'Click pentru a vedea cheltuielile', // Tablou de bord 'dashboard.expenseCategories': 'Categorii de Cheltuieli', 'dashboard.manageCategories': 'Gestionează', // Formatare dată 'date.today': 'Astăzi', 'date.yesterday': 'Ieri', 'date.daysAgo': 'zile în urmă', // Formular 'form.name': 'Nume', 'form.color': 'Culoare', 'form.icon': 'Iconă', // Comune 'common.cancel': 'Anulează', 'common.edit': 'Editează', 'common.delete': 'Șterge', 'common.error': 'A apărut o eroare. Te rugăm încearcă din nou.', 'common.success': 'Operațiune finalizată cu succes!', 'common.missingFields': 'Câmpuri obligatorii lipsă', 'common.invalidCategory': 'Categorie invalidă', // Actions 'actions.cancel': 'Anulează', // Venit 'nav.income': 'Venit', 'income.title': 'Venit', 'income.subtitle': 'Urmărește sursele de venit', 'income.addNew': 'Adaugă Venit', 'income.add': 'Adaugă Venit', 'income.edit': 'Editează Venit', 'income.save': 'Salvează Venit', 'income.source': 'Sursă', 'income.tableDescription': 'Descriere', 'income.tableDate': 'Dată', 'income.tableSource': 'Sursă', 'income.tableAmount': 'Sumă', 'income.tableActions': 'Acțiuni', 'income.noIncome': 'Nicio intrare de venit încă', 'income.addFirst': 'Adaugă prima ta intrare de venit', 'income.created': 'Venit adăugat cu succes', 'income.updated': 'Venit actualizat cu succes', 'income.deleted': 'Venit șters cu succes', 'income.deleteConfirm': 'Sigur vrei să ștergi această intrare de venit?', 'income.frequency': 'Frecvență Plată', 'income.once': 'O singură dată', 'income.weekly': 'Săptămânal', 'income.biweekly': 'La 2 săptămâni', 'income.every4weeks': 'La 4 săptămâni', 'income.monthly': 'Lunar', 'income.custom': 'Personalizat (Freelance)', 'income.customDays': 'Interval Zile Personalizat', 'income.customHelp': 'Introdu numărul de zile între plăți', 'income.customDaysRequired': 'Te rog introdu un număr valid de zile pentru frecvența personalizată', 'income.autoCreate': 'Creează automat intrări de venit', 'income.autoCreateHelp': 'Când este activat, intrările de venit vor fi create automat pe baza frecvenței. Poți edita sau anula oricând.', 'income.createNowConfirm': 'Creezi o intrare de venit acum din acest venit recurent?', 'form.selectSource': 'Selectează sursa...', 'dashboard.total_income': 'Total Venit', 'dashboard.profit_loss': 'Profit/Pierdere', 'dashboard.income_vs_expenses': 'Venit vs Cheltuieli', 'dashboard.net_income': 'Venit Net', // Reports 'reports.title': 'Rapoarte Financiare', 'reports.export': 'Exportă CSV', 'reports.analysisPeriod': 'Perioada de Analiză', 'reports.last30Days': 'Ultimele 30 Zile', 'reports.quarter': 'Trimestru', 'reports.ytd': 'An Curent', 'reports.allCategories': 'Toate Categoriile', 'reports.generate': 'Generează Raport', 'reports.totalIncome': 'Total Venit', 'reports.totalSpent': 'Total Cheltuit', 'reports.profitLoss': 'Profit/Pierdere', 'reports.topCategory': 'Categoria Principală', 'reports.avgDaily': 'Medie Zilnică', 'reports.savingsRate': 'Rată Economisire', 'reports.vsLastMonth': 'față de perioada anterioară', 'reports.spentThisPeriod': 'cheltuit în perioada', 'reports.incomeVsExpenses': 'Venit vs Cheltuieli', 'reports.incomeSources': 'Surse de Venit', 'reports.categoryBreakdown': 'Categorii Cheltuieli', 'reports.monthlyComparison': 'Comparație Lunară', 'reports.monthlySpending': 'Cheltuieli Lunare', 'reports.smartRecommendations': 'Recomandări Inteligente', 'reports.spendingTrend': 'Tendință Cheltuieli' } }; // Get current language from localStorage or default to 'en' function getCurrentLanguage() { return localStorage.getItem('language') || 'en'; } // Set language function setLanguage(lang) { if (translations[lang]) { localStorage.setItem('language', lang); translatePage(lang); } } // Translate all elements on page function translatePage(lang) { const elements = document.querySelectorAll('[data-translate]'); elements.forEach(element => { const key = element.getAttribute('data-translate'); const translation = translations[lang][key]; if (translation) { if (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA') { element.placeholder = translation; } else { element.textContent = translation; } } }); } // Initialize translations on page load document.addEventListener('DOMContentLoaded', () => { const currentLang = getCurrentLanguage(); translatePage(currentLang); }); // Helper function to get translated text function getTranslation(key, fallback = '') { const lang = getCurrentLanguage(); return translations[lang]?.[key] || fallback || key; } // Make functions and translations globally accessible for other scripts window.getCurrentLanguage = getCurrentLanguage; window.setLanguage = setLanguage; window.translatePage = translatePage; window.translations = translations; window.getTranslation = getTranslation; // Export functions for module systems if (typeof module !== 'undefined' && module.exports) { module.exports = { getCurrentLanguage, setLanguage, translatePage, translations }; }