 messages/en.json                                   |  887 +++++++
 messages/ja.json                                   |  887 +++++++
 messages/translation-todo.json                     | 2718 ++++++++++++++++++++
 next.config.mjs                                    |    5 +-
 package.json                                       |    7 +-
 src/app/(external)/page.tsx                        |    4 +-
 src/app/(main)/auth/_components/login-form.tsx     |    4 +-
 src/app/(main)/auth/_components/register-form.tsx  |    4 +-
 src/app/(main)/auth/v1/login/page.tsx              |   10 +-
 src/app/(main)/auth/v1/register/page.tsx           |   10 +-
 src/app/(main)/auth/v2/layout.tsx                  |   12 +-
 src/app/(main)/auth/v2/login/page.tsx              |    8 +-
 src/app/(main)/auth/v2/register/page.tsx           |    8 +-
 .../chat/_components/chat-conversation-list.tsx    |    6 +-
 src/app/(main)/chat/_components/chat-header.tsx    |   12 +-
 .../chat/_components/chat-profile-details.tsx      |   40 +-
 src/app/(main)/chat/_components/chat-sidebar.tsx   |    6 +-
 src/app/(main)/chat/_components/chat-thread.tsx    |   41 +-
 .../analytics-actions-manager-queue.tsx            |   40 +-
 .../analytics-drivers-coverage-triage.tsx          |   18 +-
 .../analytics-drivers-forecast-target.tsx          |   12 +-
 .../_components/analytics-overview.tsx             |   19 +-
 .../(legacy)/crm-v1/_components/insight-cards.tsx  |   12 +-
 .../crm-v1/_components/operational-cards.tsx       |   10 +-
 .../(legacy)/crm-v1/_components/overview-cards.tsx |   24 +-
 .../_components/recent-leads-table/table.tsx       |   20 +-
 .../_components/chart-area-interactive.tsx         |   24 +-
 .../_components/proposal-sections-table/table.tsx  |   24 +-
 .../default-v1/_components/section-cards.tsx       |   18 +-
 .../finance-v1/_components/card-overview.tsx       |   32 +-
 .../finance-v1/_components/cash-flow-overview.tsx  |   20 +-
 .../finance-v1/_components/income-reliability.tsx  |   18 +-
 .../_components/kpis/monthly-cash-flow.tsx         |    4 +-
 .../finance-v1/_components/kpis/net-worth.tsx      |    8 +-
 .../_components/kpis/primary-account.tsx           |    8 +-
 .../finance-v1/_components/kpis/savings-rate.tsx   |    8 +-
 .../finance-v1/_components/spending-breakdown.tsx  |    6 +-
 .../(main)/dashboard/(legacy)/finance-v1/page.tsx  |   10 +-
 src/app/(main)/dashboard/[...not-found]/page.tsx   |    6 +-
 .../_components/sidebar/layout-controls.tsx        |   74 +-
 .../_components/sidebar/nav-documents.tsx          |    6 +-
 .../dashboard/_components/sidebar/nav-main.tsx     |    8 +-
 .../_components/sidebar/search-dialog.tsx          |    6 +-
 .../_components/sidebar/sidebar-support-card.tsx   |    6 +-
 .../academy/_components/assignment-status.tsx      |    4 +-
 .../academy/_components/class-schedule.tsx         |   34 +-
 .../dashboard/academy/_components/kpi-cards.tsx    |   18 +-
 .../academy/_components/performance-highlights.tsx |    4 +-
 .../academy/_components/upcoming-events.tsx        |    4 +-
 src/app/(main)/dashboard/academy/page.tsx          |    6 +-
 .../analytics/_components/analytics-kpi-strip.tsx  |   22 +-
 .../analytics/_components/analytics-toolbar.tsx    |   16 +-
 .../analytics/_components/realtime-visitors.tsx    |   16 +-
 .../dashboard/analytics/_components/top-pages.tsx  |   10 +-
 .../analytics/_components/top-traffic-sources.tsx  |   10 +-
 .../analytics/_components/traffic-quality.tsx      |    4 +-
 src/app/(main)/dashboard/analytics/page.tsx        |   24 +-
 .../dashboard/calendar/_components/calendar.tsx    |    4 +-
 src/app/(main)/dashboard/chat/page.tsx             |   10 +-
 src/app/(main)/dashboard/coming-soon/page.tsx      |    6 +-
 .../(main)/dashboard/crm/_components/kpi-cards.tsx |   22 +-
 .../crm/_components/opportunities-section.tsx      |    8 +-
 .../crm/_components/pipeline-activity.tsx          |   20 +-
 .../dashboard/crm/_components/task-reminders.tsx   |   12 +-
 .../dashboard/default/_components/metric-cards.tsx |   18 +-
 .../default/_components/performance-overview.tsx   |   26 +-
 .../_components/recent-customers-table/table.tsx   |   14 +-
 .../default/_components/subscriber-overview.tsx    |    6 +-
 .../ecommerce/_components/customer-reviews.tsx     |   18 +-
 .../dashboard/ecommerce/_components/inventory.tsx  |    4 +-
 .../dashboard/ecommerce/_components/kpi-strip.tsx  |   30 +-
 .../ecommerce/_components/recent-orders.tsx        |    8 +-
 .../ecommerce/_components/store-traffic.tsx        |    6 +-
 .../ecommerce/_components/top-products.tsx         |   14 +-
 .../ecommerce/_components/traffic-sources.tsx      |    6 +-
 src/app/(main)/dashboard/ecommerce/page.tsx        |   26 +-
 .../_components/balance-distribution-card.tsx      |    4 +-
 .../finance/_components/finance-notification.tsx   |    8 +-
 .../finance/_components/income-breakdown.tsx       |   10 +-
 .../finance/_components/overview-kpis.tsx          |   18 +-
 .../finance/_components/quick-actions.tsx          |   10 +-
 .../_components/transactions-overview-card.tsx     |   10 +-
 .../finance/_components/upcoming-transactions.tsx  |    4 +-
 .../dashboard/finance/_components/wallet.tsx       |    6 +-
 src/app/(main)/dashboard/finance/page.tsx          |   16 +-
 .../_components/infrastructure-header.tsx          |   12 +-
 .../_components/project-environments.tsx           |   19 +-
 .../invoice/_components/client-selector.tsx        |    4 +-
 .../invoice/_components/invoice-adjustments.tsx    |    8 +-
 .../invoice/_components/invoice-details.tsx        |    4 +-
 .../dashboard/invoice/_components/invoice-form.tsx |    8 +-
 .../invoice/_components/invoice-items.tsx          |   15 +-
 .../invoice/_components/invoice-paper.tsx          |   24 +-
 .../invoice/_components/invoice-preview.tsx        |    4 +-
 src/app/(main)/dashboard/invoice/page.tsx          |    6 +-
 .../(main)/dashboard/kanban/_components/kanban.tsx |    6 +-
 src/app/(main)/dashboard/layout.tsx                |    4 +-
 .../dashboard/logistics/_components/logistics.tsx  |    4 +-
 .../logistics/_components/shipment-details.tsx     |   36 +-
 .../logistics/_components/shipment-list.tsx        |   19 +-
 .../logistics/_components/shipment-route-map.tsx   |    4 +-
 src/app/(main)/dashboard/mail/page.tsx             |   10 +-
 .../productivity/_components/focus-card.tsx        |    8 +-
 .../productivity/_components/projects-section.tsx  |   12 +-
 .../productivity/_components/quick-actions.tsx     |    4 +-
 .../productivity/_components/quote-card.tsx        |    6 +-
 .../productivity/_components/recent-notes-card.tsx |    6 +-
 .../productivity/_components/tasks-section.tsx     |   12 +-
 .../_components/weekly-summary-card.tsx            |   10 +-
 src/app/(main)/dashboard/productivity/page.tsx     |    6 +-
 .../roles/_components/roles-table/table.tsx        |    4 +-
 .../(main)/dashboard/roles/_components/roles.tsx   |   58 +-
 .../dashboard/tasks/_components/tasks-toolbar.tsx  |    6 +-
 .../(main)/dashboard/tasks/_components/tasks.tsx   |   10 +-
 src/app/(main)/dashboard/tasks/page.tsx            |    6 +-
 .../dashboard/users/_components/users-table.tsx    |    4 +-
 .../(main)/dashboard/users/_components/users.tsx   |   22 +-
 src/app/(main)/mail/_components/mail-inbox.tsx     |    6 +-
 src/app/(main)/mail/_components/mail-sidebar.tsx   |    6 +-
 src/app/(main)/mail/_components/mail-view.tsx      |   34 +-
 src/app/(main)/mail/_components/mail.tsx           |    9 +-
 src/app/(main)/unauthorized/page.tsx               |    9 +-
 src/app/layout.tsx                                 |    7 +-
 src/app/not-found.tsx                              |    8 +-
 src/components/ui/breadcrumb.tsx                   |    7 +-
 src/components/ui/carousel.tsx                     |    7 +-
 src/components/ui/pagination.tsx                   |   13 +-
 src/components/ui/sidebar.tsx                      |   14 +-
 src/components/ui/spinner.tsx                      |    4 +-
 src/i18n/request.ts                                |   11 +
 130 files changed, 5448 insertions(+), 674 deletions(-)

diff --git a/messages/en.json b/messages/en.json
new file mode 100644
index 0000000..c6fe99b
--- /dev/null
+++ b/messages/en.json
@@ -0,0 +1,887 @@
+{
+  "analytics_actions_manager_queue": {
+    "3_deals": "3 Deals",
+    "actionable_deals": "Actionable deals",
+    "coach": "Coach",
+    "coach_queue": "Coach queue",
+    "escalate": "Escalate",
+    "escalate_coach_and_reforecast_before_com": "Escalate, coach, and reforecast before commit call",
+    "intervention_mix": "Intervention mix",
+    "leila_zhang_3_deals": "Leila Zhang · 3 deals",
+    "manager_action_queue": "Manager Action Queue",
+    "manager_focus": "Manager focus",
+    "median_risk": "Median risk",
+    "next_interventions": "Next interventions",
+    "no_action_monitor": "No-action monitor",
+    "owners_engaged": "Owners engaged",
+    "primary_owner": "Primary owner",
+    "reforecast": "Reforecast",
+    "revenue_in_play": "Revenue in play",
+    "stale_pipeline": "Stale pipeline",
+    "this_forecast_cycle": "This forecast cycle"
+  },
+  "analytics_actions_risk_ledger": {
+    "accounts_under_pressure_with_blocker_nex": "Accounts under pressure with blocker, next action, and owner responsibility.",
+    "close_date_already_exceeded": "Close date already exceeded",
+    "critical_accounts": "Critical accounts",
+    "current_filter_window": "Current filter window",
+    "escalations_due": "Escalations due",
+    "median_inactivity": "Median inactivity",
+    "next_7_days": "Next 7 days",
+    "overdue_revenue": "Overdue revenue",
+    "revenue_risk_ledger": "Revenue Risk Ledger",
+    "risk_ladder": "Risk Ladder",
+    "risk_ladder_80_current_window": "Risk Ladder >= 80 (current window)"
+  },
+  "analytics_drivers_coverage_triage": {
+    "1_9x_3_0x": "1.9x / 3.0x",
+    "4_deals_eta_10d": "4 deals • ETA 10d",
+    "at_risk": "At Risk",
+    "coverage_below_target_prioritize_qualifi": "Coverage below target. Prioritize qualified volume and shorter cycle time.",
+    "coverage_triage": "Coverage Triage",
+    "decision_ladder_for_this_forecast_cycle": "Decision ladder for this forecast cycle",
+    "gap_222_930": "Gap $222,930",
+    "open_top_5_deals": "Open top 5 deals"
+  },
+  "analytics_drivers_forecast_target": {
+    "12_week_trend_with_attainment_context": "12-week trend with attainment context",
+    "attainment": "Attainment",
+    "forecast_confidence": "Forecast Confidence",
+    "forecast_vs_target": "Forecast vs Target",
+    "weighted_pipeline": "Weighted Pipeline"
+  },
+  "analytics_kpi_strip": {
+    "conversion_rate": "Conversion Rate",
+    "engagement_rate": "Engagement Rate",
+    "last_4_weeks": "last 4 weeks",
+    "pageviews": "Pageviews",
+    "sessions": "Sessions",
+    "unique_visitors": "Unique Visitors"
+  },
+  "analytics_overview": {
+    "core_risk_signals_vs_previous_period": "Core risk signals vs previous period",
+    "filters": "Filters",
+    "previous_1_141_000": "Previous $1,141,000",
+    "revenue": "Revenue",
+    "risk_ladder_30": "Risk Ladder 30",
+    "risk_summary": "Risk summary",
+    "selected_range": "Selected range"
+  },
+  "analytics_toolbar": {
+    "analytics_actions": "Analytics actions",
+    "last_3_months": "Last 3 months",
+    "last_4_weeks": "Last 4 weeks",
+    "last_7_days": "Last 7 days",
+    "more_analytics_actions": "More analytics actions",
+    "select_range": "Select range",
+    "year_to_date": "Year to date"
+  },
+  "assignment_status": {
+    "assignment_status": "Assignment Status"
+  },
+  "balance_distribution_card": {
+    "account_allocation": "Account Allocation"
+  },
+  "breadcrumb": {
+    "breadcrumb": "breadcrumb",
+    "more": "More"
+  },
+  "calendar": {
+    "today": "Today"
+  },
+  "card_overview": {
+    "1_of_4_cards_added_overview_of_your_prim": "1 of 4 cards added · Overview of your primary card and upcoming payments",
+    "21st_monthly": "21st monthly",
+    "add_card": "Add Card",
+    "arham_khan": "Arham Khan",
+    "available_balance": "Available Balance",
+    "billing_cycle": "Billing cycle",
+    "card_limit": "Card Limit",
+    "card_type": "Card type",
+    "cvv": "CVV",
+    "manage_card": "Manage Card",
+    "my_card": "My Card",
+    "upcoming_payments": "Upcoming Payments",
+    "valid_thru": "Valid Thru",
+    "view_all_payments": "View All Payments",
+    "virtual": "Virtual"
+  },
+  "carousel": {
+    "next_slide": "Next slide",
+    "previous_slide": "Previous slide"
+  },
+  "cash_flow_overview": {
+    "cash_flow_overview": "Cash Flow Overview",
+    "expenses": "Expenses",
+    "income": "Income",
+    "last_6_months": "Last 6 Months",
+    "monthly_income_and_expenses_with_net_cas": "Monthly income and expenses with net cash impact.",
+    "select_period": "Select period",
+    "this_month": "This Month",
+    "this_year": "This Year",
+    "year_to_date": "Year to Date"
+  },
+  "chart_area_interactive": {
+    "last_3_months": "Last 3 months",
+    "last_30_days": "Last 30 days",
+    "last_7_days": "Last 7 days",
+    "select_a_value": "Select a value",
+    "total_for_the_last_3_months": "Total for the last 3 months",
+    "total_visitors": "Total Visitors"
+  },
+  "chat_conversation_list": {
+    "closed": "Closed",
+    "inbox": "Inbox"
+  },
+  "chat_header": {
+    "new_conversation": "New conversation",
+    "notifications": "Notifications",
+    "search_conversations": "Search conversations...",
+    "settings": "Settings",
+    "studio_chat": "Studio Chat"
+  },
+  "chat_profile_details": {
+    "activity": "Activity",
+    "call": "Call",
+    "close_profile": "Close profile",
+    "company": "Company",
+    "copy_link": "Copy link",
+    "details": "Details",
+    "email": "Email",
+    "files": "Files",
+    "location": "Location",
+    "more": "More",
+    "phone": "Phone",
+    "qualified_since": "Qualified since",
+    "role": "Role",
+    "schedule": "Schedule",
+    "stage": "Stage",
+    "tags": "Tags",
+    "timezone": "Timezone",
+    "website": "Website"
+  },
+  "chat_sidebar": {
+    "channels": "Channels",
+    "views": "Views"
+  },
+  "chat_thread": {
+    "ai_assist": "AI assist",
+    "attach_file": "Attach file",
+    "block_contact": "Block contact",
+    "call": "Call",
+    "emoji": "Emoji",
+    "format": "Format",
+    "insert_link": "Insert link",
+    "internal_note": "Internal note",
+    "may_6_2026": "May 6, 2026",
+    "more_actions": "More actions",
+    "reply": "Reply",
+    "send": "Send",
+    "snooze": "Snooze",
+    "tag": "Tag",
+    "type_your_message": "Type your message...",
+    "write_an_internal_note": "Write an internal note..."
+  },
+  "class_schedule": {
+    "cancelled": "Cancelled",
+    "class_schedule": "Class Schedule",
+    "computer_science": "Computer Science",
+    "english_literature": "English Literature",
+    "grade_11a_room_1_08": "Grade 11A • Room 1.08",
+    "grade_11a_room_2_14": "Grade 11A • Room 2.14",
+    "grade_11b_computing_lab": "Grade 11B • Computing Lab",
+    "grade_11b_seminar_room_3": "Grade 11B • Seminar Room 3",
+    "grade_11c_physics_lab": "Grade 11C • Physics Lab",
+    "in_progress": "In Progress",
+    "modern_european_history": "Modern European History",
+    "physics": "Physics",
+    "pure_mathematics": "Pure Mathematics",
+    "upcoming": "Upcoming"
+  },
+  "client_selector": {
+    "billed_to": "Billed To"
+  },
+  "columns": {
+    "actions": "Actions",
+    "archive": "Archive",
+    "archive_role": "Archive role",
+    "assign": "Assign",
+    "assign_reviewer": "Assign reviewer",
+    "capabilities": "Capabilities",
+    "contact_customer": "Contact customer",
+    "copy_order_id": "Copy order ID",
+    "cover_page": "Cover Page",
+    "date": "Date",
+    "delete": "Delete",
+    "design": "Design",
+    "done": "Done",
+    "drag_to_reorder": "Drag to reorder",
+    "duplicate_role": "Duplicate role",
+    "eddie_lake": "Eddie Lake",
+    "edit": "Edit",
+    "edit_opportunity": "Edit opportunity",
+    "edit_role": "Edit role",
+    "emily_whalen": "Emily Whalen",
+    "executive_summary": "Executive Summary",
+    "favorite": "Favorite",
+    "focus_documents": "Focus Documents",
+    "header": "Header",
+    "in_progress": "In Progress",
+    "jamik_tashpulatov": "Jamik Tashpulatov",
+    "labels": "Labels",
+    "limit": "Limit",
+    "make_a_copy": "Make a copy",
+    "manage_members": "Manage members",
+    "narrative": "Narrative",
+    "not_started": "Not Started",
+    "open_menu": "Open menu",
+    "open_order_actions": "Open order actions",
+    "order_actions": "Order Actions",
+    "review_permissions": "Review permissions",
+    "reviewer": "Reviewer",
+    "select_a_reviewer": "Select a reviewer",
+    "select_a_status": "Select a status",
+    "select_a_type": "Select a type",
+    "select_all": "Select all",
+    "select_all_customers_on_this_page": "Select all customers on this page",
+    "select_all_opportunities": "Select all opportunities",
+    "select_all_orders": "Select all orders",
+    "select_row": "Select row",
+    "showing_total_visitors_for_the_last_6_mo": "Showing total visitors for the last 6 months",
+    "status": "Status",
+    "submit": "Submit",
+    "table_of_contents": "Table of Contents",
+    "target": "Target",
+    "technical_approach": "Technical Approach",
+    "total": "Total",
+    "type": "Type",
+    "view": "View",
+    "view_details": "View details",
+    "view_order": "View order"
+  },
+  "customer_reviews": {
+    "12_8k_reviews": "12.8K reviews",
+    "4_6_average_rating": "4.6 average rating",
+    "customers_reviewed_this_month": "Customers reviewed this month",
+    "melody_macy": "Melody Macy",
+    "next_review": "Next review",
+    "previous_review": "Previous review",
+    "reviews": "Reviews",
+    "the_linen_overshirt_arrived_faster_than": "The linen overshirt arrived faster than expected and the fit was exactly right."
+  },
+  "finance_notification": {
+    "credit_score_updated": "Credit score updated",
+    "view_details": "View details",
+    "your_score_increased_by_14_points_to_782": "Your score increased by 14 points to 782."
+  },
+  "focus_card": {
+    "focus": "Focus",
+    "no_notifications_full_focus": "No notifications · Full focus",
+    "start": "Start"
+  },
+  "income_breakdown": {
+    "dividends_and_interest_11": "Dividends and interest · 11%",
+    "freelance_projects_21": "Freelance projects · 21%",
+    "income_sources": "Income sources",
+    "primary_salary_68": "Primary salary · 68%"
+  },
+  "income_reliability": {
+    "based_on_last_6_months_of_income": "Based on last 6 months of income",
+    "fixed_income": "Fixed Income",
+    "fluctuating_sources": "Fluctuating sources",
+    "high_reliability": "High Reliability",
+    "how_consistent_your_income_has_been_rece": "How consistent your income has been recently.",
+    "income_reliability": "Income Reliability",
+    "recurring_predictable": "Recurring · Predictable",
+    "variable_income": "Variable Income"
+  },
+  "infrastructure_header": {
+    "infrastructure_overview": "Infrastructure Overview",
+    "k": "⌘ K",
+    "last_updated_30s_ago": "Last updated: 30s ago",
+    "monitor_environments_server_health_uptim": "Monitor environments, server health, uptime, and resource usage across every project.",
+    "search_by_name_or_domain": "Search by name or domain..."
+  },
+  "insight_cards": {
+    "average_progress_78_2_projects_above_tar": "Average progress: 78% · 2 projects above target",
+    "download_csv": "Download CSV",
+    "leads_by_source": "Leads by Source",
+    "project_revenue_vs_target": "Project Revenue vs. Target",
+    "view_full_report": "View Full Report"
+  },
+  "inventory": {
+    "inventory": "Inventory"
+  },
+  "invoice_adjustments": {
+    "adjustments": "Adjustments",
+    "discount_value": "Discount value",
+    "value": "Value"
+  },
+  "invoice_details": {
+    "reference_number": "Reference Number"
+  },
+  "invoice_form": {
+    "business": "Business",
+    "invoice": "Invoice",
+    "payment": "Payment"
+  },
+  "invoice_items": {
+    "description": "Description",
+    "invoice_items": "Invoice Items",
+    "line_total": "Line Total",
+    "line_total_2": "Line total",
+    "unit_cost": "Unit cost",
+    "units": "Units"
+  },
+  "invoice_paper": {
+    "balance_due": "Balance due",
+    "bill_to": "Bill to",
+    "description": "Description",
+    "from": "From",
+    "invoice": "Invoice",
+    "line_total": "Line total",
+    "net_amount": "Net amount",
+    "payment_account": "Payment account",
+    "prepared_for_prompt_processing": "Prepared for prompt processing.",
+    "unit_cost": "Unit cost",
+    "units": "Units"
+  },
+  "invoice_preview": {
+    "preview": "Preview"
+  },
+  "kanban": {
+    "open_add_task_menu": "Open add task menu",
+    "search_tasks": "Search tasks"
+  },
+  "kpi_cards": {
+    "1_in_progress_3_upcoming_1_cancelled": "1 in progress · 3 upcoming · 1 cancelled",
+    "63_pending_18_overdue": "63 pending · 18 overdue",
+    "across_5_grade_11_sections": "across 5 Grade 11 sections",
+    "assignments": "Assignments",
+    "avg_attendance": "Avg. Attendance",
+    "classes_today": "Classes Today",
+    "keep_tabs_on_lead_quality_open_opportuni": "Keep tabs on lead quality, open opportunities, and conversion rates across the current sales cycle.",
+    "last_month": "last month",
+    "lead_pipeline_value": "Lead Pipeline Value",
+    "lead_to_deal_rate": "Lead-to-Deal Rate",
+    "open_opportunities": "Open Opportunities",
+    "pipeline_overview": "Pipeline Overview",
+    "qualified_lead_rate": "Qualified Lead Rate",
+    "students_taught": "Students Taught",
+    "vs_last_month": "vs last month"
+  },
+  "kpi_strip": {
+    "2_4_pts": "+2.4 pts",
+    "average_order": "Average Order",
+    "customer_growth": "Customer Growth",
+    "return_requests": "Return Requests",
+    "sales_overview": "Sales Overview",
+    "stock_accuracy": "Stock Accuracy",
+    "total_orders": "Total Orders",
+    "total_sales": "Total Sales",
+    "vs_last_audit": "vs last audit",
+    "vs_last_month": "vs last month",
+    "vs_last_week": "vs last week"
+  },
+  "layout_controls": {
+    "centered": "Centered",
+    "customize_your_dashboard_layout_preferen": "Customize your dashboard layout preferences.",
+    "dark": "Dark",
+    "floating": "Floating",
+    "fonts": "Fonts",
+    "full_width": "Full Width",
+    "icon": "Icon",
+    "inset": "Inset",
+    "light": "Light",
+    "navbar_behavior": "Navbar Behavior",
+    "offcanvas": "OffCanvas",
+    "page_layout": "Page Layout",
+    "preferences": "Preferences",
+    "preset": "Preset",
+    "restore_defaults": "Restore Defaults",
+    "scroll": "Scroll",
+    "select_font": "Select font",
+    "sidebar": "Sidebar",
+    "sidebar_collapse_mode": "Sidebar Collapse Mode",
+    "sidebar_style": "Sidebar Style",
+    "sticky": "Sticky",
+    "system": "System",
+    "theme_mode": "Theme Mode",
+    "theme_preset": "Theme Preset",
+    "toggle_centered": "Toggle centered",
+    "toggle_dark": "Toggle dark",
+    "toggle_floating": "Toggle floating",
+    "toggle_full_width": "Toggle full-width",
+    "toggle_icon": "Toggle icon",
+    "toggle_inset": "Toggle inset",
+    "toggle_light": "Toggle light",
+    "toggle_offcanvas": "Toggle offcanvas",
+    "toggle_scroll": "Toggle scroll",
+    "toggle_sidebar": "Toggle sidebar",
+    "toggle_sticky": "Toggle sticky",
+    "toggle_system": "Toggle system"
+  },
+  "layout": {
+    "check_out_the_docs_or_open_an_issue_on_g": "Check out the docs or open an issue on GitHub, community support is just a click away.",
+    "clone_the_repo_install_dependencies_and": "Clone the repo, install dependencies, and your dashboard is live in minutes.",
+    "design_build_launch_repeat": "Design. Build. Launch. Repeat.",
+    "need_help": "Need help?",
+    "open_github_repository": "Open GitHub repository",
+    "ready_to_launch": "Ready to launch?"
+  },
+  "login_form": {
+    "login": "Login"
+  },
+  "logistics": {
+    "selected_shipment_details_and_route_map": "Selected shipment details and route map."
+  },
+  "mail_inbox": {
+    "inbox": "Inbox",
+    "search": "Search..."
+  },
+  "mail_sidebar": {
+    "folders": "Folders",
+    "new_email": "New email"
+  },
+  "mail_view": {
+    "archive": "Archive",
+    "close_message": "Close message",
+    "more_actions": "More actions",
+    "move_to_trash": "Move to trash",
+    "next_message": "Next message",
+    "pin_thread": "Pin thread",
+    "previous_message": "Previous message",
+    "reply": "Reply"
+  },
+  "mail": {
+    "loading_mail": "Loading mail...",
+    "mail_message": "Mail message",
+    "read_the_selected_email_message": "Read the selected email message"
+  },
+  "metric_cards": {
+    "acquisition_needs_attention": "Acquisition needs attention",
+    "active_accounts": "Active Accounts",
+    "engagement_exceeds_targets": "Engagement exceeds targets",
+    "growth_rate": "Growth Rate",
+    "meets_growth_projections": "Meets growth projections",
+    "new_customers": "New Customers",
+    "total_revenue": "Total Revenue",
+    "visitors_for_the_last_6_months": "Visitors for the last 6 months"
+  },
+  "monthly_cash_flow": {
+    "this_month_net": "This month · Net"
+  },
+  "nav_documents": {
+    "documents": "Documents",
+    "more": "More"
+  },
+  "nav_main": {
+    "inbox": "Inbox",
+    "quick_create": "Quick Create"
+  },
+  "net_worth": {
+    "3_680_mom": "+$3,680 MoM",
+    "across_all_linked_accounts": "Across all linked accounts",
+    "this_month": "This month"
+  },
+  "not_found": {
+    "go_back_home": "Go back home",
+    "page_not_found": "Page not found.",
+    "the_page_you_are_looking_for_could_not_b": "The page you are looking for could not be found."
+  },
+  "operational_cards": {
+    "action_items": "Action Items",
+    "leads_increased_by_18_2_since_last_month": "Leads increased by 18.2% since last month.",
+    "sales_by_region": "Sales by Region",
+    "sales_pipeline": "Sales Pipeline"
+  },
+  "opportunities_section": {
+    "recent_opportunities": "Recent Opportunities",
+    "search_deals": "Search deals...",
+    "track_qualified_leads_moving_through_dis": "Track qualified leads moving through discovery, proposal, and closing stages."
+  },
+  "overview_cards": {
+    "35_growth_since_last_year": "+35% growth since last year",
+    "last_6_months": "Last 6 Months",
+    "last_month": "Last Month",
+    "new_leads": "New Leads",
+    "projects_won": "Projects Won",
+    "proposals_sent": "Proposals Sent",
+    "revenue": "Revenue",
+    "revenue_growth": "Revenue Growth",
+    "year_to_date_ytd": "Year to Date (YTD)"
+  },
+  "overview_kpis": {
+    "124_more_than_last_month": "$124 more than last month",
+    "410_above_your_30_day_average": "$410 above your 30-day average",
+    "9_8k_vs_last_month": "+$9.8K vs last month",
+    "available_cash": "Available cash",
+    "monthly_spend": "Monthly spend",
+    "net_worth": "Net worth",
+    "savings_rate": "Savings rate",
+    "up_from_25_6_last_month": "Up from 25.6% last month"
+  },
+  "page": {
+    "academy_dashboard": "Academy Dashboard",
+    "accounts": "Accounts",
+    "accounts_view_coming_soon": "Accounts view coming soon.",
+    "acquisition": "Acquisition",
+    "acquisition_view_coming_soon": "Acquisition view coming soon.",
+    "activity": "Activity",
+    "add_invoice_details_review_the_preview_a": "Add invoice details, review the preview, and send it to your client.",
+    "all_channels": "All Channels",
+    "audience": "Audience",
+    "audience_view_coming_soon": "Audience view coming soon.",
+    "chat_preview": "Chat preview",
+    "coming_soon": "Coming Soon",
+    "conversions": "Conversions",
+    "conversions_view_coming_soon": "Conversions view coming soon.",
+    "create_new_invoice": "Create New Invoice",
+    "create_your_account": "Create your account",
+    "dashboard": "Dashboard",
+    "engagement": "Engagement",
+    "engagement_view_coming_soon": "Engagement view coming soon.",
+    "fill_in_your_details_below_we_promise_no": "Fill in your details below. We promise not to quiz you about your first pet&apos;s name (this time).",
+    "go_to_homepage": "Go to Homepage",
+    "good_morning_arham": "Good morning, Arham.",
+    "good_morning_teacher_heres_a_quick_overv": "Good morning, Teacher. Here's a quick overview of today's activity.",
+    "hello_again": "Hello again",
+    "hello_aiy": "Hello, Aiy",
+    "heres_a_list_of_your_tasks_for_this_mont": "Here's a list of your tasks for this month!",
+    "insights": "Insights",
+    "last_30_days": "Last 30 Days",
+    "last_month": "Last Month",
+    "let_apos_s_make_today_productive_and_mea": "Let&apos;s make today productive and meaningful.",
+    "login": "Login",
+    "login_to_continue": "Login to continue",
+    "login_to_your_account": "Login to your account",
+    "mail_preview": "Mail preview",
+    "marketplace": "Marketplace",
+    "monitor_traffic_engagement_and_conversio": "Monitor traffic, engagement, and conversion performance in one view.",
+    "online_store": "Online Store",
+    "open_chat_in_new_tab": "Open chat in new tab",
+    "open_mail_in_new_tab": "Open mail in new tab",
+    "or_continue_with": "Or continue with",
+    "overview": "Overview",
+    "page_not_found": "Page not found.",
+    "personal_finances": "Personal Finances",
+    "please_enter_your_details_to_login": "Please enter your details to login.",
+    "please_enter_your_details_to_register": "Please enter your details to register.",
+    "register": "Register",
+    "retail": "Retail",
+    "social": "Social",
+    "store_overview": "Store Overview",
+    "this_iframe_shows_the_standalone_chat_sc": "This iframe shows the standalone chat screen. Open it in full screen for a better view.",
+    "this_iframe_shows_the_standalone_mail_sc": "This iframe shows the standalone mail screen. Open it in full screen for a better view.",
+    "this_month": "This Month",
+    "this_page_is_under_development_and_will": "This page is under development and will be available in future updates.",
+    "this_section_will_be_added_in_future_upd": "This section will be added in future updates.",
+    "transactions": "Transactions",
+    "transactions_view_coming_soon": "Transactions view coming soon.",
+    "unauthorized_access": "Unauthorized Access",
+    "updated_5_min_ago": "Updated 5 min ago",
+    "utilities": "Utilities",
+    "welcome": "Welcome!",
+    "welcome_back": "Welcome back!",
+    "welcome_back_enter_your_email_and_passwo": "Welcome back. Enter your email and password, let&apos;s hope you remember them this time.",
+    "year_to_date": "Year to Date",
+    "you_apos_re_in_the_right_place": "You&apos;re in the right place.",
+    "you_do_not_have_permission_to_view_the_r": "You do not have permission to view the requested content. Please contact the site administrator if you believe this is an error."
+  },
+  "pagination": {
+    "go_to_next_page": "Go to next page",
+    "go_to_previous_page": "Go to previous page",
+    "more_pages": "More pages",
+    "pagination": "pagination"
+  },
+  "performance_highlights": {
+    "performance_highlights": "Performance Highlights"
+  },
+  "performance_overview": {
+    "3_months": "3 months",
+    "all_segments": "All segments",
+    "customer_activity": "Customer Activity",
+    "customer_activity_for_the_last_3_months": "Customer activity for the last 3 months",
+    "last_3_months": "Last 3 months",
+    "organic": "Organic",
+    "paid": "Paid",
+    "period": "Period",
+    "segments": "Segments",
+    "view_report": "View report"
+  },
+  "pipeline_activity": {
+    "discovery_calls_booked": "Discovery Calls Booked",
+    "last_12_months": "Last 12 months",
+    "last_30_days": "Last 30 days",
+    "last_quarter": "Last quarter",
+    "leads": "leads",
+    "meetings": "meetings",
+    "qualified_lead_flow": "Qualified Lead Flow",
+    "select_range": "Select range",
+    "total_qualified_leads_captured_over_the": "Total qualified leads captured over the last 12 months."
+  },
+  "primary_account": {
+    "available_balance": "Available balance",
+    "pay": "Pay",
+    "request": "Request"
+  },
+  "project_environments": {
+    "environment": "Environment",
+    "health": "Health",
+    "latency": "Latency",
+    "no_environments_in_this_project": "No environments in this project",
+    "platform": "Platform",
+    "resources": "Resources",
+    "server": "Server",
+    "uptime": "Uptime"
+  },
+  "projects_section": {
+    "active": "Active",
+    "completed": "Completed",
+    "planning": "Planning",
+    "projects": "Projects"
+  },
+  "quick_actions": {
+    "quick_actions": "Quick Actions",
+    "quick_transfer": "Quick Transfer",
+    "send": "Send",
+    "shortcuts": "Shortcuts",
+    "usd": "USD"
+  },
+  "quote_card": {
+    "keep_showing_up_you_apos_ve_got_this": "Keep showing up. You&apos;ve got this.",
+    "small_consistent_actions_lead_to_big_res": "Small, consistent actions lead to big results."
+  },
+  "realtime_visitors": {
+    "canada": "Canada",
+    "india": "India",
+    "live": "Live",
+    "per_minute": "per minute",
+    "realtime_visitors": "Realtime Visitors",
+    "united_kingdom": "United Kingdom",
+    "united_states": "United States"
+  },
+  "recent_notes_card": {
+    "recent_notes": "Recent Notes",
+    "view_all": "View all"
+  },
+  "recent_orders": {
+    "download_orders": "Download orders",
+    "open_orders": "Open orders",
+    "recent_orders": "Recent Orders"
+  },
+  "register_form": {
+    "register": "Register"
+  },
+  "roles": {
+    "3_roles_have_unreviewed_permission_chang": "3 roles have unreviewed permission changes.",
+    "access_reviews": "Access reviews",
+    "access_reviews_coming_soon": "Access Reviews Coming Soon",
+    "active": "Active",
+    "alex_kim": "Alex Kim",
+    "all": "All",
+    "chris_lee": "Chris Lee",
+    "create_role": "Create role",
+    "custom": "Custom",
+    "jane_doe": "Jane Doe",
+    "manage_access_roles_and_permissions_acro": "Manage access roles and permissions across your organization.",
+    "needs_review": "Needs review",
+    "owner": "Owner:",
+    "permission_sets": "Permission sets",
+    "permission_sets_coming_soon": "Permission Sets Coming Soon",
+    "review_required": "Review required",
+    "roles": "Roles",
+    "roles_permissions": "Roles & Permissions",
+    "search_roles": "Search roles...",
+    "status": "Status:",
+    "system": "System",
+    "type": "Type:"
+  },
+  "savings_rate": {
+    "3_5_mom": "+3.5% MoM",
+    "above_your_average": "Above your average",
+    "this_month_after_expenses": "This month · After expenses"
+  },
+  "search_dialog": {
+    "no_results_found": "No results found.",
+    "search_dashboards_users_and_more": "Search dashboards, users, and more…"
+  },
+  "section_cards": {
+    "acquisition_needs_attention": "Acquisition needs attention",
+    "active_accounts": "Active Accounts",
+    "engagement_exceed_targets": "Engagement exceed targets",
+    "growth_rate": "Growth Rate",
+    "meets_growth_projections": "Meets growth projections",
+    "new_customers": "New Customers",
+    "total_revenue": "Total Revenue",
+    "visitors_for_the_last_6_months": "Visitors for the last 6 months"
+  },
+  "shipment_details": {
+    "activity": "Activity",
+    "activity_view_coming_soon": "Activity view coming soon.",
+    "cargo": "Cargo",
+    "cargo_details": "Cargo details",
+    "cargo_view_coming_soon": "Cargo view coming soon.",
+    "copy_shipment_id": "Copy shipment ID",
+    "documents": "Documents",
+    "documents_view_coming_soon": "Documents view coming soon.",
+    "overview": "Overview",
+    "route": "Route",
+    "route_view_coming_soon": "Route view coming soon.",
+    "select_a_shipment_to_view_details": "Select a shipment to view details.",
+    "status": "Status",
+    "total_weight": "Total weight",
+    "transport_mode": "Transport mode"
+  },
+  "shipment_list": {
+    "all_156": "All (156)",
+    "cargo": "Cargo",
+    "delayed_9": "Delayed (9)",
+    "delivered_98": "Delivered (98)",
+    "eta": "ETA",
+    "in_transit_32": "In Transit (32)",
+    "search_shipments": "Search shipments",
+    "search_shipments_2": "Search shipments...",
+    "shipments": "Shipments"
+  },
+  "shipment_route_map": {
+    "southeast_asia_shipment_region_map": "Southeast Asia shipment region map"
+  },
+  "sidebar_support_card": {
+    "looking_for_something_more": "Looking for something more?",
+    "reach_out_on_x": "Reach out on X"
+  },
+  "sidebar": {
+    "displays_the_mobile_sidebar": "Displays the mobile sidebar.",
+    "sidebar": "Sidebar",
+    "toggle_sidebar": "Toggle Sidebar"
+  },
+  "spending_breakdown": {
+    "expense_distribution_by_category": "Expense distribution by category.",
+    "spending_breakdown": "Spending Breakdown"
+  },
+  "spinner": {
+    "loading": "Loading"
+  },
+  "store_traffic": {
+    "12_9k_visits": "12.9K visits",
+    "store_traffic": "Store Traffic"
+  },
+  "subscriber_overview": {
+    "18_426_customers": "18,426 Customers",
+    "recent_customer_records_with_plan_billin": "Recent customer records with plan, billing, status, and signup activity."
+  },
+  "table": {
+    "add_section": "Add Section",
+    "export": "Export",
+    "focus_documents": "Focus Documents",
+    "go_to_first_page": "Go to first page",
+    "go_to_last_page": "Go to last page",
+    "go_to_next_page": "Go to next page",
+    "go_to_previous_page": "Go to previous page",
+    "outline": "Outline",
+    "recent_leads": "Recent Leads",
+    "rows_per_page": "Rows per page",
+    "search_customers": "Search customers...",
+    "select_a_view": "Select a view",
+    "toggle_columns": "Toggle columns",
+    "track_and_manage_your_latest_leads_and_t": "Track and manage your latest leads and their status.",
+    "view": "View"
+  },
+  "task_reminders": {
+    "monthly_proposal_goal": "Monthly Proposal Goal",
+    "product_demo_with_tim": "Product demo with Tim",
+    "sent": "sent",
+    "upcoming_meetings": "Upcoming Meetings",
+    "weblabs_studio": "Weblabs Studio"
+  },
+  "tasks_section": {
+    "tasks": "Tasks",
+    "this_week": "This Week",
+    "today": "Today",
+    "tomorrow": "Tomorrow"
+  },
+  "tasks_toolbar": {
+    "filter_tasks": "Filter tasks...",
+    "toggle_columns": "Toggle columns"
+  },
+  "tasks": {
+    "go_to_first_page": "Go to first page",
+    "go_to_last_page": "Go to last page",
+    "prev": "Prev",
+    "rows_per_page": "Rows per page"
+  },
+  "top_pages": {
+    "avg_time": "Avg Time",
+    "bounce": "Bounce",
+    "page_performance": "Page Performance",
+    "views": "Views"
+  },
+  "top_products": {
+    "73_of_sales": "73% of sales",
+    "products": "Products",
+    "sales": "Sales",
+    "sales_by_category": "Sales by category",
+    "share": "Share",
+    "top_products": "Top Products"
+  },
+  "top_traffic_sources": {
+    "campaigns": "Campaigns",
+    "referrers": "Referrers",
+    "sources": "Sources",
+    "traffic_sources": "Traffic Sources"
+  },
+  "traffic_quality": {
+    "traffic_quality": "Traffic Quality"
+  },
+  "traffic_sources": {
+    "14_8k_visits": "14.8K visits",
+    "traffic_sources": "Traffic Sources"
+  },
+  "transactions_overview_card": {
+    "monthly": "Monthly",
+    "spending_overview": "Spending Overview",
+    "weekly": "Weekly",
+    "yearly": "Yearly"
+  },
+  "upcoming_events": {
+    "upcoming_events": "Upcoming Events"
+  },
+  "upcoming_transactions": {
+    "upcoming_bills_payments": "Upcoming Bills & Payments"
+  },
+  "users_columns": {
+    "actions": "Actions",
+    "deactivate_user": "Deactivate user",
+    "edit_user": "Edit user",
+    "manage_team": "Manage team",
+    "resend_invite": "Resend invite",
+    "select_all_users": "Select all users",
+    "view_profile": "View profile"
+  },
+  "users_table": {
+    "rows_per_page": "Rows per page"
+  },
+  "users": {
+    "grid_view": "Grid view",
+    "k": "⌘K",
+    "list_view": "List view",
+    "manage_your_organization_members_and_the": "Manage your organization members and their access.",
+    "role": "Role:",
+    "search_users": "Search users...",
+    "status": "Status:",
+    "team": "Team:",
+    "users": "Users",
+    "workspace": "Workspace:"
+  },
+  "wallet": {
+    "air_gapped": "Air-Gapped",
+    "wallet": "Wallet"
+  },
+  "weekly_summary_card": {
+    "4_of_6_goals_completed": "4 of 6 goals completed",
+    "this_week": "This Week",
+    "view_all": "View all",
+    "youre_doing_great_keep_the_momentum_goin": "You’re doing great. Keep the momentum going."
+  }
+}
diff --git a/messages/ja.json b/messages/ja.json
new file mode 100644
index 0000000..c6fe99b
--- /dev/null
+++ b/messages/ja.json
@@ -0,0 +1,887 @@
+{
+  "analytics_actions_manager_queue": {
+    "3_deals": "3 Deals",
+    "actionable_deals": "Actionable deals",
+    "coach": "Coach",
+    "coach_queue": "Coach queue",
+    "escalate": "Escalate",
+    "escalate_coach_and_reforecast_before_com": "Escalate, coach, and reforecast before commit call",
+    "intervention_mix": "Intervention mix",
+    "leila_zhang_3_deals": "Leila Zhang · 3 deals",
+    "manager_action_queue": "Manager Action Queue",
+    "manager_focus": "Manager focus",
+    "median_risk": "Median risk",
+    "next_interventions": "Next interventions",
+    "no_action_monitor": "No-action monitor",
+    "owners_engaged": "Owners engaged",
+    "primary_owner": "Primary owner",
+    "reforecast": "Reforecast",
+    "revenue_in_play": "Revenue in play",
+    "stale_pipeline": "Stale pipeline",
+    "this_forecast_cycle": "This forecast cycle"
+  },
+  "analytics_actions_risk_ledger": {
+    "accounts_under_pressure_with_blocker_nex": "Accounts under pressure with blocker, next action, and owner responsibility.",
+    "close_date_already_exceeded": "Close date already exceeded",
+    "critical_accounts": "Critical accounts",
+    "current_filter_window": "Current filter window",
+    "escalations_due": "Escalations due",
+    "median_inactivity": "Median inactivity",
+    "next_7_days": "Next 7 days",
+    "overdue_revenue": "Overdue revenue",
+    "revenue_risk_ledger": "Revenue Risk Ledger",
+    "risk_ladder": "Risk Ladder",
+    "risk_ladder_80_current_window": "Risk Ladder >= 80 (current window)"
+  },
+  "analytics_drivers_coverage_triage": {
+    "1_9x_3_0x": "1.9x / 3.0x",
+    "4_deals_eta_10d": "4 deals • ETA 10d",
+    "at_risk": "At Risk",
+    "coverage_below_target_prioritize_qualifi": "Coverage below target. Prioritize qualified volume and shorter cycle time.",
+    "coverage_triage": "Coverage Triage",
+    "decision_ladder_for_this_forecast_cycle": "Decision ladder for this forecast cycle",
+    "gap_222_930": "Gap $222,930",
+    "open_top_5_deals": "Open top 5 deals"
+  },
+  "analytics_drivers_forecast_target": {
+    "12_week_trend_with_attainment_context": "12-week trend with attainment context",
+    "attainment": "Attainment",
+    "forecast_confidence": "Forecast Confidence",
+    "forecast_vs_target": "Forecast vs Target",
+    "weighted_pipeline": "Weighted Pipeline"
+  },
+  "analytics_kpi_strip": {
+    "conversion_rate": "Conversion Rate",
+    "engagement_rate": "Engagement Rate",
+    "last_4_weeks": "last 4 weeks",
+    "pageviews": "Pageviews",
+    "sessions": "Sessions",
+    "unique_visitors": "Unique Visitors"
+  },
+  "analytics_overview": {
+    "core_risk_signals_vs_previous_period": "Core risk signals vs previous period",
+    "filters": "Filters",
+    "previous_1_141_000": "Previous $1,141,000",
+    "revenue": "Revenue",
+    "risk_ladder_30": "Risk Ladder 30",
+    "risk_summary": "Risk summary",
+    "selected_range": "Selected range"
+  },
+  "analytics_toolbar": {
+    "analytics_actions": "Analytics actions",
+    "last_3_months": "Last 3 months",
+    "last_4_weeks": "Last 4 weeks",
+    "last_7_days": "Last 7 days",
+    "more_analytics_actions": "More analytics actions",
+    "select_range": "Select range",
+    "year_to_date": "Year to date"
+  },
+  "assignment_status": {
+    "assignment_status": "Assignment Status"
+  },
+  "balance_distribution_card": {
+    "account_allocation": "Account Allocation"
+  },
+  "breadcrumb": {
+    "breadcrumb": "breadcrumb",
+    "more": "More"
+  },
+  "calendar": {
+    "today": "Today"
+  },
+  "card_overview": {
+    "1_of_4_cards_added_overview_of_your_prim": "1 of 4 cards added · Overview of your primary card and upcoming payments",
+    "21st_monthly": "21st monthly",
+    "add_card": "Add Card",
+    "arham_khan": "Arham Khan",
+    "available_balance": "Available Balance",
+    "billing_cycle": "Billing cycle",
+    "card_limit": "Card Limit",
+    "card_type": "Card type",
+    "cvv": "CVV",
+    "manage_card": "Manage Card",
+    "my_card": "My Card",
+    "upcoming_payments": "Upcoming Payments",
+    "valid_thru": "Valid Thru",
+    "view_all_payments": "View All Payments",
+    "virtual": "Virtual"
+  },
+  "carousel": {
+    "next_slide": "Next slide",
+    "previous_slide": "Previous slide"
+  },
+  "cash_flow_overview": {
+    "cash_flow_overview": "Cash Flow Overview",
+    "expenses": "Expenses",
+    "income": "Income",
+    "last_6_months": "Last 6 Months",
+    "monthly_income_and_expenses_with_net_cas": "Monthly income and expenses with net cash impact.",
+    "select_period": "Select period",
+    "this_month": "This Month",
+    "this_year": "This Year",
+    "year_to_date": "Year to Date"
+  },
+  "chart_area_interactive": {
+    "last_3_months": "Last 3 months",
+    "last_30_days": "Last 30 days",
+    "last_7_days": "Last 7 days",
+    "select_a_value": "Select a value",
+    "total_for_the_last_3_months": "Total for the last 3 months",
+    "total_visitors": "Total Visitors"
+  },
+  "chat_conversation_list": {
+    "closed": "Closed",
+    "inbox": "Inbox"
+  },
+  "chat_header": {
+    "new_conversation": "New conversation",
+    "notifications": "Notifications",
+    "search_conversations": "Search conversations...",
+    "settings": "Settings",
+    "studio_chat": "Studio Chat"
+  },
+  "chat_profile_details": {
+    "activity": "Activity",
+    "call": "Call",
+    "close_profile": "Close profile",
+    "company": "Company",
+    "copy_link": "Copy link",
+    "details": "Details",
+    "email": "Email",
+    "files": "Files",
+    "location": "Location",
+    "more": "More",
+    "phone": "Phone",
+    "qualified_since": "Qualified since",
+    "role": "Role",
+    "schedule": "Schedule",
+    "stage": "Stage",
+    "tags": "Tags",
+    "timezone": "Timezone",
+    "website": "Website"
+  },
+  "chat_sidebar": {
+    "channels": "Channels",
+    "views": "Views"
+  },
+  "chat_thread": {
+    "ai_assist": "AI assist",
+    "attach_file": "Attach file",
+    "block_contact": "Block contact",
+    "call": "Call",
+    "emoji": "Emoji",
+    "format": "Format",
+    "insert_link": "Insert link",
+    "internal_note": "Internal note",
+    "may_6_2026": "May 6, 2026",
+    "more_actions": "More actions",
+    "reply": "Reply",
+    "send": "Send",
+    "snooze": "Snooze",
+    "tag": "Tag",
+    "type_your_message": "Type your message...",
+    "write_an_internal_note": "Write an internal note..."
+  },
+  "class_schedule": {
+    "cancelled": "Cancelled",
+    "class_schedule": "Class Schedule",
+    "computer_science": "Computer Science",
+    "english_literature": "English Literature",
+    "grade_11a_room_1_08": "Grade 11A • Room 1.08",
+    "grade_11a_room_2_14": "Grade 11A • Room 2.14",
+    "grade_11b_computing_lab": "Grade 11B • Computing Lab",
+    "grade_11b_seminar_room_3": "Grade 11B • Seminar Room 3",
+    "grade_11c_physics_lab": "Grade 11C • Physics Lab",
+    "in_progress": "In Progress",
+    "modern_european_history": "Modern European History",
+    "physics": "Physics",
+    "pure_mathematics": "Pure Mathematics",
+    "upcoming": "Upcoming"
+  },
+  "client_selector": {
+    "billed_to": "Billed To"
+  },
+  "columns": {
+    "actions": "Actions",
+    "archive": "Archive",
+    "archive_role": "Archive role",
+    "assign": "Assign",
+    "assign_reviewer": "Assign reviewer",
+    "capabilities": "Capabilities",
+    "contact_customer": "Contact customer",
+    "copy_order_id": "Copy order ID",
+    "cover_page": "Cover Page",
+    "date": "Date",
+    "delete": "Delete",
+    "design": "Design",
+    "done": "Done",
+    "drag_to_reorder": "Drag to reorder",
+    "duplicate_role": "Duplicate role",
+    "eddie_lake": "Eddie Lake",
+    "edit": "Edit",
+    "edit_opportunity": "Edit opportunity",
+    "edit_role": "Edit role",
+    "emily_whalen": "Emily Whalen",
+    "executive_summary": "Executive Summary",
+    "favorite": "Favorite",
+    "focus_documents": "Focus Documents",
+    "header": "Header",
+    "in_progress": "In Progress",
+    "jamik_tashpulatov": "Jamik Tashpulatov",
+    "labels": "Labels",
+    "limit": "Limit",
+    "make_a_copy": "Make a copy",
+    "manage_members": "Manage members",
+    "narrative": "Narrative",
+    "not_started": "Not Started",
+    "open_menu": "Open menu",
+    "open_order_actions": "Open order actions",
+    "order_actions": "Order Actions",
+    "review_permissions": "Review permissions",
+    "reviewer": "Reviewer",
+    "select_a_reviewer": "Select a reviewer",
+    "select_a_status": "Select a status",
+    "select_a_type": "Select a type",
+    "select_all": "Select all",
+    "select_all_customers_on_this_page": "Select all customers on this page",
+    "select_all_opportunities": "Select all opportunities",
+    "select_all_orders": "Select all orders",
+    "select_row": "Select row",
+    "showing_total_visitors_for_the_last_6_mo": "Showing total visitors for the last 6 months",
+    "status": "Status",
+    "submit": "Submit",
+    "table_of_contents": "Table of Contents",
+    "target": "Target",
+    "technical_approach": "Technical Approach",
+    "total": "Total",
+    "type": "Type",
+    "view": "View",
+    "view_details": "View details",
+    "view_order": "View order"
+  },
+  "customer_reviews": {
+    "12_8k_reviews": "12.8K reviews",
+    "4_6_average_rating": "4.6 average rating",
+    "customers_reviewed_this_month": "Customers reviewed this month",
+    "melody_macy": "Melody Macy",
+    "next_review": "Next review",
+    "previous_review": "Previous review",
+    "reviews": "Reviews",
+    "the_linen_overshirt_arrived_faster_than": "The linen overshirt arrived faster than expected and the fit was exactly right."
+  },
+  "finance_notification": {
+    "credit_score_updated": "Credit score updated",
+    "view_details": "View details",
+    "your_score_increased_by_14_points_to_782": "Your score increased by 14 points to 782."
+  },
+  "focus_card": {
+    "focus": "Focus",
+    "no_notifications_full_focus": "No notifications · Full focus",
+    "start": "Start"
+  },
+  "income_breakdown": {
+    "dividends_and_interest_11": "Dividends and interest · 11%",
+    "freelance_projects_21": "Freelance projects · 21%",
+    "income_sources": "Income sources",
+    "primary_salary_68": "Primary salary · 68%"
+  },
+  "income_reliability": {
+    "based_on_last_6_months_of_income": "Based on last 6 months of income",
+    "fixed_income": "Fixed Income",
+    "fluctuating_sources": "Fluctuating sources",
+    "high_reliability": "High Reliability",
+    "how_consistent_your_income_has_been_rece": "How consistent your income has been recently.",
+    "income_reliability": "Income Reliability",
+    "recurring_predictable": "Recurring · Predictable",
+    "variable_income": "Variable Income"
+  },
+  "infrastructure_header": {
+    "infrastructure_overview": "Infrastructure Overview",
+    "k": "⌘ K",
+    "last_updated_30s_ago": "Last updated: 30s ago",
+    "monitor_environments_server_health_uptim": "Monitor environments, server health, uptime, and resource usage across every project.",
+    "search_by_name_or_domain": "Search by name or domain..."
+  },
+  "insight_cards": {
+    "average_progress_78_2_projects_above_tar": "Average progress: 78% · 2 projects above target",
+    "download_csv": "Download CSV",
+    "leads_by_source": "Leads by Source",
+    "project_revenue_vs_target": "Project Revenue vs. Target",
+    "view_full_report": "View Full Report"
+  },
+  "inventory": {
+    "inventory": "Inventory"
+  },
+  "invoice_adjustments": {
+    "adjustments": "Adjustments",
+    "discount_value": "Discount value",
+    "value": "Value"
+  },
+  "invoice_details": {
+    "reference_number": "Reference Number"
+  },
+  "invoice_form": {
+    "business": "Business",
+    "invoice": "Invoice",
+    "payment": "Payment"
+  },
+  "invoice_items": {
+    "description": "Description",
+    "invoice_items": "Invoice Items",
+    "line_total": "Line Total",
+    "line_total_2": "Line total",
+    "unit_cost": "Unit cost",
+    "units": "Units"
+  },
+  "invoice_paper": {
+    "balance_due": "Balance due",
+    "bill_to": "Bill to",
+    "description": "Description",
+    "from": "From",
+    "invoice": "Invoice",
+    "line_total": "Line total",
+    "net_amount": "Net amount",
+    "payment_account": "Payment account",
+    "prepared_for_prompt_processing": "Prepared for prompt processing.",
+    "unit_cost": "Unit cost",
+    "units": "Units"
+  },
+  "invoice_preview": {
+    "preview": "Preview"
+  },
+  "kanban": {
+    "open_add_task_menu": "Open add task menu",
+    "search_tasks": "Search tasks"
+  },
+  "kpi_cards": {
+    "1_in_progress_3_upcoming_1_cancelled": "1 in progress · 3 upcoming · 1 cancelled",
+    "63_pending_18_overdue": "63 pending · 18 overdue",
+    "across_5_grade_11_sections": "across 5 Grade 11 sections",
+    "assignments": "Assignments",
+    "avg_attendance": "Avg. Attendance",
+    "classes_today": "Classes Today",
+    "keep_tabs_on_lead_quality_open_opportuni": "Keep tabs on lead quality, open opportunities, and conversion rates across the current sales cycle.",
+    "last_month": "last month",
+    "lead_pipeline_value": "Lead Pipeline Value",
+    "lead_to_deal_rate": "Lead-to-Deal Rate",
+    "open_opportunities": "Open Opportunities",
+    "pipeline_overview": "Pipeline Overview",
+    "qualified_lead_rate": "Qualified Lead Rate",
+    "students_taught": "Students Taught",
+    "vs_last_month": "vs last month"
+  },
+  "kpi_strip": {
+    "2_4_pts": "+2.4 pts",
+    "average_order": "Average Order",
+    "customer_growth": "Customer Growth",
+    "return_requests": "Return Requests",
+    "sales_overview": "Sales Overview",
+    "stock_accuracy": "Stock Accuracy",
+    "total_orders": "Total Orders",
+    "total_sales": "Total Sales",
+    "vs_last_audit": "vs last audit",
+    "vs_last_month": "vs last month",
+    "vs_last_week": "vs last week"
+  },
+  "layout_controls": {
+    "centered": "Centered",
+    "customize_your_dashboard_layout_preferen": "Customize your dashboard layout preferences.",
+    "dark": "Dark",
+    "floating": "Floating",
+    "fonts": "Fonts",
+    "full_width": "Full Width",
+    "icon": "Icon",
+    "inset": "Inset",
+    "light": "Light",
+    "navbar_behavior": "Navbar Behavior",
+    "offcanvas": "OffCanvas",
+    "page_layout": "Page Layout",
+    "preferences": "Preferences",
+    "preset": "Preset",
+    "restore_defaults": "Restore Defaults",
+    "scroll": "Scroll",
+    "select_font": "Select font",
+    "sidebar": "Sidebar",
+    "sidebar_collapse_mode": "Sidebar Collapse Mode",
+    "sidebar_style": "Sidebar Style",
+    "sticky": "Sticky",
+    "system": "System",
+    "theme_mode": "Theme Mode",
+    "theme_preset": "Theme Preset",
+    "toggle_centered": "Toggle centered",
+    "toggle_dark": "Toggle dark",
+    "toggle_floating": "Toggle floating",
+    "toggle_full_width": "Toggle full-width",
+    "toggle_icon": "Toggle icon",
+    "toggle_inset": "Toggle inset",
+    "toggle_light": "Toggle light",
+    "toggle_offcanvas": "Toggle offcanvas",
+    "toggle_scroll": "Toggle scroll",
+    "toggle_sidebar": "Toggle sidebar",
+    "toggle_sticky": "Toggle sticky",
+    "toggle_system": "Toggle system"
+  },
+  "layout": {
+    "check_out_the_docs_or_open_an_issue_on_g": "Check out the docs or open an issue on GitHub, community support is just a click away.",
+    "clone_the_repo_install_dependencies_and": "Clone the repo, install dependencies, and your dashboard is live in minutes.",
+    "design_build_launch_repeat": "Design. Build. Launch. Repeat.",
+    "need_help": "Need help?",
+    "open_github_repository": "Open GitHub repository",
+    "ready_to_launch": "Ready to launch?"
+  },
+  "login_form": {
+    "login": "Login"
+  },
+  "logistics": {
+    "selected_shipment_details_and_route_map": "Selected shipment details and route map."
+  },
+  "mail_inbox": {
+    "inbox": "Inbox",
+    "search": "Search..."
+  },
+  "mail_sidebar": {
+    "folders": "Folders",
+    "new_email": "New email"
+  },
+  "mail_view": {
+    "archive": "Archive",
+    "close_message": "Close message",
+    "more_actions": "More actions",
+    "move_to_trash": "Move to trash",
+    "next_message": "Next message",
+    "pin_thread": "Pin thread",
+    "previous_message": "Previous message",
+    "reply": "Reply"
+  },
+  "mail": {
+    "loading_mail": "Loading mail...",
+    "mail_message": "Mail message",
+    "read_the_selected_email_message": "Read the selected email message"
+  },
+  "metric_cards": {
+    "acquisition_needs_attention": "Acquisition needs attention",
+    "active_accounts": "Active Accounts",
+    "engagement_exceeds_targets": "Engagement exceeds targets",
+    "growth_rate": "Growth Rate",
+    "meets_growth_projections": "Meets growth projections",
+    "new_customers": "New Customers",
+    "total_revenue": "Total Revenue",
+    "visitors_for_the_last_6_months": "Visitors for the last 6 months"
+  },
+  "monthly_cash_flow": {
+    "this_month_net": "This month · Net"
+  },
+  "nav_documents": {
+    "documents": "Documents",
+    "more": "More"
+  },
+  "nav_main": {
+    "inbox": "Inbox",
+    "quick_create": "Quick Create"
+  },
+  "net_worth": {
+    "3_680_mom": "+$3,680 MoM",
+    "across_all_linked_accounts": "Across all linked accounts",
+    "this_month": "This month"
+  },
+  "not_found": {
+    "go_back_home": "Go back home",
+    "page_not_found": "Page not found.",
+    "the_page_you_are_looking_for_could_not_b": "The page you are looking for could not be found."
+  },
+  "operational_cards": {
+    "action_items": "Action Items",
+    "leads_increased_by_18_2_since_last_month": "Leads increased by 18.2% since last month.",
+    "sales_by_region": "Sales by Region",
+    "sales_pipeline": "Sales Pipeline"
+  },
+  "opportunities_section": {
+    "recent_opportunities": "Recent Opportunities",
+    "search_deals": "Search deals...",
+    "track_qualified_leads_moving_through_dis": "Track qualified leads moving through discovery, proposal, and closing stages."
+  },
+  "overview_cards": {
+    "35_growth_since_last_year": "+35% growth since last year",
+    "last_6_months": "Last 6 Months",
+    "last_month": "Last Month",
+    "new_leads": "New Leads",
+    "projects_won": "Projects Won",
+    "proposals_sent": "Proposals Sent",
+    "revenue": "Revenue",
+    "revenue_growth": "Revenue Growth",
+    "year_to_date_ytd": "Year to Date (YTD)"
+  },
+  "overview_kpis": {
+    "124_more_than_last_month": "$124 more than last month",
+    "410_above_your_30_day_average": "$410 above your 30-day average",
+    "9_8k_vs_last_month": "+$9.8K vs last month",
+    "available_cash": "Available cash",
+    "monthly_spend": "Monthly spend",
+    "net_worth": "Net worth",
+    "savings_rate": "Savings rate",
+    "up_from_25_6_last_month": "Up from 25.6% last month"
+  },
+  "page": {
+    "academy_dashboard": "Academy Dashboard",
+    "accounts": "Accounts",
+    "accounts_view_coming_soon": "Accounts view coming soon.",
+    "acquisition": "Acquisition",
+    "acquisition_view_coming_soon": "Acquisition view coming soon.",
+    "activity": "Activity",
+    "add_invoice_details_review_the_preview_a": "Add invoice details, review the preview, and send it to your client.",
+    "all_channels": "All Channels",
+    "audience": "Audience",
+    "audience_view_coming_soon": "Audience view coming soon.",
+    "chat_preview": "Chat preview",
+    "coming_soon": "Coming Soon",
+    "conversions": "Conversions",
+    "conversions_view_coming_soon": "Conversions view coming soon.",
+    "create_new_invoice": "Create New Invoice",
+    "create_your_account": "Create your account",
+    "dashboard": "Dashboard",
+    "engagement": "Engagement",
+    "engagement_view_coming_soon": "Engagement view coming soon.",
+    "fill_in_your_details_below_we_promise_no": "Fill in your details below. We promise not to quiz you about your first pet&apos;s name (this time).",
+    "go_to_homepage": "Go to Homepage",
+    "good_morning_arham": "Good morning, Arham.",
+    "good_morning_teacher_heres_a_quick_overv": "Good morning, Teacher. Here's a quick overview of today's activity.",
+    "hello_again": "Hello again",
+    "hello_aiy": "Hello, Aiy",
+    "heres_a_list_of_your_tasks_for_this_mont": "Here's a list of your tasks for this month!",
+    "insights": "Insights",
+    "last_30_days": "Last 30 Days",
+    "last_month": "Last Month",
+    "let_apos_s_make_today_productive_and_mea": "Let&apos;s make today productive and meaningful.",
+    "login": "Login",
+    "login_to_continue": "Login to continue",
+    "login_to_your_account": "Login to your account",
+    "mail_preview": "Mail preview",
+    "marketplace": "Marketplace",
+    "monitor_traffic_engagement_and_conversio": "Monitor traffic, engagement, and conversion performance in one view.",
+    "online_store": "Online Store",
+    "open_chat_in_new_tab": "Open chat in new tab",
+    "open_mail_in_new_tab": "Open mail in new tab",
+    "or_continue_with": "Or continue with",
+    "overview": "Overview",
+    "page_not_found": "Page not found.",
+    "personal_finances": "Personal Finances",
+    "please_enter_your_details_to_login": "Please enter your details to login.",
+    "please_enter_your_details_to_register": "Please enter your details to register.",
+    "register": "Register",
+    "retail": "Retail",
+    "social": "Social",
+    "store_overview": "Store Overview",
+    "this_iframe_shows_the_standalone_chat_sc": "This iframe shows the standalone chat screen. Open it in full screen for a better view.",
+    "this_iframe_shows_the_standalone_mail_sc": "This iframe shows the standalone mail screen. Open it in full screen for a better view.",
+    "this_month": "This Month",
+    "this_page_is_under_development_and_will": "This page is under development and will be available in future updates.",
+    "this_section_will_be_added_in_future_upd": "This section will be added in future updates.",
+    "transactions": "Transactions",
+    "transactions_view_coming_soon": "Transactions view coming soon.",
+    "unauthorized_access": "Unauthorized Access",
+    "updated_5_min_ago": "Updated 5 min ago",
+    "utilities": "Utilities",
+    "welcome": "Welcome!",
+    "welcome_back": "Welcome back!",
+    "welcome_back_enter_your_email_and_passwo": "Welcome back. Enter your email and password, let&apos;s hope you remember them this time.",
+    "year_to_date": "Year to Date",
+    "you_apos_re_in_the_right_place": "You&apos;re in the right place.",
+    "you_do_not_have_permission_to_view_the_r": "You do not have permission to view the requested content. Please contact the site administrator if you believe this is an error."
+  },
+  "pagination": {
+    "go_to_next_page": "Go to next page",
+    "go_to_previous_page": "Go to previous page",
+    "more_pages": "More pages",
+    "pagination": "pagination"
+  },
+  "performance_highlights": {
+    "performance_highlights": "Performance Highlights"
+  },
+  "performance_overview": {
+    "3_months": "3 months",
+    "all_segments": "All segments",
+    "customer_activity": "Customer Activity",
+    "customer_activity_for_the_last_3_months": "Customer activity for the last 3 months",
+    "last_3_months": "Last 3 months",
+    "organic": "Organic",
+    "paid": "Paid",
+    "period": "Period",
+    "segments": "Segments",
+    "view_report": "View report"
+  },
+  "pipeline_activity": {
+    "discovery_calls_booked": "Discovery Calls Booked",
+    "last_12_months": "Last 12 months",
+    "last_30_days": "Last 30 days",
+    "last_quarter": "Last quarter",
+    "leads": "leads",
+    "meetings": "meetings",
+    "qualified_lead_flow": "Qualified Lead Flow",
+    "select_range": "Select range",
+    "total_qualified_leads_captured_over_the": "Total qualified leads captured over the last 12 months."
+  },
+  "primary_account": {
+    "available_balance": "Available balance",
+    "pay": "Pay",
+    "request": "Request"
+  },
+  "project_environments": {
+    "environment": "Environment",
+    "health": "Health",
+    "latency": "Latency",
+    "no_environments_in_this_project": "No environments in this project",
+    "platform": "Platform",
+    "resources": "Resources",
+    "server": "Server",
+    "uptime": "Uptime"
+  },
+  "projects_section": {
+    "active": "Active",
+    "completed": "Completed",
+    "planning": "Planning",
+    "projects": "Projects"
+  },
+  "quick_actions": {
+    "quick_actions": "Quick Actions",
+    "quick_transfer": "Quick Transfer",
+    "send": "Send",
+    "shortcuts": "Shortcuts",
+    "usd": "USD"
+  },
+  "quote_card": {
+    "keep_showing_up_you_apos_ve_got_this": "Keep showing up. You&apos;ve got this.",
+    "small_consistent_actions_lead_to_big_res": "Small, consistent actions lead to big results."
+  },
+  "realtime_visitors": {
+    "canada": "Canada",
+    "india": "India",
+    "live": "Live",
+    "per_minute": "per minute",
+    "realtime_visitors": "Realtime Visitors",
+    "united_kingdom": "United Kingdom",
+    "united_states": "United States"
+  },
+  "recent_notes_card": {
+    "recent_notes": "Recent Notes",
+    "view_all": "View all"
+  },
+  "recent_orders": {
+    "download_orders": "Download orders",
+    "open_orders": "Open orders",
+    "recent_orders": "Recent Orders"
+  },
+  "register_form": {
+    "register": "Register"
+  },
+  "roles": {
+    "3_roles_have_unreviewed_permission_chang": "3 roles have unreviewed permission changes.",
+    "access_reviews": "Access reviews",
+    "access_reviews_coming_soon": "Access Reviews Coming Soon",
+    "active": "Active",
+    "alex_kim": "Alex Kim",
+    "all": "All",
+    "chris_lee": "Chris Lee",
+    "create_role": "Create role",
+    "custom": "Custom",
+    "jane_doe": "Jane Doe",
+    "manage_access_roles_and_permissions_acro": "Manage access roles and permissions across your organization.",
+    "needs_review": "Needs review",
+    "owner": "Owner:",
+    "permission_sets": "Permission sets",
+    "permission_sets_coming_soon": "Permission Sets Coming Soon",
+    "review_required": "Review required",
+    "roles": "Roles",
+    "roles_permissions": "Roles & Permissions",
+    "search_roles": "Search roles...",
+    "status": "Status:",
+    "system": "System",
+    "type": "Type:"
+  },
+  "savings_rate": {
+    "3_5_mom": "+3.5% MoM",
+    "above_your_average": "Above your average",
+    "this_month_after_expenses": "This month · After expenses"
+  },
+  "search_dialog": {
+    "no_results_found": "No results found.",
+    "search_dashboards_users_and_more": "Search dashboards, users, and more…"
+  },
+  "section_cards": {
+    "acquisition_needs_attention": "Acquisition needs attention",
+    "active_accounts": "Active Accounts",
+    "engagement_exceed_targets": "Engagement exceed targets",
+    "growth_rate": "Growth Rate",
+    "meets_growth_projections": "Meets growth projections",
+    "new_customers": "New Customers",
+    "total_revenue": "Total Revenue",
+    "visitors_for_the_last_6_months": "Visitors for the last 6 months"
+  },
+  "shipment_details": {
+    "activity": "Activity",
+    "activity_view_coming_soon": "Activity view coming soon.",
+    "cargo": "Cargo",
+    "cargo_details": "Cargo details",
+    "cargo_view_coming_soon": "Cargo view coming soon.",
+    "copy_shipment_id": "Copy shipment ID",
+    "documents": "Documents",
+    "documents_view_coming_soon": "Documents view coming soon.",
+    "overview": "Overview",
+    "route": "Route",
+    "route_view_coming_soon": "Route view coming soon.",
+    "select_a_shipment_to_view_details": "Select a shipment to view details.",
+    "status": "Status",
+    "total_weight": "Total weight",
+    "transport_mode": "Transport mode"
+  },
+  "shipment_list": {
+    "all_156": "All (156)",
+    "cargo": "Cargo",
+    "delayed_9": "Delayed (9)",
+    "delivered_98": "Delivered (98)",
+    "eta": "ETA",
+    "in_transit_32": "In Transit (32)",
+    "search_shipments": "Search shipments",
+    "search_shipments_2": "Search shipments...",
+    "shipments": "Shipments"
+  },
+  "shipment_route_map": {
+    "southeast_asia_shipment_region_map": "Southeast Asia shipment region map"
+  },
+  "sidebar_support_card": {
+    "looking_for_something_more": "Looking for something more?",
+    "reach_out_on_x": "Reach out on X"
+  },
+  "sidebar": {
+    "displays_the_mobile_sidebar": "Displays the mobile sidebar.",
+    "sidebar": "Sidebar",
+    "toggle_sidebar": "Toggle Sidebar"
+  },
+  "spending_breakdown": {
+    "expense_distribution_by_category": "Expense distribution by category.",
+    "spending_breakdown": "Spending Breakdown"
+  },
+  "spinner": {
+    "loading": "Loading"
+  },
+  "store_traffic": {
+    "12_9k_visits": "12.9K visits",
+    "store_traffic": "Store Traffic"
+  },
+  "subscriber_overview": {
+    "18_426_customers": "18,426 Customers",
+    "recent_customer_records_with_plan_billin": "Recent customer records with plan, billing, status, and signup activity."
+  },
+  "table": {
+    "add_section": "Add Section",
+    "export": "Export",
+    "focus_documents": "Focus Documents",
+    "go_to_first_page": "Go to first page",
+    "go_to_last_page": "Go to last page",
+    "go_to_next_page": "Go to next page",
+    "go_to_previous_page": "Go to previous page",
+    "outline": "Outline",
+    "recent_leads": "Recent Leads",
+    "rows_per_page": "Rows per page",
+    "search_customers": "Search customers...",
+    "select_a_view": "Select a view",
+    "toggle_columns": "Toggle columns",
+    "track_and_manage_your_latest_leads_and_t": "Track and manage your latest leads and their status.",
+    "view": "View"
+  },
+  "task_reminders": {
+    "monthly_proposal_goal": "Monthly Proposal Goal",
+    "product_demo_with_tim": "Product demo with Tim",
+    "sent": "sent",
+    "upcoming_meetings": "Upcoming Meetings",
+    "weblabs_studio": "Weblabs Studio"
+  },
+  "tasks_section": {
+    "tasks": "Tasks",
+    "this_week": "This Week",
+    "today": "Today",
+    "tomorrow": "Tomorrow"
+  },
+  "tasks_toolbar": {
+    "filter_tasks": "Filter tasks...",
+    "toggle_columns": "Toggle columns"
+  },
+  "tasks": {
+    "go_to_first_page": "Go to first page",
+    "go_to_last_page": "Go to last page",
+    "prev": "Prev",
+    "rows_per_page": "Rows per page"
+  },
+  "top_pages": {
+    "avg_time": "Avg Time",
+    "bounce": "Bounce",
+    "page_performance": "Page Performance",
+    "views": "Views"
+  },
+  "top_products": {
+    "73_of_sales": "73% of sales",
+    "products": "Products",
+    "sales": "Sales",
+    "sales_by_category": "Sales by category",
+    "share": "Share",
+    "top_products": "Top Products"
+  },
+  "top_traffic_sources": {
+    "campaigns": "Campaigns",
+    "referrers": "Referrers",
+    "sources": "Sources",
+    "traffic_sources": "Traffic Sources"
+  },
+  "traffic_quality": {
+    "traffic_quality": "Traffic Quality"
+  },
+  "traffic_sources": {
+    "14_8k_visits": "14.8K visits",
+    "traffic_sources": "Traffic Sources"
+  },
+  "transactions_overview_card": {
+    "monthly": "Monthly",
+    "spending_overview": "Spending Overview",
+    "weekly": "Weekly",
+    "yearly": "Yearly"
+  },
+  "upcoming_events": {
+    "upcoming_events": "Upcoming Events"
+  },
+  "upcoming_transactions": {
+    "upcoming_bills_payments": "Upcoming Bills & Payments"
+  },
+  "users_columns": {
+    "actions": "Actions",
+    "deactivate_user": "Deactivate user",
+    "edit_user": "Edit user",
+    "manage_team": "Manage team",
+    "resend_invite": "Resend invite",
+    "select_all_users": "Select all users",
+    "view_profile": "View profile"
+  },
+  "users_table": {
+    "rows_per_page": "Rows per page"
+  },
+  "users": {
+    "grid_view": "Grid view",
+    "k": "⌘K",
+    "list_view": "List view",
+    "manage_your_organization_members_and_the": "Manage your organization members and their access.",
+    "role": "Role:",
+    "search_users": "Search users...",
+    "status": "Status:",
+    "team": "Team:",
+    "users": "Users",
+    "workspace": "Workspace:"
+  },
+  "wallet": {
+    "air_gapped": "Air-Gapped",
+    "wallet": "Wallet"
+  },
+  "weekly_summary_card": {
+    "4_of_6_goals_completed": "4 of 6 goals completed",
+    "this_week": "This Week",
+    "view_all": "View all",
+    "youre_doing_great_keep_the_momentum_goin": "You’re doing great. Keep the momentum going."
+  }
+}
diff --git a/messages/translation-todo.json b/messages/translation-todo.json
new file mode 100644
index 0000000..d053ef7
--- /dev/null
+++ b/messages/translation-todo.json
@@ -0,0 +1,2718 @@
+[
+  {
+    "key": "analytics_actions_manager_queue.3_deals",
+    "en": "3 Deals"
+  },
+  {
+    "key": "analytics_actions_manager_queue.actionable_deals",
+    "en": "Actionable deals"
+  },
+  {
+    "key": "analytics_actions_manager_queue.coach",
+    "en": "Coach"
+  },
+  {
+    "key": "analytics_actions_manager_queue.coach_queue",
+    "en": "Coach queue"
+  },
+  {
+    "key": "analytics_actions_manager_queue.escalate",
+    "en": "Escalate"
+  },
+  {
+    "key": "analytics_actions_manager_queue.escalate_coach_and_reforecast_before_com",
+    "en": "Escalate, coach, and reforecast before commit call"
+  },
+  {
+    "key": "analytics_actions_manager_queue.intervention_mix",
+    "en": "Intervention mix"
+  },
+  {
+    "key": "analytics_actions_manager_queue.leila_zhang_3_deals",
+    "en": "Leila Zhang · 3 deals"
+  },
+  {
+    "key": "analytics_actions_manager_queue.manager_action_queue",
+    "en": "Manager Action Queue"
+  },
+  {
+    "key": "analytics_actions_manager_queue.manager_focus",
+    "en": "Manager focus"
+  },
+  {
+    "key": "analytics_actions_manager_queue.median_risk",
+    "en": "Median risk"
+  },
+  {
+    "key": "analytics_actions_manager_queue.next_interventions",
+    "en": "Next interventions"
+  },
+  {
+    "key": "analytics_actions_manager_queue.no_action_monitor",
+    "en": "No-action monitor"
+  },
+  {
+    "key": "analytics_actions_manager_queue.owners_engaged",
+    "en": "Owners engaged"
+  },
+  {
+    "key": "analytics_actions_manager_queue.primary_owner",
+    "en": "Primary owner"
+  },
+  {
+    "key": "analytics_actions_manager_queue.reforecast",
+    "en": "Reforecast"
+  },
+  {
+    "key": "analytics_actions_manager_queue.revenue_in_play",
+    "en": "Revenue in play"
+  },
+  {
+    "key": "analytics_actions_manager_queue.stale_pipeline",
+    "en": "Stale pipeline"
+  },
+  {
+    "key": "analytics_actions_manager_queue.this_forecast_cycle",
+    "en": "This forecast cycle"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.accounts_under_pressure_with_blocker_nex",
+    "en": "Accounts under pressure with blocker, next action, and owner responsibility."
+  },
+  {
+    "key": "analytics_actions_risk_ledger.close_date_already_exceeded",
+    "en": "Close date already exceeded"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.critical_accounts",
+    "en": "Critical accounts"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.current_filter_window",
+    "en": "Current filter window"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.escalations_due",
+    "en": "Escalations due"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.median_inactivity",
+    "en": "Median inactivity"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.next_7_days",
+    "en": "Next 7 days"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.overdue_revenue",
+    "en": "Overdue revenue"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.revenue_risk_ledger",
+    "en": "Revenue Risk Ledger"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.risk_ladder",
+    "en": "Risk Ladder"
+  },
+  {
+    "key": "analytics_actions_risk_ledger.risk_ladder_80_current_window",
+    "en": "Risk Ladder >= 80 (current window)"
+  },
+  {
+    "key": "analytics_drivers_coverage_triage.1_9x_3_0x",
+    "en": "1.9x / 3.0x"
+  },
+  {
+    "key": "analytics_drivers_coverage_triage.4_deals_eta_10d",
+    "en": "4 deals • ETA 10d"
+  },
+  {
+    "key": "analytics_drivers_coverage_triage.at_risk",
+    "en": "At Risk"
+  },
+  {
+    "key": "analytics_drivers_coverage_triage.coverage_below_target_prioritize_qualifi",
+    "en": "Coverage below target. Prioritize qualified volume and shorter cycle time."
+  },
+  {
+    "key": "analytics_drivers_coverage_triage.coverage_triage",
+    "en": "Coverage Triage"
+  },
+  {
+    "key": "analytics_drivers_coverage_triage.decision_ladder_for_this_forecast_cycle",
+    "en": "Decision ladder for this forecast cycle"
+  },
+  {
+    "key": "analytics_drivers_coverage_triage.gap_222_930",
+    "en": "Gap $222,930"
+  },
+  {
+    "key": "analytics_drivers_coverage_triage.open_top_5_deals",
+    "en": "Open top 5 deals"
+  },
+  {
+    "key": "analytics_drivers_forecast_target.12_week_trend_with_attainment_context",
+    "en": "12-week trend with attainment context"
+  },
+  {
+    "key": "analytics_drivers_forecast_target.attainment",
+    "en": "Attainment"
+  },
+  {
+    "key": "analytics_drivers_forecast_target.forecast_confidence",
+    "en": "Forecast Confidence"
+  },
+  {
+    "key": "analytics_drivers_forecast_target.forecast_vs_target",
+    "en": "Forecast vs Target"
+  },
+  {
+    "key": "analytics_drivers_forecast_target.weighted_pipeline",
+    "en": "Weighted Pipeline"
+  },
+  {
+    "key": "analytics_kpi_strip.conversion_rate",
+    "en": "Conversion Rate"
+  },
+  {
+    "key": "analytics_kpi_strip.engagement_rate",
+    "en": "Engagement Rate"
+  },
+  {
+    "key": "analytics_kpi_strip.last_4_weeks",
+    "en": "last 4 weeks"
+  },
+  {
+    "key": "analytics_kpi_strip.pageviews",
+    "en": "Pageviews"
+  },
+  {
+    "key": "analytics_kpi_strip.sessions",
+    "en": "Sessions"
+  },
+  {
+    "key": "analytics_kpi_strip.unique_visitors",
+    "en": "Unique Visitors"
+  },
+  {
+    "key": "analytics_overview.core_risk_signals_vs_previous_period",
+    "en": "Core risk signals vs previous period"
+  },
+  {
+    "key": "analytics_overview.filters",
+    "en": "Filters"
+  },
+  {
+    "key": "analytics_overview.previous_1_141_000",
+    "en": "Previous $1,141,000"
+  },
+  {
+    "key": "analytics_overview.revenue",
+    "en": "Revenue"
+  },
+  {
+    "key": "analytics_overview.risk_ladder_30",
+    "en": "Risk Ladder 30"
+  },
+  {
+    "key": "analytics_overview.risk_summary",
+    "en": "Risk summary"
+  },
+  {
+    "key": "analytics_overview.selected_range",
+    "en": "Selected range"
+  },
+  {
+    "key": "analytics_toolbar.analytics_actions",
+    "en": "Analytics actions"
+  },
+  {
+    "key": "analytics_toolbar.last_3_months",
+    "en": "Last 3 months"
+  },
+  {
+    "key": "analytics_toolbar.last_4_weeks",
+    "en": "Last 4 weeks"
+  },
+  {
+    "key": "analytics_toolbar.last_7_days",
+    "en": "Last 7 days"
+  },
+  {
+    "key": "analytics_toolbar.more_analytics_actions",
+    "en": "More analytics actions"
+  },
+  {
+    "key": "analytics_toolbar.select_range",
+    "en": "Select range"
+  },
+  {
+    "key": "analytics_toolbar.year_to_date",
+    "en": "Year to date"
+  },
+  {
+    "key": "assignment_status.assignment_status",
+    "en": "Assignment Status"
+  },
+  {
+    "key": "balance_distribution_card.account_allocation",
+    "en": "Account Allocation"
+  },
+  {
+    "key": "breadcrumb.breadcrumb",
+    "en": "breadcrumb"
+  },
+  {
+    "key": "breadcrumb.more",
+    "en": "More"
+  },
+  {
+    "key": "calendar.today",
+    "en": "Today"
+  },
+  {
+    "key": "card_overview.1_of_4_cards_added_overview_of_your_prim",
+    "en": "1 of 4 cards added · Overview of your primary card and upcoming payments"
+  },
+  {
+    "key": "card_overview.21st_monthly",
+    "en": "21st monthly"
+  },
+  {
+    "key": "card_overview.add_card",
+    "en": "Add Card"
+  },
+  {
+    "key": "card_overview.arham_khan",
+    "en": "Arham Khan"
+  },
+  {
+    "key": "card_overview.available_balance",
+    "en": "Available Balance"
+  },
+  {
+    "key": "card_overview.billing_cycle",
+    "en": "Billing cycle"
+  },
+  {
+    "key": "card_overview.card_limit",
+    "en": "Card Limit"
+  },
+  {
+    "key": "card_overview.card_type",
+    "en": "Card type"
+  },
+  {
+    "key": "card_overview.cvv",
+    "en": "CVV"
+  },
+  {
+    "key": "card_overview.manage_card",
+    "en": "Manage Card"
+  },
+  {
+    "key": "card_overview.my_card",
+    "en": "My Card"
+  },
+  {
+    "key": "card_overview.upcoming_payments",
+    "en": "Upcoming Payments"
+  },
+  {
+    "key": "card_overview.valid_thru",
+    "en": "Valid Thru"
+  },
+  {
+    "key": "card_overview.view_all_payments",
+    "en": "View All Payments"
+  },
+  {
+    "key": "card_overview.virtual",
+    "en": "Virtual"
+  },
+  {
+    "key": "carousel.next_slide",
+    "en": "Next slide"
+  },
+  {
+    "key": "carousel.previous_slide",
+    "en": "Previous slide"
+  },
+  {
+    "key": "cash_flow_overview.cash_flow_overview",
+    "en": "Cash Flow Overview"
+  },
+  {
+    "key": "cash_flow_overview.expenses",
+    "en": "Expenses"
+  },
+  {
+    "key": "cash_flow_overview.income",
+    "en": "Income"
+  },
+  {
+    "key": "cash_flow_overview.last_6_months",
+    "en": "Last 6 Months"
+  },
+  {
+    "key": "cash_flow_overview.monthly_income_and_expenses_with_net_cas",
+    "en": "Monthly income and expenses with net cash impact."
+  },
+  {
+    "key": "cash_flow_overview.select_period",
+    "en": "Select period"
+  },
+  {
+    "key": "cash_flow_overview.this_month",
+    "en": "This Month"
+  },
+  {
+    "key": "cash_flow_overview.this_year",
+    "en": "This Year"
+  },
+  {
+    "key": "cash_flow_overview.year_to_date",
+    "en": "Year to Date"
+  },
+  {
+    "key": "chart_area_interactive.last_3_months",
+    "en": "Last 3 months"
+  },
+  {
+    "key": "chart_area_interactive.last_30_days",
+    "en": "Last 30 days"
+  },
+  {
+    "key": "chart_area_interactive.last_7_days",
+    "en": "Last 7 days"
+  },
+  {
+    "key": "chart_area_interactive.select_a_value",
+    "en": "Select a value"
+  },
+  {
+    "key": "chart_area_interactive.total_for_the_last_3_months",
+    "en": "Total for the last 3 months"
+  },
+  {
+    "key": "chart_area_interactive.total_visitors",
+    "en": "Total Visitors"
+  },
+  {
+    "key": "chat_conversation_list.closed",
+    "en": "Closed"
+  },
+  {
+    "key": "chat_conversation_list.inbox",
+    "en": "Inbox"
+  },
+  {
+    "key": "chat_header.new_conversation",
+    "en": "New conversation"
+  },
+  {
+    "key": "chat_header.notifications",
+    "en": "Notifications"
+  },
+  {
+    "key": "chat_header.search_conversations",
+    "en": "Search conversations..."
+  },
+  {
+    "key": "chat_header.settings",
+    "en": "Settings"
+  },
+  {
+    "key": "chat_header.studio_chat",
+    "en": "Studio Chat"
+  },
+  {
+    "key": "chat_profile_details.activity",
+    "en": "Activity"
+  },
+  {
+    "key": "chat_profile_details.call",
+    "en": "Call"
+  },
+  {
+    "key": "chat_profile_details.close_profile",
+    "en": "Close profile"
+  },
+  {
+    "key": "chat_profile_details.company",
+    "en": "Company"
+  },
+  {
+    "key": "chat_profile_details.copy_link",
+    "en": "Copy link"
+  },
+  {
+    "key": "chat_profile_details.details",
+    "en": "Details"
+  },
+  {
+    "key": "chat_profile_details.email",
+    "en": "Email"
+  },
+  {
+    "key": "chat_profile_details.files",
+    "en": "Files"
+  },
+  {
+    "key": "chat_profile_details.location",
+    "en": "Location"
+  },
+  {
+    "key": "chat_profile_details.more",
+    "en": "More"
+  },
+  {
+    "key": "chat_profile_details.phone",
+    "en": "Phone"
+  },
+  {
+    "key": "chat_profile_details.qualified_since",
+    "en": "Qualified since"
+  },
+  {
+    "key": "chat_profile_details.role",
+    "en": "Role"
+  },
+  {
+    "key": "chat_profile_details.schedule",
+    "en": "Schedule"
+  },
+  {
+    "key": "chat_profile_details.stage",
+    "en": "Stage"
+  },
+  {
+    "key": "chat_profile_details.tags",
+    "en": "Tags"
+  },
+  {
+    "key": "chat_profile_details.timezone",
+    "en": "Timezone"
+  },
+  {
+    "key": "chat_profile_details.website",
+    "en": "Website"
+  },
+  {
+    "key": "chat_sidebar.channels",
+    "en": "Channels"
+  },
+  {
+    "key": "chat_sidebar.views",
+    "en": "Views"
+  },
+  {
+    "key": "chat_thread.ai_assist",
+    "en": "AI assist"
+  },
+  {
+    "key": "chat_thread.attach_file",
+    "en": "Attach file"
+  },
+  {
+    "key": "chat_thread.block_contact",
+    "en": "Block contact"
+  },
+  {
+    "key": "chat_thread.call",
+    "en": "Call"
+  },
+  {
+    "key": "chat_thread.emoji",
+    "en": "Emoji"
+  },
+  {
+    "key": "chat_thread.format",
+    "en": "Format"
+  },
+  {
+    "key": "chat_thread.insert_link",
+    "en": "Insert link"
+  },
+  {
+    "key": "chat_thread.internal_note",
+    "en": "Internal note"
+  },
+  {
+    "key": "chat_thread.may_6_2026",
+    "en": "May 6, 2026"
+  },
+  {
+    "key": "chat_thread.more_actions",
+    "en": "More actions"
+  },
+  {
+    "key": "chat_thread.reply",
+    "en": "Reply"
+  },
+  {
+    "key": "chat_thread.send",
+    "en": "Send"
+  },
+  {
+    "key": "chat_thread.snooze",
+    "en": "Snooze"
+  },
+  {
+    "key": "chat_thread.tag",
+    "en": "Tag"
+  },
+  {
+    "key": "chat_thread.type_your_message",
+    "en": "Type your message..."
+  },
+  {
+    "key": "chat_thread.write_an_internal_note",
+    "en": "Write an internal note..."
+  },
+  {
+    "key": "class_schedule.cancelled",
+    "en": "Cancelled"
+  },
+  {
+    "key": "class_schedule.class_schedule",
+    "en": "Class Schedule"
+  },
+  {
+    "key": "class_schedule.computer_science",
+    "en": "Computer Science"
+  },
+  {
+    "key": "class_schedule.english_literature",
+    "en": "English Literature"
+  },
+  {
+    "key": "class_schedule.grade_11a_room_1_08",
+    "en": "Grade 11A • Room 1.08"
+  },
+  {
+    "key": "class_schedule.grade_11a_room_2_14",
+    "en": "Grade 11A • Room 2.14"
+  },
+  {
+    "key": "class_schedule.grade_11b_computing_lab",
+    "en": "Grade 11B • Computing Lab"
+  },
+  {
+    "key": "class_schedule.grade_11b_seminar_room_3",
+    "en": "Grade 11B • Seminar Room 3"
+  },
+  {
+    "key": "class_schedule.grade_11c_physics_lab",
+    "en": "Grade 11C • Physics Lab"
+  },
+  {
+    "key": "class_schedule.in_progress",
+    "en": "In Progress"
+  },
+  {
+    "key": "class_schedule.modern_european_history",
+    "en": "Modern European History"
+  },
+  {
+    "key": "class_schedule.physics",
+    "en": "Physics"
+  },
+  {
+    "key": "class_schedule.pure_mathematics",
+    "en": "Pure Mathematics"
+  },
+  {
+    "key": "class_schedule.upcoming",
+    "en": "Upcoming"
+  },
+  {
+    "key": "client_selector.billed_to",
+    "en": "Billed To"
+  },
+  {
+    "key": "columns.actions",
+    "en": "Actions"
+  },
+  {
+    "key": "columns.archive",
+    "en": "Archive"
+  },
+  {
+    "key": "columns.archive_role",
+    "en": "Archive role"
+  },
+  {
+    "key": "columns.assign",
+    "en": "Assign"
+  },
+  {
+    "key": "columns.assign_reviewer",
+    "en": "Assign reviewer"
+  },
+  {
+    "key": "columns.capabilities",
+    "en": "Capabilities"
+  },
+  {
+    "key": "columns.contact_customer",
+    "en": "Contact customer"
+  },
+  {
+    "key": "columns.copy_order_id",
+    "en": "Copy order ID"
+  },
+  {
+    "key": "columns.cover_page",
+    "en": "Cover Page"
+  },
+  {
+    "key": "columns.date",
+    "en": "Date"
+  },
+  {
+    "key": "columns.delete",
+    "en": "Delete"
+  },
+  {
+    "key": "columns.design",
+    "en": "Design"
+  },
+  {
+    "key": "columns.done",
+    "en": "Done"
+  },
+  {
+    "key": "columns.drag_to_reorder",
+    "en": "Drag to reorder"
+  },
+  {
+    "key": "columns.duplicate_role",
+    "en": "Duplicate role"
+  },
+  {
+    "key": "columns.eddie_lake",
+    "en": "Eddie Lake"
+  },
+  {
+    "key": "columns.edit",
+    "en": "Edit"
+  },
+  {
+    "key": "columns.edit_opportunity",
+    "en": "Edit opportunity"
+  },
+  {
+    "key": "columns.edit_role",
+    "en": "Edit role"
+  },
+  {
+    "key": "columns.emily_whalen",
+    "en": "Emily Whalen"
+  },
+  {
+    "key": "columns.executive_summary",
+    "en": "Executive Summary"
+  },
+  {
+    "key": "columns.favorite",
+    "en": "Favorite"
+  },
+  {
+    "key": "columns.focus_documents",
+    "en": "Focus Documents"
+  },
+  {
+    "key": "columns.header",
+    "en": "Header"
+  },
+  {
+    "key": "columns.in_progress",
+    "en": "In Progress"
+  },
+  {
+    "key": "columns.jamik_tashpulatov",
+    "en": "Jamik Tashpulatov"
+  },
+  {
+    "key": "columns.labels",
+    "en": "Labels"
+  },
+  {
+    "key": "columns.limit",
+    "en": "Limit"
+  },
+  {
+    "key": "columns.make_a_copy",
+    "en": "Make a copy"
+  },
+  {
+    "key": "columns.manage_members",
+    "en": "Manage members"
+  },
+  {
+    "key": "columns.narrative",
+    "en": "Narrative"
+  },
+  {
+    "key": "columns.not_started",
+    "en": "Not Started"
+  },
+  {
+    "key": "columns.open_menu",
+    "en": "Open menu"
+  },
+  {
+    "key": "columns.open_order_actions",
+    "en": "Open order actions"
+  },
+  {
+    "key": "columns.order_actions",
+    "en": "Order Actions"
+  },
+  {
+    "key": "columns.review_permissions",
+    "en": "Review permissions"
+  },
+  {
+    "key": "columns.reviewer",
+    "en": "Reviewer"
+  },
+  {
+    "key": "columns.select_a_reviewer",
+    "en": "Select a reviewer"
+  },
+  {
+    "key": "columns.select_a_status",
+    "en": "Select a status"
+  },
+  {
+    "key": "columns.select_a_type",
+    "en": "Select a type"
+  },
+  {
+    "key": "columns.select_all",
+    "en": "Select all"
+  },
+  {
+    "key": "columns.select_all_customers_on_this_page",
+    "en": "Select all customers on this page"
+  },
+  {
+    "key": "columns.select_all_opportunities",
+    "en": "Select all opportunities"
+  },
+  {
+    "key": "columns.select_all_orders",
+    "en": "Select all orders"
+  },
+  {
+    "key": "columns.select_row",
+    "en": "Select row"
+  },
+  {
+    "key": "columns.showing_total_visitors_for_the_last_6_mo",
+    "en": "Showing total visitors for the last 6 months"
+  },
+  {
+    "key": "columns.status",
+    "en": "Status"
+  },
+  {
+    "key": "columns.submit",
+    "en": "Submit"
+  },
+  {
+    "key": "columns.table_of_contents",
+    "en": "Table of Contents"
+  },
+  {
+    "key": "columns.target",
+    "en": "Target"
+  },
+  {
+    "key": "columns.technical_approach",
+    "en": "Technical Approach"
+  },
+  {
+    "key": "columns.total",
+    "en": "Total"
+  },
+  {
+    "key": "columns.type",
+    "en": "Type"
+  },
+  {
+    "key": "columns.view",
+    "en": "View"
+  },
+  {
+    "key": "columns.view_details",
+    "en": "View details"
+  },
+  {
+    "key": "columns.view_order",
+    "en": "View order"
+  },
+  {
+    "key": "customer_reviews.12_8k_reviews",
+    "en": "12.8K reviews"
+  },
+  {
+    "key": "customer_reviews.4_6_average_rating",
+    "en": "4.6 average rating"
+  },
+  {
+    "key": "customer_reviews.customers_reviewed_this_month",
+    "en": "Customers reviewed this month"
+  },
+  {
+    "key": "customer_reviews.melody_macy",
+    "en": "Melody Macy"
+  },
+  {
+    "key": "customer_reviews.next_review",
+    "en": "Next review"
+  },
+  {
+    "key": "customer_reviews.previous_review",
+    "en": "Previous review"
+  },
+  {
+    "key": "customer_reviews.reviews",
+    "en": "Reviews"
+  },
+  {
+    "key": "customer_reviews.the_linen_overshirt_arrived_faster_than",
+    "en": "The linen overshirt arrived faster than expected and the fit was exactly right."
+  },
+  {
+    "key": "finance_notification.credit_score_updated",
+    "en": "Credit score updated"
+  },
+  {
+    "key": "finance_notification.view_details",
+    "en": "View details"
+  },
+  {
+    "key": "finance_notification.your_score_increased_by_14_points_to_782",
+    "en": "Your score increased by 14 points to 782."
+  },
+  {
+    "key": "focus_card.focus",
+    "en": "Focus"
+  },
+  {
+    "key": "focus_card.no_notifications_full_focus",
+    "en": "No notifications · Full focus"
+  },
+  {
+    "key": "focus_card.start",
+    "en": "Start"
+  },
+  {
+    "key": "income_breakdown.dividends_and_interest_11",
+    "en": "Dividends and interest · 11%"
+  },
+  {
+    "key": "income_breakdown.freelance_projects_21",
+    "en": "Freelance projects · 21%"
+  },
+  {
+    "key": "income_breakdown.income_sources",
+    "en": "Income sources"
+  },
+  {
+    "key": "income_breakdown.primary_salary_68",
+    "en": "Primary salary · 68%"
+  },
+  {
+    "key": "income_reliability.based_on_last_6_months_of_income",
+    "en": "Based on last 6 months of income"
+  },
+  {
+    "key": "income_reliability.fixed_income",
+    "en": "Fixed Income"
+  },
+  {
+    "key": "income_reliability.fluctuating_sources",
+    "en": "Fluctuating sources"
+  },
+  {
+    "key": "income_reliability.high_reliability",
+    "en": "High Reliability"
+  },
+  {
+    "key": "income_reliability.how_consistent_your_income_has_been_rece",
+    "en": "How consistent your income has been recently."
+  },
+  {
+    "key": "income_reliability.income_reliability",
+    "en": "Income Reliability"
+  },
+  {
+    "key": "income_reliability.recurring_predictable",
+    "en": "Recurring · Predictable"
+  },
+  {
+    "key": "income_reliability.variable_income",
+    "en": "Variable Income"
+  },
+  {
+    "key": "infrastructure_header.infrastructure_overview",
+    "en": "Infrastructure Overview"
+  },
+  {
+    "key": "infrastructure_header.k",
+    "en": "⌘ K"
+  },
+  {
+    "key": "infrastructure_header.last_updated_30s_ago",
+    "en": "Last updated: 30s ago"
+  },
+  {
+    "key": "infrastructure_header.monitor_environments_server_health_uptim",
+    "en": "Monitor environments, server health, uptime, and resource usage across every project."
+  },
+  {
+    "key": "infrastructure_header.search_by_name_or_domain",
+    "en": "Search by name or domain..."
+  },
+  {
+    "key": "insight_cards.average_progress_78_2_projects_above_tar",
+    "en": "Average progress: 78% · 2 projects above target"
+  },
+  {
+    "key": "insight_cards.download_csv",
+    "en": "Download CSV"
+  },
+  {
+    "key": "insight_cards.leads_by_source",
+    "en": "Leads by Source"
+  },
+  {
+    "key": "insight_cards.project_revenue_vs_target",
+    "en": "Project Revenue vs. Target"
+  },
+  {
+    "key": "insight_cards.view_full_report",
+    "en": "View Full Report"
+  },
+  {
+    "key": "inventory.inventory",
+    "en": "Inventory"
+  },
+  {
+    "key": "invoice_adjustments.adjustments",
+    "en": "Adjustments"
+  },
+  {
+    "key": "invoice_adjustments.discount_value",
+    "en": "Discount value"
+  },
+  {
+    "key": "invoice_adjustments.value",
+    "en": "Value"
+  },
+  {
+    "key": "invoice_details.reference_number",
+    "en": "Reference Number"
+  },
+  {
+    "key": "invoice_form.business",
+    "en": "Business"
+  },
+  {
+    "key": "invoice_form.invoice",
+    "en": "Invoice"
+  },
+  {
+    "key": "invoice_form.payment",
+    "en": "Payment"
+  },
+  {
+    "key": "invoice_items.description",
+    "en": "Description"
+  },
+  {
+    "key": "invoice_items.invoice_items",
+    "en": "Invoice Items"
+  },
+  {
+    "key": "invoice_items.line_total",
+    "en": "Line Total"
+  },
+  {
+    "key": "invoice_items.line_total_2",
+    "en": "Line total"
+  },
+  {
+    "key": "invoice_items.unit_cost",
+    "en": "Unit cost"
+  },
+  {
+    "key": "invoice_items.units",
+    "en": "Units"
+  },
+  {
+    "key": "invoice_paper.balance_due",
+    "en": "Balance due"
+  },
+  {
+    "key": "invoice_paper.bill_to",
+    "en": "Bill to"
+  },
+  {
+    "key": "invoice_paper.description",
+    "en": "Description"
+  },
+  {
+    "key": "invoice_paper.from",
+    "en": "From"
+  },
+  {
+    "key": "invoice_paper.invoice",
+    "en": "Invoice"
+  },
+  {
+    "key": "invoice_paper.line_total",
+    "en": "Line total"
+  },
+  {
+    "key": "invoice_paper.net_amount",
+    "en": "Net amount"
+  },
+  {
+    "key": "invoice_paper.payment_account",
+    "en": "Payment account"
+  },
+  {
+    "key": "invoice_paper.prepared_for_prompt_processing",
+    "en": "Prepared for prompt processing."
+  },
+  {
+    "key": "invoice_paper.unit_cost",
+    "en": "Unit cost"
+  },
+  {
+    "key": "invoice_paper.units",
+    "en": "Units"
+  },
+  {
+    "key": "invoice_preview.preview",
+    "en": "Preview"
+  },
+  {
+    "key": "kanban.open_add_task_menu",
+    "en": "Open add task menu"
+  },
+  {
+    "key": "kanban.search_tasks",
+    "en": "Search tasks"
+  },
+  {
+    "key": "kpi_cards.1_in_progress_3_upcoming_1_cancelled",
+    "en": "1 in progress · 3 upcoming · 1 cancelled"
+  },
+  {
+    "key": "kpi_cards.63_pending_18_overdue",
+    "en": "63 pending · 18 overdue"
+  },
+  {
+    "key": "kpi_cards.across_5_grade_11_sections",
+    "en": "across 5 Grade 11 sections"
+  },
+  {
+    "key": "kpi_cards.assignments",
+    "en": "Assignments"
+  },
+  {
+    "key": "kpi_cards.avg_attendance",
+    "en": "Avg. Attendance"
+  },
+  {
+    "key": "kpi_cards.classes_today",
+    "en": "Classes Today"
+  },
+  {
+    "key": "kpi_cards.keep_tabs_on_lead_quality_open_opportuni",
+    "en": "Keep tabs on lead quality, open opportunities, and conversion rates across the current sales cycle."
+  },
+  {
+    "key": "kpi_cards.last_month",
+    "en": "last month"
+  },
+  {
+    "key": "kpi_cards.lead_pipeline_value",
+    "en": "Lead Pipeline Value"
+  },
+  {
+    "key": "kpi_cards.lead_to_deal_rate",
+    "en": "Lead-to-Deal Rate"
+  },
+  {
+    "key": "kpi_cards.open_opportunities",
+    "en": "Open Opportunities"
+  },
+  {
+    "key": "kpi_cards.pipeline_overview",
+    "en": "Pipeline Overview"
+  },
+  {
+    "key": "kpi_cards.qualified_lead_rate",
+    "en": "Qualified Lead Rate"
+  },
+  {
+    "key": "kpi_cards.students_taught",
+    "en": "Students Taught"
+  },
+  {
+    "key": "kpi_cards.vs_last_month",
+    "en": "vs last month"
+  },
+  {
+    "key": "kpi_strip.2_4_pts",
+    "en": "+2.4 pts"
+  },
+  {
+    "key": "kpi_strip.average_order",
+    "en": "Average Order"
+  },
+  {
+    "key": "kpi_strip.customer_growth",
+    "en": "Customer Growth"
+  },
+  {
+    "key": "kpi_strip.return_requests",
+    "en": "Return Requests"
+  },
+  {
+    "key": "kpi_strip.sales_overview",
+    "en": "Sales Overview"
+  },
+  {
+    "key": "kpi_strip.stock_accuracy",
+    "en": "Stock Accuracy"
+  },
+  {
+    "key": "kpi_strip.total_orders",
+    "en": "Total Orders"
+  },
+  {
+    "key": "kpi_strip.total_sales",
+    "en": "Total Sales"
+  },
+  {
+    "key": "kpi_strip.vs_last_audit",
+    "en": "vs last audit"
+  },
+  {
+    "key": "kpi_strip.vs_last_month",
+    "en": "vs last month"
+  },
+  {
+    "key": "kpi_strip.vs_last_week",
+    "en": "vs last week"
+  },
+  {
+    "key": "layout_controls.centered",
+    "en": "Centered"
+  },
+  {
+    "key": "layout_controls.customize_your_dashboard_layout_preferen",
+    "en": "Customize your dashboard layout preferences."
+  },
+  {
+    "key": "layout_controls.dark",
+    "en": "Dark"
+  },
+  {
+    "key": "layout_controls.floating",
+    "en": "Floating"
+  },
+  {
+    "key": "layout_controls.fonts",
+    "en": "Fonts"
+  },
+  {
+    "key": "layout_controls.full_width",
+    "en": "Full Width"
+  },
+  {
+    "key": "layout_controls.icon",
+    "en": "Icon"
+  },
+  {
+    "key": "layout_controls.inset",
+    "en": "Inset"
+  },
+  {
+    "key": "layout_controls.light",
+    "en": "Light"
+  },
+  {
+    "key": "layout_controls.navbar_behavior",
+    "en": "Navbar Behavior"
+  },
+  {
+    "key": "layout_controls.offcanvas",
+    "en": "OffCanvas"
+  },
+  {
+    "key": "layout_controls.page_layout",
+    "en": "Page Layout"
+  },
+  {
+    "key": "layout_controls.preferences",
+    "en": "Preferences"
+  },
+  {
+    "key": "layout_controls.preset",
+    "en": "Preset"
+  },
+  {
+    "key": "layout_controls.restore_defaults",
+    "en": "Restore Defaults"
+  },
+  {
+    "key": "layout_controls.scroll",
+    "en": "Scroll"
+  },
+  {
+    "key": "layout_controls.select_font",
+    "en": "Select font"
+  },
+  {
+    "key": "layout_controls.sidebar",
+    "en": "Sidebar"
+  },
+  {
+    "key": "layout_controls.sidebar_collapse_mode",
+    "en": "Sidebar Collapse Mode"
+  },
+  {
+    "key": "layout_controls.sidebar_style",
+    "en": "Sidebar Style"
+  },
+  {
+    "key": "layout_controls.sticky",
+    "en": "Sticky"
+  },
+  {
+    "key": "layout_controls.system",
+    "en": "System"
+  },
+  {
+    "key": "layout_controls.theme_mode",
+    "en": "Theme Mode"
+  },
+  {
+    "key": "layout_controls.theme_preset",
+    "en": "Theme Preset"
+  },
+  {
+    "key": "layout_controls.toggle_centered",
+    "en": "Toggle centered"
+  },
+  {
+    "key": "layout_controls.toggle_dark",
+    "en": "Toggle dark"
+  },
+  {
+    "key": "layout_controls.toggle_floating",
+    "en": "Toggle floating"
+  },
+  {
+    "key": "layout_controls.toggle_full_width",
+    "en": "Toggle full-width"
+  },
+  {
+    "key": "layout_controls.toggle_icon",
+    "en": "Toggle icon"
+  },
+  {
+    "key": "layout_controls.toggle_inset",
+    "en": "Toggle inset"
+  },
+  {
+    "key": "layout_controls.toggle_light",
+    "en": "Toggle light"
+  },
+  {
+    "key": "layout_controls.toggle_offcanvas",
+    "en": "Toggle offcanvas"
+  },
+  {
+    "key": "layout_controls.toggle_scroll",
+    "en": "Toggle scroll"
+  },
+  {
+    "key": "layout_controls.toggle_sidebar",
+    "en": "Toggle sidebar"
+  },
+  {
+    "key": "layout_controls.toggle_sticky",
+    "en": "Toggle sticky"
+  },
+  {
+    "key": "layout_controls.toggle_system",
+    "en": "Toggle system"
+  },
+  {
+    "key": "layout.check_out_the_docs_or_open_an_issue_on_g",
+    "en": "Check out the docs or open an issue on GitHub, community support is just a click away."
+  },
+  {
+    "key": "layout.clone_the_repo_install_dependencies_and",
+    "en": "Clone the repo, install dependencies, and your dashboard is live in minutes."
+  },
+  {
+    "key": "layout.design_build_launch_repeat",
+    "en": "Design. Build. Launch. Repeat."
+  },
+  {
+    "key": "layout.need_help",
+    "en": "Need help?"
+  },
+  {
+    "key": "layout.open_github_repository",
+    "en": "Open GitHub repository"
+  },
+  {
+    "key": "layout.ready_to_launch",
+    "en": "Ready to launch?"
+  },
+  {
+    "key": "login_form.login",
+    "en": "Login"
+  },
+  {
+    "key": "logistics.selected_shipment_details_and_route_map",
+    "en": "Selected shipment details and route map."
+  },
+  {
+    "key": "mail_inbox.inbox",
+    "en": "Inbox"
+  },
+  {
+    "key": "mail_inbox.search",
+    "en": "Search..."
+  },
+  {
+    "key": "mail_sidebar.folders",
+    "en": "Folders"
+  },
+  {
+    "key": "mail_sidebar.new_email",
+    "en": "New email"
+  },
+  {
+    "key": "mail_view.archive",
+    "en": "Archive"
+  },
+  {
+    "key": "mail_view.close_message",
+    "en": "Close message"
+  },
+  {
+    "key": "mail_view.more_actions",
+    "en": "More actions"
+  },
+  {
+    "key": "mail_view.move_to_trash",
+    "en": "Move to trash"
+  },
+  {
+    "key": "mail_view.next_message",
+    "en": "Next message"
+  },
+  {
+    "key": "mail_view.pin_thread",
+    "en": "Pin thread"
+  },
+  {
+    "key": "mail_view.previous_message",
+    "en": "Previous message"
+  },
+  {
+    "key": "mail_view.reply",
+    "en": "Reply"
+  },
+  {
+    "key": "mail.loading_mail",
+    "en": "Loading mail..."
+  },
+  {
+    "key": "mail.mail_message",
+    "en": "Mail message"
+  },
+  {
+    "key": "mail.read_the_selected_email_message",
+    "en": "Read the selected email message"
+  },
+  {
+    "key": "metric_cards.acquisition_needs_attention",
+    "en": "Acquisition needs attention"
+  },
+  {
+    "key": "metric_cards.active_accounts",
+    "en": "Active Accounts"
+  },
+  {
+    "key": "metric_cards.engagement_exceeds_targets",
+    "en": "Engagement exceeds targets"
+  },
+  {
+    "key": "metric_cards.growth_rate",
+    "en": "Growth Rate"
+  },
+  {
+    "key": "metric_cards.meets_growth_projections",
+    "en": "Meets growth projections"
+  },
+  {
+    "key": "metric_cards.new_customers",
+    "en": "New Customers"
+  },
+  {
+    "key": "metric_cards.total_revenue",
+    "en": "Total Revenue"
+  },
+  {
+    "key": "metric_cards.visitors_for_the_last_6_months",
+    "en": "Visitors for the last 6 months"
+  },
+  {
+    "key": "monthly_cash_flow.this_month_net",
+    "en": "This month · Net"
+  },
+  {
+    "key": "nav_documents.documents",
+    "en": "Documents"
+  },
+  {
+    "key": "nav_documents.more",
+    "en": "More"
+  },
+  {
+    "key": "nav_main.inbox",
+    "en": "Inbox"
+  },
+  {
+    "key": "nav_main.quick_create",
+    "en": "Quick Create"
+  },
+  {
+    "key": "net_worth.3_680_mom",
+    "en": "+$3,680 MoM"
+  },
+  {
+    "key": "net_worth.across_all_linked_accounts",
+    "en": "Across all linked accounts"
+  },
+  {
+    "key": "net_worth.this_month",
+    "en": "This month"
+  },
+  {
+    "key": "not_found.go_back_home",
+    "en": "Go back home"
+  },
+  {
+    "key": "not_found.page_not_found",
+    "en": "Page not found."
+  },
+  {
+    "key": "not_found.the_page_you_are_looking_for_could_not_b",
+    "en": "The page you are looking for could not be found."
+  },
+  {
+    "key": "operational_cards.action_items",
+    "en": "Action Items"
+  },
+  {
+    "key": "operational_cards.leads_increased_by_18_2_since_last_month",
+    "en": "Leads increased by 18.2% since last month."
+  },
+  {
+    "key": "operational_cards.sales_by_region",
+    "en": "Sales by Region"
+  },
+  {
+    "key": "operational_cards.sales_pipeline",
+    "en": "Sales Pipeline"
+  },
+  {
+    "key": "opportunities_section.recent_opportunities",
+    "en": "Recent Opportunities"
+  },
+  {
+    "key": "opportunities_section.search_deals",
+    "en": "Search deals..."
+  },
+  {
+    "key": "opportunities_section.track_qualified_leads_moving_through_dis",
+    "en": "Track qualified leads moving through discovery, proposal, and closing stages."
+  },
+  {
+    "key": "overview_cards.35_growth_since_last_year",
+    "en": "+35% growth since last year"
+  },
+  {
+    "key": "overview_cards.last_6_months",
+    "en": "Last 6 Months"
+  },
+  {
+    "key": "overview_cards.last_month",
+    "en": "Last Month"
+  },
+  {
+    "key": "overview_cards.new_leads",
+    "en": "New Leads"
+  },
+  {
+    "key": "overview_cards.projects_won",
+    "en": "Projects Won"
+  },
+  {
+    "key": "overview_cards.proposals_sent",
+    "en": "Proposals Sent"
+  },
+  {
+    "key": "overview_cards.revenue",
+    "en": "Revenue"
+  },
+  {
+    "key": "overview_cards.revenue_growth",
+    "en": "Revenue Growth"
+  },
+  {
+    "key": "overview_cards.year_to_date_ytd",
+    "en": "Year to Date (YTD)"
+  },
+  {
+    "key": "overview_kpis.124_more_than_last_month",
+    "en": "$124 more than last month"
+  },
+  {
+    "key": "overview_kpis.410_above_your_30_day_average",
+    "en": "$410 above your 30-day average"
+  },
+  {
+    "key": "overview_kpis.9_8k_vs_last_month",
+    "en": "+$9.8K vs last month"
+  },
+  {
+    "key": "overview_kpis.available_cash",
+    "en": "Available cash"
+  },
+  {
+    "key": "overview_kpis.monthly_spend",
+    "en": "Monthly spend"
+  },
+  {
+    "key": "overview_kpis.net_worth",
+    "en": "Net worth"
+  },
+  {
+    "key": "overview_kpis.savings_rate",
+    "en": "Savings rate"
+  },
+  {
+    "key": "overview_kpis.up_from_25_6_last_month",
+    "en": "Up from 25.6% last month"
+  },
+  {
+    "key": "page.academy_dashboard",
+    "en": "Academy Dashboard"
+  },
+  {
+    "key": "page.accounts",
+    "en": "Accounts"
+  },
+  {
+    "key": "page.accounts_view_coming_soon",
+    "en": "Accounts view coming soon."
+  },
+  {
+    "key": "page.acquisition",
+    "en": "Acquisition"
+  },
+  {
+    "key": "page.acquisition_view_coming_soon",
+    "en": "Acquisition view coming soon."
+  },
+  {
+    "key": "page.activity",
+    "en": "Activity"
+  },
+  {
+    "key": "page.add_invoice_details_review_the_preview_a",
+    "en": "Add invoice details, review the preview, and send it to your client."
+  },
+  {
+    "key": "page.all_channels",
+    "en": "All Channels"
+  },
+  {
+    "key": "page.audience",
+    "en": "Audience"
+  },
+  {
+    "key": "page.audience_view_coming_soon",
+    "en": "Audience view coming soon."
+  },
+  {
+    "key": "page.chat_preview",
+    "en": "Chat preview"
+  },
+  {
+    "key": "page.coming_soon",
+    "en": "Coming Soon"
+  },
+  {
+    "key": "page.conversions",
+    "en": "Conversions"
+  },
+  {
+    "key": "page.conversions_view_coming_soon",
+    "en": "Conversions view coming soon."
+  },
+  {
+    "key": "page.create_new_invoice",
+    "en": "Create New Invoice"
+  },
+  {
+    "key": "page.create_your_account",
+    "en": "Create your account"
+  },
+  {
+    "key": "page.dashboard",
+    "en": "Dashboard"
+  },
+  {
+    "key": "page.engagement",
+    "en": "Engagement"
+  },
+  {
+    "key": "page.engagement_view_coming_soon",
+    "en": "Engagement view coming soon."
+  },
+  {
+    "key": "page.fill_in_your_details_below_we_promise_no",
+    "en": "Fill in your details below. We promise not to quiz you about your first pet&apos;s name (this time)."
+  },
+  {
+    "key": "page.go_to_homepage",
+    "en": "Go to Homepage"
+  },
+  {
+    "key": "page.good_morning_arham",
+    "en": "Good morning, Arham."
+  },
+  {
+    "key": "page.good_morning_teacher_heres_a_quick_overv",
+    "en": "Good morning, Teacher. Here's a quick overview of today's activity."
+  },
+  {
+    "key": "page.hello_again",
+    "en": "Hello again"
+  },
+  {
+    "key": "page.hello_aiy",
+    "en": "Hello, Aiy"
+  },
+  {
+    "key": "page.heres_a_list_of_your_tasks_for_this_mont",
+    "en": "Here's a list of your tasks for this month!"
+  },
+  {
+    "key": "page.insights",
+    "en": "Insights"
+  },
+  {
+    "key": "page.last_30_days",
+    "en": "Last 30 Days"
+  },
+  {
+    "key": "page.last_month",
+    "en": "Last Month"
+  },
+  {
+    "key": "page.let_apos_s_make_today_productive_and_mea",
+    "en": "Let&apos;s make today productive and meaningful."
+  },
+  {
+    "key": "page.login",
+    "en": "Login"
+  },
+  {
+    "key": "page.login_to_continue",
+    "en": "Login to continue"
+  },
+  {
+    "key": "page.login_to_your_account",
+    "en": "Login to your account"
+  },
+  {
+    "key": "page.mail_preview",
+    "en": "Mail preview"
+  },
+  {
+    "key": "page.marketplace",
+    "en": "Marketplace"
+  },
+  {
+    "key": "page.monitor_traffic_engagement_and_conversio",
+    "en": "Monitor traffic, engagement, and conversion performance in one view."
+  },
+  {
+    "key": "page.online_store",
+    "en": "Online Store"
+  },
+  {
+    "key": "page.open_chat_in_new_tab",
+    "en": "Open chat in new tab"
+  },
+  {
+    "key": "page.open_mail_in_new_tab",
+    "en": "Open mail in new tab"
+  },
+  {
+    "key": "page.or_continue_with",
+    "en": "Or continue with"
+  },
+  {
+    "key": "page.overview",
+    "en": "Overview"
+  },
+  {
+    "key": "page.page_not_found",
+    "en": "Page not found."
+  },
+  {
+    "key": "page.personal_finances",
+    "en": "Personal Finances"
+  },
+  {
+    "key": "page.please_enter_your_details_to_login",
+    "en": "Please enter your details to login."
+  },
+  {
+    "key": "page.please_enter_your_details_to_register",
+    "en": "Please enter your details to register."
+  },
+  {
+    "key": "page.register",
+    "en": "Register"
+  },
+  {
+    "key": "page.retail",
+    "en": "Retail"
+  },
+  {
+    "key": "page.social",
+    "en": "Social"
+  },
+  {
+    "key": "page.store_overview",
+    "en": "Store Overview"
+  },
+  {
+    "key": "page.this_iframe_shows_the_standalone_chat_sc",
+    "en": "This iframe shows the standalone chat screen. Open it in full screen for a better view."
+  },
+  {
+    "key": "page.this_iframe_shows_the_standalone_mail_sc",
+    "en": "This iframe shows the standalone mail screen. Open it in full screen for a better view."
+  },
+  {
+    "key": "page.this_month",
+    "en": "This Month"
+  },
+  {
+    "key": "page.this_page_is_under_development_and_will",
+    "en": "This page is under development and will be available in future updates."
+  },
+  {
+    "key": "page.this_section_will_be_added_in_future_upd",
+    "en": "This section will be added in future updates."
+  },
+  {
+    "key": "page.transactions",
+    "en": "Transactions"
+  },
+  {
+    "key": "page.transactions_view_coming_soon",
+    "en": "Transactions view coming soon."
+  },
+  {
+    "key": "page.unauthorized_access",
+    "en": "Unauthorized Access"
+  },
+  {
+    "key": "page.updated_5_min_ago",
+    "en": "Updated 5 min ago"
+  },
+  {
+    "key": "page.utilities",
+    "en": "Utilities"
+  },
+  {
+    "key": "page.welcome",
+    "en": "Welcome!"
+  },
+  {
+    "key": "page.welcome_back",
+    "en": "Welcome back!"
+  },
+  {
+    "key": "page.welcome_back_enter_your_email_and_passwo",
+    "en": "Welcome back. Enter your email and password, let&apos;s hope you remember them this time."
+  },
+  {
+    "key": "page.year_to_date",
+    "en": "Year to Date"
+  },
+  {
+    "key": "page.you_apos_re_in_the_right_place",
+    "en": "You&apos;re in the right place."
+  },
+  {
+    "key": "page.you_do_not_have_permission_to_view_the_r",
+    "en": "You do not have permission to view the requested content. Please contact the site administrator if you believe this is an error."
+  },
+  {
+    "key": "pagination.go_to_next_page",
+    "en": "Go to next page"
+  },
+  {
+    "key": "pagination.go_to_previous_page",
+    "en": "Go to previous page"
+  },
+  {
+    "key": "pagination.more_pages",
+    "en": "More pages"
+  },
+  {
+    "key": "pagination.pagination",
+    "en": "pagination"
+  },
+  {
+    "key": "performance_highlights.performance_highlights",
+    "en": "Performance Highlights"
+  },
+  {
+    "key": "performance_overview.3_months",
+    "en": "3 months"
+  },
+  {
+    "key": "performance_overview.all_segments",
+    "en": "All segments"
+  },
+  {
+    "key": "performance_overview.customer_activity",
+    "en": "Customer Activity"
+  },
+  {
+    "key": "performance_overview.customer_activity_for_the_last_3_months",
+    "en": "Customer activity for the last 3 months"
+  },
+  {
+    "key": "performance_overview.last_3_months",
+    "en": "Last 3 months"
+  },
+  {
+    "key": "performance_overview.organic",
+    "en": "Organic"
+  },
+  {
+    "key": "performance_overview.paid",
+    "en": "Paid"
+  },
+  {
+    "key": "performance_overview.period",
+    "en": "Period"
+  },
+  {
+    "key": "performance_overview.segments",
+    "en": "Segments"
+  },
+  {
+    "key": "performance_overview.view_report",
+    "en": "View report"
+  },
+  {
+    "key": "pipeline_activity.discovery_calls_booked",
+    "en": "Discovery Calls Booked"
+  },
+  {
+    "key": "pipeline_activity.last_12_months",
+    "en": "Last 12 months"
+  },
+  {
+    "key": "pipeline_activity.last_30_days",
+    "en": "Last 30 days"
+  },
+  {
+    "key": "pipeline_activity.last_quarter",
+    "en": "Last quarter"
+  },
+  {
+    "key": "pipeline_activity.leads",
+    "en": "leads"
+  },
+  {
+    "key": "pipeline_activity.meetings",
+    "en": "meetings"
+  },
+  {
+    "key": "pipeline_activity.qualified_lead_flow",
+    "en": "Qualified Lead Flow"
+  },
+  {
+    "key": "pipeline_activity.select_range",
+    "en": "Select range"
+  },
+  {
+    "key": "pipeline_activity.total_qualified_leads_captured_over_the",
+    "en": "Total qualified leads captured over the last 12 months."
+  },
+  {
+    "key": "primary_account.available_balance",
+    "en": "Available balance"
+  },
+  {
+    "key": "primary_account.pay",
+    "en": "Pay"
+  },
+  {
+    "key": "primary_account.request",
+    "en": "Request"
+  },
+  {
+    "key": "project_environments.environment",
+    "en": "Environment"
+  },
+  {
+    "key": "project_environments.health",
+    "en": "Health"
+  },
+  {
+    "key": "project_environments.latency",
+    "en": "Latency"
+  },
+  {
+    "key": "project_environments.no_environments_in_this_project",
+    "en": "No environments in this project"
+  },
+  {
+    "key": "project_environments.platform",
+    "en": "Platform"
+  },
+  {
+    "key": "project_environments.resources",
+    "en": "Resources"
+  },
+  {
+    "key": "project_environments.server",
+    "en": "Server"
+  },
+  {
+    "key": "project_environments.uptime",
+    "en": "Uptime"
+  },
+  {
+    "key": "projects_section.active",
+    "en": "Active"
+  },
+  {
+    "key": "projects_section.completed",
+    "en": "Completed"
+  },
+  {
+    "key": "projects_section.planning",
+    "en": "Planning"
+  },
+  {
+    "key": "projects_section.projects",
+    "en": "Projects"
+  },
+  {
+    "key": "quick_actions.quick_actions",
+    "en": "Quick Actions"
+  },
+  {
+    "key": "quick_actions.quick_transfer",
+    "en": "Quick Transfer"
+  },
+  {
+    "key": "quick_actions.send",
+    "en": "Send"
+  },
+  {
+    "key": "quick_actions.shortcuts",
+    "en": "Shortcuts"
+  },
+  {
+    "key": "quick_actions.usd",
+    "en": "USD"
+  },
+  {
+    "key": "quote_card.keep_showing_up_you_apos_ve_got_this",
+    "en": "Keep showing up. You&apos;ve got this."
+  },
+  {
+    "key": "quote_card.small_consistent_actions_lead_to_big_res",
+    "en": "Small, consistent actions lead to big results."
+  },
+  {
+    "key": "realtime_visitors.canada",
+    "en": "Canada"
+  },
+  {
+    "key": "realtime_visitors.india",
+    "en": "India"
+  },
+  {
+    "key": "realtime_visitors.live",
+    "en": "Live"
+  },
+  {
+    "key": "realtime_visitors.per_minute",
+    "en": "per minute"
+  },
+  {
+    "key": "realtime_visitors.realtime_visitors",
+    "en": "Realtime Visitors"
+  },
+  {
+    "key": "realtime_visitors.united_kingdom",
+    "en": "United Kingdom"
+  },
+  {
+    "key": "realtime_visitors.united_states",
+    "en": "United States"
+  },
+  {
+    "key": "recent_notes_card.recent_notes",
+    "en": "Recent Notes"
+  },
+  {
+    "key": "recent_notes_card.view_all",
+    "en": "View all"
+  },
+  {
+    "key": "recent_orders.download_orders",
+    "en": "Download orders"
+  },
+  {
+    "key": "recent_orders.open_orders",
+    "en": "Open orders"
+  },
+  {
+    "key": "recent_orders.recent_orders",
+    "en": "Recent Orders"
+  },
+  {
+    "key": "register_form.register",
+    "en": "Register"
+  },
+  {
+    "key": "roles.3_roles_have_unreviewed_permission_chang",
+    "en": "3 roles have unreviewed permission changes."
+  },
+  {
+    "key": "roles.access_reviews",
+    "en": "Access reviews"
+  },
+  {
+    "key": "roles.access_reviews_coming_soon",
+    "en": "Access Reviews Coming Soon"
+  },
+  {
+    "key": "roles.active",
+    "en": "Active"
+  },
+  {
+    "key": "roles.alex_kim",
+    "en": "Alex Kim"
+  },
+  {
+    "key": "roles.all",
+    "en": "All"
+  },
+  {
+    "key": "roles.chris_lee",
+    "en": "Chris Lee"
+  },
+  {
+    "key": "roles.create_role",
+    "en": "Create role"
+  },
+  {
+    "key": "roles.custom",
+    "en": "Custom"
+  },
+  {
+    "key": "roles.jane_doe",
+    "en": "Jane Doe"
+  },
+  {
+    "key": "roles.manage_access_roles_and_permissions_acro",
+    "en": "Manage access roles and permissions across your organization."
+  },
+  {
+    "key": "roles.needs_review",
+    "en": "Needs review"
+  },
+  {
+    "key": "roles.owner",
+    "en": "Owner:"
+  },
+  {
+    "key": "roles.permission_sets",
+    "en": "Permission sets"
+  },
+  {
+    "key": "roles.permission_sets_coming_soon",
+    "en": "Permission Sets Coming Soon"
+  },
+  {
+    "key": "roles.review_required",
+    "en": "Review required"
+  },
+  {
+    "key": "roles.roles",
+    "en": "Roles"
+  },
+  {
+    "key": "roles.roles_permissions",
+    "en": "Roles & Permissions"
+  },
+  {
+    "key": "roles.search_roles",
+    "en": "Search roles..."
+  },
+  {
+    "key": "roles.status",
+    "en": "Status:"
+  },
+  {
+    "key": "roles.system",
+    "en": "System"
+  },
+  {
+    "key": "roles.type",
+    "en": "Type:"
+  },
+  {
+    "key": "savings_rate.3_5_mom",
+    "en": "+3.5% MoM"
+  },
+  {
+    "key": "savings_rate.above_your_average",
+    "en": "Above your average"
+  },
+  {
+    "key": "savings_rate.this_month_after_expenses",
+    "en": "This month · After expenses"
+  },
+  {
+    "key": "search_dialog.no_results_found",
+    "en": "No results found."
+  },
+  {
+    "key": "search_dialog.search_dashboards_users_and_more",
+    "en": "Search dashboards, users, and more…"
+  },
+  {
+    "key": "section_cards.acquisition_needs_attention",
+    "en": "Acquisition needs attention"
+  },
+  {
+    "key": "section_cards.active_accounts",
+    "en": "Active Accounts"
+  },
+  {
+    "key": "section_cards.engagement_exceed_targets",
+    "en": "Engagement exceed targets"
+  },
+  {
+    "key": "section_cards.growth_rate",
+    "en": "Growth Rate"
+  },
+  {
+    "key": "section_cards.meets_growth_projections",
+    "en": "Meets growth projections"
+  },
+  {
+    "key": "section_cards.new_customers",
+    "en": "New Customers"
+  },
+  {
+    "key": "section_cards.total_revenue",
+    "en": "Total Revenue"
+  },
+  {
+    "key": "section_cards.visitors_for_the_last_6_months",
+    "en": "Visitors for the last 6 months"
+  },
+  {
+    "key": "shipment_details.activity",
+    "en": "Activity"
+  },
+  {
+    "key": "shipment_details.activity_view_coming_soon",
+    "en": "Activity view coming soon."
+  },
+  {
+    "key": "shipment_details.cargo",
+    "en": "Cargo"
+  },
+  {
+    "key": "shipment_details.cargo_details",
+    "en": "Cargo details"
+  },
+  {
+    "key": "shipment_details.cargo_view_coming_soon",
+    "en": "Cargo view coming soon."
+  },
+  {
+    "key": "shipment_details.copy_shipment_id",
+    "en": "Copy shipment ID"
+  },
+  {
+    "key": "shipment_details.documents",
+    "en": "Documents"
+  },
+  {
+    "key": "shipment_details.documents_view_coming_soon",
+    "en": "Documents view coming soon."
+  },
+  {
+    "key": "shipment_details.overview",
+    "en": "Overview"
+  },
+  {
+    "key": "shipment_details.route",
+    "en": "Route"
+  },
+  {
+    "key": "shipment_details.route_view_coming_soon",
+    "en": "Route view coming soon."
+  },
+  {
+    "key": "shipment_details.select_a_shipment_to_view_details",
+    "en": "Select a shipment to view details."
+  },
+  {
+    "key": "shipment_details.status",
+    "en": "Status"
+  },
+  {
+    "key": "shipment_details.total_weight",
+    "en": "Total weight"
+  },
+  {
+    "key": "shipment_details.transport_mode",
+    "en": "Transport mode"
+  },
+  {
+    "key": "shipment_list.all_156",
+    "en": "All (156)"
+  },
+  {
+    "key": "shipment_list.cargo",
+    "en": "Cargo"
+  },
+  {
+    "key": "shipment_list.delayed_9",
+    "en": "Delayed (9)"
+  },
+  {
+    "key": "shipment_list.delivered_98",
+    "en": "Delivered (98)"
+  },
+  {
+    "key": "shipment_list.eta",
+    "en": "ETA"
+  },
+  {
+    "key": "shipment_list.in_transit_32",
+    "en": "In Transit (32)"
+  },
+  {
+    "key": "shipment_list.search_shipments",
+    "en": "Search shipments"
+  },
+  {
+    "key": "shipment_list.search_shipments_2",
+    "en": "Search shipments..."
+  },
+  {
+    "key": "shipment_list.shipments",
+    "en": "Shipments"
+  },
+  {
+    "key": "shipment_route_map.southeast_asia_shipment_region_map",
+    "en": "Southeast Asia shipment region map"
+  },
+  {
+    "key": "sidebar_support_card.looking_for_something_more",
+    "en": "Looking for something more?"
+  },
+  {
+    "key": "sidebar_support_card.reach_out_on_x",
+    "en": "Reach out on X"
+  },
+  {
+    "key": "sidebar.displays_the_mobile_sidebar",
+    "en": "Displays the mobile sidebar."
+  },
+  {
+    "key": "sidebar.sidebar",
+    "en": "Sidebar"
+  },
+  {
+    "key": "sidebar.toggle_sidebar",
+    "en": "Toggle Sidebar"
+  },
+  {
+    "key": "spending_breakdown.expense_distribution_by_category",
+    "en": "Expense distribution by category."
+  },
+  {
+    "key": "spending_breakdown.spending_breakdown",
+    "en": "Spending Breakdown"
+  },
+  {
+    "key": "spinner.loading",
+    "en": "Loading"
+  },
+  {
+    "key": "store_traffic.12_9k_visits",
+    "en": "12.9K visits"
+  },
+  {
+    "key": "store_traffic.store_traffic",
+    "en": "Store Traffic"
+  },
+  {
+    "key": "subscriber_overview.18_426_customers",
+    "en": "18,426 Customers"
+  },
+  {
+    "key": "subscriber_overview.recent_customer_records_with_plan_billin",
+    "en": "Recent customer records with plan, billing, status, and signup activity."
+  },
+  {
+    "key": "table.add_section",
+    "en": "Add Section"
+  },
+  {
+    "key": "table.export",
+    "en": "Export"
+  },
+  {
+    "key": "table.focus_documents",
+    "en": "Focus Documents"
+  },
+  {
+    "key": "table.go_to_first_page",
+    "en": "Go to first page"
+  },
+  {
+    "key": "table.go_to_last_page",
+    "en": "Go to last page"
+  },
+  {
+    "key": "table.go_to_next_page",
+    "en": "Go to next page"
+  },
+  {
+    "key": "table.go_to_previous_page",
+    "en": "Go to previous page"
+  },
+  {
+    "key": "table.outline",
+    "en": "Outline"
+  },
+  {
+    "key": "table.recent_leads",
+    "en": "Recent Leads"
+  },
+  {
+    "key": "table.rows_per_page",
+    "en": "Rows per page"
+  },
+  {
+    "key": "table.search_customers",
+    "en": "Search customers..."
+  },
+  {
+    "key": "table.select_a_view",
+    "en": "Select a view"
+  },
+  {
+    "key": "table.toggle_columns",
+    "en": "Toggle columns"
+  },
+  {
+    "key": "table.track_and_manage_your_latest_leads_and_t",
+    "en": "Track and manage your latest leads and their status."
+  },
+  {
+    "key": "table.view",
+    "en": "View"
+  },
+  {
+    "key": "task_reminders.monthly_proposal_goal",
+    "en": "Monthly Proposal Goal"
+  },
+  {
+    "key": "task_reminders.product_demo_with_tim",
+    "en": "Product demo with Tim"
+  },
+  {
+    "key": "task_reminders.sent",
+    "en": "sent"
+  },
+  {
+    "key": "task_reminders.upcoming_meetings",
+    "en": "Upcoming Meetings"
+  },
+  {
+    "key": "task_reminders.weblabs_studio",
+    "en": "Weblabs Studio"
+  },
+  {
+    "key": "tasks_section.tasks",
+    "en": "Tasks"
+  },
+  {
+    "key": "tasks_section.this_week",
+    "en": "This Week"
+  },
+  {
+    "key": "tasks_section.today",
+    "en": "Today"
+  },
+  {
+    "key": "tasks_section.tomorrow",
+    "en": "Tomorrow"
+  },
+  {
+    "key": "tasks_toolbar.filter_tasks",
+    "en": "Filter tasks..."
+  },
+  {
+    "key": "tasks_toolbar.toggle_columns",
+    "en": "Toggle columns"
+  },
+  {
+    "key": "tasks.go_to_first_page",
+    "en": "Go to first page"
+  },
+  {
+    "key": "tasks.go_to_last_page",
+    "en": "Go to last page"
+  },
+  {
+    "key": "tasks.prev",
+    "en": "Prev"
+  },
+  {
+    "key": "tasks.rows_per_page",
+    "en": "Rows per page"
+  },
+  {
+    "key": "top_pages.avg_time",
+    "en": "Avg Time"
+  },
+  {
+    "key": "top_pages.bounce",
+    "en": "Bounce"
+  },
+  {
+    "key": "top_pages.page_performance",
+    "en": "Page Performance"
+  },
+  {
+    "key": "top_pages.views",
+    "en": "Views"
+  },
+  {
+    "key": "top_products.73_of_sales",
+    "en": "73% of sales"
+  },
+  {
+    "key": "top_products.products",
+    "en": "Products"
+  },
+  {
+    "key": "top_products.sales",
+    "en": "Sales"
+  },
+  {
+    "key": "top_products.sales_by_category",
+    "en": "Sales by category"
+  },
+  {
+    "key": "top_products.share",
+    "en": "Share"
+  },
+  {
+    "key": "top_products.top_products",
+    "en": "Top Products"
+  },
+  {
+    "key": "top_traffic_sources.campaigns",
+    "en": "Campaigns"
+  },
+  {
+    "key": "top_traffic_sources.referrers",
+    "en": "Referrers"
+  },
+  {
+    "key": "top_traffic_sources.sources",
+    "en": "Sources"
+  },
+  {
+    "key": "top_traffic_sources.traffic_sources",
+    "en": "Traffic Sources"
+  },
+  {
+    "key": "traffic_quality.traffic_quality",
+    "en": "Traffic Quality"
+  },
+  {
+    "key": "traffic_sources.14_8k_visits",
+    "en": "14.8K visits"
+  },
+  {
+    "key": "traffic_sources.traffic_sources",
+    "en": "Traffic Sources"
+  },
+  {
+    "key": "transactions_overview_card.monthly",
+    "en": "Monthly"
+  },
+  {
+    "key": "transactions_overview_card.spending_overview",
+    "en": "Spending Overview"
+  },
+  {
+    "key": "transactions_overview_card.weekly",
+    "en": "Weekly"
+  },
+  {
+    "key": "transactions_overview_card.yearly",
+    "en": "Yearly"
+  },
+  {
+    "key": "upcoming_events.upcoming_events",
+    "en": "Upcoming Events"
+  },
+  {
+    "key": "upcoming_transactions.upcoming_bills_payments",
+    "en": "Upcoming Bills & Payments"
+  },
+  {
+    "key": "users_columns.actions",
+    "en": "Actions"
+  },
+  {
+    "key": "users_columns.deactivate_user",
+    "en": "Deactivate user"
+  },
+  {
+    "key": "users_columns.edit_user",
+    "en": "Edit user"
+  },
+  {
+    "key": "users_columns.manage_team",
+    "en": "Manage team"
+  },
+  {
+    "key": "users_columns.resend_invite",
+    "en": "Resend invite"
+  },
+  {
+    "key": "users_columns.select_all_users",
+    "en": "Select all users"
+  },
+  {
+    "key": "users_columns.view_profile",
+    "en": "View profile"
+  },
+  {
+    "key": "users_table.rows_per_page",
+    "en": "Rows per page"
+  },
+  {
+    "key": "users.grid_view",
+    "en": "Grid view"
+  },
+  {
+    "key": "users.k",
+    "en": "⌘K"
+  },
+  {
+    "key": "users.list_view",
+    "en": "List view"
+  },
+  {
+    "key": "users.manage_your_organization_members_and_the",
+    "en": "Manage your organization members and their access."
+  },
+  {
+    "key": "users.role",
+    "en": "Role:"
+  },
+  {
+    "key": "users.search_users",
+    "en": "Search users..."
+  },
+  {
+    "key": "users.status",
+    "en": "Status:"
+  },
+  {
+    "key": "users.team",
+    "en": "Team:"
+  },
+  {
+    "key": "users.users",
+    "en": "Users"
+  },
+  {
+    "key": "users.workspace",
+    "en": "Workspace:"
+  },
+  {
+    "key": "wallet.air_gapped",
+    "en": "Air-Gapped"
+  },
+  {
+    "key": "wallet.wallet",
+    "en": "Wallet"
+  },
+  {
+    "key": "weekly_summary_card.4_of_6_goals_completed",
+    "en": "4 of 6 goals completed"
+  },
+  {
+    "key": "weekly_summary_card.this_week",
+    "en": "This Week"
+  },
+  {
+    "key": "weekly_summary_card.view_all",
+    "en": "View all"
+  },
+  {
+    "key": "weekly_summary_card.youre_doing_great_keep_the_momentum_goin",
+    "en": "You’re doing great. Keep the momentum going."
+  }
+]
diff --git a/next.config.mjs b/next.config.mjs
index c4ef153..e1218b0 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -1,3 +1,6 @@
+import createNextIntlPlugin from 'next-intl/plugin';
+const withNextIntl = createNextIntlPlugin();
+
 /** @type {import('next').NextConfig} */
 const nextConfig = {
   reactCompiler: true,
@@ -15,4 +18,4 @@ const nextConfig = {
   },
 };
 
-export default nextConfig;
+export default withNextIntl(nextConfig);
diff --git a/package.json b/package.json
index 6834642..3318acc 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,9 @@
     "generate:presets": "ts-node -P tsconfig.scripts.json src/scripts/generate-theme-presets.ts"
   },
   "lint-staged": {
-    "*.{js,ts,jsx,tsx}": ["biome check --write --no-errors-on-unmatched"]
+    "*.{js,ts,jsx,tsx}": [
+      "biome check --write --no-errors-on-unmatched"
+    ]
   },
   "dependencies": {
     "@base-ui/react": "^1.6.0",
@@ -51,7 +53,8 @@
     "topojson-client": "^3.1.0",
     "vaul": "^1.1.2",
     "zod": "^4.4.3",
-    "zustand": "^5.0.14"
+    "zustand": "^5.0.14",
+    "next-intl": "^4.0.0"
   },
   "devDependencies": {
     "@biomejs/biome": "^2.5.1",
diff --git a/src/app/(external)/page.tsx b/src/app/(external)/page.tsx
index b7902fb..8ba36bd 100644
--- a/src/app/(external)/page.tsx
+++ b/src/app/(external)/page.tsx
@@ -1,6 +1,8 @@
+import { useTranslations } from 'next-intl';
 import { redirect } from "next/navigation";
 
 export default function Home() {
+  const t = useTranslations();
   redirect("/dashboard/default");
-  return <>Coming Soon</>;
+  return <>{t('page.coming_soon')}</>;
 }
diff --git a/src/app/(main)/auth/_components/login-form.tsx b/src/app/(main)/auth/_components/login-form.tsx
index b3533c0..9d0926a 100644
--- a/src/app/(main)/auth/_components/login-form.tsx
+++ b/src/app/(main)/auth/_components/login-form.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { zodResolver } from "@hookform/resolvers/zod";
 import { Controller, useForm } from "react-hook-form";
@@ -17,6 +18,7 @@ const formSchema = z.object({
 });
 
 export function LoginForm() {
+  const t = useTranslations();
   const form = useForm<z.infer<typeof formSchema>>({
     resolver: zodResolver(formSchema),
     defaultValues: {
@@ -98,7 +100,7 @@ export function LoginForm() {
         />
       </FieldGroup>
       <Button className="w-full" type="submit">
-        Login
+        {t('login_form.login')}
       </Button>
     </form>
   );
diff --git a/src/app/(main)/auth/_components/register-form.tsx b/src/app/(main)/auth/_components/register-form.tsx
index 5d5733d..7c49656 100644
--- a/src/app/(main)/auth/_components/register-form.tsx
+++ b/src/app/(main)/auth/_components/register-form.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { zodResolver } from "@hookform/resolvers/zod";
 import { Controller, useForm } from "react-hook-form";
@@ -21,6 +22,7 @@ const formSchema = z
   });
 
 export function RegisterForm() {
+  const t = useTranslations();
   const form = useForm<z.infer<typeof formSchema>>({
     resolver: zodResolver(formSchema),
     defaultValues: {
@@ -99,7 +101,7 @@ export function RegisterForm() {
         />
       </FieldGroup>
       <Button className="w-full" type="submit">
-        Register
+        {t('register_form.register')}
       </Button>
     </form>
   );
diff --git a/src/app/(main)/auth/v1/login/page.tsx b/src/app/(main)/auth/v1/login/page.tsx
index 160fce4..2948098 100644
--- a/src/app/(main)/auth/v1/login/page.tsx
+++ b/src/app/(main)/auth/v1/login/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import Link from "next/link";
 
 import { Command } from "lucide-react";
@@ -6,6 +7,7 @@ import { LoginForm } from "../../_components/login-form";
 import { GoogleButton } from "../../_components/social-auth/google-button";
 
 export default function LoginV1() {
+  const t = useTranslations();
   return (
     <div className="flex h-dvh">
       <div className="hidden bg-primary lg:block lg:w-1/3">
@@ -13,8 +15,8 @@ export default function LoginV1() {
           <div className="space-y-6">
             <Command className="mx-auto size-12 text-primary-foreground" />
             <div className="space-y-2">
-              <h1 className="font-light text-5xl text-primary-foreground">Hello again</h1>
-              <p className="text-primary-foreground/80 text-xl">Login to continue</p>
+              <h1 className="font-light text-5xl text-primary-foreground">{t('page.hello_again')}</h1>
+              <p className="text-primary-foreground/80 text-xl">{t('page.login_to_continue')}</p>
             </div>
           </div>
         </div>
@@ -23,9 +25,9 @@ export default function LoginV1() {
       <div className="flex w-full items-center justify-center bg-background p-8 lg:w-2/3">
         <div className="w-full max-w-md space-y-10 py-24 lg:py-32">
           <div className="space-y-4 text-center">
-            <div className="font-medium tracking-tight">Login</div>
+            <div className="font-medium tracking-tight">{t('page.login')}</div>
             <div className="mx-auto max-w-xl text-muted-foreground">
-              Welcome back. Enter your email and password, let&apos;s hope you remember them this time.
+              {t('page.welcome_back_enter_your_email_and_passwo')}
             </div>
           </div>
           <div className="space-y-4">
diff --git a/src/app/(main)/auth/v1/register/page.tsx b/src/app/(main)/auth/v1/register/page.tsx
index 155bfb4..36f5ddc 100644
--- a/src/app/(main)/auth/v1/register/page.tsx
+++ b/src/app/(main)/auth/v1/register/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import Link from "next/link";
 
 import { Command } from "lucide-react";
@@ -6,14 +7,15 @@ import { RegisterForm } from "../../_components/register-form";
 import { GoogleButton } from "../../_components/social-auth/google-button";
 
 export default function RegisterV1() {
+  const t = useTranslations();
   return (
     <div className="flex h-dvh">
       <div className="flex w-full items-center justify-center bg-background p-8 lg:w-2/3">
         <div className="w-full max-w-md space-y-10 py-24 lg:py-32">
           <div className="space-y-4 text-center">
-            <div className="font-medium tracking-tight">Register</div>
+            <div className="font-medium tracking-tight">{t('page.register')}</div>
             <div className="mx-auto max-w-xl text-muted-foreground">
-              Fill in your details below. We promise not to quiz you about your first pet&apos;s name (this time).
+              {t('page.fill_in_your_details_below_we_promise_no')}
             </div>
           </div>
           <div className="space-y-4">
@@ -34,8 +36,8 @@ export default function RegisterV1() {
           <div className="space-y-6">
             <Command className="mx-auto size-12 text-primary-foreground" />
             <div className="space-y-2">
-              <h1 className="font-light text-5xl text-primary-foreground">Welcome!</h1>
-              <p className="text-primary-foreground/80 text-xl">You&apos;re in the right place.</p>
+              <h1 className="font-light text-5xl text-primary-foreground">{t('page.welcome')}</h1>
+              <p className="text-primary-foreground/80 text-xl">{t('page.you_apos_re_in_the_right_place')}</p>
             </div>
           </div>
         </div>
diff --git a/src/app/(main)/auth/v2/layout.tsx b/src/app/(main)/auth/v2/layout.tsx
index db6a2bb..65f1c86 100644
--- a/src/app/(main)/auth/v2/layout.tsx
+++ b/src/app/(main)/auth/v2/layout.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import type { ReactNode } from "react";
 
 import { Command } from "lucide-react";
@@ -6,6 +7,7 @@ import { Separator } from "@/components/ui/separator";
 import { APP_CONFIG } from "@/config/app-config";
 
 export default function Layout({ children }: Readonly<{ children: ReactNode }>) {
+  const t = useTranslations();
   return (
     <main>
       <div className="grid h-dvh justify-center p-2 lg:grid-cols-2">
@@ -13,19 +15,19 @@ export default function Layout({ children }: Readonly<{ children: ReactNode }>)
           <div className="absolute top-10 space-y-1 px-10 text-primary-foreground">
             <Command className="size-10" />
             <h1 className="font-medium text-2xl">{APP_CONFIG.name}</h1>
-            <p className="text-sm">Design. Build. Launch. Repeat.</p>
+            <p className="text-sm">{t('layout.design_build_launch_repeat')}</p>
           </div>
 
           <div className="absolute bottom-10 flex w-full justify-between px-10">
             <div className="flex-1 space-y-1 text-primary-foreground">
-              <h2 className="font-medium">Ready to launch?</h2>
-              <p className="text-sm">Clone the repo, install dependencies, and your dashboard is live in minutes.</p>
+              <h2 className="font-medium">{t('layout.ready_to_launch')}</h2>
+              <p className="text-sm">{t('layout.clone_the_repo_install_dependencies_and')}</p>
             </div>
             <Separator orientation="vertical" className="mx-3 h-auto!" />
             <div className="flex-1 space-y-1 text-primary-foreground">
-              <h2 className="font-medium">Need help?</h2>
+              <h2 className="font-medium">{t('layout.need_help')}</h2>
               <p className="text-sm">
-                Check out the docs or open an issue on GitHub, community support is just a click away.
+                {t('layout.check_out_the_docs_or_open_an_issue_on_g')}
               </p>
             </div>
           </div>
diff --git a/src/app/(main)/auth/v2/login/page.tsx b/src/app/(main)/auth/v2/login/page.tsx
index 5f09a4b..d67d6a4 100644
--- a/src/app/(main)/auth/v2/login/page.tsx
+++ b/src/app/(main)/auth/v2/login/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import Link from "next/link";
 
 import { Globe } from "lucide-react";
@@ -8,17 +9,18 @@ import { LoginForm } from "../../_components/login-form";
 import { GoogleButton } from "../../_components/social-auth/google-button";
 
 export default function LoginV2() {
+  const t = useTranslations();
   return (
     <>
       <div className="mx-auto flex w-full flex-col justify-center space-y-8 sm:w-[350px]">
         <div className="space-y-2 text-center">
-          <h1 className="font-medium text-3xl">Login to your account</h1>
-          <p className="text-muted-foreground text-sm">Please enter your details to login.</p>
+          <h1 className="font-medium text-3xl">{t('page.login_to_your_account')}</h1>
+          <p className="text-muted-foreground text-sm">{t('page.please_enter_your_details_to_login')}</p>
         </div>
         <div className="space-y-4">
           <GoogleButton className="w-full" />
           <div className="relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-border after:border-t">
-            <span className="relative z-10 bg-background px-2 text-muted-foreground">Or continue with</span>
+            <span className="relative z-10 bg-background px-2 text-muted-foreground">{t('page.or_continue_with')}</span>
           </div>
           <LoginForm />
         </div>
diff --git a/src/app/(main)/auth/v2/register/page.tsx b/src/app/(main)/auth/v2/register/page.tsx
index 7675f28..753470f 100644
--- a/src/app/(main)/auth/v2/register/page.tsx
+++ b/src/app/(main)/auth/v2/register/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import Link from "next/link";
 
 import { Globe } from "lucide-react";
@@ -8,17 +9,18 @@ import { RegisterForm } from "../../_components/register-form";
 import { GoogleButton } from "../../_components/social-auth/google-button";
 
 export default function RegisterV2() {
+  const t = useTranslations();
   return (
     <>
       <div className="mx-auto flex w-full flex-col justify-center space-y-8 sm:w-[350px]">
         <div className="space-y-2 text-center">
-          <h1 className="font-medium text-3xl">Create your account</h1>
-          <p className="text-muted-foreground text-sm">Please enter your details to register.</p>
+          <h1 className="font-medium text-3xl">{t('page.create_your_account')}</h1>
+          <p className="text-muted-foreground text-sm">{t('page.please_enter_your_details_to_register')}</p>
         </div>
         <div className="space-y-4">
           <GoogleButton className="w-full" />
           <div className="relative text-center text-sm after:absolute after:inset-0 after:top-1/2 after:z-0 after:flex after:items-center after:border-border after:border-t">
-            <span className="relative z-10 bg-background px-2 text-muted-foreground">Or continue with</span>
+            <span className="relative z-10 bg-background px-2 text-muted-foreground">{t('page.or_continue_with')}</span>
           </div>
           <RegisterForm />
         </div>
diff --git a/src/app/(main)/chat/_components/chat-conversation-list.tsx b/src/app/(main)/chat/_components/chat-conversation-list.tsx
index 0381059..0ce79d0 100644
--- a/src/app/(main)/chat/_components/chat-conversation-list.tsx
+++ b/src/app/(main)/chat/_components/chat-conversation-list.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { ChevronDown, Filter, PanelRightClose, PanelRightOpen, Pin } from "lucide-react";
 
@@ -21,6 +22,7 @@ interface ChatConversationListProps {
 }
 
 export function ChatConversationList({ conversations, onSelectConversation, className }: ChatConversationListProps) {
+  const t = useTranslations();
   const [chat, setChat] = useChat();
   const { state, toggleSidebar } = useSidebar();
   const isCollapsed = state === "collapsed";
@@ -50,7 +52,7 @@ export function ChatConversationList({ conversations, onSelectConversation, clas
             {isCollapsed ? <PanelRightClose /> : <PanelRightOpen />}
           </Button>
           <Separator orientation="vertical" className="mr-1.5 h-4 data-vertical:self-center" />
-          <h1 className="font-medium text-xl leading-none">Inbox</h1>
+          <h1 className="font-medium text-xl leading-none">{t('chat_conversation_list.inbox')}</h1>
         </div>
         <div className="flex items-center gap-2">
           <Button variant="ghost" size="icon-sm">
@@ -75,7 +77,7 @@ export function ChatConversationList({ conversations, onSelectConversation, clas
             Snoozed
             <span className="text-muted-foreground text-xs">(2)</span>
           </TabsTrigger>
-          <TabsTrigger value="closed">Closed</TabsTrigger>
+          <TabsTrigger value="closed">{t('chat_conversation_list.closed')}</TabsTrigger>
         </TabsList>
       </Tabs>
 
diff --git a/src/app/(main)/chat/_components/chat-header.tsx b/src/app/(main)/chat/_components/chat-header.tsx
index ea831e3..102de79 100644
--- a/src/app/(main)/chat/_components/chat-header.tsx
+++ b/src/app/(main)/chat/_components/chat-header.tsx
@@ -1,29 +1,31 @@
+import { useTranslations } from 'next-intl';
 import { Bell, MessageSquarePlus, Search, Settings } from "lucide-react";
 
 import { Button } from "@/components/ui/button";
 import { InputGroup, InputGroupAddon, InputGroupInput } from "@/components/ui/input-group";
 
 export function ChatHeader() {
+  const t = useTranslations();
   return (
     <header className="sticky top-0 z-50 flex h-(--header-height) w-full items-center border-b bg-background">
       <div className="flex h-full w-full items-center justify-between gap-3 px-4">
         <div className="flex min-w-0 flex-1 items-center gap-3">
-          <h1 className="text-nowrap font-medium text-base">Studio Chat</h1>
+          <h1 className="text-nowrap font-medium text-base">{t('chat_header.studio_chat')}</h1>
           <InputGroup className="h-7 w-full max-w-sm">
-            <InputGroupInput className="h-7" placeholder="Search conversations..." />
+            <InputGroupInput className="h-7" placeholder={t('chat_header.search_conversations')} />
             <InputGroupAddon>
               <Search />
             </InputGroupAddon>
           </InputGroup>
         </div>
         <div className="flex items-center gap-1">
-          <Button variant="ghost" size="icon-sm" aria-label="New conversation">
+          <Button variant="ghost" size="icon-sm" aria-label={t('chat_header.new_conversation')}>
             <MessageSquarePlus />
           </Button>
-          <Button variant="ghost" size="icon-sm" aria-label="Notifications">
+          <Button variant="ghost" size="icon-sm" aria-label={t('chat_header.notifications')}>
             <Bell />
           </Button>
-          <Button variant="ghost" size="icon-sm" aria-label="Settings">
+          <Button variant="ghost" size="icon-sm" aria-label={t('chat_header.settings')}>
             <Settings />
           </Button>
         </div>
diff --git a/src/app/(main)/chat/_components/chat-profile-details.tsx b/src/app/(main)/chat/_components/chat-profile-details.tsx
index 3445036..505100d 100644
--- a/src/app/(main)/chat/_components/chat-profile-details.tsx
+++ b/src/app/(main)/chat/_components/chat-profile-details.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import {
   Building2,
@@ -32,6 +33,7 @@ interface ChatProfileDetailsProps {
 }
 
 export function ChatProfileDetails({ contact, onClose }: ChatProfileDetailsProps) {
+  const t = useTranslations();
   return (
     <div className="flex h-full min-h-0 flex-col gap-4 overflow-y-auto p-4">
       <div className="flex items-start gap-3">
@@ -44,34 +46,34 @@ export function ChatProfileDetails({ contact, onClose }: ChatProfileDetailsProps
           <div className="truncate text-muted-foreground text-xs">{contact.role}</div>
         </div>
 
-        <Button variant="ghost" size="icon-sm" aria-label="Close profile" onClick={onClose}>
+        <Button variant="ghost" size="icon-sm" aria-label={t('chat_profile_details.close_profile')} onClick={onClose}>
           <X />
         </Button>
       </div>
 
       <div className="flex gap-2">
-        <Button size="icon-sm" variant="ghost" aria-label="Email">
+        <Button size="icon-sm" variant="ghost" aria-label={t('chat_profile_details.email')}>
           <Mail className="size-3.5" />
         </Button>
-        <Button size="icon-sm" variant="ghost" aria-label="Call">
+        <Button size="icon-sm" variant="ghost" aria-label={t('chat_profile_details.call')}>
           <PhoneCall className="size-3.5" />
         </Button>
-        <Button size="icon-sm" variant="ghost" aria-label="Schedule">
+        <Button size="icon-sm" variant="ghost" aria-label={t('chat_profile_details.schedule')}>
           <Calendar className="size-3.5" />
         </Button>
-        <Button size="icon-sm" variant="ghost" aria-label="Copy link">
+        <Button size="icon-sm" variant="ghost" aria-label={t('chat_profile_details.copy_link')}>
           <Link className="size-3.5" />
         </Button>
-        <Button size="icon-sm" variant="ghost" aria-label="More">
+        <Button size="icon-sm" variant="ghost" aria-label={t('chat_profile_details.more')}>
           <MoreHorizontal className="size-3.5" />
         </Button>
       </div>
 
       <Tabs defaultValue="details">
         <TabsList variant="line" className="w-full justify-between border-b px-0 **:data-[slot=tabs-trigger]:flex-1">
-          <TabsTrigger value="details">Details</TabsTrigger>
-          <TabsTrigger value="files">Files</TabsTrigger>
-          <TabsTrigger value="activity">Activity</TabsTrigger>
+          <TabsTrigger value="details">{t('chat_profile_details.details')}</TabsTrigger>
+          <TabsTrigger value="files">{t('chat_profile_details.files')}</TabsTrigger>
+          <TabsTrigger value="activity">{t('chat_profile_details.activity')}</TabsTrigger>
         </TabsList>
       </Tabs>
 
@@ -79,17 +81,17 @@ export function ChatProfileDetails({ contact, onClose }: ChatProfileDetailsProps
         <div className="flex flex-col gap-3 text-sm">
           <div className="flex items-center gap-2">
             <Mail className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Email</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.email')}</span>
             <span className="ml-auto truncate text-sm">{contact.email}</span>
           </div>
           <div className="flex items-center gap-2">
             <Phone className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Phone</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.phone')}</span>
             <span className="ml-auto truncate text-sm">{contact.phone}</span>
           </div>
           <div className="flex items-center gap-2">
             <Globe className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Website</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.website')}</span>
             <span className="ml-auto truncate text-sm">{contact.website}</span>
           </div>
         </div>
@@ -99,29 +101,29 @@ export function ChatProfileDetails({ contact, onClose }: ChatProfileDetailsProps
         <div className="flex flex-col gap-3 text-sm">
           <div className="flex items-center gap-2">
             <Building2 className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Company</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.company')}</span>
             <span className="ml-auto truncate text-sm">{contact.company}</span>
           </div>
           <div className="flex items-center gap-2">
             <UserRound className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Role</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.role')}</span>
             <span className="ml-auto truncate text-sm">{contact.role}</span>
           </div>
           <div className="flex items-center gap-2">
             <CheckCircle2 className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Stage</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.stage')}</span>
             <Badge variant="secondary" className="ml-auto">
               {contact.status}
             </Badge>
           </div>
           <div className="flex items-center gap-2">
             <Calendar className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Qualified since</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.qualified_since')}</span>
             <span className="ml-auto truncate text-sm">{contact.qualifiedAt}</span>
           </div>
           <div className="flex items-center gap-2">
             <Monitor className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Timezone</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.timezone')}</span>
             <span className="ml-auto truncate text-sm">{contact.timezone}</span>
           </div>
         </div>
@@ -131,12 +133,12 @@ export function ChatProfileDetails({ contact, onClose }: ChatProfileDetailsProps
         <div className="flex flex-col gap-3 text-sm">
           <div className="flex items-center gap-2">
             <MapPin className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Location</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.location')}</span>
             <span className="ml-auto truncate text-sm">{contact.location}</span>
           </div>
           <div className="flex items-start gap-2">
             <Tag className="size-4 shrink-0 text-muted-foreground" />
-            <span className="text-muted-foreground text-sm">Tags</span>
+            <span className="text-muted-foreground text-sm">{t('chat_profile_details.tags')}</span>
             <div className="ml-auto flex flex-wrap justify-end gap-1">
               {contact.tags.map((tag) => (
                 <Badge key={tag} variant="outline">
diff --git a/src/app/(main)/chat/_components/chat-sidebar.tsx b/src/app/(main)/chat/_components/chat-sidebar.tsx
index dc88e56..ff9f0bf 100644
--- a/src/app/(main)/chat/_components/chat-sidebar.tsx
+++ b/src/app/(main)/chat/_components/chat-sidebar.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { EllipsisVertical, LogOut, Settings, UserRound } from "lucide-react";
 import { siFacebook, siInstagram, siWhatsapp } from "simple-icons";
@@ -38,6 +39,7 @@ const channelBrandIcons = {
 } as const;
 
 export function ChatSidebar() {
+  const t = useTranslations();
   const { state } = useSidebar();
   const _isCollapsed = state === "collapsed";
 
@@ -62,7 +64,7 @@ export function ChatSidebar() {
         </SidebarGroup>
 
         <SidebarGroup>
-          <SidebarGroupLabel className="font-normal">Channels</SidebarGroupLabel>
+          <SidebarGroupLabel className="font-normal">{t('chat_sidebar.channels')}</SidebarGroupLabel>
           <SidebarMenu className="gap-1">
             {channelItems.map((item) => (
               <SidebarMenuItem key={item.id}>
@@ -81,7 +83,7 @@ export function ChatSidebar() {
         </SidebarGroup>
 
         <SidebarGroup>
-          <SidebarGroupLabel className="font-normal">Views</SidebarGroupLabel>
+          <SidebarGroupLabel className="font-normal">{t('chat_sidebar.views')}</SidebarGroupLabel>
           <SidebarMenu className="gap-1">
             {viewItems.map((item) => (
               <SidebarMenuItem key={item.id}>
diff --git a/src/app/(main)/chat/_components/chat-thread.tsx b/src/app/(main)/chat/_components/chat-thread.tsx
index 903d78a..02088f8 100644
--- a/src/app/(main)/chat/_components/chat-thread.tsx
+++ b/src/app/(main)/chat/_components/chat-thread.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import {
   AlarmClock,
@@ -56,6 +57,7 @@ interface ChatThreadProps {
 }
 
 export function ChatThread({ contact, messages, onOpenContact, onBack, showBackButton, className }: ChatThreadProps) {
+  const t = useTranslations();
   return (
     <div className={cn("flex h-full flex-col py-3", className)}>
       <div className="flex flex-col gap-3">
@@ -85,31 +87,31 @@ export function ChatThread({ contact, messages, onOpenContact, onBack, showBackB
           <div className="flex items-center gap-1">
             <Tooltip>
               <TooltipTrigger asChild>
-                <Button variant="ghost" size="icon-sm" aria-label="Call">
+                <Button variant="ghost" size="icon-sm" aria-label={t('chat_thread.call')}>
                   <PhoneCall />
                 </Button>
               </TooltipTrigger>
-              <TooltipContent>Call</TooltipContent>
+              <TooltipContent>{t('chat_thread.call')}</TooltipContent>
             </Tooltip>
             <Tooltip>
               <TooltipTrigger asChild>
-                <Button variant="ghost" size="icon-sm" aria-label="Tag">
+                <Button variant="ghost" size="icon-sm" aria-label={t('chat_thread.tag')}>
                   <Tag />
                 </Button>
               </TooltipTrigger>
-              <TooltipContent>Tag</TooltipContent>
+              <TooltipContent>{t('chat_thread.tag')}</TooltipContent>
             </Tooltip>
             <Tooltip>
               <TooltipTrigger asChild>
-                <Button variant="ghost" size="icon-sm" aria-label="Snooze">
+                <Button variant="ghost" size="icon-sm" aria-label={t('chat_thread.snooze')}>
                   <AlarmClock />
                 </Button>
               </TooltipTrigger>
-              <TooltipContent>Snooze</TooltipContent>
+              <TooltipContent>{t('chat_thread.snooze')}</TooltipContent>
             </Tooltip>
             <DropdownMenu>
               <DropdownMenuTrigger asChild>
-                <Button variant="ghost" size="icon-sm" aria-label="More actions">
+                <Button variant="ghost" size="icon-sm" aria-label={t('chat_thread.more_actions')}>
                   <MoreHorizontal />
                 </Button>
               </DropdownMenuTrigger>
@@ -130,7 +132,7 @@ export function ChatThread({ contact, messages, onOpenContact, onBack, showBackB
                 </DropdownMenuGroup>
                 <DropdownMenuSeparator />
                 <DropdownMenuGroup>
-                  <DropdownMenuItem variant="destructive">Block contact</DropdownMenuItem>
+                  <DropdownMenuItem variant="destructive">{t('chat_thread.block_contact')}</DropdownMenuItem>
                 </DropdownMenuGroup>
               </DropdownMenuContent>
             </DropdownMenu>
@@ -145,7 +147,7 @@ export function ChatThread({ contact, messages, onOpenContact, onBack, showBackB
           <MessageScrollerViewport>
             <MessageScrollerContent className="gap-6 px-2 py-8">
               <Marker variant="separator">
-                <MarkerContent>May 6, 2026</MarkerContent>
+                <MarkerContent>{t('chat_thread.may_6_2026')}</MarkerContent>
               </Marker>
 
               {messages.map((message) => {
@@ -203,18 +205,18 @@ export function ChatThread({ contact, messages, onOpenContact, onBack, showBackB
             className="w-full justify-start gap-2 border-b px-3 **:data-[slot=tabs-trigger]:border-x-0 **:data-[slot=tabs-trigger]:px-6 group-data-horizontal/tabs:h-10"
           >
             <TabsTrigger value="reply" className="flex-none px-1">
-              Reply
+              {t('chat_thread.reply')}
             </TabsTrigger>
             <TabsTrigger value="note" className="flex-none px-1">
-              Internal note
+              {t('chat_thread.internal_note')}
             </TabsTrigger>
           </TabsList>
 
           <TabsContent value="reply" className="m-0">
-            <MessageComposer placeholder="Type your message..." />
+            <MessageComposer placeholder={t('chat_thread.type_your_message')} />
           </TabsContent>
           <TabsContent value="note" className="m-0">
-            <MessageComposer placeholder="Write an internal note..." />
+            <MessageComposer placeholder={t('chat_thread.write_an_internal_note')} />
           </TabsContent>
         </Tabs>
       </div>
@@ -223,6 +225,7 @@ export function ChatThread({ contact, messages, onOpenContact, onBack, showBackB
 }
 
 function MessageComposer({ placeholder }: { placeholder: string }) {
+  const t = useTranslations();
   return (
     <form
       className="w-full"
@@ -236,24 +239,24 @@ function MessageComposer({ placeholder }: { placeholder: string }) {
           className="min-h-14 px-3 py-2.5 text-sm ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:aria-invalid:ring-0"
         />
         <InputGroupAddon align="block-end">
-          <InputGroupButton aria-label="Format" type="button" size="icon-sm">
+          <InputGroupButton aria-label={t('chat_thread.format')} type="button" size="icon-sm">
             <Type />
           </InputGroupButton>
-          <InputGroupButton aria-label="Emoji" type="button" size="icon-sm">
+          <InputGroupButton aria-label={t('chat_thread.emoji')} type="button" size="icon-sm">
             <Smile />
           </InputGroupButton>
-          <InputGroupButton aria-label="Attach file" type="button" size="icon-sm">
+          <InputGroupButton aria-label={t('chat_thread.attach_file')} type="button" size="icon-sm">
             <Paperclip />
           </InputGroupButton>
-          <InputGroupButton aria-label="Insert link" type="button" size="icon-sm">
+          <InputGroupButton aria-label={t('chat_thread.insert_link')} type="button" size="icon-sm">
             <Link />
           </InputGroupButton>
-          <InputGroupButton aria-label="AI assist" type="button" size="icon-sm" variant="outline">
+          <InputGroupButton aria-label={t('chat_thread.ai_assist')} type="button" size="icon-sm" variant="outline">
             <Sparkles />
           </InputGroupButton>
           <InputGroupButton type="submit" variant="default" size="icon-sm" className="ml-auto">
             <Send />
-            <span className="sr-only">Send</span>
+            <span className="sr-only">{t('chat_thread.send')}</span>
           </InputGroupButton>
         </InputGroupAddon>
       </InputGroup>
diff --git a/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-actions-manager-queue.tsx b/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-actions-manager-queue.tsx
index 603104a..4783497 100644
--- a/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-actions-manager-queue.tsx
+++ b/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-actions-manager-queue.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Badge } from "@/components/ui/badge";
 import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
 import { formatCurrency } from "@/lib/utils";
@@ -27,44 +28,45 @@ const NEXT_INTERVENTIONS = [
 ] as const;
 
 export function ActionsManagerQueue() {
+  const t = useTranslations();
   return (
     <Card className="h-full shadow-xs">
       <CardHeader>
-        <CardTitle>Manager Action Queue</CardTitle>
-        <CardDescription>Escalate, coach, and reforecast before commit call</CardDescription>
+        <CardTitle>{t('analytics_actions_manager_queue.manager_action_queue')}</CardTitle>
+        <CardDescription>{t('analytics_actions_manager_queue.escalate_coach_and_reforecast_before_com')}</CardDescription>
       </CardHeader>
 
       <CardContent className="flex h-full flex-col gap-4">
         <div className="flex h-full flex-col gap-3">
           <div className="grid grid-cols-2 gap-2">
-            <StatCard label="Actionable deals" value="7" />
-            <StatCard label="Revenue in play" value={formatCurrency(811000, { noDecimals: true })} mono />
-            <StatCard label="Owners engaged" value="3" />
-            <StatCard label="Median risk" value="72" mono />
+            <StatCard label={t('analytics_actions_manager_queue.actionable_deals')} value="7" />
+            <StatCard label={t('analytics_actions_manager_queue.revenue_in_play')} value={formatCurrency(811000, { noDecimals: true })} mono />
+            <StatCard label={t('analytics_actions_manager_queue.owners_engaged')} value="3" />
+            <StatCard label={t('analytics_actions_manager_queue.median_risk')} value="72" mono />
           </div>
 
           <div className="space-y-2 rounded-md border bg-muted/20 px-3 py-2">
             <div className="flex items-center justify-between gap-2">
-              <p className="text-muted-foreground text-xs">Intervention mix</p>
+              <p className="text-muted-foreground text-xs">{t('analytics_actions_manager_queue.intervention_mix')}</p>
               <Badge variant="outline" className="h-5 px-2 text-[11px] tabular-nums">
                 Escalate {formatCurrency(174000, { noDecimals: true })}
               </Badge>
             </div>
             <div className="space-y-1.5">
               <div className="flex items-center justify-between rounded-md border bg-background/70 px-2.5 py-1.5">
-                <span className="text-xs">Escalate</span>
+                <span className="text-xs">{t('analytics_actions_manager_queue.escalate')}</span>
                 <span className="text-muted-foreground text-xs tabular-nums">
                   1 deals · 14% · {formatCurrency(174000, { noDecimals: true })}
                 </span>
               </div>
               <div className="flex items-center justify-between rounded-md border bg-background/70 px-2.5 py-1.5">
-                <span className="text-xs">Coach</span>
+                <span className="text-xs">{t('analytics_actions_manager_queue.coach')}</span>
                 <span className="text-muted-foreground text-xs tabular-nums">
                   4 deals · 57% · {formatCurrency(478000, { noDecimals: true })}
                 </span>
               </div>
               <div className="flex items-center justify-between rounded-md border bg-background/70 px-2.5 py-1.5">
-                <span className="text-xs">Reforecast</span>
+                <span className="text-xs">{t('analytics_actions_manager_queue.reforecast')}</span>
                 <span className="text-muted-foreground text-xs tabular-nums">
                   2 deals · 29% · {formatCurrency(159000, { noDecimals: true })}
                 </span>
@@ -74,25 +76,25 @@ export function ActionsManagerQueue() {
 
           <div className="space-y-2 rounded-md border bg-muted/20 px-3 py-2">
             <div className="flex items-center justify-between gap-2">
-              <p className="text-muted-foreground text-xs">Manager focus</p>
-              <span className="text-muted-foreground text-xs tabular-nums">This forecast cycle</span>
+              <p className="text-muted-foreground text-xs">{t('analytics_actions_manager_queue.manager_focus')}</p>
+              <span className="text-muted-foreground text-xs tabular-nums">{t('analytics_actions_manager_queue.this_forecast_cycle')}</span>
             </div>
 
             <div className="space-y-1.5 text-xs">
               <div className="flex items-center justify-between gap-2 rounded-md border bg-background/70 px-2.5 py-1.5">
-                <span>Coach queue</span>
+                <span>{t('analytics_actions_manager_queue.coach_queue')}</span>
                 <span className="text-muted-foreground tabular-nums">
                   4 deals · {formatCurrency(478000, { noDecimals: true })}
                 </span>
               </div>
 
               <div className="flex items-center justify-between gap-2 rounded-md border bg-background/70 px-2.5 py-1.5">
-                <span>Primary owner</span>
-                <span className="text-muted-foreground tabular-nums">Leila Zhang · 3 deals</span>
+                <span>{t('analytics_actions_manager_queue.primary_owner')}</span>
+                <span className="text-muted-foreground tabular-nums">{t('analytics_actions_manager_queue.leila_zhang_3_deals')}</span>
               </div>
 
               <div className="flex items-center justify-between gap-2 rounded-md border bg-background/70 px-2.5 py-1.5">
-                <span>Stale pipeline</span>
+                <span>{t('analytics_actions_manager_queue.stale_pipeline')}</span>
                 <span className="text-muted-foreground tabular-nums">
                   8 deals · {formatCurrency(1151000, { noDecimals: true })}
                 </span>
@@ -101,7 +103,7 @@ export function ActionsManagerQueue() {
           </div>
 
           <div className="flex-1 space-y-2">
-            <p className="text-muted-foreground text-xs">Next interventions</p>
+            <p className="text-muted-foreground text-xs">{t('analytics_actions_manager_queue.next_interventions')}</p>
 
             {NEXT_INTERVENTIONS.map((item) => (
               <div key={`${item.priority}-${item.dealId}`} className="space-y-1 rounded-md border px-3 py-2">
@@ -120,8 +122,8 @@ export function ActionsManagerQueue() {
           </div>
 
           <div className="flex items-center justify-between gap-2 rounded-md border bg-muted/20 px-3 py-2">
-            <span className="text-muted-foreground text-xs">No-action monitor</span>
-            <span className="font-medium text-xs tabular-nums">3 Deals</span>
+            <span className="text-muted-foreground text-xs">{t('analytics_actions_manager_queue.no_action_monitor')}</span>
+            <span className="font-medium text-xs tabular-nums">{t('analytics_actions_manager_queue.3_deals')}</span>
           </div>
         </div>
       </CardContent>
diff --git a/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-drivers-coverage-triage.tsx b/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-drivers-coverage-triage.tsx
index f9a4c33..ca3b823 100644
--- a/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-drivers-coverage-triage.tsx
+++ b/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-drivers-coverage-triage.tsx
@@ -1,8 +1,10 @@
+import { useTranslations } from 'next-intl';
 import { Badge } from "@/components/ui/badge";
 import { Button } from "@/components/ui/button";
 import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
 
 export function DriversCoverageTriage() {
+  const t = useTranslations();
   const leverOptions = [
     {
       key: "deal",
@@ -27,27 +29,27 @@ export function DriversCoverageTriage() {
   return (
     <Card className="shadow-xs">
       <CardHeader>
-        <CardTitle>Coverage Triage</CardTitle>
-        <CardDescription>Decision ladder for this forecast cycle</CardDescription>
+        <CardTitle>{t('analytics_drivers_coverage_triage.coverage_triage')}</CardTitle>
+        <CardDescription>{t('analytics_drivers_coverage_triage.decision_ladder_for_this_forecast_cycle')}</CardDescription>
       </CardHeader>
       <CardContent className="space-y-3">
         <div className="flex flex-wrap items-center gap-2">
           <Badge variant="destructive" className="rounded-md font-medium">
-            At Risk
+            {t('analytics_drivers_coverage_triage.at_risk')}
           </Badge>
           <Badge variant="outline" className="font-medium tabular-nums">
-            1.9x / 3.0x
+            {t('analytics_drivers_coverage_triage.1_9x_3_0x')}
           </Badge>
           <Badge variant="outline" className="font-medium tabular-nums">
-            Gap $222,930
+            {t('analytics_drivers_coverage_triage.gap_222_930')}
           </Badge>
           <Badge variant="outline" className="font-medium tabular-nums">
-            4 deals • ETA 10d
+            {t('analytics_drivers_coverage_triage.4_deals_eta_10d')}
           </Badge>
         </div>
 
         <p className="text-muted-foreground text-xs">
-          Coverage below target. Prioritize qualified volume and shorter cycle time.
+          {t('analytics_drivers_coverage_triage.coverage_below_target_prioritize_qualifi')}
         </p>
 
         <div className="grid grid-cols-1 gap-2 sm:grid-cols-3">
@@ -73,7 +75,7 @@ export function DriversCoverageTriage() {
             </span>
           </div>
           <Button variant="secondary" size="sm" className="h-7 px-3 text-xs">
-            Open top 5 deals
+            {t('analytics_drivers_coverage_triage.open_top_5_deals')}
           </Button>
         </div>
 
diff --git a/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-drivers-forecast-target.tsx b/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-drivers-forecast-target.tsx
index ed716e7..e44c044 100644
--- a/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-drivers-forecast-target.tsx
+++ b/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-drivers-forecast-target.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Bar, CartesianGrid, ComposedChart, Dot, LabelList, Line, ReferenceLine, XAxis, YAxis } from "recharts";
 
@@ -44,6 +45,7 @@ const CHART_DATA: TrendPoint[] = [
 ];
 
 export function DriversForecastTarget() {
+  const t = useTranslations();
   const chartData = CHART_DATA;
   const pipelineMin = Math.min(...CHART_DATA.map((point) => point.weightedPipeline));
   const pipelineMax = Math.max(...CHART_DATA.map((point) => point.weightedPipeline));
@@ -51,14 +53,14 @@ export function DriversForecastTarget() {
   return (
     <Card className="shadow-xs">
       <CardHeader>
-        <CardTitle>Forecast vs Target</CardTitle>
-        <CardDescription>12-week trend with attainment context</CardDescription>
+        <CardTitle>{t('analytics_drivers_forecast_target.forecast_vs_target')}</CardTitle>
+        <CardDescription>{t('analytics_drivers_forecast_target.12_week_trend_with_attainment_context')}</CardDescription>
       </CardHeader>
       <CardContent className="space-y-4">
         <div className="grid grid-cols-1 gap-3 sm:grid-cols-3">
-          <MetricChip label="Attainment" value="72.4%" note="closed won / monthly target" />
-          <MetricChip label="Weighted Pipeline" value="$1,284,000" note="vs $668,000 remaining" />
-          <MetricChip label="Forecast Confidence" value="81.0%" note="volatility-adjusted confidence" />
+          <MetricChip label={t('analytics_drivers_forecast_target.attainment')} value="72.4%" note="closed won / monthly target" />
+          <MetricChip label={t('analytics_drivers_forecast_target.weighted_pipeline')} value="$1,284,000" note="vs $668,000 remaining" />
+          <MetricChip label={t('analytics_drivers_forecast_target.forecast_confidence')} value="81.0%" note="volatility-adjusted confidence" />
         </div>
         <ChartContainer config={forecastChartConfig} className="h-68 w-full">
           <ComposedChart data={chartData} margin={{ left: 4, right: 8, top: 8, bottom: 0 }}>
diff --git a/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-overview.tsx b/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-overview.tsx
index bac08e7..1353240 100644
--- a/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-overview.tsx
+++ b/src/app/(main)/dashboard/(legacy)/analytics-v1/_components/analytics-overview.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -144,6 +145,7 @@ function buildRevenueChartData(from: Date, to: Date) {
 }
 
 function SummaryRow({ revenueSeries }: { revenueSeries: Array<{ day: string; revenue: number }> }) {
+  const t = useTranslations();
   const revenueChartConfig = {
     revenue: {
       label: "Revenue",
@@ -161,7 +163,7 @@ function SummaryRow({ revenueSeries }: { revenueSeries: Array<{ day: string; rev
     <div className="grid grid-cols-1 gap-4 xl:grid-cols-3">
       <div className="min-w-0 space-y-2">
         <div>
-          <div className="font-medium text-muted-foreground text-sm">Revenue</div>
+          <div className="font-medium text-muted-foreground text-sm">{t('analytics_overview.revenue')}</div>
           <div className="font-semibold text-3xl tabular-nums tracking-tight sm:text-4xl">$1,248,000</div>
         </div>
         <div className="flex flex-wrap items-center gap-2">
@@ -170,9 +172,9 @@ function SummaryRow({ revenueSeries }: { revenueSeries: Array<{ day: string; rev
         </div>
 
         <div className="flex flex-wrap items-center gap-2 text-muted-foreground text-sm">
-          <span>Previous $1,141,000</span>
+          <span>{t('analytics_overview.previous_1_141_000')}</span>
           <Badge variant="outline" className="font-medium text-xs">
-            Risk Ladder 30
+            {t('analytics_overview.risk_ladder_30')}
           </Badge>
         </div>
         <div>
@@ -190,14 +192,14 @@ function SummaryRow({ revenueSeries }: { revenueSeries: Array<{ day: string; rev
               />
             </ComposedChart>
           </ChartContainer>
-          <span className="text-muted-foreground text-xs">Selected range</span>
+          <span className="text-muted-foreground text-xs">{t('analytics_overview.selected_range')}</span>
         </div>
       </div>
 
       <Card className="min-w-0 py-4 shadow-xs xl:col-span-2">
         <CardHeader className="px-4">
-          <CardTitle>Risk summary</CardTitle>
-          <CardDescription>Core risk signals vs previous period</CardDescription>
+          <CardTitle>{t('analytics_overview.risk_summary')}</CardTitle>
+          <CardDescription>{t('analytics_overview.core_risk_signals_vs_previous_period')}</CardDescription>
         </CardHeader>
         <CardContent className="grid grid-cols-1 gap-4 px-4 sm:grid-cols-2 xl:grid-cols-4 xl:gap-0 xl:divide-x xl:[&>div:first-child]:pl-0 xl:[&>div:last-child]:pr-0 xl:[&>div]:px-5">
           {RISK_SUMMARY_METRICS.map((item) => (
@@ -268,6 +270,7 @@ function FiltersPopover({
   selectedFilters: FilterToggleKey[];
   onToggle: (key: FilterToggleKey, checked: boolean) => void;
 }) {
+  const t = useTranslations();
   const [open, setOpen] = React.useState(false);
   const activeCount = selectedFilters.length;
 
@@ -285,9 +288,9 @@ function FiltersPopover({
         <PopoverContent align="start" className="w-72">
           <div className="space-y-4">
             <div className="flex items-center justify-between">
-              <h3 className="font-semibold text-sm">Filters</h3>
+              <h3 className="font-semibold text-sm">{t('analytics_overview.filters')}</h3>
               <Badge variant="outline" className="font-medium text-xs tabular-nums">
-                Risk Ladder 30
+                {t('analytics_overview.risk_ladder_30')}
               </Badge>
             </div>
             <div className="space-y-3">
diff --git a/src/app/(main)/dashboard/(legacy)/crm-v1/_components/insight-cards.tsx b/src/app/(main)/dashboard/(legacy)/crm-v1/_components/insight-cards.tsx
index 06da62c..854db34 100644
--- a/src/app/(main)/dashboard/(legacy)/crm-v1/_components/insight-cards.tsx
+++ b/src/app/(main)/dashboard/(legacy)/crm-v1/_components/insight-cards.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Bar, BarChart, CartesianGrid, Label, LabelList, Pie, PieChart, XAxis, YAxis } from "recharts";
 
@@ -14,13 +15,14 @@ import {
 } from "./crm.config";
 
 export function InsightCards() {
+  const t = useTranslations();
   const totalLeads = leadsBySourceChartData.reduce((acc, curr) => acc + curr.leads, 0);
 
   return (
     <div className="grid grid-cols-1 gap-4 *:data-[slot=card]:shadow-xs sm:grid-cols-2 xl:grid-cols-5">
       <Card className="col-span-1 xl:col-span-2">
         <CardHeader>
-          <CardTitle>Leads by Source</CardTitle>
+          <CardTitle>{t('insight_cards.leads_by_source')}</CardTitle>
         </CardHeader>
         <CardContent className="flex items-center gap-6">
           <ChartContainer config={leadsBySourceChartConfig} className="mx-auto aspect-square max-h-48 flex-1">
@@ -89,17 +91,17 @@ export function InsightCards() {
         </CardContent>
         <CardFooter className="gap-2">
           <Button size="sm" variant="outline" className="basis-1/2">
-            View Full Report
+            {t('insight_cards.view_full_report')}
           </Button>
           <Button size="sm" variant="outline" className="basis-1/2">
-            Download CSV
+            {t('insight_cards.download_csv')}
           </Button>
         </CardFooter>
       </Card>
 
       <Card className="col-span-1 xl:col-span-3">
         <CardHeader>
-          <CardTitle>Project Revenue vs. Target</CardTitle>
+          <CardTitle>{t('insight_cards.project_revenue_vs_target')}</CardTitle>
         </CardHeader>
         <CardContent className="size-full max-h-52">
           <ChartContainer config={projectRevenueChartConfig} className="size-full">
@@ -142,7 +144,7 @@ export function InsightCards() {
           </ChartContainer>
         </CardContent>
         <CardFooter>
-          <p className="text-muted-foreground text-xs">Average progress: 78% · 2 projects above target</p>
+          <p className="text-muted-foreground text-xs">{t('insight_cards.average_progress_78_2_projects_above_tar')}</p>
         </CardFooter>
       </Card>
     </div>
diff --git a/src/app/(main)/dashboard/(legacy)/crm-v1/_components/operational-cards.tsx b/src/app/(main)/dashboard/(legacy)/crm-v1/_components/operational-cards.tsx
index 41216f0..7a411d9 100644
--- a/src/app/(main)/dashboard/(legacy)/crm-v1/_components/operational-cards.tsx
+++ b/src/app/(main)/dashboard/(legacy)/crm-v1/_components/operational-cards.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Clock } from "lucide-react";
 import { Funnel, FunnelChart, LabelList } from "recharts";
@@ -12,12 +13,13 @@ import { cn, formatCurrency } from "@/lib/utils";
 import { actionItems, regionSalesData, salesPipelineChartConfig, salesPipelineChartData } from "./crm.config";
 
 export function OperationalCards() {
+  const t = useTranslations();
   const totalSales = regionSalesData.reduce((sum, region) => sum + region.sales, 0);
   return (
     <div className="grid grid-cols-1 gap-4 *:data-[slot=card]:shadow-xs sm:grid-cols-2 xl:grid-cols-3">
       <Card>
         <CardHeader>
-          <CardTitle>Sales Pipeline</CardTitle>
+          <CardTitle>{t('operational_cards.sales_pipeline')}</CardTitle>
         </CardHeader>
         <CardContent className="size-full">
           <ChartContainer config={salesPipelineChartConfig} className="size-full">
@@ -30,13 +32,13 @@ export function OperationalCards() {
           </ChartContainer>
         </CardContent>
         <CardFooter>
-          <p className="text-muted-foreground text-xs">Leads increased by 18.2% since last month.</p>
+          <p className="text-muted-foreground text-xs">{t('operational_cards.leads_increased_by_18_2_since_last_month')}</p>
         </CardFooter>
       </Card>
 
       <Card>
         <CardHeader>
-          <CardTitle>Sales by Region</CardTitle>
+          <CardTitle>{t('operational_cards.sales_by_region')}</CardTitle>
           <CardDescription className="font-medium tabular-nums">
             {formatCurrency(totalSales, { noDecimals: true })}
           </CardDescription>
@@ -80,7 +82,7 @@ export function OperationalCards() {
 
       <Card>
         <CardHeader>
-          <CardTitle>Action Items</CardTitle>
+          <CardTitle>{t('operational_cards.action_items')}</CardTitle>
         </CardHeader>
         <CardContent>
           <ul className="space-y-2.5">
diff --git a/src/app/(main)/dashboard/(legacy)/crm-v1/_components/overview-cards.tsx b/src/app/(main)/dashboard/(legacy)/crm-v1/_components/overview-cards.tsx
index d6feb83..f5dbaa9 100644
--- a/src/app/(main)/dashboard/(legacy)/crm-v1/_components/overview-cards.tsx
+++ b/src/app/(main)/dashboard/(legacy)/crm-v1/_components/overview-cards.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { format, subMonths } from "date-fns";
 import { BadgeDollarSign, Wallet } from "lucide-react";
@@ -19,12 +20,13 @@ import {
 const lastMonth = format(subMonths(new Date(), 1), "LLLL");
 
 export function OverviewCards() {
+  const t = useTranslations();
   return (
     <div className="grid grid-cols-1 gap-4 *:data-[slot=card]:shadow-xs sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6">
       <Card>
         <CardHeader>
-          <CardTitle>New Leads</CardTitle>
-          <CardDescription>Last Month</CardDescription>
+          <CardTitle>{t('overview_cards.new_leads')}</CardTitle>
+          <CardDescription>{t('overview_cards.last_month')}</CardDescription>
         </CardHeader>
         <CardContent className="size-full">
           <ChartContainer className="size-full min-h-24" config={leadsChartConfig}>
@@ -50,8 +52,8 @@ export function OverviewCards() {
 
       <Card className="overflow-hidden pb-0">
         <CardHeader>
-          <CardTitle>Proposals Sent</CardTitle>
-          <CardDescription>Last Month</CardDescription>
+          <CardTitle>{t('overview_cards.proposals_sent')}</CardTitle>
+          <CardDescription>{t('overview_cards.last_month')}</CardDescription>
         </CardHeader>
         <CardContent className="flex-1 p-0">
           <ChartContainer className="size-full min-h-24" config={proposalsChartConfig}>
@@ -88,8 +90,8 @@ export function OverviewCards() {
         </CardHeader>
         <CardContent className="flex size-full flex-col justify-between">
           <div className="space-y-1.5">
-            <CardTitle>Revenue</CardTitle>
-            <CardDescription>Last 6 Months</CardDescription>
+            <CardTitle>{t('overview_cards.revenue')}</CardTitle>
+            <CardDescription>{t('overview_cards.last_6_months')}</CardDescription>
           </div>
           <p className="font-medium text-2xl tabular-nums">$56,050</p>
           <div className="w-fit rounded-md bg-green-500/10 px-2 py-1 font-medium text-green-500 text-xs">+22.2%</div>
@@ -104,8 +106,8 @@ export function OverviewCards() {
         </CardHeader>
         <CardContent className="flex size-full flex-col justify-between">
           <div className="space-y-1.5">
-            <CardTitle>Projects Won</CardTitle>
-            <CardDescription>Last 6 Months</CardDescription>
+            <CardTitle>{t('overview_cards.projects_won')}</CardTitle>
+            <CardDescription>{t('overview_cards.last_6_months')}</CardDescription>
           </div>
           <p className="font-medium text-2xl tabular-nums">136</p>
           <div className="w-fit rounded-md bg-destructive/10 px-2 py-1 font-medium text-destructive text-xs">-2.5%</div>
@@ -114,8 +116,8 @@ export function OverviewCards() {
 
       <Card className="col-span-1 xl:col-span-2">
         <CardHeader>
-          <CardTitle>Revenue Growth</CardTitle>
-          <CardDescription>Year to Date (YTD)</CardDescription>
+          <CardTitle>{t('overview_cards.revenue_growth')}</CardTitle>
+          <CardDescription>{t('overview_cards.year_to_date_ytd')}</CardDescription>
         </CardHeader>
         <CardContent>
           <ChartContainer config={revenueChartConfig} className="h-24 w-full">
@@ -143,7 +145,7 @@ export function OverviewCards() {
           </ChartContainer>
         </CardContent>
         <CardFooter>
-          <p className="text-muted-foreground text-sm">+35% growth since last year</p>
+          <p className="text-muted-foreground text-sm">{t('overview_cards.35_growth_since_last_year')}</p>
         </CardFooter>
       </Card>
     </div>
diff --git a/src/app/(main)/dashboard/(legacy)/crm-v1/_components/recent-leads-table/table.tsx b/src/app/(main)/dashboard/(legacy)/crm-v1/_components/recent-leads-table/table.tsx
index 25c6165..5bca49f 100644
--- a/src/app/(main)/dashboard/(legacy)/crm-v1/_components/recent-leads-table/table.tsx
+++ b/src/app/(main)/dashboard/(legacy)/crm-v1/_components/recent-leads-table/table.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import * as React from "react";
@@ -51,6 +52,7 @@ const COLUMN_LABELS: Record<string, string> = {
 };
 
 export function RecentLeadsTable({ data }: { data: RecentLeadRow[] }) {
+  const t = useTranslations();
   const [rowSelection, setRowSelection] = React.useState({});
   const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({});
   const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);
@@ -82,8 +84,8 @@ export function RecentLeadsTable({ data }: { data: RecentLeadRow[] }) {
   return (
     <Card>
       <CardHeader>
-        <CardTitle>Recent Leads</CardTitle>
-        <CardDescription>Track and manage your latest leads and their status.</CardDescription>
+        <CardTitle>{t('table.recent_leads')}</CardTitle>
+        <CardDescription>{t('table.track_and_manage_your_latest_leads_and_t')}</CardDescription>
         <CardAction>
           <div className="flex items-center gap-2">
             <DropdownMenu>
@@ -95,7 +97,7 @@ export function RecentLeadsTable({ data }: { data: RecentLeadRow[] }) {
                 </Button>
               </DropdownMenuTrigger>
               <DropdownMenuContent align="end" className="w-36">
-                <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>
+                <DropdownMenuLabel>{t('table.toggle_columns')}</DropdownMenuLabel>
                 <DropdownMenuSeparator />
                 <DropdownMenuGroup>
                   {table
@@ -115,7 +117,7 @@ export function RecentLeadsTable({ data }: { data: RecentLeadRow[] }) {
             </DropdownMenu>
             <Button variant="outline" size="sm">
               <Download data-icon="inline-start" />
-              <span className="hidden lg:inline">Export</span>
+              <span className="hidden lg:inline">{t('table.export')}</span>
             </Button>
           </div>
         </CardAction>
@@ -161,7 +163,7 @@ export function RecentLeadsTable({ data }: { data: RecentLeadRow[] }) {
           <div className="flex w-full items-center gap-8 lg:w-fit">
             <div className="hidden items-center gap-2 lg:flex">
               <Label htmlFor="recent-leads-rows-per-page" className="font-medium text-sm">
-                Rows per page
+                {t('table.rows_per_page')}
               </Label>
               <Select
                 value={`${table.getState().pagination.pageSize}`}
@@ -193,7 +195,7 @@ export function RecentLeadsTable({ data }: { data: RecentLeadRow[] }) {
                 onClick={() => table.setPageIndex(0)}
                 disabled={!table.getCanPreviousPage()}
               >
-                <span className="sr-only">Go to first page</span>
+                <span className="sr-only">{t('table.go_to_first_page')}</span>
                 <ChevronsLeftIcon />
               </Button>
               <Button
@@ -203,7 +205,7 @@ export function RecentLeadsTable({ data }: { data: RecentLeadRow[] }) {
                 onClick={() => table.previousPage()}
                 disabled={!table.getCanPreviousPage()}
               >
-                <span className="sr-only">Go to previous page</span>
+                <span className="sr-only">{t('table.go_to_previous_page')}</span>
                 <ChevronLeftIcon />
               </Button>
               <Button
@@ -213,7 +215,7 @@ export function RecentLeadsTable({ data }: { data: RecentLeadRow[] }) {
                 onClick={() => table.nextPage()}
                 disabled={!table.getCanNextPage()}
               >
-                <span className="sr-only">Go to next page</span>
+                <span className="sr-only">{t('table.go_to_next_page')}</span>
                 <ChevronRightIcon />
               </Button>
               <Button
@@ -223,7 +225,7 @@ export function RecentLeadsTable({ data }: { data: RecentLeadRow[] }) {
                 onClick={() => table.setPageIndex(table.getPageCount() - 1)}
                 disabled={!table.getCanNextPage()}
               >
-                <span className="sr-only">Go to last page</span>
+                <span className="sr-only">{t('table.go_to_last_page')}</span>
                 <ChevronsRightIcon />
               </Button>
             </div>
diff --git a/src/app/(main)/dashboard/(legacy)/default-v1/_components/chart-area-interactive.tsx b/src/app/(main)/dashboard/(legacy)/default-v1/_components/chart-area-interactive.tsx
index ce5fdc3..990f9de 100644
--- a/src/app/(main)/dashboard/(legacy)/default-v1/_components/chart-area-interactive.tsx
+++ b/src/app/(main)/dashboard/(legacy)/default-v1/_components/chart-area-interactive.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -121,6 +122,7 @@ const chartConfig = {
 } satisfies ChartConfig;
 
 export function ChartAreaInteractive() {
+  const t = useTranslations();
   const isMobile = useIsMobile();
   const [timeRange, setTimeRange] = React.useState("90d");
 
@@ -147,10 +149,10 @@ export function ChartAreaInteractive() {
   return (
     <Card className="@container/card">
       <CardHeader>
-        <CardTitle>Total Visitors</CardTitle>
+        <CardTitle>{t('chart_area_interactive.total_visitors')}</CardTitle>
         <CardDescription>
-          <span className="@[540px]/card:block hidden">Total for the last 3 months</span>
-          <span className="@[540px]/card:hidden">Last 3 months</span>
+          <span className="@[540px]/card:block hidden">{t('chart_area_interactive.total_for_the_last_3_months')}</span>
+          <span className="@[540px]/card:hidden">{t('chart_area_interactive.last_3_months')}</span>
         </CardDescription>
         <CardAction>
           <ToggleGroup
@@ -160,28 +162,28 @@ export function ChartAreaInteractive() {
             variant="outline"
             className="@[767px]/card:flex hidden *:data-[slot=toggle-group-item]:px-4!"
           >
-            <ToggleGroupItem value="90d">Last 3 months</ToggleGroupItem>
-            <ToggleGroupItem value="30d">Last 30 days</ToggleGroupItem>
-            <ToggleGroupItem value="7d">Last 7 days</ToggleGroupItem>
+            <ToggleGroupItem value="90d">{t('chart_area_interactive.last_3_months')}</ToggleGroupItem>
+            <ToggleGroupItem value="30d">{t('chart_area_interactive.last_30_days')}</ToggleGroupItem>
+            <ToggleGroupItem value="7d">{t('chart_area_interactive.last_7_days')}</ToggleGroupItem>
           </ToggleGroup>
           <Select value={timeRange} onValueChange={setTimeRange}>
             <SelectTrigger
               className="flex @[767px]/card:hidden w-40 **:data-[slot=select-value]:block **:data-[slot=select-value]:truncate"
               size="sm"
-              aria-label="Select a value"
+              aria-label={t('chart_area_interactive.select_a_value')}
             >
-              <SelectValue placeholder="Last 3 months" />
+              <SelectValue placeholder={t('chart_area_interactive.last_3_months')} />
             </SelectTrigger>
             <SelectContent className="rounded-xl">
               <SelectGroup>
                 <SelectItem value="90d" className="rounded-lg">
-                  Last 3 months
+                  {t('chart_area_interactive.last_3_months')}
                 </SelectItem>
                 <SelectItem value="30d" className="rounded-lg">
-                  Last 30 days
+                  {t('chart_area_interactive.last_30_days')}
                 </SelectItem>
                 <SelectItem value="7d" className="rounded-lg">
-                  Last 7 days
+                  {t('chart_area_interactive.last_7_days')}
                 </SelectItem>
               </SelectGroup>
             </SelectContent>
diff --git a/src/app/(main)/dashboard/(legacy)/default-v1/_components/proposal-sections-table/table.tsx b/src/app/(main)/dashboard/(legacy)/default-v1/_components/proposal-sections-table/table.tsx
index 98ece53..ee750a4 100644
--- a/src/app/(main)/dashboard/(legacy)/default-v1/_components/proposal-sections-table/table.tsx
+++ b/src/app/(main)/dashboard/(legacy)/default-v1/_components/proposal-sections-table/table.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import * as React from "react";
@@ -66,6 +67,7 @@ const VIEW_OPTIONS = [
 
 type ViewOption = (typeof VIEW_OPTIONS)[number]["value"];
 export function ProposalSectionsTable({ data: initialData }: { data: ProposalSectionsRow[] }) {
+  const t = useTranslations();
   const [data, setData] = React.useState(() => initialData);
   const [activeView, setActiveView] = React.useState<ViewOption>("outline");
   const [rowSelection, setRowSelection] = React.useState({});
@@ -126,11 +128,11 @@ export function ProposalSectionsTable({ data: initialData }: { data: ProposalSec
     >
       <div className="flex items-center justify-between">
         <Label htmlFor="view-selector" className="sr-only">
-          View
+          {t('table.view')}
         </Label>
         <Select value={activeView} onValueChange={(value) => setActiveView(value as ViewOption)}>
           <SelectTrigger className="flex @4xl/main:hidden w-fit" size="sm" id="view-selector">
-            <SelectValue placeholder="Select a view" />
+            <SelectValue placeholder={t('table.select_a_view')} />
           </SelectTrigger>
           <SelectContent>
             <SelectGroup>
@@ -143,14 +145,14 @@ export function ProposalSectionsTable({ data: initialData }: { data: ProposalSec
           </SelectContent>
         </Select>
         <TabsList className="@4xl/main:flex hidden **:data-[slot=badge]:size-5 **:data-[slot=badge]:rounded-full **:data-[slot=badge]:bg-muted-foreground/30 **:data-[slot=badge]:px-1">
-          <TabsTrigger value="outline">Outline</TabsTrigger>
+          <TabsTrigger value="outline">{t('table.outline')}</TabsTrigger>
           <TabsTrigger value="past-performance">
             Past Performance <Badge variant="secondary">3</Badge>
           </TabsTrigger>
           <TabsTrigger value="key-personnel">
             Key Personnel <Badge variant="secondary">2</Badge>
           </TabsTrigger>
-          <TabsTrigger value="focus-documents">Focus Documents</TabsTrigger>
+          <TabsTrigger value="focus-documents">{t('table.focus_documents')}</TabsTrigger>
         </TabsList>
         <div className="flex items-center gap-2">
           <DropdownMenu>
@@ -162,7 +164,7 @@ export function ProposalSectionsTable({ data: initialData }: { data: ProposalSec
               </Button>
             </DropdownMenuTrigger>
             <DropdownMenuContent align="end" className="w-35">
-              <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>
+              <DropdownMenuLabel>{t('table.toggle_columns')}</DropdownMenuLabel>
               <DropdownMenuSeparator />
               {table
                 .getAllColumns()
@@ -181,7 +183,7 @@ export function ProposalSectionsTable({ data: initialData }: { data: ProposalSec
           </DropdownMenu>
           <Button variant="outline" size="sm">
             <PlusIcon data-icon="inline-start" />
-            <span className="hidden lg:inline">Add Section</span>
+            <span className="hidden lg:inline">{t('table.add_section')}</span>
           </Button>
         </div>
       </div>
@@ -232,7 +234,7 @@ export function ProposalSectionsTable({ data: initialData }: { data: ProposalSec
           <div className="flex w-full items-center gap-8 lg:w-fit">
             <div className="hidden items-center gap-2 lg:flex">
               <Label htmlFor="rows-per-page" className="font-medium text-sm">
-                Rows per page
+                {t('table.rows_per_page')}
               </Label>
               <Select
                 value={`${table.getState().pagination.pageSize}`}
@@ -264,7 +266,7 @@ export function ProposalSectionsTable({ data: initialData }: { data: ProposalSec
                 onClick={() => table.setPageIndex(0)}
                 disabled={!table.getCanPreviousPage()}
               >
-                <span className="sr-only">Go to first page</span>
+                <span className="sr-only">{t('table.go_to_first_page')}</span>
                 <ChevronsLeftIcon />
               </Button>
               <Button
@@ -274,7 +276,7 @@ export function ProposalSectionsTable({ data: initialData }: { data: ProposalSec
                 onClick={() => table.previousPage()}
                 disabled={!table.getCanPreviousPage()}
               >
-                <span className="sr-only">Go to previous page</span>
+                <span className="sr-only">{t('table.go_to_previous_page')}</span>
                 <ChevronLeftIcon />
               </Button>
               <Button
@@ -284,7 +286,7 @@ export function ProposalSectionsTable({ data: initialData }: { data: ProposalSec
                 onClick={() => table.nextPage()}
                 disabled={!table.getCanNextPage()}
               >
-                <span className="sr-only">Go to next page</span>
+                <span className="sr-only">{t('table.go_to_next_page')}</span>
                 <ChevronRightIcon />
               </Button>
               <Button
@@ -294,7 +296,7 @@ export function ProposalSectionsTable({ data: initialData }: { data: ProposalSec
                 onClick={() => table.setPageIndex(table.getPageCount() - 1)}
                 disabled={!table.getCanNextPage()}
               >
-                <span className="sr-only">Go to last page</span>
+                <span className="sr-only">{t('table.go_to_last_page')}</span>
                 <ChevronsRightIcon />
               </Button>
             </div>
diff --git a/src/app/(main)/dashboard/(legacy)/default-v1/_components/section-cards.tsx b/src/app/(main)/dashboard/(legacy)/default-v1/_components/section-cards.tsx
index 6f2e6dc..f314c19 100644
--- a/src/app/(main)/dashboard/(legacy)/default-v1/_components/section-cards.tsx
+++ b/src/app/(main)/dashboard/(legacy)/default-v1/_components/section-cards.tsx
@@ -1,14 +1,16 @@
+import { useTranslations } from 'next-intl';
 import { TrendingDown, TrendingUp } from "lucide-react";
 
 import { Badge } from "@/components/ui/badge";
 import { Card, CardAction, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
 
 export function SectionCards() {
+  const t = useTranslations();
   return (
     <div className="grid @5xl/main:grid-cols-4 @xl/main:grid-cols-2 grid-cols-1 gap-4 *:data-[slot=card]:bg-linear-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs dark:*:data-[slot=card]:bg-card">
       <Card className="@container/card">
         <CardHeader>
-          <CardDescription>Total Revenue</CardDescription>
+          <CardDescription>{t('section_cards.total_revenue')}</CardDescription>
           <CardTitle className="font-semibold @[250px]/card:text-3xl text-2xl tabular-nums">$1,250.00</CardTitle>
           <CardAction>
             <Badge variant="outline">
@@ -21,12 +23,12 @@ export function SectionCards() {
           <div className="line-clamp-1 flex gap-2 font-medium">
             Trending up this month <TrendingUp className="size-4" />
           </div>
-          <div className="text-muted-foreground">Visitors for the last 6 months</div>
+          <div className="text-muted-foreground">{t('section_cards.visitors_for_the_last_6_months')}</div>
         </CardFooter>
       </Card>
       <Card className="@container/card">
         <CardHeader>
-          <CardDescription>New Customers</CardDescription>
+          <CardDescription>{t('section_cards.new_customers')}</CardDescription>
           <CardTitle className="font-semibold @[250px]/card:text-3xl text-2xl tabular-nums">1,234</CardTitle>
           <CardAction>
             <Badge variant="outline">
@@ -39,12 +41,12 @@ export function SectionCards() {
           <div className="line-clamp-1 flex gap-2 font-medium">
             Down 20% this period <TrendingDown className="size-4" />
           </div>
-          <div className="text-muted-foreground">Acquisition needs attention</div>
+          <div className="text-muted-foreground">{t('section_cards.acquisition_needs_attention')}</div>
         </CardFooter>
       </Card>
       <Card className="@container/card">
         <CardHeader>
-          <CardDescription>Active Accounts</CardDescription>
+          <CardDescription>{t('section_cards.active_accounts')}</CardDescription>
           <CardTitle className="font-semibold @[250px]/card:text-3xl text-2xl tabular-nums">45,678</CardTitle>
           <CardAction>
             <Badge variant="outline">
@@ -57,12 +59,12 @@ export function SectionCards() {
           <div className="line-clamp-1 flex gap-2 font-medium">
             Strong user retention <TrendingUp className="size-4" />
           </div>
-          <div className="text-muted-foreground">Engagement exceed targets</div>
+          <div className="text-muted-foreground">{t('section_cards.engagement_exceed_targets')}</div>
         </CardFooter>
       </Card>
       <Card className="@container/card">
         <CardHeader>
-          <CardDescription>Growth Rate</CardDescription>
+          <CardDescription>{t('section_cards.growth_rate')}</CardDescription>
           <CardTitle className="font-semibold @[250px]/card:text-3xl text-2xl tabular-nums">4.5%</CardTitle>
           <CardAction>
             <Badge variant="outline">
@@ -75,7 +77,7 @@ export function SectionCards() {
           <div className="line-clamp-1 flex gap-2 font-medium">
             Steady performance increase <TrendingUp className="size-4" />
           </div>
-          <div className="text-muted-foreground">Meets growth projections</div>
+          <div className="text-muted-foreground">{t('section_cards.meets_growth_projections')}</div>
         </CardFooter>
       </Card>
     </div>
diff --git a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/card-overview.tsx b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/card-overview.tsx
index 37e6d7f..1d9c3e9 100644
--- a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/card-overview.tsx
+++ b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/card-overview.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { addDays, format } from "date-fns";
 import { Home, Receipt, Sparkles, Zap } from "lucide-react";
@@ -44,11 +45,12 @@ const upcomingPayments = [
 ];
 
 export function CardOverview() {
+  const t = useTranslations();
   return (
     <Card className="shadow-xs">
       <CardHeader className="items-center">
-        <CardTitle>My Card</CardTitle>
-        <CardDescription>1 of 4 cards added · Overview of your primary card and upcoming payments</CardDescription>
+        <CardTitle>{t('card_overview.my_card')}</CardTitle>
+        <CardDescription>{t('card_overview.1_of_4_cards_added_overview_of_your_prim')}</CardDescription>
       </CardHeader>
       <CardContent>
         <div className="space-y-4">
@@ -67,15 +69,15 @@ export function CardOverview() {
               <div className="flex items-end justify-between">
                 <div className="space-y-2">
                   <p className="font-medium font-mono text-primary-foreground text-sm uppercase tracking-wide">
-                    Arham Khan
+                    {t('card_overview.arham_khan')}
                   </p>
                   <div className="flex gap-6">
                     <div>
-                      <p className="text-[10px] text-primary-foreground/80 uppercase tracking-wider">Valid Thru</p>
+                      <p className="text-[10px] text-primary-foreground/80 uppercase tracking-wider">{t('card_overview.valid_thru')}</p>
                       <p className="font-mono text-primary-foreground/80 text-xs">06/30</p>
                     </div>
                     <div>
-                      <p className="text-[10px] text-primary-foreground/80 uppercase tracking-wider">CVV</p>
+                      <p className="text-[10px] text-primary-foreground/80 uppercase tracking-wider">{t('card_overview.cvv')}</p>
                       <p className="font-mono text-primary-foreground/80 text-xs">•••</p>
                     </div>
                   </div>
@@ -87,36 +89,36 @@ export function CardOverview() {
 
           <div className="space-y-2 text-sm">
             <div className="flex items-center justify-between">
-              <span className="text-muted-foreground">Card type</span>
-              <span className="font-medium tabular-nums">Virtual</span>
+              <span className="text-muted-foreground">{t('card_overview.card_type')}</span>
+              <span className="font-medium tabular-nums">{t('card_overview.virtual')}</span>
             </div>
             <div className="flex items-center justify-between">
-              <span className="text-muted-foreground">Billing cycle</span>
-              <span className="font-medium tabular-nums">21st monthly</span>
+              <span className="text-muted-foreground">{t('card_overview.billing_cycle')}</span>
+              <span className="font-medium tabular-nums">{t('card_overview.21st_monthly')}</span>
             </div>
             <div className="flex items-center justify-between">
-              <span className="text-muted-foreground">Card Limit</span>
+              <span className="text-muted-foreground">{t('card_overview.card_limit')}</span>
               <span className="font-medium tabular-nums">$62,000.00</span>
             </div>
             <div className="flex items-center justify-between">
-              <span className="text-muted-foreground">Available Balance</span>
+              <span className="text-muted-foreground">{t('card_overview.available_balance')}</span>
               <span className="font-medium tabular-nums">$13,100.06</span>
             </div>
           </div>
 
           <div className="space-y-1">
             <Button className="w-full" size="sm">
-              Manage Card
+              {t('card_overview.manage_card')}
             </Button>
 
             <Button className="w-full" variant="outline" size="sm">
-              Add Card
+              {t('card_overview.add_card')}
             </Button>
           </div>
           <Separator />
 
           <div className="space-y-4">
-            <h6 className="text-muted-foreground text-sm uppercase">Upcoming Payments</h6>
+            <h6 className="text-muted-foreground text-sm uppercase">{t('card_overview.upcoming_payments')}</h6>
 
             <div className="space-y-4">
               {upcomingPayments.map((transaction) => (
@@ -142,7 +144,7 @@ export function CardOverview() {
             </div>
 
             <Button className="w-full" size="sm" variant="outline">
-              View All Payments
+              {t('card_overview.view_all_payments')}
             </Button>
           </div>
         </div>
diff --git a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/cash-flow-overview.tsx b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/cash-flow-overview.tsx
index 99692db..61ea68a 100644
--- a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/cash-flow-overview.tsx
+++ b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/cash-flow-overview.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { ArrowDownLeft, ArrowUpRight } from "lucide-react";
 import { Bar, BarChart, CartesianGrid, ReferenceLine, XAxis, YAxis } from "recharts";
@@ -36,24 +37,25 @@ const chartConfig = {
 } as ChartConfig;
 
 export function CashFlowOverview() {
+  const t = useTranslations();
   const totalIncome = chartData.reduce((acc, item) => acc + item.income, 0);
   const totalExpenses = chartData.reduce((acc, item) => acc + Math.abs(item.expenses), 0);
   return (
     <Card>
       <CardHeader>
-        <CardTitle>Cash Flow Overview</CardTitle>
-        <CardDescription>Monthly income and expenses with net cash impact.</CardDescription>
+        <CardTitle>{t('cash_flow_overview.cash_flow_overview')}</CardTitle>
+        <CardDescription>{t('cash_flow_overview.monthly_income_and_expenses_with_net_cas')}</CardDescription>
         <CardAction>
           <Select defaultValue="this-year">
             <SelectTrigger size="sm" className="w-37">
-              <SelectValue placeholder="Select period" />
+              <SelectValue placeholder={t('cash_flow_overview.select_period')} />
             </SelectTrigger>
             <SelectContent>
               <SelectGroup>
-                <SelectItem value="this-month">This Month</SelectItem>
-                <SelectItem value="last-6-months">Last 6 Months</SelectItem>
-                <SelectItem value="ytd">Year to Date</SelectItem>
-                <SelectItem value="this-year">This Year</SelectItem>
+                <SelectItem value="this-month">{t('cash_flow_overview.this_month')}</SelectItem>
+                <SelectItem value="last-6-months">{t('cash_flow_overview.last_6_months')}</SelectItem>
+                <SelectItem value="ytd">{t('cash_flow_overview.year_to_date')}</SelectItem>
+                <SelectItem value="this-year">{t('cash_flow_overview.this_year')}</SelectItem>
               </SelectGroup>
             </SelectContent>
           </Select>
@@ -67,7 +69,7 @@ export function CashFlowOverview() {
               <ArrowDownLeft className="size-6 stroke-background" />
             </div>
             <div>
-              <p className="text-muted-foreground text-xs uppercase">Income</p>
+              <p className="text-muted-foreground text-xs uppercase">{t('cash_flow_overview.income')}</p>
               <p className="font-medium tabular-nums">{formatCurrency(totalIncome, { noDecimals: true })}</p>
             </div>
           </div>
@@ -77,7 +79,7 @@ export function CashFlowOverview() {
               <ArrowUpRight className="size-6 stroke-background" />
             </div>
             <div>
-              <p className="text-muted-foreground text-xs uppercase">Expenses</p>
+              <p className="text-muted-foreground text-xs uppercase">{t('cash_flow_overview.expenses')}</p>
               <p className="font-medium tabular-nums">{formatCurrency(totalExpenses, { noDecimals: true })}</p>
             </div>
           </div>
diff --git a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/income-reliability.tsx b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/income-reliability.tsx
index b4a0acc..a908c5f 100644
--- a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/income-reliability.tsx
+++ b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/income-reliability.tsx
@@ -1,35 +1,37 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
 import { Separator } from "@/components/ui/separator";
 import { formatCurrency } from "@/lib/utils";
 
 export function IncomeReliability() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
-        <CardTitle>Income Reliability</CardTitle>
-        <CardDescription>How consistent your income has been recently.</CardDescription>
+        <CardTitle>{t('income_reliability.income_reliability')}</CardTitle>
+        <CardDescription>{t('income_reliability.how_consistent_your_income_has_been_rece')}</CardDescription>
       </CardHeader>
       <CardContent className="space-y-4">
         <Separator />
         <div className="space-y-0.5">
-          <p className="font-medium text-xl">High Reliability</p>
-          <p className="text-muted-foreground text-xs">Based on last 6 months of income</p>
+          <p className="font-medium text-xl">{t('income_reliability.high_reliability')}</p>
+          <p className="text-muted-foreground text-xs">{t('income_reliability.based_on_last_6_months_of_income')}</p>
         </div>
         <Separator />
         <div className="flex justify-between">
           <div className="space-y-0.5">
-            <p className="font-medium text-lg">Fixed Income</p>
-            <p className="text-muted-foreground text-xs">Recurring · Predictable</p>
+            <p className="font-medium text-lg">{t('income_reliability.fixed_income')}</p>
+            <p className="text-muted-foreground text-xs">{t('income_reliability.recurring_predictable')}</p>
           </div>
           <p className="font-medium text-lg">{formatCurrency(90000, { noDecimals: true })}</p>
         </div>
         <Separator />
         <div className="flex justify-between">
           <div className="space-y-0.5">
-            <p className="font-medium text-lg">Variable Income</p>
-            <p className="text-muted-foreground text-xs">Fluctuating sources</p>
+            <p className="font-medium text-lg">{t('income_reliability.variable_income')}</p>
+            <p className="text-muted-foreground text-xs">{t('income_reliability.fluctuating_sources')}</p>
           </div>
           <p className="font-medium text-lg">{formatCurrency(46500, { noDecimals: true })}</p>
         </div>
diff --git a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/monthly-cash-flow.tsx b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/monthly-cash-flow.tsx
index 83bdd57..62b22d1 100644
--- a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/monthly-cash-flow.tsx
+++ b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/monthly-cash-flow.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Calendar, TrendingUp } from "lucide-react";
 
@@ -7,6 +8,7 @@ import { Separator } from "@/components/ui/separator";
 import { formatCurrency } from "@/lib/utils";
 
 export function MonthlyCashFlow() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
@@ -22,7 +24,7 @@ export function MonthlyCashFlow() {
       <CardContent className="space-y-4">
         <div className="space-y-0.5">
           <p className="font-medium text-xl tabular-nums">+{formatCurrency(2780, { noDecimals: true })}</p>
-          <p className="text-muted-foreground text-xs">This month · Net</p>
+          <p className="text-muted-foreground text-xs">{t('monthly_cash_flow.this_month_net')}</p>
         </div>
 
         <Separator />
diff --git a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/net-worth.tsx b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/net-worth.tsx
index d890909..d1d30ae 100644
--- a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/net-worth.tsx
+++ b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/net-worth.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { SaudiRiyal } from "lucide-react";
 
@@ -7,6 +8,7 @@ import { Separator } from "@/components/ui/separator";
 import { formatCurrency } from "@/lib/utils";
 
 export function NetWorth() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
@@ -23,14 +25,14 @@ export function NetWorth() {
         <div className="space-y-0.5">
           <div className="flex items-center justify-between">
             <p className="font-medium text-xl tabular-nums">{formatCurrency(84250, { noDecimals: true })}</p>
-            <span className="text-xs">+$3,680 MoM</span>
+            <span className="text-xs">{t('net_worth.3_680_mom')}</span>
           </div>
-          <p className="text-muted-foreground text-xs">This month</p>
+          <p className="text-muted-foreground text-xs">{t('net_worth.this_month')}</p>
         </div>
 
         <Separator />
 
-        <p className="text-muted-foreground text-xs">Across all linked accounts</p>
+        <p className="text-muted-foreground text-xs">{t('net_worth.across_all_linked_accounts')}</p>
       </CardContent>
     </Card>
   );
diff --git a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/primary-account.tsx b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/primary-account.tsx
index 2c48bbd..eca9e97 100644
--- a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/primary-account.tsx
+++ b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/primary-account.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { WalletMinimal } from "lucide-react";
 
@@ -7,6 +8,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 import { formatCurrency } from "@/lib/utils";
 
 export function PrimaryAccount() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
@@ -23,15 +25,15 @@ export function PrimaryAccount() {
         <div className="space-y-0.5">
           <p className="font-medium text-xl tabular-nums">{formatCurrency(12450, { noDecimals: true })}</p>
 
-          <p className="text-muted-foreground text-xs">Available balance</p>
+          <p className="text-muted-foreground text-xs">{t('primary_account.available_balance')}</p>
         </div>
 
         <div className="flex items-center gap-2">
           <Button className="flex-1" size="sm">
-            Pay
+            {t('primary_account.pay')}
           </Button>
           <Button className="flex-1" size="sm" variant="outline">
-            Request
+            {t('primary_account.request')}
           </Button>
         </div>
       </CardContent>
diff --git a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/savings-rate.tsx b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/savings-rate.tsx
index af53379..7e55f2d 100644
--- a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/savings-rate.tsx
+++ b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/kpis/savings-rate.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { HandCoins } from "lucide-react";
 
@@ -6,6 +7,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 import { Separator } from "@/components/ui/separator";
 
 export function SavingsRate() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
@@ -22,14 +24,14 @@ export function SavingsRate() {
         <div className="space-y-0.5">
           <div className="flex items-center justify-between">
             <p className="font-medium text-xl tabular-nums">32%</p>
-            <span className="text-xs">+3.5% MoM</span>
+            <span className="text-xs">{t('savings_rate.3_5_mom')}</span>
           </div>
-          <p className="text-muted-foreground text-xs">This month · After expenses</p>
+          <p className="text-muted-foreground text-xs">{t('savings_rate.this_month_after_expenses')}</p>
         </div>
 
         <Separator />
 
-        <p className="text-muted-foreground text-xs">Above your average</p>
+        <p className="text-muted-foreground text-xs">{t('savings_rate.above_your_average')}</p>
       </CardContent>
     </Card>
   );
diff --git a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/spending-breakdown.tsx b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/spending-breakdown.tsx
index 75ba067..2bea5c2 100644
--- a/src/app/(main)/dashboard/(legacy)/finance-v1/_components/spending-breakdown.tsx
+++ b/src/app/(main)/dashboard/(legacy)/finance-v1/_components/spending-breakdown.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
 import { formatCurrency } from "@/lib/utils";
@@ -42,12 +43,13 @@ const expenses = [
 ];
 
 export function SpendingBreakdown() {
+  const t = useTranslations();
   const total = expenses.reduce((sum, item) => sum + item.amount, 0);
   return (
     <Card>
       <CardHeader>
-        <CardTitle>Spending Breakdown</CardTitle>
-        <CardDescription>Expense distribution by category.</CardDescription>
+        <CardTitle>{t('spending_breakdown.spending_breakdown')}</CardTitle>
+        <CardDescription>{t('spending_breakdown.expense_distribution_by_category')}</CardDescription>
       </CardHeader>
       <CardContent className="space-y-4">
         <div className="space-y-1">
diff --git a/src/app/(main)/dashboard/(legacy)/finance-v1/page.tsx b/src/app/(main)/dashboard/(legacy)/finance-v1/page.tsx
index 4b375e8..467872c 100644
--- a/src/app/(main)/dashboard/(legacy)/finance-v1/page.tsx
+++ b/src/app/(main)/dashboard/(legacy)/finance-v1/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
 
 import { CardOverview } from "./_components/card-overview";
@@ -10,19 +11,20 @@ import { SavingsRate } from "./_components/kpis/savings-rate";
 import { SpendingBreakdown } from "./_components/spending-breakdown";
 
 export default function Page() {
+  const t = useTranslations();
   return (
     <div>
       <Tabs className="gap-4" defaultValue="overview">
         <TabsList>
-          <TabsTrigger value="overview">Overview</TabsTrigger>
+          <TabsTrigger value="overview">{t('page.overview')}</TabsTrigger>
           <TabsTrigger disabled value="activity">
-            Activity
+            {t('page.activity')}
           </TabsTrigger>
           <TabsTrigger disabled value="insights">
-            Insights
+            {t('page.insights')}
           </TabsTrigger>
           <TabsTrigger disabled value="utilities">
-            Utilities
+            {t('page.utilities')}
           </TabsTrigger>
         </TabsList>
 
diff --git a/src/app/(main)/dashboard/[...not-found]/page.tsx b/src/app/(main)/dashboard/[...not-found]/page.tsx
index e4e9dc0..21a94db 100644
--- a/src/app/(main)/dashboard/[...not-found]/page.tsx
+++ b/src/app/(main)/dashboard/[...not-found]/page.tsx
@@ -1,10 +1,12 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 export default function DashboardNotFound() {
+  const t = useTranslations();
   return (
     <div className="flex h-full flex-col items-center justify-center space-y-2 text-center">
-      <h1 className="font-semibold text-2xl">Page not found.</h1>
-      <p className="text-muted-foreground">This section will be added in future updates.</p>
+      <h1 className="font-semibold text-2xl">{t('page.page_not_found')}</h1>
+      <p className="text-muted-foreground">{t('page.this_section_will_be_added_in_future_upd')}</p>
     </div>
   );
 }
diff --git a/src/app/(main)/dashboard/_components/sidebar/layout-controls.tsx b/src/app/(main)/dashboard/_components/sidebar/layout-controls.tsx
index 28091b4..fb8b1e4 100644
--- a/src/app/(main)/dashboard/_components/sidebar/layout-controls.tsx
+++ b/src/app/(main)/dashboard/_components/sidebar/layout-controls.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Settings } from "lucide-react";
 
@@ -23,6 +24,7 @@ import { applyThemePreset } from "@/lib/preferences/theme-utils";
 import { usePreferencesStore } from "@/stores/preferences/preferences-provider";
 
 export function LayoutControls() {
+  const t = useTranslations();
   const themeMode = usePreferencesStore((s) => s.themeMode);
   const resolvedThemeMode = usePreferencesStore((s) => s.resolvedThemeMode);
   const setThemeMode = usePreferencesStore((s) => s.setThemeMode);
@@ -106,15 +108,15 @@ export function LayoutControls() {
       <PopoverContent align="end">
         <div className="flex flex-col gap-5">
           <div className="space-y-1.5">
-            <h4 className="font-medium text-sm leading-none">Preferences</h4>
-            <p className="text-muted-foreground text-xs">Customize your dashboard layout preferences.</p>
+            <h4 className="font-medium text-sm leading-none">{t('layout_controls.preferences')}</h4>
+            <p className="text-muted-foreground text-xs">{t('layout_controls.customize_your_dashboard_layout_preferen')}</p>
           </div>
           <div className="space-y-3 **:data-[slot=toggle-group]:w-full **:data-[slot=toggle-group-item]:flex-1 **:data-[slot=toggle-group-item]:text-xs">
             <div className="space-y-1">
-              <Label className="font-medium text-xs">Theme Preset</Label>
+              <Label className="font-medium text-xs">{t('layout_controls.theme_preset')}</Label>
               <Select value={themePreset} onValueChange={onThemePresetChange}>
                 <SelectTrigger size="sm" className="w-full text-xs">
-                  <SelectValue placeholder="Preset" />
+                  <SelectValue placeholder={t('layout_controls.preset')} />
                 </SelectTrigger>
                 <SelectContent>
                   <SelectGroup>
@@ -136,10 +138,10 @@ export function LayoutControls() {
             </div>
 
             <div className="space-y-1">
-              <Label className="font-medium text-xs">Fonts</Label>
+              <Label className="font-medium text-xs">{t('layout_controls.fonts')}</Label>
               <Select value={font} onValueChange={onFontChange}>
                 <SelectTrigger size="sm" className="w-full text-xs">
-                  <SelectValue placeholder="Select font" />
+                  <SelectValue placeholder={t('layout_controls.select_font')} />
                 </SelectTrigger>
                 <SelectContent>
                   <SelectGroup>
@@ -154,7 +156,7 @@ export function LayoutControls() {
             </div>
 
             <div className="space-y-1">
-              <Label className="font-medium text-xs">Theme Mode</Label>
+              <Label className="font-medium text-xs">{t('layout_controls.theme_mode')}</Label>
               <ToggleGroup
                 size="sm"
                 spacing={0}
@@ -163,20 +165,20 @@ export function LayoutControls() {
                 value={themeMode}
                 onValueChange={onThemeModeChange}
               >
-                <ToggleGroupItem value="light" aria-label="Toggle light">
-                  Light
+                <ToggleGroupItem value="light" aria-label={t('layout_controls.toggle_light')}>
+                  {t('layout_controls.light')}
                 </ToggleGroupItem>
-                <ToggleGroupItem value="dark" aria-label="Toggle dark">
-                  Dark
+                <ToggleGroupItem value="dark" aria-label={t('layout_controls.toggle_dark')}>
+                  {t('layout_controls.dark')}
                 </ToggleGroupItem>
-                <ToggleGroupItem value="system" aria-label="Toggle system">
-                  System
+                <ToggleGroupItem value="system" aria-label={t('layout_controls.toggle_system')}>
+                  {t('layout_controls.system')}
                 </ToggleGroupItem>
               </ToggleGroup>
             </div>
 
             <div className="space-y-1">
-              <Label className="font-medium text-xs">Page Layout</Label>
+              <Label className="font-medium text-xs">{t('layout_controls.page_layout')}</Label>
               <ToggleGroup
                 size="sm"
                 spacing={0}
@@ -185,17 +187,17 @@ export function LayoutControls() {
                 value={contentLayout}
                 onValueChange={onContentLayoutChange}
               >
-                <ToggleGroupItem value="centered" aria-label="Toggle centered">
-                  Centered
+                <ToggleGroupItem value="centered" aria-label={t('layout_controls.toggle_centered')}>
+                  {t('layout_controls.centered')}
                 </ToggleGroupItem>
-                <ToggleGroupItem value="full-width" aria-label="Toggle full-width">
-                  Full Width
+                <ToggleGroupItem value="full-width" aria-label={t('layout_controls.toggle_full_width')}>
+                  {t('layout_controls.full_width')}
                 </ToggleGroupItem>
               </ToggleGroup>
             </div>
 
             <div className="space-y-1">
-              <Label className="font-medium text-xs">Navbar Behavior</Label>
+              <Label className="font-medium text-xs">{t('layout_controls.navbar_behavior')}</Label>
               <ToggleGroup
                 size="sm"
                 spacing={0}
@@ -204,17 +206,17 @@ export function LayoutControls() {
                 value={navbarStyle}
                 onValueChange={onNavbarStyleChange}
               >
-                <ToggleGroupItem value="sticky" aria-label="Toggle sticky">
-                  Sticky
+                <ToggleGroupItem value="sticky" aria-label={t('layout_controls.toggle_sticky')}>
+                  {t('layout_controls.sticky')}
                 </ToggleGroupItem>
-                <ToggleGroupItem value="scroll" aria-label="Toggle scroll">
-                  Scroll
+                <ToggleGroupItem value="scroll" aria-label={t('layout_controls.toggle_scroll')}>
+                  {t('layout_controls.scroll')}
                 </ToggleGroupItem>
               </ToggleGroup>
             </div>
 
             <div className="space-y-1">
-              <Label className="font-medium text-xs">Sidebar Style</Label>
+              <Label className="font-medium text-xs">{t('layout_controls.sidebar_style')}</Label>
               <ToggleGroup
                 size="sm"
                 spacing={0}
@@ -223,20 +225,20 @@ export function LayoutControls() {
                 value={variant}
                 onValueChange={onSidebarStyleChange}
               >
-                <ToggleGroupItem value="inset" aria-label="Toggle inset">
-                  Inset
+                <ToggleGroupItem value="inset" aria-label={t('layout_controls.toggle_inset')}>
+                  {t('layout_controls.inset')}
                 </ToggleGroupItem>
-                <ToggleGroupItem value="sidebar" aria-label="Toggle sidebar">
-                  Sidebar
+                <ToggleGroupItem value="sidebar" aria-label={t('layout_controls.toggle_sidebar')}>
+                  {t('layout_controls.sidebar')}
                 </ToggleGroupItem>
-                <ToggleGroupItem value="floating" aria-label="Toggle floating">
-                  Floating
+                <ToggleGroupItem value="floating" aria-label={t('layout_controls.toggle_floating')}>
+                  {t('layout_controls.floating')}
                 </ToggleGroupItem>
               </ToggleGroup>
             </div>
 
             <div className="space-y-1">
-              <Label className="font-medium text-xs">Sidebar Collapse Mode</Label>
+              <Label className="font-medium text-xs">{t('layout_controls.sidebar_collapse_mode')}</Label>
               <ToggleGroup
                 size="sm"
                 spacing={0}
@@ -245,17 +247,17 @@ export function LayoutControls() {
                 value={collapsible}
                 onValueChange={onSidebarCollapseModeChange}
               >
-                <ToggleGroupItem value="icon" aria-label="Toggle icon">
-                  Icon
+                <ToggleGroupItem value="icon" aria-label={t('layout_controls.toggle_icon')}>
+                  {t('layout_controls.icon')}
                 </ToggleGroupItem>
-                <ToggleGroupItem value="offcanvas" aria-label="Toggle offcanvas">
-                  OffCanvas
+                <ToggleGroupItem value="offcanvas" aria-label={t('layout_controls.toggle_offcanvas')}>
+                  {t('layout_controls.offcanvas')}
                 </ToggleGroupItem>
               </ToggleGroup>
             </div>
 
             <Button type="button" size="sm" variant="outline" className="w-full text-xs" onClick={handleRestore}>
-              Restore Defaults
+              {t('layout_controls.restore_defaults')}
             </Button>
           </div>
         </div>
diff --git a/src/app/(main)/dashboard/_components/sidebar/nav-documents.tsx b/src/app/(main)/dashboard/_components/sidebar/nav-documents.tsx
index 730aa4f..ac0a3c5 100644
--- a/src/app/(main)/dashboard/_components/sidebar/nav-documents.tsx
+++ b/src/app/(main)/dashboard/_components/sidebar/nav-documents.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Ellipsis, Folder, Forward, type LucideIcon, Trash2 } from "lucide-react";
 
@@ -28,11 +29,12 @@ export function NavDocuments({
     readonly icon: LucideIcon;
   }[];
 }) {
+  const t = useTranslations();
   const { isMobile } = useSidebar();
 
   return (
     <SidebarGroup className="group-data-[collapsible=icon]:hidden">
-      <SidebarGroupLabel>Documents</SidebarGroupLabel>
+      <SidebarGroupLabel>{t('nav_documents.documents')}</SidebarGroupLabel>
       <SidebarMenu>
         {items.map((item) => (
           <SidebarMenuItem key={item.name}>
@@ -74,7 +76,7 @@ export function NavDocuments({
         <SidebarMenuItem>
           <SidebarMenuButton className="text-sidebar-foreground/70">
             <Ellipsis className="text-sidebar-foreground/70" />
-            <span>More</span>
+            <span>{t('nav_documents.more')}</span>
           </SidebarMenuButton>
         </SidebarMenuItem>
       </SidebarMenu>
diff --git a/src/app/(main)/dashboard/_components/sidebar/nav-main.tsx b/src/app/(main)/dashboard/_components/sidebar/nav-main.tsx
index 3d2551a..17428f5 100644
--- a/src/app/(main)/dashboard/_components/sidebar/nav-main.tsx
+++ b/src/app/(main)/dashboard/_components/sidebar/nav-main.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import Link from "next/link";
 import { usePathname } from "next/navigation";
@@ -83,6 +84,7 @@ function hasSubItems(item: NavMainItem): item is NavMainParentItem {
 }
 
 export function NavMain({ items }: NavMainProps) {
+  const t = useTranslations();
   const path = usePathname();
 
   const isItemActive = (item: NavMainItem) => {
@@ -108,11 +110,11 @@ export function NavMain({ items }: NavMainProps) {
           <SidebarMenu>
             <SidebarMenuItem className="flex items-center gap-2">
               <SidebarMenuButton
-                tooltip="Quick Create"
+                tooltip={t('nav_main.quick_create')}
                 className="min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground"
               >
                 <PlusCircleIcon />
-                <span>Quick Create</span>
+                <span>{t('nav_main.quick_create')}</span>
               </SidebarMenuButton>
               <Button
                 size="icon"
@@ -120,7 +122,7 @@ export function NavMain({ items }: NavMainProps) {
                 variant="outline"
               >
                 <MailIcon />
-                <span className="sr-only">Inbox</span>
+                <span className="sr-only">{t('nav_main.inbox')}</span>
               </Button>
             </SidebarMenuItem>
           </SidebarMenu>
diff --git a/src/app/(main)/dashboard/_components/sidebar/search-dialog.tsx b/src/app/(main)/dashboard/_components/sidebar/search-dialog.tsx
index d07251d..6d4ad58 100644
--- a/src/app/(main)/dashboard/_components/sidebar/search-dialog.tsx
+++ b/src/app/(main)/dashboard/_components/sidebar/search-dialog.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -78,6 +79,7 @@ function groupBy(items: SearchItem[]) {
 }
 
 export function SearchDialog() {
+  const t = useTranslations();
   const [open, setOpen] = React.useState(false);
   const [query, setQuery] = React.useState("");
   const router = useRouter();
@@ -145,9 +147,9 @@ export function SearchDialog() {
       </Button>
       <CommandDialog open={open} onOpenChange={handleOpenChange}>
         <Command>
-          <CommandInput placeholder="Search dashboards, users, and more…" value={query} onValueChange={setQuery} />
+          <CommandInput placeholder={t('search_dialog.search_dashboards_users_and_more')} value={query} onValueChange={setQuery} />
           <CommandList>
-            <CommandEmpty>No results found.</CommandEmpty>
+            <CommandEmpty>{t('search_dialog.no_results_found')}</CommandEmpty>
             {query ? renderGroups(searchItems) : renderGroups(recommendations)}
           </CommandList>
         </Command>
diff --git a/src/app/(main)/dashboard/_components/sidebar/sidebar-support-card.tsx b/src/app/(main)/dashboard/_components/sidebar/sidebar-support-card.tsx
index 5d41598..af997af 100644
--- a/src/app/(main)/dashboard/_components/sidebar/sidebar-support-card.tsx
+++ b/src/app/(main)/dashboard/_components/sidebar/sidebar-support-card.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import Link from "next/link";
 
 import { siX } from "simple-icons";
@@ -6,17 +7,18 @@ import { SimpleIcon } from "@/components/simple-icon";
 import { Card, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
 
 export function SidebarSupportCard() {
+  const t = useTranslations();
   return (
     <Card size="sm" className="overflow-hidden shadow-none group-data-[collapsible=icon]:hidden">
       <CardHeader className="min-w-0 px-4">
-        <CardTitle className="truncate text-sm">Looking for something more?</CardTitle>
+        <CardTitle className="truncate text-sm">{t('sidebar_support_card.looking_for_something_more')}</CardTitle>
         <CardDescription className="line-clamp-2">
           Open an issue or do reach out to me on&nbsp;
           <Link
             href="https://x.com/arhamkhnz"
             target="_blank"
             rel="noreferrer"
-            aria-label="Reach out on X"
+            aria-label={t('sidebar_support_card.reach_out_on_x')}
             className="inline-flex items-center text-foreground"
           >
             <SimpleIcon icon={siX} aria-hidden className="size-3 fill-current" />
diff --git a/src/app/(main)/dashboard/academy/_components/assignment-status.tsx b/src/app/(main)/dashboard/academy/_components/assignment-status.tsx
index 118244f..17c62ff 100644
--- a/src/app/(main)/dashboard/academy/_components/assignment-status.tsx
+++ b/src/app/(main)/dashboard/academy/_components/assignment-status.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { ArrowRight } from "lucide-react";
 import { Bar, BarChart, CartesianGrid, XAxis } from "recharts";
@@ -62,10 +63,11 @@ function AssignmentDotPattern({ color, id }: { color: string; id: string }) {
 }
 
 export function AssignmentStatus() {
+  const t = useTranslations();
   return (
     <Card className="h-full">
       <CardHeader>
-        <CardTitle className="text-sm">Assignment Status</CardTitle>
+        <CardTitle className="text-sm">{t('assignment_status.assignment_status')}</CardTitle>
         <CardAction className="flex items-center gap-1 text-muted-foreground text-xs">
           View Report <ArrowRight className="size-4" />
         </CardAction>
diff --git a/src/app/(main)/dashboard/academy/_components/class-schedule.tsx b/src/app/(main)/dashboard/academy/_components/class-schedule.tsx
index d74716d..9aaf5a2 100644
--- a/src/app/(main)/dashboard/academy/_components/class-schedule.tsx
+++ b/src/app/(main)/dashboard/academy/_components/class-schedule.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { format } from "date-fns";
 import { ArrowRight } from "lucide-react";
 
@@ -5,12 +6,13 @@ import { Badge } from "@/components/ui/badge";
 import { Card, CardAction, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 
 export function ClassSchedule() {
+  const t = useTranslations();
   const today = format(new Date(), "EEEE, d MMMM");
 
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="text-sm">Class Schedule</CardTitle>
+        <CardTitle className="text-sm">{t('class_schedule.class_schedule')}</CardTitle>
         <CardAction className="flex items-center gap-1 text-muted-foreground text-xs">
           View Full Schedule <ArrowRight className="size-4" />
         </CardAction>
@@ -27,15 +29,15 @@ export function ClassSchedule() {
             </div>
 
             <div className="flex min-w-0 flex-col gap-1">
-              <div className="truncate font-medium text-foreground text-sm leading-none">Pure Mathematics</div>
-              <div className="truncate text-muted-foreground text-xs leading-none">Grade 11A • Room 2.14</div>
+              <div className="truncate font-medium text-foreground text-sm leading-none">{t('class_schedule.pure_mathematics')}</div>
+              <div className="truncate text-muted-foreground text-xs leading-none">{t('class_schedule.grade_11a_room_2_14')}</div>
             </div>
 
             <Badge
               variant="secondary"
               className="shrink-0 rounded-md border-green-600/50 bg-green-50 px-2.5 py-1 font-medium text-[10px] text-green-600 dark:border-green-800/50 dark:bg-green-500/10 dark:text-green-400"
             >
-              In Progress
+              {t('class_schedule.in_progress')}
             </Badge>
           </div>
 
@@ -49,15 +51,15 @@ export function ClassSchedule() {
             </div>
 
             <div className="flex min-w-0 flex-col gap-1">
-              <div className="truncate font-medium text-foreground text-sm leading-none">English Literature</div>
-              <div className="truncate text-muted-foreground text-xs leading-none">Grade 11B • Seminar Room 3</div>
+              <div className="truncate font-medium text-foreground text-sm leading-none">{t('class_schedule.english_literature')}</div>
+              <div className="truncate text-muted-foreground text-xs leading-none">{t('class_schedule.grade_11b_seminar_room_3')}</div>
             </div>
 
             <Badge
               variant="secondary"
               className="shrink-0 rounded-md border-yellow-600/50 bg-yellow-50 px-2.5 py-1 font-medium text-[10px] text-yellow-700 dark:border-yellow-800/50 dark:bg-yellow-500/10 dark:text-yellow-300"
             >
-              Upcoming
+              {t('class_schedule.upcoming')}
             </Badge>
           </div>
 
@@ -71,15 +73,15 @@ export function ClassSchedule() {
             </div>
 
             <div className="flex min-w-0 flex-col gap-1">
-              <div className="truncate font-medium text-foreground text-sm leading-none">Physics</div>
-              <div className="truncate text-muted-foreground text-xs leading-none">Grade 11C • Physics Lab</div>
+              <div className="truncate font-medium text-foreground text-sm leading-none">{t('class_schedule.physics')}</div>
+              <div className="truncate text-muted-foreground text-xs leading-none">{t('class_schedule.grade_11c_physics_lab')}</div>
             </div>
 
             <Badge
               variant="secondary"
               className="shrink-0 rounded-md border-yellow-600/50 bg-yellow-50 px-2.5 py-1 font-medium text-[10px] text-yellow-700 dark:border-yellow-800/50 dark:bg-yellow-500/10 dark:text-yellow-300"
             >
-              Upcoming
+              {t('class_schedule.upcoming')}
             </Badge>
           </div>
 
@@ -93,15 +95,15 @@ export function ClassSchedule() {
             </div>
 
             <div className="flex min-w-0 flex-col gap-1">
-              <div className="truncate font-medium text-foreground text-sm leading-none">Modern European History</div>
-              <div className="truncate text-muted-foreground text-xs leading-none">Grade 11A • Room 1.08</div>
+              <div className="truncate font-medium text-foreground text-sm leading-none">{t('class_schedule.modern_european_history')}</div>
+              <div className="truncate text-muted-foreground text-xs leading-none">{t('class_schedule.grade_11a_room_1_08')}</div>
             </div>
 
             <Badge
               variant="secondary"
               className="shrink-0 rounded-md border-destructive/50 bg-destructive/10 px-2.5 py-1 font-medium text-[10px] text-destructive dark:border-destructive/50 dark:bg-destructive/20"
             >
-              Cancelled
+              {t('class_schedule.cancelled')}
             </Badge>
           </div>
 
@@ -115,15 +117,15 @@ export function ClassSchedule() {
             </div>
 
             <div className="flex min-w-0 flex-col gap-1">
-              <div className="truncate font-medium text-foreground text-sm leading-none">Computer Science</div>
-              <div className="truncate text-muted-foreground text-xs leading-none">Grade 11B • Computing Lab</div>
+              <div className="truncate font-medium text-foreground text-sm leading-none">{t('class_schedule.computer_science')}</div>
+              <div className="truncate text-muted-foreground text-xs leading-none">{t('class_schedule.grade_11b_computing_lab')}</div>
             </div>
 
             <Badge
               variant="secondary"
               className="shrink-0 rounded-md border-yellow-600/50 bg-yellow-50 px-2.5 py-1 font-medium text-[10px] text-yellow-700 dark:border-yellow-800/50 dark:bg-yellow-500/10 dark:text-yellow-300"
             >
-              Upcoming
+              {t('class_schedule.upcoming')}
             </Badge>
           </div>
         </div>
diff --git a/src/app/(main)/dashboard/academy/_components/kpi-cards.tsx b/src/app/(main)/dashboard/academy/_components/kpi-cards.tsx
index a53cd88..6ec482d 100644
--- a/src/app/(main)/dashboard/academy/_components/kpi-cards.tsx
+++ b/src/app/(main)/dashboard/academy/_components/kpi-cards.tsx
@@ -1,15 +1,17 @@
+import { useTranslations } from 'next-intl';
 import { ArrowUp, Info } from "lucide-react";
 
 import { Badge } from "@/components/ui/badge";
 import { Card, CardAction, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 
 export function KpiCards() {
+  const t = useTranslations();
   return (
     <section className="space-y-5">
       <div className="grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-4">
         <Card>
           <CardHeader>
-            <CardTitle className="text-sm">Students Taught</CardTitle>
+            <CardTitle className="text-sm">{t('kpi_cards.students_taught')}</CardTitle>
             <CardAction>
               <Info className="size-3 text-muted-foreground" />
             </CardAction>
@@ -22,13 +24,13 @@ export function KpiCards() {
                 2.8%
               </Badge>
             </div>
-            <div className="text-right text-muted-foreground text-xs">across 5 Grade 11 sections</div>
+            <div className="text-right text-muted-foreground text-xs">{t('kpi_cards.across_5_grade_11_sections')}</div>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardTitle className="text-sm">Avg. Attendance</CardTitle>
+            <CardTitle className="text-sm">{t('kpi_cards.avg_attendance')}</CardTitle>
             <CardAction>
               <Info className="size-3 text-muted-foreground" />
             </CardAction>
@@ -41,13 +43,13 @@ export function KpiCards() {
                 1.1%
               </Badge>
             </div>
-            <div className="text-right text-muted-foreground text-xs">vs last month</div>
+            <div className="text-right text-muted-foreground text-xs">{t('kpi_cards.vs_last_month')}</div>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardTitle className="text-sm">Assignments</CardTitle>
+            <CardTitle className="text-sm">{t('kpi_cards.assignments')}</CardTitle>
             <CardAction>
               <Info className="size-3 text-muted-foreground" />
             </CardAction>
@@ -55,13 +57,13 @@ export function KpiCards() {
           <CardContent className="flex flex-col">
             <div className="text-3xl text-foreground leading-none tracking-tight">81</div>
 
-            <div className="text-right text-muted-foreground text-xs">63 pending · 18 overdue</div>
+            <div className="text-right text-muted-foreground text-xs">{t('kpi_cards.63_pending_18_overdue')}</div>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardTitle className="text-sm">Classes Today</CardTitle>
+            <CardTitle className="text-sm">{t('kpi_cards.classes_today')}</CardTitle>
             <CardAction>
               <Info className="size-3 text-muted-foreground" />
             </CardAction>
@@ -69,7 +71,7 @@ export function KpiCards() {
           <CardContent className="flex flex-col">
             <div className="text-3xl text-foreground leading-none tracking-tight">5</div>
 
-            <div className="text-right text-muted-foreground text-xs">1 in progress · 3 upcoming · 1 cancelled</div>
+            <div className="text-right text-muted-foreground text-xs">{t('kpi_cards.1_in_progress_3_upcoming_1_cancelled')}</div>
           </CardContent>
         </Card>
       </div>
diff --git a/src/app/(main)/dashboard/academy/_components/performance-highlights.tsx b/src/app/(main)/dashboard/academy/_components/performance-highlights.tsx
index d785d30..f0af88a 100644
--- a/src/app/(main)/dashboard/academy/_components/performance-highlights.tsx
+++ b/src/app/(main)/dashboard/academy/_components/performance-highlights.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { ArrowRight } from "lucide-react";
 import { Bar, BarChart, CartesianGrid, XAxis, YAxis } from "recharts";
@@ -126,10 +127,11 @@ function PerformanceHighlightBar({
 }
 
 export function PerformanceHighlights() {
+  const t = useTranslations();
   return (
     <Card className="h-full">
       <CardHeader>
-        <CardTitle className="text-sm">Performance Highlights</CardTitle>
+        <CardTitle className="text-sm">{t('performance_highlights.performance_highlights')}</CardTitle>
         <CardAction className="flex items-center gap-1 text-muted-foreground text-xs">
           View Insights <ArrowRight className="size-4" />
         </CardAction>
diff --git a/src/app/(main)/dashboard/academy/_components/upcoming-events.tsx b/src/app/(main)/dashboard/academy/_components/upcoming-events.tsx
index 6557652..236add2 100644
--- a/src/app/(main)/dashboard/academy/_components/upcoming-events.tsx
+++ b/src/app/(main)/dashboard/academy/_components/upcoming-events.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { addDays, format } from "date-fns";
 import { ArrowRight } from "lucide-react";
 
@@ -38,12 +39,13 @@ const upcomingEvents = [
 ];
 
 export function UpcomingEvents() {
+  const t = useTranslations();
   const today = new Date();
 
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="text-sm">Upcoming Events</CardTitle>
+        <CardTitle className="text-sm">{t('upcoming_events.upcoming_events')}</CardTitle>
         <CardAction className="flex items-center gap-1 text-muted-foreground text-xs">
           View Calendar <ArrowRight className="size-4" />
         </CardAction>
diff --git a/src/app/(main)/dashboard/academy/page.tsx b/src/app/(main)/dashboard/academy/page.tsx
index cb9a723..159f185 100644
--- a/src/app/(main)/dashboard/academy/page.tsx
+++ b/src/app/(main)/dashboard/academy/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { BookOpenCheck, Megaphone, Plus } from "lucide-react";
 
 import { Button } from "@/components/ui/button";
@@ -9,13 +10,14 @@ import { PerformanceHighlights } from "./_components/performance-highlights";
 import { UpcomingEvents } from "./_components/upcoming-events";
 
 export default function Page() {
+  const t = useTranslations();
   return (
     <div className="flex flex-col gap-4">
       <div className="flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between">
         <div className="space-y-1">
-          <h1 className="text-3xl tracking-tight">Academy Dashboard</h1>
+          <h1 className="text-3xl tracking-tight">{t('page.academy_dashboard')}</h1>
           <p className="text-muted-foreground text-sm">
-            Good morning, Teacher. Here's a quick overview of today's activity.
+            {t('page.good_morning_teacher_heres_a_quick_overv')}
           </p>
         </div>
 
diff --git a/src/app/(main)/dashboard/analytics/_components/analytics-kpi-strip.tsx b/src/app/(main)/dashboard/analytics/_components/analytics-kpi-strip.tsx
index 13378fb..117de65 100644
--- a/src/app/(main)/dashboard/analytics/_components/analytics-kpi-strip.tsx
+++ b/src/app/(main)/dashboard/analytics/_components/analytics-kpi-strip.tsx
@@ -1,15 +1,17 @@
+import { useTranslations } from 'next-intl';
 import { ArrowDownRight, ArrowUpRight, Ellipsis } from "lucide-react";
 
 import { Badge } from "@/components/ui/badge";
 import { Card, CardAction, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 
 export function AnalyticsKpiStrip() {
+  const t = useTranslations();
   return (
     <div className="overflow-hidden rounded-xl bg-card shadow-xs ring-1 ring-foreground/10">
       <div className="grid divide-y *:data-[slot=card]:rounded-none *:data-[slot=card]:ring-0 md:grid-cols-2 md:divide-x md:divide-y-0 xl:grid-cols-5">
         <Card>
           <CardHeader>
-            <CardTitle className="font-normal text-sm">Unique Visitors</CardTitle>
+            <CardTitle className="font-normal text-sm">{t('analytics_kpi_strip.unique_visitors')}</CardTitle>
             <CardAction>
               <Ellipsis className="size-4" />
             </CardAction>
@@ -28,14 +30,14 @@ export function AnalyticsKpiStrip() {
                 from <span className="text-foreground">207.3k</span>
               </span>
               <span>•</span>
-              <span>last 4 weeks</span>
+              <span>{t('analytics_kpi_strip.last_4_weeks')}</span>
             </div>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardTitle className="font-normal text-sm">Sessions</CardTitle>
+            <CardTitle className="font-normal text-sm">{t('analytics_kpi_strip.sessions')}</CardTitle>
             <CardAction>
               <Ellipsis className="size-4" />
             </CardAction>
@@ -54,14 +56,14 @@ export function AnalyticsKpiStrip() {
                 from <span className="text-foreground">243.5k</span>
               </span>
               <span>•</span>
-              <span>last 4 weeks</span>
+              <span>{t('analytics_kpi_strip.last_4_weeks')}</span>
             </div>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardTitle className="font-normal text-sm">Pageviews</CardTitle>
+            <CardTitle className="font-normal text-sm">{t('analytics_kpi_strip.pageviews')}</CardTitle>
             <CardAction>
               <Ellipsis className="size-4" />
             </CardAction>
@@ -80,14 +82,14 @@ export function AnalyticsKpiStrip() {
                 from <span className="text-foreground">566.8k</span>
               </span>
               <span>•</span>
-              <span>last 4 weeks</span>
+              <span>{t('analytics_kpi_strip.last_4_weeks')}</span>
             </div>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardTitle className="font-normal text-sm">Engagement Rate</CardTitle>
+            <CardTitle className="font-normal text-sm">{t('analytics_kpi_strip.engagement_rate')}</CardTitle>
             <CardAction>
               <Ellipsis className="size-4" />
             </CardAction>
@@ -106,14 +108,14 @@ export function AnalyticsKpiStrip() {
                 from <span className="text-foreground">58.9%</span>
               </span>
               <span>•</span>
-              <span>last 4 weeks</span>
+              <span>{t('analytics_kpi_strip.last_4_weeks')}</span>
             </div>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardTitle className="font-normal text-sm">Conversion Rate</CardTitle>
+            <CardTitle className="font-normal text-sm">{t('analytics_kpi_strip.conversion_rate')}</CardTitle>
             <CardAction>
               <Ellipsis className="size-4" />
             </CardAction>
@@ -132,7 +134,7 @@ export function AnalyticsKpiStrip() {
                 from <span className="text-foreground">8.9%</span>
               </span>
               <span>•</span>
-              <span>last 4 weeks</span>
+              <span>{t('analytics_kpi_strip.last_4_weeks')}</span>
             </div>
           </CardContent>
         </Card>
diff --git a/src/app/(main)/dashboard/analytics/_components/analytics-toolbar.tsx b/src/app/(main)/dashboard/analytics/_components/analytics-toolbar.tsx
index cbc708a..24ede80 100644
--- a/src/app/(main)/dashboard/analytics/_components/analytics-toolbar.tsx
+++ b/src/app/(main)/dashboard/analytics/_components/analytics-toolbar.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Ellipsis, FileDown, FileUp, RefreshCw, Share2 } from "lucide-react";
 
 import { Button } from "@/components/ui/button";
@@ -13,31 +14,32 @@ import {
 import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
 
 export function AnalyticsToolbar() {
+  const t = useTranslations();
   return (
     <div className="flex items-center gap-2">
       <Select defaultValue="last-4-weeks">
         <SelectTrigger className="w-34">
-          <SelectValue placeholder="Select range" />
+          <SelectValue placeholder={t('analytics_toolbar.select_range')} />
         </SelectTrigger>
         <SelectContent>
           <SelectGroup>
-            <SelectItem value="last-7-days">Last 7 days</SelectItem>
-            <SelectItem value="last-4-weeks">Last 4 weeks</SelectItem>
-            <SelectItem value="last-3-months">Last 3 months</SelectItem>
-            <SelectItem value="year-to-date">Year to date</SelectItem>
+            <SelectItem value="last-7-days">{t('analytics_toolbar.last_7_days')}</SelectItem>
+            <SelectItem value="last-4-weeks">{t('analytics_toolbar.last_4_weeks')}</SelectItem>
+            <SelectItem value="last-3-months">{t('analytics_toolbar.last_3_months')}</SelectItem>
+            <SelectItem value="year-to-date">{t('analytics_toolbar.year_to_date')}</SelectItem>
           </SelectGroup>
         </SelectContent>
       </Select>
 
       <DropdownMenu>
         <DropdownMenuTrigger asChild>
-          <Button size="icon" variant="outline" aria-label="More analytics actions">
+          <Button size="icon" variant="outline" aria-label={t('analytics_toolbar.more_analytics_actions')}>
             <Ellipsis />
           </Button>
         </DropdownMenuTrigger>
         <DropdownMenuContent align="end" className="w-48">
           <DropdownMenuGroup>
-            <DropdownMenuLabel>Analytics actions</DropdownMenuLabel>
+            <DropdownMenuLabel>{t('analytics_toolbar.analytics_actions')}</DropdownMenuLabel>
             <DropdownMenuItem>
               <FileDown />
               Export report
diff --git a/src/app/(main)/dashboard/analytics/_components/realtime-visitors.tsx b/src/app/(main)/dashboard/analytics/_components/realtime-visitors.tsx
index c7a9507..124f152 100644
--- a/src/app/(main)/dashboard/analytics/_components/realtime-visitors.tsx
+++ b/src/app/(main)/dashboard/analytics/_components/realtime-visitors.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Ellipsis } from "lucide-react";
 import { Bar, BarChart, type BarShapeProps, XAxis, YAxis } from "recharts";
@@ -89,10 +90,11 @@ function RealtimeBarShape(props: BarShapeProps) {
 }
 
 export function RealtimeVisitors() {
+  const t = useTranslations();
   return (
     <Card className="h-full">
       <CardHeader>
-        <CardTitle className="font-normal">Realtime Visitors</CardTitle>
+        <CardTitle className="font-normal">{t('realtime_visitors.realtime_visitors')}</CardTitle>
         <CardAction>
           <Ellipsis className="size-4" />
         </CardAction>
@@ -102,14 +104,14 @@ export function RealtimeVisitors() {
         <div className="flex items-end justify-between">
           <div className="flex items-baseline gap-1">
             <span className="text-2xl tabular-nums leading-none tracking-tight">24</span>
-            <span className="text-muted-foreground text-sm">per minute</span>
+            <span className="text-muted-foreground text-sm">{t('realtime_visitors.per_minute')}</span>
           </div>
           <div className="flex items-center gap-2 text-muted-foreground text-sm">
             <span className="relative flex size-2">
               <span className="absolute inline-flex size-full animate-ping rounded-full bg-green-500 opacity-75" />
               <span className="relative inline-flex size-2 rounded-full bg-green-500" />
             </span>
-            <span>Live</span>
+            <span>{t('realtime_visitors.live')}</span>
           </div>
         </div>
         <ChartContainer config={chartConfig} className="h-36 w-full">
@@ -123,22 +125,22 @@ export function RealtimeVisitors() {
         <div className="grid grid-cols-2">
           <div className="flex items-center gap-3 border-border/50 border-r border-b pt-1 pr-5 pb-4">
             <span aria-hidden="true" className="flag:US shrink-0 rounded-xs text-lg ring-1 ring-foreground/10" />
-            <span className="min-w-0 flex-1 truncate text-sm">United States</span>
+            <span className="min-w-0 flex-1 truncate text-sm">{t('realtime_visitors.united_states')}</span>
             <span className="text-sm tabular-nums">14</span>
           </div>
           <div className="flex items-center gap-3 border-border/50 border-b pt-1 pb-4 pl-5">
             <span aria-hidden="true" className="flag:GB shrink-0 rounded-xs text-lg ring-1 ring-foreground/10" />
-            <span className="min-w-0 flex-1 truncate text-sm">United Kingdom</span>
+            <span className="min-w-0 flex-1 truncate text-sm">{t('realtime_visitors.united_kingdom')}</span>
             <span className="text-sm tabular-nums">4</span>
           </div>
           <div className="flex items-center gap-3 border-border/50 border-r pt-4 pr-5 pb-1">
             <span aria-hidden="true" className="flag:CA shrink-0 rounded-xs text-lg ring-1 ring-foreground/10" />
-            <span className="min-w-0 flex-1 truncate text-sm">Canada</span>
+            <span className="min-w-0 flex-1 truncate text-sm">{t('realtime_visitors.canada')}</span>
             <span className="text-sm tabular-nums">3</span>
           </div>
           <div className="flex items-center gap-3 pt-4 pb-1 pl-5">
             <span aria-hidden="true" className="flag:IN shrink-0 rounded-xs text-lg ring-1 ring-foreground/10" />
-            <span className="min-w-0 flex-1 truncate text-sm">India</span>
+            <span className="min-w-0 flex-1 truncate text-sm">{t('realtime_visitors.india')}</span>
             <span className="text-sm tabular-nums">3</span>
           </div>
         </div>
diff --git a/src/app/(main)/dashboard/analytics/_components/top-pages.tsx b/src/app/(main)/dashboard/analytics/_components/top-pages.tsx
index 9ba962b..2280178 100644
--- a/src/app/(main)/dashboard/analytics/_components/top-pages.tsx
+++ b/src/app/(main)/dashboard/analytics/_components/top-pages.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Ellipsis } from "lucide-react";
 
 import { Card, CardAction, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
@@ -12,10 +13,11 @@ const pages = [
 ];
 
 export function TopPages() {
+  const t = useTranslations();
   return (
     <Card className="h-full gap-2">
       <CardHeader>
-        <CardTitle className="font-normal">Page Performance</CardTitle>
+        <CardTitle className="font-normal">{t('top_pages.page_performance')}</CardTitle>
         <CardAction>
           <Ellipsis className="size-4" />
         </CardAction>
@@ -26,9 +28,9 @@ export function TopPages() {
           <TableHeader className="[&_tr]:border-border/50">
             <TableRow className="hover:bg-transparent">
               <TableHead className="h-8" />
-              <TableHead className="h-8 w-24 text-right font-normal">Views</TableHead>
-              <TableHead className="h-8 w-24 text-right font-normal">Avg Time</TableHead>
-              <TableHead className="h-8 w-20 text-right font-normal">Bounce</TableHead>
+              <TableHead className="h-8 w-24 text-right font-normal">{t('top_pages.views')}</TableHead>
+              <TableHead className="h-8 w-24 text-right font-normal">{t('top_pages.avg_time')}</TableHead>
+              <TableHead className="h-8 w-20 text-right font-normal">{t('top_pages.bounce')}</TableHead>
             </TableRow>
           </TableHeader>
           <TableBody className="[&_tr]:border-border/50">
diff --git a/src/app/(main)/dashboard/analytics/_components/top-traffic-sources.tsx b/src/app/(main)/dashboard/analytics/_components/top-traffic-sources.tsx
index 97784d2..d5d8d8d 100644
--- a/src/app/(main)/dashboard/analytics/_components/top-traffic-sources.tsx
+++ b/src/app/(main)/dashboard/analytics/_components/top-traffic-sources.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Ellipsis } from "lucide-react";
 import { Bar, BarChart, CartesianGrid, LabelList, type LabelProps, XAxis, YAxis } from "recharts";
@@ -88,10 +89,11 @@ function TrafficSourceBarChart({ data }: { data: TrafficSourceDatum[] }) {
 }
 
 export function TopTrafficSources() {
+  const t = useTranslations();
   return (
     <Card className="h-full gap-2">
       <CardHeader>
-        <CardTitle className="font-normal">Traffic Sources</CardTitle>
+        <CardTitle className="font-normal">{t('top_traffic_sources.traffic_sources')}</CardTitle>
         <CardAction>
           <Ellipsis className="size-4" />
         </CardAction>
@@ -101,13 +103,13 @@ export function TopTrafficSources() {
         <Tabs defaultValue="sources" className="flex flex-col gap-3">
           <TabsList className="w-full justify-start border-b px-2.5" variant="line">
             <TabsTrigger className="flex-none font-normal" value="sources">
-              Sources
+              {t('top_traffic_sources.sources')}
             </TabsTrigger>
             <TabsTrigger className="flex-none font-normal" value="campaigns">
-              Campaigns
+              {t('top_traffic_sources.campaigns')}
             </TabsTrigger>
             <TabsTrigger className="flex-none font-normal" value="referrers">
-              Referrers
+              {t('top_traffic_sources.referrers')}
             </TabsTrigger>
           </TabsList>
 
diff --git a/src/app/(main)/dashboard/analytics/_components/traffic-quality.tsx b/src/app/(main)/dashboard/analytics/_components/traffic-quality.tsx
index 09d229b..27ff1b0 100644
--- a/src/app/(main)/dashboard/analytics/_components/traffic-quality.tsx
+++ b/src/app/(main)/dashboard/analytics/_components/traffic-quality.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Ellipsis } from "lucide-react";
 import { CartesianGrid, ComposedChart, Line, XAxis, YAxis } from "recharts";
@@ -118,10 +119,11 @@ function formatWeek(value: number) {
 }
 
 export function TrafficQuality() {
+  const t = useTranslations();
   return (
     <Card className="h-full">
       <CardHeader>
-        <CardTitle className="font-normal">Traffic Quality</CardTitle>
+        <CardTitle className="font-normal">{t('traffic_quality.traffic_quality')}</CardTitle>
         <CardAction>
           <Ellipsis className="size-4" />
         </CardAction>
diff --git a/src/app/(main)/dashboard/analytics/page.tsx b/src/app/(main)/dashboard/analytics/page.tsx
index 4c7fda4..c159cdd 100644
--- a/src/app/(main)/dashboard/analytics/page.tsx
+++ b/src/app/(main)/dashboard/analytics/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
 
 import { AnalyticsKpiStrip } from "./_components/analytics-kpi-strip";
@@ -11,23 +12,24 @@ import { TrafficQuality } from "./_components/traffic-quality";
 import "@/styles/flag-icons/flags.css";
 
 export default function Page() {
+  const t = useTranslations();
   return (
     <div className="flex flex-col gap-4">
       <div className="space-y-1">
-        <h1 className="text-3xl tracking-tight">Hello, Aiy</h1>
+        <h1 className="text-3xl tracking-tight">{t('page.hello_aiy')}</h1>
         <p className="text-muted-foreground text-sm">
-          Monitor traffic, engagement, and conversion performance in one view.
+          {t('page.monitor_traffic_engagement_and_conversio')}
         </p>
       </div>
 
       <Tabs defaultValue="overview" className="flex flex-col gap-4">
         <div className="flex flex-wrap items-center justify-between gap-3">
           <TabsList className="gap-1">
-            <TabsTrigger value="overview">Overview</TabsTrigger>
-            <TabsTrigger value="audience">Audience</TabsTrigger>
-            <TabsTrigger value="acquisition">Acquisition</TabsTrigger>
-            <TabsTrigger value="engagement">Engagement</TabsTrigger>
-            <TabsTrigger value="conversions">Conversions</TabsTrigger>
+            <TabsTrigger value="overview">{t('page.overview')}</TabsTrigger>
+            <TabsTrigger value="audience">{t('page.audience')}</TabsTrigger>
+            <TabsTrigger value="acquisition">{t('page.acquisition')}</TabsTrigger>
+            <TabsTrigger value="engagement">{t('page.engagement')}</TabsTrigger>
+            <TabsTrigger value="conversions">{t('page.conversions')}</TabsTrigger>
           </TabsList>
 
           <AnalyticsToolbar />
@@ -57,25 +59,25 @@ export default function Page() {
 
         <TabsContent value="audience">
           <div className="flex h-64 items-center justify-center rounded-xl border border-border border-dashed text-muted-foreground">
-            Audience view coming soon.
+            {t('page.audience_view_coming_soon')}
           </div>
         </TabsContent>
 
         <TabsContent value="acquisition">
           <div className="flex h-64 items-center justify-center rounded-xl border border-border border-dashed text-muted-foreground">
-            Acquisition view coming soon.
+            {t('page.acquisition_view_coming_soon')}
           </div>
         </TabsContent>
 
         <TabsContent value="engagement">
           <div className="flex h-64 items-center justify-center rounded-xl border border-border border-dashed text-muted-foreground">
-            Engagement view coming soon.
+            {t('page.engagement_view_coming_soon')}
           </div>
         </TabsContent>
 
         <TabsContent value="conversions">
           <div className="flex h-64 items-center justify-center rounded-xl border border-border border-dashed text-muted-foreground">
-            Conversions view coming soon.
+            {t('page.conversions_view_coming_soon')}
           </div>
         </TabsContent>
       </Tabs>
diff --git a/src/app/(main)/dashboard/calendar/_components/calendar.tsx b/src/app/(main)/dashboard/calendar/_components/calendar.tsx
index 737268c..0b95dea 100644
--- a/src/app/(main)/dashboard/calendar/_components/calendar.tsx
+++ b/src/app/(main)/dashboard/calendar/_components/calendar.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -35,6 +36,7 @@ const calendars = [
 const plugins = [dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin, multiMonthPlugin];
 
 export function Calendar() {
+  const t = useTranslations();
   const controller = useCalendarController();
   const [eventCount, setEventCount] = React.useState(0);
   const [selectedCalendar, setSelectedCalendar] = React.useState(calendars[0].key);
@@ -80,7 +82,7 @@ export function Calendar() {
               <ChevronLeft />
             </Button>
             <Button variant="outline" onClick={() => controller.today()}>
-              Today
+              {t('calendar.today')}
             </Button>
             <Button size="icon" variant="outline" onClick={() => controller.next()}>
               <ChevronRight />
diff --git a/src/app/(main)/dashboard/chat/page.tsx b/src/app/(main)/dashboard/chat/page.tsx
index 5a12cc9..a18aa4b 100644
--- a/src/app/(main)/dashboard/chat/page.tsx
+++ b/src/app/(main)/dashboard/chat/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import Link from "next/link";
 
 import { ExternalLink } from "lucide-react";
@@ -5,23 +6,24 @@ import { ExternalLink } from "lucide-react";
 import { Button } from "@/components/ui/button";
 
 export default function Page() {
+  const t = useTranslations();
   return (
     <div className="flex h-full flex-col gap-2">
       <div className="flex items-center justify-between gap-3">
         <div className="flex flex-col gap-0.5">
-          <h1 className="font-medium text-sm leading-none">Chat preview</h1>
+          <h1 className="font-medium text-sm leading-none">{t('page.chat_preview')}</h1>
           <p className="text-muted-foreground text-sm">
-            This iframe shows the standalone chat screen. Open it in full screen for a better view.
+            {t('page.this_iframe_shows_the_standalone_chat_sc')}
           </p>
         </div>
         <Button asChild variant="ghost" size="icon-sm">
-          <Link href="/chat" target="_blank" rel="noreferrer" aria-label="Open chat in new tab">
+          <Link href="/chat" target="_blank" rel="noreferrer" aria-label={t('page.open_chat_in_new_tab')}>
             <ExternalLink />
           </Link>
         </Button>
       </div>
 
-      <iframe src="/chat" title="Chat preview" className="min-h-0 flex-1 rounded-lg border bg-background" />
+      <iframe src="/chat" title={t('page.chat_preview')} className="min-h-0 flex-1 rounded-lg border bg-background" />
     </div>
   );
 }
diff --git a/src/app/(main)/dashboard/coming-soon/page.tsx b/src/app/(main)/dashboard/coming-soon/page.tsx
index 304c8d5..d430fc0 100644
--- a/src/app/(main)/dashboard/coming-soon/page.tsx
+++ b/src/app/(main)/dashboard/coming-soon/page.tsx
@@ -1,8 +1,10 @@
+import { useTranslations } from 'next-intl';
 export default function Page() {
+  const t = useTranslations();
   return (
     <div className="flex h-full flex-col items-center justify-center space-y-2 text-center">
-      <h1 className="font-semibold text-2xl">Page not found.</h1>
-      <p className="text-muted-foreground">This page is under development and will be available in future updates.</p>
+      <h1 className="font-semibold text-2xl">{t('page.page_not_found')}</h1>
+      <p className="text-muted-foreground">{t('page.this_page_is_under_development_and_will')}</p>
     </div>
   );
 }
diff --git a/src/app/(main)/dashboard/crm/_components/kpi-cards.tsx b/src/app/(main)/dashboard/crm/_components/kpi-cards.tsx
index 463a903..311c598 100644
--- a/src/app/(main)/dashboard/crm/_components/kpi-cards.tsx
+++ b/src/app/(main)/dashboard/crm/_components/kpi-cards.tsx
@@ -1,22 +1,24 @@
+import { useTranslations } from 'next-intl';
 import { ArrowUpRight, TrendingDown, TrendingUp } from "lucide-react";
 
 import { Badge } from "@/components/ui/badge";
 import { Card, CardAction, CardContent, CardDescription, CardHeader } from "@/components/ui/card";
 
 export function KpiCards() {
+  const t = useTranslations();
   return (
     <section className="space-y-5">
       <div className="space-y-1">
-        <h2 className="text-3xl tracking-tight">Pipeline Overview</h2>
+        <h2 className="text-3xl tracking-tight">{t('kpi_cards.pipeline_overview')}</h2>
         <p className="text-muted-foreground text-sm">
-          Keep tabs on lead quality, open opportunities, and conversion rates across the current sales cycle.
+          {t('kpi_cards.keep_tabs_on_lead_quality_open_opportuni')}
         </p>
       </div>
 
       <div className="grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-4">
         <Card>
           <CardHeader>
-            <CardDescription>Lead Pipeline Value</CardDescription>
+            <CardDescription>{t('kpi_cards.lead_pipeline_value')}</CardDescription>
             <CardAction>
               <ArrowUpRight className="size-4" />
             </CardAction>
@@ -35,14 +37,14 @@ export function KpiCards() {
             </div>
             <p className="text-sm">
               <span className="font-medium text-foreground">$254,200</span>{" "}
-              <span className="text-muted-foreground">last month</span>
+              <span className="text-muted-foreground">{t('kpi_cards.last_month')}</span>
             </p>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardDescription>Qualified Lead Rate</CardDescription>
+            <CardDescription>{t('kpi_cards.qualified_lead_rate')}</CardDescription>
             <CardAction>
               <ArrowUpRight className="size-4" />
             </CardAction>
@@ -58,14 +60,14 @@ export function KpiCards() {
             </div>
             <p className="text-sm">
               <span className="font-medium text-foreground">30.9%</span>{" "}
-              <span className="text-muted-foreground">last month</span>
+              <span className="text-muted-foreground">{t('kpi_cards.last_month')}</span>
             </p>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardDescription>Open Opportunities</CardDescription>
+            <CardDescription>{t('kpi_cards.open_opportunities')}</CardDescription>
             <CardAction>
               <ArrowUpRight className="size-4" />
             </CardAction>
@@ -84,14 +86,14 @@ export function KpiCards() {
             </div>
             <p className="text-sm">
               <span className="font-medium text-foreground">35</span>{" "}
-              <span className="text-muted-foreground">last month</span>
+              <span className="text-muted-foreground">{t('kpi_cards.last_month')}</span>
             </p>
           </CardContent>
         </Card>
 
         <Card>
           <CardHeader>
-            <CardDescription>Lead-to-Deal Rate</CardDescription>
+            <CardDescription>{t('kpi_cards.lead_to_deal_rate')}</CardDescription>
             <CardAction>
               <ArrowUpRight className="size-4" />
             </CardAction>
@@ -110,7 +112,7 @@ export function KpiCards() {
             </div>
             <p className="text-sm">
               <span className="font-medium text-foreground">16.5%</span>{" "}
-              <span className="text-muted-foreground">last month</span>
+              <span className="text-muted-foreground">{t('kpi_cards.last_month')}</span>
             </p>
           </CardContent>
         </Card>
diff --git a/src/app/(main)/dashboard/crm/_components/opportunities-section.tsx b/src/app/(main)/dashboard/crm/_components/opportunities-section.tsx
index 58c1797..a5ed33f 100644
--- a/src/app/(main)/dashboard/crm/_components/opportunities-section.tsx
+++ b/src/app/(main)/dashboard/crm/_components/opportunities-section.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import * as React from "react";
@@ -49,6 +50,7 @@ function preventPaginationNavigation(event: React.MouseEvent<HTMLAnchorElement>)
 }
 
 export function OpportunitiesSection() {
+  const t = useTranslations();
   const [rowSelection, setRowSelection] = React.useState({});
   const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);
   const [columnVisibility] = React.useState<VisibilityState>({});
@@ -101,15 +103,15 @@ export function OpportunitiesSection() {
     <section>
       <Card>
         <CardHeader>
-          <CardTitle className="leading-none">Recent Opportunities</CardTitle>
+          <CardTitle className="leading-none">{t('opportunities_section.recent_opportunities')}</CardTitle>
           <CardDescription>
-            Track qualified leads moving through discovery, proposal, and closing stages.
+            {t('opportunities_section.track_qualified_leads_moving_through_dis')}
           </CardDescription>
           <CardAction>
             <div className="flex items-center gap-2">
               <Input
                 className="h-7 w-44 md:w-52"
-                placeholder="Search deals..."
+                placeholder={t('opportunities_section.search_deals')}
                 value={searchQuery}
                 onChange={(event) => {
                   table.setGlobalFilter(event.target.value || undefined);
diff --git a/src/app/(main)/dashboard/crm/_components/pipeline-activity.tsx b/src/app/(main)/dashboard/crm/_components/pipeline-activity.tsx
index 16224da..0b6ef37 100644
--- a/src/app/(main)/dashboard/crm/_components/pipeline-activity.tsx
+++ b/src/app/(main)/dashboard/crm/_components/pipeline-activity.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Bar, BarChart, CartesianGrid, XAxis, YAxis } from "recharts";
 
@@ -32,6 +33,7 @@ function getRollingMonthData(values: readonly number[]) {
 }
 
 export function PipelineActivity() {
+  const t = useTranslations();
   const pipelineChartData = getRollingMonthData(pipelineChartValues);
   const totalQualified = pipelineChartData.reduce((sum, item) => sum + item.qualified, 0);
   const discoveryCallsBooked = 184;
@@ -41,17 +43,17 @@ export function PipelineActivity() {
     <div className="grid grid-cols-1 gap-4 xl:grid-cols-12">
       <Card className="xl:col-span-12">
         <CardHeader>
-          <CardTitle>Qualified Lead Flow</CardTitle>
+          <CardTitle>{t('pipeline_activity.qualified_lead_flow')}</CardTitle>
           <CardAction>
             <Select defaultValue="last-12-months">
               <SelectTrigger size="sm" className="min-w-40">
-                <SelectValue placeholder="Select range" />
+                <SelectValue placeholder={t('pipeline_activity.select_range')} />
               </SelectTrigger>
               <SelectContent>
                 <SelectGroup>
-                  <SelectItem value="last-30-days">Last 30 days</SelectItem>
-                  <SelectItem value="last-quarter">Last quarter</SelectItem>
-                  <SelectItem value="last-12-months">Last 12 months</SelectItem>
+                  <SelectItem value="last-30-days">{t('pipeline_activity.last_30_days')}</SelectItem>
+                  <SelectItem value="last-quarter">{t('pipeline_activity.last_quarter')}</SelectItem>
+                  <SelectItem value="last-12-months">{t('pipeline_activity.last_12_months')}</SelectItem>
                 </SelectGroup>
               </SelectContent>
             </Select>
@@ -112,19 +114,19 @@ export function PipelineActivity() {
             <div className="flex flex-col gap-5 rounded-lg p-4 lg:col-span-4">
               <div className="flex flex-col gap-1">
                 <div className="font-medium text-4xl tabular-nums leading-none">
-                  {totalQualified} <span className="font-normal text-lg text-muted-foreground">leads</span>
+                  {totalQualified} <span className="font-normal text-lg text-muted-foreground">{t('pipeline_activity.leads')}</span>
                 </div>
-                <p className="text-muted-foreground text-sm">Total qualified leads captured over the last 12 months.</p>
+                <p className="text-muted-foreground text-sm">{t('pipeline_activity.total_qualified_leads_captured_over_the')}</p>
               </div>
 
               <div className="flex flex-col gap-3 rounded-lg border border-border/60 p-3">
                 <div className="text-[11px] text-muted-foreground uppercase tracking-widest">
-                  Discovery Calls Booked
+                  {t('pipeline_activity.discovery_calls_booked')}
                 </div>
 
                 <div className="flex flex-col gap-1.5">
                   <div className="font-medium text-2xl tabular-nums leading-none">
-                    {discoveryCallsBooked} <span className="font-normal text-muted-foreground text-sm">meetings</span>
+                    {discoveryCallsBooked} <span className="font-normal text-muted-foreground text-sm">{t('pipeline_activity.meetings')}</span>
                   </div>
                   <p className="text-muted-foreground text-sm">
                     {discoveryProgress}% of qualified leads booked a first call.
diff --git a/src/app/(main)/dashboard/crm/_components/task-reminders.tsx b/src/app/(main)/dashboard/crm/_components/task-reminders.tsx
index 97156ff..a2f5174 100644
--- a/src/app/(main)/dashboard/crm/_components/task-reminders.tsx
+++ b/src/app/(main)/dashboard/crm/_components/task-reminders.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { CalendarDays, CalendarRange } from "lucide-react";
 
 import { Button } from "@/components/ui/button";
@@ -16,11 +17,12 @@ const proposalGoalBars = Array.from({ length: proposalGoalBarCount }, (_, index)
 }));
 
 export function TaskReminders() {
+  const t = useTranslations();
   return (
     <section className="grid grid-cols-1 gap-4 xl:grid-cols-12">
       <Card className="xl:col-span-8">
         <CardHeader>
-          <CardTitle>Upcoming Meetings</CardTitle>
+          <CardTitle>{t('task_reminders.upcoming_meetings')}</CardTitle>
           <CardAction>
             <Button variant="outline" size="sm">
               <CalendarDays data-icon="inline-start" />
@@ -58,9 +60,9 @@ export function TaskReminders() {
                   </div>
                   <div className="min-w-0">
                     <div className="truncate font-medium text-primary-foreground text-xs leading-none">
-                      Product demo with Tim
+                      {t('task_reminders.product_demo_with_tim')}
                     </div>
-                    <div className="truncate text-[10px] text-primary-foreground/75">Weblabs Studio</div>
+                    <div className="truncate text-[10px] text-primary-foreground/75">{t('task_reminders.weblabs_studio')}</div>
                   </div>
                 </div>
               </div>
@@ -72,12 +74,12 @@ export function TaskReminders() {
 
       <Card className="xl:col-span-4">
         <CardHeader>
-          <CardTitle>Monthly Proposal Goal</CardTitle>
+          <CardTitle>{t('task_reminders.monthly_proposal_goal')}</CardTitle>
         </CardHeader>
         <CardContent className="flex flex-col gap-1">
           <div className="flex items-end justify-between gap-3">
             <div className="font-medium text-2xl tabular-nums leading-none">
-              {proposalSent} <span className="font-normal text-base text-muted-foreground">sent</span>
+              {proposalSent} <span className="font-normal text-base text-muted-foreground">{t('task_reminders.sent')}</span>
             </div>
             <div className="text-muted-foreground text-sm tabular-nums">{proposalGoal} target</div>
           </div>
diff --git a/src/app/(main)/dashboard/default/_components/metric-cards.tsx b/src/app/(main)/dashboard/default/_components/metric-cards.tsx
index e2a969f..0e3859b 100644
--- a/src/app/(main)/dashboard/default/_components/metric-cards.tsx
+++ b/src/app/(main)/dashboard/default/_components/metric-cards.tsx
@@ -1,9 +1,11 @@
+import { useTranslations } from 'next-intl';
 import { DollarSign, TrendingDown, TrendingUp, UserPlus, Users, Waves } from "lucide-react";
 
 import { Badge } from "@/components/ui/badge";
 import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
 
 export function MetricCards() {
+  const t = useTranslations();
   return (
     <div className="grid grid-cols-1 gap-4 *:data-[slot=card]:bg-linear-to-t *:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card *:data-[slot=card]:shadow-xs xl:grid-cols-4 dark:*:data-[slot=card]:bg-card">
       <Card>
@@ -13,7 +15,7 @@ export function MetricCards() {
               <DollarSign className="size-4" />
             </div>
           </CardTitle>
-          <CardDescription>Total Revenue</CardDescription>
+          <CardDescription>{t('metric_cards.total_revenue')}</CardDescription>
         </CardHeader>
         <CardContent className="flex flex-col gap-1">
           <div className="flex flex-wrap items-center gap-2">
@@ -23,7 +25,7 @@ export function MetricCards() {
               +12.5%
             </Badge>
           </div>
-          <p className="text-muted-foreground text-sm">Visitors for the last 6 months</p>
+          <p className="text-muted-foreground text-sm">{t('metric_cards.visitors_for_the_last_6_months')}</p>
         </CardContent>
       </Card>
 
@@ -34,7 +36,7 @@ export function MetricCards() {
               <UserPlus className="size-4" />
             </div>
           </CardTitle>
-          <CardDescription>New Customers</CardDescription>
+          <CardDescription>{t('metric_cards.new_customers')}</CardDescription>
         </CardHeader>
         <CardContent className="flex flex-col gap-1">
           <div className="flex flex-wrap items-center gap-2">
@@ -44,7 +46,7 @@ export function MetricCards() {
               -20%
             </Badge>
           </div>
-          <p className="text-muted-foreground text-sm">Acquisition needs attention</p>
+          <p className="text-muted-foreground text-sm">{t('metric_cards.acquisition_needs_attention')}</p>
         </CardContent>
       </Card>
 
@@ -55,7 +57,7 @@ export function MetricCards() {
               <Users className="size-4" />
             </div>
           </CardTitle>
-          <CardDescription>Active Accounts</CardDescription>
+          <CardDescription>{t('metric_cards.active_accounts')}</CardDescription>
         </CardHeader>
         <CardContent className="flex flex-col gap-1">
           <div className="flex flex-wrap items-center gap-2">
@@ -65,7 +67,7 @@ export function MetricCards() {
               +12.5%
             </Badge>
           </div>
-          <p className="text-muted-foreground text-sm">Engagement exceeds targets</p>
+          <p className="text-muted-foreground text-sm">{t('metric_cards.engagement_exceeds_targets')}</p>
         </CardContent>
       </Card>
 
@@ -76,7 +78,7 @@ export function MetricCards() {
               <Waves className="size-4" />
             </div>
           </CardTitle>
-          <CardDescription>Growth Rate</CardDescription>
+          <CardDescription>{t('metric_cards.growth_rate')}</CardDescription>
         </CardHeader>
         <CardContent className="flex flex-col gap-1">
           <div className="flex flex-wrap items-center gap-2">
@@ -86,7 +88,7 @@ export function MetricCards() {
               +4.5%
             </Badge>
           </div>
-          <p className="text-muted-foreground text-sm">Meets growth projections</p>
+          <p className="text-muted-foreground text-sm">{t('metric_cards.meets_growth_projections')}</p>
         </CardContent>
       </Card>
     </div>
diff --git a/src/app/(main)/dashboard/default/_components/performance-overview.tsx b/src/app/(main)/dashboard/default/_components/performance-overview.tsx
index 385b795..03c413d 100644
--- a/src/app/(main)/dashboard/default/_components/performance-overview.tsx
+++ b/src/app/(main)/dashboard/default/_components/performance-overview.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { addHours, endOfToday, format, parseISO, subHours } from "date-fns";
 import { Area, CartesianGrid, ComposedChart, Line, XAxis } from "recharts";
@@ -230,43 +231,44 @@ const chartConfig = {
 } satisfies ChartConfig;
 
 export function PerformanceOverview() {
+  const t = useTranslations();
   return (
     <Card className="@container/card">
       <CardHeader>
-        <CardTitle className="leading-none">Customer Activity</CardTitle>
+        <CardTitle className="leading-none">{t('performance_overview.customer_activity')}</CardTitle>
         <CardDescription>
-          <span className="@[540px]/card:block hidden">Customer activity for the last 3 months</span>
-          <span className="@[540px]/card:hidden">Last 3 months</span>
+          <span className="@[540px]/card:block hidden">{t('performance_overview.customer_activity_for_the_last_3_months')}</span>
+          <span className="@[540px]/card:hidden">{t('performance_overview.last_3_months')}</span>
         </CardDescription>
         <CardAction className="flex items-center gap-2">
           <Select defaultValue="quarter">
             <SelectTrigger size="sm" className="w-28">
-              <SelectValue placeholder="3 months" />
+              <SelectValue placeholder={t('performance_overview.3_months')} />
             </SelectTrigger>
             <SelectContent>
               <SelectGroup>
-                <SelectLabel>Period</SelectLabel>
-                <SelectItem value="quarter">3 months</SelectItem>
+                <SelectLabel>{t('performance_overview.period')}</SelectLabel>
+                <SelectItem value="quarter">{t('performance_overview.3_months')}</SelectItem>
               </SelectGroup>
             </SelectContent>
           </Select>
 
           <Select defaultValue="all">
             <SelectTrigger size="sm" className="w-32">
-              <SelectValue placeholder="All segments" />
+              <SelectValue placeholder={t('performance_overview.all_segments')} />
             </SelectTrigger>
             <SelectContent>
               <SelectGroup>
-                <SelectLabel>Segments</SelectLabel>
-                <SelectItem value="all">All segments</SelectItem>
-                <SelectItem value="paid">Paid</SelectItem>
-                <SelectItem value="organic">Organic</SelectItem>
+                <SelectLabel>{t('performance_overview.segments')}</SelectLabel>
+                <SelectItem value="all">{t('performance_overview.all_segments')}</SelectItem>
+                <SelectItem value="paid">{t('performance_overview.paid')}</SelectItem>
+                <SelectItem value="organic">{t('performance_overview.organic')}</SelectItem>
               </SelectGroup>
             </SelectContent>
           </Select>
 
           <Button variant="outline" size="sm">
-            View report
+            {t('performance_overview.view_report')}
           </Button>
         </CardAction>
       </CardHeader>
diff --git a/src/app/(main)/dashboard/default/_components/recent-customers-table/table.tsx b/src/app/(main)/dashboard/default/_components/recent-customers-table/table.tsx
index 36f79d7..06df03d 100644
--- a/src/app/(main)/dashboard/default/_components/recent-customers-table/table.tsx
+++ b/src/app/(main)/dashboard/default/_components/recent-customers-table/table.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import * as React from "react";
@@ -75,6 +76,7 @@ const sortOptionState = {
 } satisfies Record<(typeof sortOptions)[number]["value"], SortingState>;
 
 export function RecentCustomersTable({ data }: { data: RecentCustomerRow[] }) {
+  const t = useTranslations();
   const [rowSelection, setRowSelection] = React.useState({});
   const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);
   const [sorting, setSorting] = React.useState<SortingState>([{ id: "joined", desc: true }]);
@@ -133,7 +135,7 @@ export function RecentCustomersTable({ data }: { data: RecentCustomerRow[] }) {
             <Search className="pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground" />
             <Input
               className="h-7 rounded-[min(var(--radius-md),12px)] pl-8"
-              placeholder="Search customers..."
+              placeholder={t('table.search_customers')}
               value={searchQuery}
               onChange={(event) => {
                 table.getColumn("search")?.setFilterValue(event.target.value || undefined);
@@ -281,7 +283,7 @@ export function RecentCustomersTable({ data }: { data: RecentCustomerRow[] }) {
         <div className="flex w-full items-center gap-8 lg:w-fit">
           <div className="hidden items-center gap-2 lg:flex">
             <Label htmlFor="recent-customers-rows-per-page" className="font-medium text-sm">
-              Rows per page
+              {t('table.rows_per_page')}
             </Label>
             <Select
               value={`${table.getState().pagination.pageSize}`}
@@ -314,7 +316,7 @@ export function RecentCustomersTable({ data }: { data: RecentCustomerRow[] }) {
               onClick={() => table.setPageIndex(0)}
               disabled={!table.getCanPreviousPage()}
             >
-              <span className="sr-only">Go to first page</span>
+              <span className="sr-only">{t('table.go_to_first_page')}</span>
               <ChevronsLeft className="size-4" />
             </Button>
             <Button
@@ -324,7 +326,7 @@ export function RecentCustomersTable({ data }: { data: RecentCustomerRow[] }) {
               onClick={() => table.previousPage()}
               disabled={!table.getCanPreviousPage()}
             >
-              <span className="sr-only">Go to previous page</span>
+              <span className="sr-only">{t('table.go_to_previous_page')}</span>
               <ChevronLeft className="size-4" />
             </Button>
             <Button
@@ -334,7 +336,7 @@ export function RecentCustomersTable({ data }: { data: RecentCustomerRow[] }) {
               onClick={() => table.nextPage()}
               disabled={!table.getCanNextPage()}
             >
-              <span className="sr-only">Go to next page</span>
+              <span className="sr-only">{t('table.go_to_next_page')}</span>
               <ChevronRight className="size-4" />
             </Button>
             <Button
@@ -344,7 +346,7 @@ export function RecentCustomersTable({ data }: { data: RecentCustomerRow[] }) {
               onClick={() => table.setPageIndex(table.getPageCount() - 1)}
               disabled={!table.getCanNextPage()}
             >
-              <span className="sr-only">Go to last page</span>
+              <span className="sr-only">{t('table.go_to_last_page')}</span>
               <ChevronsRight className="size-4" />
             </Button>
           </div>
diff --git a/src/app/(main)/dashboard/default/_components/subscriber-overview.tsx b/src/app/(main)/dashboard/default/_components/subscriber-overview.tsx
index fe8d047..c612887 100644
--- a/src/app/(main)/dashboard/default/_components/subscriber-overview.tsx
+++ b/src/app/(main)/dashboard/default/_components/subscriber-overview.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Download } from "lucide-react";
 
@@ -12,11 +13,12 @@ import { RecentCustomersTable } from "./recent-customers-table/table";
 const customers = customersData as RecentCustomerRow[];
 
 export function SubscriberOverview() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="leading-none">18,426 Customers</CardTitle>
-        <CardDescription>Recent customer records with plan, billing, status, and signup activity.</CardDescription>
+        <CardTitle className="leading-none">{t('subscriber_overview.18_426_customers')}</CardTitle>
+        <CardDescription>{t('subscriber_overview.recent_customer_records_with_plan_billin')}</CardDescription>
         <CardAction>
           <Button variant="outline" size="sm">
             <Download />
diff --git a/src/app/(main)/dashboard/ecommerce/_components/customer-reviews.tsx b/src/app/(main)/dashboard/ecommerce/_components/customer-reviews.tsx
index 8b5a753..382f573 100644
--- a/src/app/(main)/dashboard/ecommerce/_components/customer-reviews.tsx
+++ b/src/app/(main)/dashboard/ecommerce/_components/customer-reviews.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { ArrowLeft, ArrowRight, ArrowUpRight, Star } from "lucide-react";
 
 import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount } from "@/components/ui/avatar";
@@ -7,12 +8,13 @@ import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle }
 const customerInitials = ["EM", "OW", "NO", "MM"] as const;
 
 export function CustomerReviews() {
+  const t = useTranslations();
   return (
     <Card className="h-full">
       <CardHeader>
-        <CardTitle className="font-normal text-muted-foreground text-sm">Reviews</CardTitle>
+        <CardTitle className="font-normal text-muted-foreground text-sm">{t('customer_reviews.reviews')}</CardTitle>
         <CardDescription className="text-foreground text-xl tabular-nums leading-none tracking-tight">
-          4.6 average rating
+          {t('customer_reviews.4_6_average_rating')}
         </CardDescription>
         <CardAction>
           <ArrowUpRight className="size-4" />
@@ -31,18 +33,18 @@ export function CustomerReviews() {
                 <Star className="size-3.5 fill-current" />
               </div>
               <div>
-                <div className="font-medium text-sm">Melody Macy</div>
+                <div className="font-medium text-sm">{t('customer_reviews.melody_macy')}</div>
                 <p className="mt-2 line-clamp-3 min-h-[4.5em] text-muted-foreground text-sm">
-                  The linen overshirt arrived faster than expected and the fit was exactly right.
+                  {t('customer_reviews.the_linen_overshirt_arrived_faster_than')}
                 </p>
               </div>
             </div>
 
             <div className="flex gap-1">
-              <Button aria-label="Previous review" size="icon-xs" variant="outline">
+              <Button aria-label={t('customer_reviews.previous_review')} size="icon-xs" variant="outline">
                 <ArrowLeft />
               </Button>
-              <Button aria-label="Next review" size="icon-xs" variant="outline">
+              <Button aria-label={t('customer_reviews.next_review')} size="icon-xs" variant="outline">
                 <ArrowRight />
               </Button>
             </div>
@@ -51,8 +53,8 @@ export function CustomerReviews() {
 
         <div className="flex items-center justify-between gap-4 rounded-lg border px-4 py-3">
           <div className="min-w-0">
-            <div className="font-medium text-sm">12.8K reviews</div>
-            <div className="line-clamp-2 min-h-[3em] text-muted-foreground text-xs">Customers reviewed this month</div>
+            <div className="font-medium text-sm">{t('customer_reviews.12_8k_reviews')}</div>
+            <div className="line-clamp-2 min-h-[3em] text-muted-foreground text-xs">{t('customer_reviews.customers_reviewed_this_month')}</div>
           </div>
 
           <AvatarGroup>
diff --git a/src/app/(main)/dashboard/ecommerce/_components/inventory.tsx b/src/app/(main)/dashboard/ecommerce/_components/inventory.tsx
index 14fe39f..bda3a8e 100644
--- a/src/app/(main)/dashboard/ecommerce/_components/inventory.tsx
+++ b/src/app/(main)/dashboard/ecommerce/_components/inventory.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { ArrowUpRight, PackageCheck, PackageX, TriangleAlert } from "lucide-react";
 import { Label, Pie, PieChart } from "recharts";
@@ -69,10 +70,11 @@ const chartConfig = {
 } satisfies ChartConfig;
 
 export function Inventory() {
+  const t = useTranslations();
   return (
     <Card className="h-full">
       <CardHeader>
-        <CardTitle className="font-normal text-muted-foreground text-sm">Inventory</CardTitle>
+        <CardTitle className="font-normal text-muted-foreground text-sm">{t('inventory.inventory')}</CardTitle>
         <CardDescription className="text-foreground text-xl tabular-nums leading-none tracking-tight">
           {availablePercent}% available
         </CardDescription>
diff --git a/src/app/(main)/dashboard/ecommerce/_components/kpi-strip.tsx b/src/app/(main)/dashboard/ecommerce/_components/kpi-strip.tsx
index d1483d7..27b4013 100644
--- a/src/app/(main)/dashboard/ecommerce/_components/kpi-strip.tsx
+++ b/src/app/(main)/dashboard/ecommerce/_components/kpi-strip.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { format, parse } from "date-fns";
 import { ArrowUpRight, DollarSign, PackageCheck, ReceiptText, RotateCcw, ShoppingBag, Users } from "lucide-react";
@@ -86,6 +87,7 @@ function formatCurrencyTooltipValue(value: unknown) {
 }
 
 export function KpiStrip() {
+  const t = useTranslations();
   return (
     <div className="h-full overflow-hidden rounded-xl bg-card ring-1 ring-foreground/10 xl:col-span-12">
       <div>
@@ -93,7 +95,7 @@ export function KpiStrip() {
           <div className="grid grid-cols-1 md:grid-cols-2 md:grid-rows-3 xl:col-span-5 xl:border-r">
             <Card className="h-full rounded-none border-0 border-border border-b ring-0 md:border-r">
               <CardHeader>
-                <CardTitle className="font-normal text-sm">Total Sales</CardTitle>
+                <CardTitle className="font-normal text-sm">{t('kpi_strip.total_sales')}</CardTitle>
                 <CardDescription className="text-3xl text-foreground tabular-nums leading-none tracking-tight">
                   $48,560.00
                 </CardDescription>
@@ -104,14 +106,14 @@ export function KpiStrip() {
               <CardContent>
                 <div className="text-sm">
                   <span className="text-green-700 dark:text-green-300">+15.8%</span>
-                  <span className="text-muted-foreground"> vs last week</span>
+                  <span className="text-muted-foreground"> {t('kpi_strip.vs_last_week')}</span>
                 </div>
               </CardContent>
             </Card>
 
             <Card className="h-full rounded-none border-0 border-border border-b ring-0">
               <CardHeader>
-                <CardTitle className="font-normal text-sm">Total Orders</CardTitle>
+                <CardTitle className="font-normal text-sm">{t('kpi_strip.total_orders')}</CardTitle>
                 <CardDescription className="text-3xl text-foreground tabular-nums leading-none tracking-tight">
                   379
                 </CardDescription>
@@ -122,14 +124,14 @@ export function KpiStrip() {
               <CardContent>
                 <div className="text-sm">
                   <span className="text-green-700 dark:text-green-300">+8.3%</span>
-                  <span className="text-muted-foreground"> vs last week</span>
+                  <span className="text-muted-foreground"> {t('kpi_strip.vs_last_week')}</span>
                 </div>
               </CardContent>
             </Card>
 
             <Card className="h-full rounded-none border-0 border-border border-b ring-0 md:border-r">
               <CardHeader>
-                <CardTitle className="font-normal text-sm">Customer Growth</CardTitle>
+                <CardTitle className="font-normal text-sm">{t('kpi_strip.customer_growth')}</CardTitle>
                 <CardDescription className="text-3xl text-foreground tabular-nums leading-none tracking-tight">
                   820
                 </CardDescription>
@@ -140,14 +142,14 @@ export function KpiStrip() {
               <CardContent>
                 <div className="text-sm">
                   <span className="text-green-700 dark:text-green-300">+12.5%</span>
-                  <span className="text-muted-foreground"> vs last month</span>
+                  <span className="text-muted-foreground"> {t('kpi_strip.vs_last_month')}</span>
                 </div>
               </CardContent>
             </Card>
 
             <Card className="h-full rounded-none border-0 border-border border-b ring-0">
               <CardHeader>
-                <CardTitle className="font-normal text-sm">Average Order</CardTitle>
+                <CardTitle className="font-normal text-sm">{t('kpi_strip.average_order')}</CardTitle>
                 <CardDescription className="text-3xl text-foreground tabular-nums leading-none tracking-tight">
                   $128
                 </CardDescription>
@@ -158,14 +160,14 @@ export function KpiStrip() {
               <CardContent>
                 <div className="text-sm">
                   <span className="text-destructive">-$4.20</span>
-                  <span className="text-muted-foreground"> vs last week</span>
+                  <span className="text-muted-foreground"> {t('kpi_strip.vs_last_week')}</span>
                 </div>
               </CardContent>
             </Card>
 
             <Card className="h-full rounded-none border-0 border-border border-b ring-0 md:border-r md:border-b-0">
               <CardHeader>
-                <CardTitle className="font-normal text-sm">Return Requests</CardTitle>
+                <CardTitle className="font-normal text-sm">{t('kpi_strip.return_requests')}</CardTitle>
                 <CardDescription className="text-3xl text-foreground tabular-nums leading-none tracking-tight">
                   18
                 </CardDescription>
@@ -176,14 +178,14 @@ export function KpiStrip() {
               <CardContent>
                 <div className="text-sm">
                   <span className="text-destructive">+0.6%</span>
-                  <span className="text-muted-foreground"> vs last month</span>
+                  <span className="text-muted-foreground"> {t('kpi_strip.vs_last_month')}</span>
                 </div>
               </CardContent>
             </Card>
 
             <Card className="h-full rounded-none border-0 ring-0">
               <CardHeader>
-                <CardTitle className="font-normal text-sm">Stock Accuracy</CardTitle>
+                <CardTitle className="font-normal text-sm">{t('kpi_strip.stock_accuracy')}</CardTitle>
                 <CardDescription className="text-3xl text-foreground tabular-nums leading-none tracking-tight">
                   97%
                 </CardDescription>
@@ -193,8 +195,8 @@ export function KpiStrip() {
               </CardHeader>
               <CardContent>
                 <div className="text-sm">
-                  <span className="text-green-700 dark:text-green-300">+2.4 pts</span>
-                  <span className="text-muted-foreground"> vs last audit</span>
+                  <span className="text-green-700 dark:text-green-300">{t('kpi_strip.2_4_pts')}</span>
+                  <span className="text-muted-foreground"> {t('kpi_strip.vs_last_audit')}</span>
                 </div>
               </CardContent>
             </Card>
@@ -202,7 +204,7 @@ export function KpiStrip() {
 
           <Card className="h-full rounded-none border-0 ring-0 xl:col-span-7">
             <CardHeader>
-              <CardTitle className="font-normal">Sales Overview</CardTitle>
+              <CardTitle className="font-normal">{t('kpi_strip.sales_overview')}</CardTitle>
               <CardAction>
                 <ArrowUpRight className="size-4" />
               </CardAction>
diff --git a/src/app/(main)/dashboard/ecommerce/_components/recent-orders.tsx b/src/app/(main)/dashboard/ecommerce/_components/recent-orders.tsx
index 7daf847..3dc485f 100644
--- a/src/app/(main)/dashboard/ecommerce/_components/recent-orders.tsx
+++ b/src/app/(main)/dashboard/ecommerce/_components/recent-orders.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import * as React from "react";
@@ -42,6 +43,7 @@ import { type OrderFilter, type OrderRow, orderFilters } from "./recent-orders-t
 const recentOrders = recentOrdersData as OrderRow[];
 
 export function RecentOrders() {
+  const t = useTranslations();
   const [rowSelection, setRowSelection] = React.useState({});
   const [sorting, setSorting] = React.useState<SortingState>([]);
   const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);
@@ -93,15 +95,15 @@ export function RecentOrders() {
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="font-normal text-muted-foreground text-sm">Recent Orders</CardTitle>
+        <CardTitle className="font-normal text-muted-foreground text-sm">{t('recent_orders.recent_orders')}</CardTitle>
         <CardDescription className="text-foreground text-xl tabular-nums leading-none tracking-tight">
           {orderCountDescription}
         </CardDescription>
         <CardAction className="flex items-center gap-1">
-          <Button aria-label="Open orders" size="icon-sm" variant="outline">
+          <Button aria-label={t('recent_orders.open_orders')} size="icon-sm" variant="outline">
             <ArrowUpRight />
           </Button>
-          <Button aria-label="Download orders" size="icon-sm" variant="outline">
+          <Button aria-label={t('recent_orders.download_orders')} size="icon-sm" variant="outline">
             <Download />
           </Button>
           <Button size="icon-sm" variant="outline">
diff --git a/src/app/(main)/dashboard/ecommerce/_components/store-traffic.tsx b/src/app/(main)/dashboard/ecommerce/_components/store-traffic.tsx
index 74e5d79..769ac86 100644
--- a/src/app/(main)/dashboard/ecommerce/_components/store-traffic.tsx
+++ b/src/app/(main)/dashboard/ecommerce/_components/store-traffic.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { useMemo } from "react";
 
@@ -142,6 +143,7 @@ function formatTrafficTooltipLabel(value: string) {
 }
 
 export function StoreTraffic() {
+  const t = useTranslations();
   const trafficData = useMemo(getTrafficData, []);
   const firstTrafficTimestamp = trafficData[0].timestamp;
   const lastTrafficTimestamp = trafficData.at(-1)?.timestamp ?? "";
@@ -157,9 +159,9 @@ export function StoreTraffic() {
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="font-normal text-muted-foreground text-sm">Store Traffic</CardTitle>
+        <CardTitle className="font-normal text-muted-foreground text-sm">{t('store_traffic.store_traffic')}</CardTitle>
         <CardDescription className="text-foreground text-xl tabular-nums leading-none tracking-tight">
-          12.9K visits
+          {t('store_traffic.12_9k_visits')}
         </CardDescription>
         <CardAction>
           <ArrowUpRight className="size-4" />
diff --git a/src/app/(main)/dashboard/ecommerce/_components/top-products.tsx b/src/app/(main)/dashboard/ecommerce/_components/top-products.tsx
index 35ca07d..b8bbd83 100644
--- a/src/app/(main)/dashboard/ecommerce/_components/top-products.tsx
+++ b/src/app/(main)/dashboard/ecommerce/_components/top-products.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { ArrowUpRight } from "lucide-react";
 
 import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
@@ -43,12 +44,13 @@ const products = [
 ] as const;
 
 export function TopProducts() {
+  const t = useTranslations();
   return (
     <Card className="h-full">
       <CardHeader>
-        <CardTitle className="font-normal text-muted-foreground text-sm">Top Products</CardTitle>
+        <CardTitle className="font-normal text-muted-foreground text-sm">{t('top_products.top_products')}</CardTitle>
         <CardDescription className="text-foreground text-xl tabular-nums leading-none tracking-tight">
-          73% of sales
+          {t('top_products.73_of_sales')}
         </CardDescription>
         <CardAction>
           <ArrowUpRight className="size-4" />
@@ -57,7 +59,7 @@ export function TopProducts() {
 
       <CardContent className="flex flex-col gap-4">
         <div className="flex flex-col gap-2">
-          <div aria-label="Sales by category" className="flex h-2 gap-1 overflow-hidden bg-muted" role="img">
+          <div aria-label={t('top_products.sales_by_category')} className="flex h-2 gap-1 overflow-hidden bg-muted" role="img">
             {categories.map((category) => (
               <div
                 aria-hidden="true"
@@ -84,9 +86,9 @@ export function TopProducts() {
         <Separator />
 
         <div className="grid grid-cols-[1fr_auto_auto] gap-x-4 gap-y-3">
-          <div className="text-muted-foreground text-xs">Products</div>
-          <div className="text-muted-foreground text-xs">Share</div>
-          <div className="text-muted-foreground text-xs">Sales</div>
+          <div className="text-muted-foreground text-xs">{t('top_products.products')}</div>
+          <div className="text-muted-foreground text-xs">{t('top_products.share')}</div>
+          <div className="text-muted-foreground text-xs">{t('top_products.sales')}</div>
 
           {products.map((product) => (
             <div className="contents text-sm" key={product.name}>
diff --git a/src/app/(main)/dashboard/ecommerce/_components/traffic-sources.tsx b/src/app/(main)/dashboard/ecommerce/_components/traffic-sources.tsx
index f04f86d..fc41946 100644
--- a/src/app/(main)/dashboard/ecommerce/_components/traffic-sources.tsx
+++ b/src/app/(main)/dashboard/ecommerce/_components/traffic-sources.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { ArrowUpRight } from "lucide-react";
 import { Bar, BarChart, LabelList, type LabelProps, XAxis, YAxis } from "recharts";
@@ -157,12 +158,13 @@ function TrafficSourceChangeLabel({ height, value, y }: SourceChangeLabelProps)
 }
 
 export function TrafficSources() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="font-normal text-muted-foreground text-sm">Traffic Sources</CardTitle>
+        <CardTitle className="font-normal text-muted-foreground text-sm">{t('traffic_sources.traffic_sources')}</CardTitle>
         <CardDescription className="text-foreground text-xl tabular-nums leading-none tracking-tight">
-          14.8K visits
+          {t('traffic_sources.14_8k_visits')}
         </CardDescription>
         <CardAction>
           <ArrowUpRight className="size-4" />
diff --git a/src/app/(main)/dashboard/ecommerce/page.tsx b/src/app/(main)/dashboard/ecommerce/page.tsx
index 54a7cff..68b8b88 100644
--- a/src/app/(main)/dashboard/ecommerce/page.tsx
+++ b/src/app/(main)/dashboard/ecommerce/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { format } from "date-fns";
 import { Settings2 } from "lucide-react";
 
@@ -14,42 +15,43 @@ import { TopProducts } from "./_components/top-products";
 import { TrafficSources } from "./_components/traffic-sources";
 
 export default function Page() {
+  const t = useTranslations();
   const formattedDate = format(new Date(), "EEEE, do MMMM yyyy");
 
   return (
     <div className="flex flex-col gap-4">
       <div className="flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between">
         <div className="flex flex-col gap-1">
-          <h1 className="text-3xl leading-none tracking-tight">Store Overview</h1>
+          <h1 className="text-3xl leading-none tracking-tight">{t('page.store_overview')}</h1>
           <p className="text-muted-foreground text-sm">{formattedDate}</p>
         </div>
 
         <div className="flex flex-wrap items-end justify-end gap-2 lg:w-fit">
           <Select defaultValue="this-month">
             <SelectTrigger className="w-34" id="ecommerce-period" size="sm">
-              <SelectValue placeholder="This Month" />
+              <SelectValue placeholder={t('page.this_month')} />
             </SelectTrigger>
             <SelectContent>
               <SelectGroup>
-                <SelectItem value="this-month">This Month</SelectItem>
-                <SelectItem value="last-month">Last Month</SelectItem>
-                <SelectItem value="last-30-days">Last 30 Days</SelectItem>
-                <SelectItem value="year-to-date">Year to Date</SelectItem>
+                <SelectItem value="this-month">{t('page.this_month')}</SelectItem>
+                <SelectItem value="last-month">{t('page.last_month')}</SelectItem>
+                <SelectItem value="last-30-days">{t('page.last_30_days')}</SelectItem>
+                <SelectItem value="year-to-date">{t('page.year_to_date')}</SelectItem>
               </SelectGroup>
             </SelectContent>
           </Select>
 
           <Select defaultValue="all-channels">
             <SelectTrigger className="w-40" id="ecommerce-channel" size="sm">
-              <SelectValue placeholder="All Channels" />
+              <SelectValue placeholder={t('page.all_channels')} />
             </SelectTrigger>
             <SelectContent>
               <SelectGroup>
-                <SelectItem value="all-channels">All Channels</SelectItem>
-                <SelectItem value="online-store">Online Store</SelectItem>
-                <SelectItem value="marketplace">Marketplace</SelectItem>
-                <SelectItem value="social">Social</SelectItem>
-                <SelectItem value="retail">Retail</SelectItem>
+                <SelectItem value="all-channels">{t('page.all_channels')}</SelectItem>
+                <SelectItem value="online-store">{t('page.online_store')}</SelectItem>
+                <SelectItem value="marketplace">{t('page.marketplace')}</SelectItem>
+                <SelectItem value="social">{t('page.social')}</SelectItem>
+                <SelectItem value="retail">{t('page.retail')}</SelectItem>
               </SelectGroup>
             </SelectContent>
           </Select>
diff --git a/src/app/(main)/dashboard/finance/_components/balance-distribution-card.tsx b/src/app/(main)/dashboard/finance/_components/balance-distribution-card.tsx
index 3a67a69..de5a753 100644
--- a/src/app/(main)/dashboard/finance/_components/balance-distribution-card.tsx
+++ b/src/app/(main)/dashboard/finance/_components/balance-distribution-card.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -91,13 +92,14 @@ const chartData = balanceData.map((item) => ({
 }));
 
 export function BalanceDistributionCard() {
+  const t = useTranslations();
   const [currency, setCurrency] = React.useState<Currency>("USD");
   const totalBalance = React.useMemo(() => balanceData.reduce((total, item) => total + item.amount, 0), []);
 
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="font-normal">Account Allocation</CardTitle>
+        <CardTitle className="font-normal">{t('balance_distribution_card.account_allocation')}</CardTitle>
         <CardAction>
           <Select onValueChange={(value) => setCurrency(value as Currency)} value={currency}>
             <SelectTrigger className="w-36" size="sm">
diff --git a/src/app/(main)/dashboard/finance/_components/finance-notification.tsx b/src/app/(main)/dashboard/finance/_components/finance-notification.tsx
index a9e33ed..4fc8bd3 100644
--- a/src/app/(main)/dashboard/finance/_components/finance-notification.tsx
+++ b/src/app/(main)/dashboard/finance/_components/finance-notification.tsx
@@ -1,21 +1,23 @@
+import { useTranslations } from 'next-intl';
 import { TrendingUp } from "lucide-react";
 
 import { Button } from "@/components/ui/button";
 import { Item, ItemActions, ItemContent, ItemDescription, ItemMedia, ItemTitle } from "@/components/ui/item";
 
 export function FinanceNotification() {
+  const t = useTranslations();
   return (
     <Item className="rounded-xl" variant="outline">
       <ItemMedia variant="icon">
         <TrendingUp />
       </ItemMedia>
       <ItemContent>
-        <ItemTitle>Credit score updated</ItemTitle>
-        <ItemDescription>Your score increased by 14 points to 782.</ItemDescription>
+        <ItemTitle>{t('finance_notification.credit_score_updated')}</ItemTitle>
+        <ItemDescription>{t('finance_notification.your_score_increased_by_14_points_to_782')}</ItemDescription>
       </ItemContent>
       <ItemActions>
         <Button size="sm" variant="outline">
-          View details
+          {t('finance_notification.view_details')}
         </Button>
       </ItemActions>
     </Item>
diff --git a/src/app/(main)/dashboard/finance/_components/income-breakdown.tsx b/src/app/(main)/dashboard/finance/_components/income-breakdown.tsx
index ef2bc98..05fe7d3 100644
--- a/src/app/(main)/dashboard/finance/_components/income-breakdown.tsx
+++ b/src/app/(main)/dashboard/finance/_components/income-breakdown.tsx
@@ -1,11 +1,13 @@
+import { useTranslations } from 'next-intl';
 import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 import { Separator } from "@/components/ui/separator";
 
 export function IncomeBreakdown() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="font-normal">Income sources</CardTitle>
+        <CardTitle className="font-normal">{t('income_breakdown.income_sources')}</CardTitle>
       </CardHeader>
 
       <CardContent className="grid grid-cols-1 gap-1 md:grid-cols-3">
@@ -16,7 +18,7 @@ export function IncomeBreakdown() {
           />
           <div className="flex min-h-24 flex-1 flex-col justify-between">
             <div className="flex min-w-0 flex-col gap-1 px-1">
-              <p className="wrap-break-word text-muted-foreground text-xs leading-none">Primary salary · 68%</p>
+              <p className="wrap-break-word text-muted-foreground text-xs leading-none">{t('income_breakdown.primary_salary_68')}</p>
               <div className="text-lg leading-none tracking-tight">$4,560.00</div>
             </div>
             <div className="-ml-0.5 h-5 rounded-sm bg-chart-3" />
@@ -30,7 +32,7 @@ export function IncomeBreakdown() {
           />
           <div className="flex min-h-24 flex-1 flex-col justify-between">
             <div className="flex min-w-0 flex-col gap-1 px-1">
-              <p className="wrap-break-word text-muted-foreground text-xs leading-none">Freelance projects · 21%</p>
+              <p className="wrap-break-word text-muted-foreground text-xs leading-none">{t('income_breakdown.freelance_projects_21')}</p>
               <div className="text-lg leading-none tracking-tight">$1,412.00</div>
             </div>
             <div className="-ml-0.5 h-5 rounded-sm bg-chart-3/75" />
@@ -44,7 +46,7 @@ export function IncomeBreakdown() {
           />
           <div className="flex min-h-24 flex-1 flex-col justify-between">
             <div className="flex min-w-0 flex-col gap-1 px-1">
-              <p className="wrap-break-word text-muted-foreground text-xs leading-none">Dividends and interest · 11%</p>
+              <p className="wrap-break-word text-muted-foreground text-xs leading-none">{t('income_breakdown.dividends_and_interest_11')}</p>
               <div className="text-lg leading-none tracking-tight">$765.00</div>
             </div>
             <div className="-ml-0.5 h-5 rounded-sm bg-chart-3/50" />
diff --git a/src/app/(main)/dashboard/finance/_components/overview-kpis.tsx b/src/app/(main)/dashboard/finance/_components/overview-kpis.tsx
index ff1a534..eb59e43 100644
--- a/src/app/(main)/dashboard/finance/_components/overview-kpis.tsx
+++ b/src/app/(main)/dashboard/finance/_components/overview-kpis.tsx
@@ -1,18 +1,20 @@
+import { useTranslations } from 'next-intl';
 import { Badge } from "@/components/ui/badge";
 import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 
 export function OverviewKpis() {
+  const t = useTranslations();
   return (
     <div className="overflow-hidden rounded-xl bg-card ring-1 ring-foreground/10">
       <div className="grid grid-cols-1 xl:grid-cols-8">
         <Card className="gap-5 overflow-hidden rounded-none border-0 border-foreground/10 border-b ring-0 xl:col-span-4 xl:border-r">
           <CardHeader>
-            <CardTitle className="font-normal">Net worth</CardTitle>
+            <CardTitle className="font-normal">{t('overview_kpis.net_worth')}</CardTitle>
           </CardHeader>
           <CardContent className="flex items-end justify-between">
             <div className="space-y-1">
               <div className="text-3xl leading-none tracking-tight">$128.4K</div>
-              <p className="text-muted-foreground text-xs">+$9.8K vs last month</p>
+              <p className="text-muted-foreground text-xs">{t('overview_kpis.9_8k_vs_last_month')}</p>
             </div>
             <Badge className="bg-green-500/10 text-green-700 dark:bg-green-500/15 dark:text-green-300">+8.4%</Badge>
           </CardContent>
@@ -20,12 +22,12 @@ export function OverviewKpis() {
 
         <Card className="gap-5 overflow-hidden rounded-none border-0 border-foreground/10 border-b ring-0 xl:col-span-4">
           <CardHeader>
-            <CardTitle className="font-normal">Available cash</CardTitle>
+            <CardTitle className="font-normal">{t('overview_kpis.available_cash')}</CardTitle>
           </CardHeader>
           <CardContent className="flex items-end justify-between">
             <div className="flex flex-col gap-1">
               <div className="text-3xl leading-none tracking-tight">$12.8K</div>
-              <p className="text-muted-foreground text-xs">$410 above your 30-day average</p>
+              <p className="text-muted-foreground text-xs">{t('overview_kpis.410_above_your_30_day_average')}</p>
             </div>
             <Badge className="bg-green-500/10 text-green-700 dark:bg-green-500/15 dark:text-green-300">+3.2%</Badge>
           </CardContent>
@@ -33,12 +35,12 @@ export function OverviewKpis() {
 
         <Card className="gap-5 overflow-hidden rounded-none border-0 border-foreground/10 ring-0 xl:col-span-4 xl:border-r">
           <CardHeader>
-            <CardTitle className="font-normal">Monthly spend</CardTitle>
+            <CardTitle className="font-normal">{t('overview_kpis.monthly_spend')}</CardTitle>
           </CardHeader>
           <CardContent className="flex items-end justify-between">
             <div className="flex flex-col gap-1">
               <div className="text-3xl leading-none tracking-tight">$2,140</div>
-              <p className="text-muted-foreground text-xs">$124 more than last month</p>
+              <p className="text-muted-foreground text-xs">{t('overview_kpis.124_more_than_last_month')}</p>
             </div>
             <Badge variant="destructive" className="bg-destructive/10 text-destructive">
               +6.1%
@@ -48,12 +50,12 @@ export function OverviewKpis() {
 
         <Card className="gap-5 overflow-hidden rounded-none border-0 ring-0 xl:col-span-4">
           <CardHeader>
-            <CardTitle className="font-normal">Savings rate</CardTitle>
+            <CardTitle className="font-normal">{t('overview_kpis.savings_rate')}</CardTitle>
           </CardHeader>
           <CardContent className="flex items-end justify-between">
             <div className="flex flex-col gap-1">
               <div className="text-3xl leading-none tracking-tight">28%</div>
-              <p className="text-muted-foreground text-xs">Up from 25.6% last month</p>
+              <p className="text-muted-foreground text-xs">{t('overview_kpis.up_from_25_6_last_month')}</p>
             </div>
             <Badge className="bg-green-500/10 text-green-700 dark:bg-green-500/15 dark:text-green-300">+2.4%</Badge>
           </CardContent>
diff --git a/src/app/(main)/dashboard/finance/_components/quick-actions.tsx b/src/app/(main)/dashboard/finance/_components/quick-actions.tsx
index bb04bdf..10f40e5 100644
--- a/src/app/(main)/dashboard/finance/_components/quick-actions.tsx
+++ b/src/app/(main)/dashboard/finance/_components/quick-actions.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import {
   Banknote,
   ChevronRight,
@@ -35,11 +36,12 @@ const shortcuts = [
 ];
 
 export function QuickActions() {
+  const t = useTranslations();
   return (
     <div className="flex flex-col gap-4">
       <Card>
         <CardHeader>
-          <CardTitle className="font-normal">Quick Transfer</CardTitle>
+          <CardTitle className="font-normal">{t('quick_actions.quick_transfer')}</CardTitle>
           <CardAction>
             <div className="flex items-center gap-1">
               <div className="flex -space-x-2">
@@ -61,17 +63,17 @@ export function QuickActions() {
               </InputGroupAddon>
               <InputGroupInput placeholder="0.00" />
               <InputGroupAddon align="inline-end">
-                <InputGroupText>USD</InputGroupText>
+                <InputGroupText>{t('quick_actions.usd')}</InputGroupText>
               </InputGroupAddon>
             </InputGroup>
-            <Button>Send</Button>
+            <Button>{t('quick_actions.send')}</Button>
           </Field>
         </CardContent>
       </Card>
 
       <Card>
         <CardHeader>
-          <CardTitle className="font-normal">Shortcuts</CardTitle>
+          <CardTitle className="font-normal">{t('quick_actions.shortcuts')}</CardTitle>
         </CardHeader>
         <CardContent>
           <div className="grid grid-cols-4 gap-4">
diff --git a/src/app/(main)/dashboard/finance/_components/transactions-overview-card.tsx b/src/app/(main)/dashboard/finance/_components/transactions-overview-card.tsx
index 2518044..fb88053 100644
--- a/src/app/(main)/dashboard/finance/_components/transactions-overview-card.tsx
+++ b/src/app/(main)/dashboard/finance/_components/transactions-overview-card.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { CartesianGrid, Line, LineChart, XAxis, YAxis } from "recharts";
 
@@ -72,10 +73,11 @@ const chartConfig = {
 } satisfies ChartConfig;
 
 export function TransactionsOverviewCard() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="font-normal">Spending Overview</CardTitle>
+        <CardTitle className="font-normal">{t('transactions_overview_card.spending_overview')}</CardTitle>
         <CardAction>
           <Select defaultValue="weekly">
             <SelectTrigger className="w-28" size="sm">
@@ -83,9 +85,9 @@ export function TransactionsOverviewCard() {
             </SelectTrigger>
             <SelectContent>
               <SelectGroup>
-                <SelectItem value="weekly">Weekly</SelectItem>
-                <SelectItem value="monthly">Monthly</SelectItem>
-                <SelectItem value="yearly">Yearly</SelectItem>
+                <SelectItem value="weekly">{t('transactions_overview_card.weekly')}</SelectItem>
+                <SelectItem value="monthly">{t('transactions_overview_card.monthly')}</SelectItem>
+                <SelectItem value="yearly">{t('transactions_overview_card.yearly')}</SelectItem>
               </SelectGroup>
             </SelectContent>
           </Select>
diff --git a/src/app/(main)/dashboard/finance/_components/upcoming-transactions.tsx b/src/app/(main)/dashboard/finance/_components/upcoming-transactions.tsx
index 1a8c12c..090bcb0 100644
--- a/src/app/(main)/dashboard/finance/_components/upcoming-transactions.tsx
+++ b/src/app/(main)/dashboard/finance/_components/upcoming-transactions.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { addDays, format, set } from "date-fns";
 import { ChevronRight, Zap } from "lucide-react";
@@ -30,10 +31,11 @@ const transactions = [
 ];
 
 export function UpcomingTransactions() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="font-normal">Upcoming Bills & Payments</CardTitle>
+        <CardTitle className="font-normal">{t('upcoming_transactions.upcoming_bills_payments')}</CardTitle>
       </CardHeader>
       <CardContent className="flex flex-col gap-3">
         <div className="flex flex-col gap-3">
diff --git a/src/app/(main)/dashboard/finance/_components/wallet.tsx b/src/app/(main)/dashboard/finance/_components/wallet.tsx
index 49d49ae..bc09982 100644
--- a/src/app/(main)/dashboard/finance/_components/wallet.tsx
+++ b/src/app/(main)/dashboard/finance/_components/wallet.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { siBarclays, siBitcoin, siEthereum, siHsbc, siRevolut } from "simple-icons";
 
 import { SimpleIcon } from "@/components/simple-icon";
@@ -52,10 +53,11 @@ const cryptoAssets = [
 ];
 
 export function Wallet() {
+  const t = useTranslations();
   return (
     <Card>
       <CardHeader>
-        <CardTitle className="font-normal">Wallet</CardTitle>
+        <CardTitle className="font-normal">{t('wallet.wallet')}</CardTitle>
       </CardHeader>
       <CardContent className="flex flex-col gap-4">
         <div className="flex flex-col gap-4">
@@ -106,7 +108,7 @@ export function Wallet() {
           </div>
           <div className="flex items-center gap-1.5">
             <div className="size-1 rounded-full bg-green-500 shadow-[0_0_8px_rgba(34,197,94,0.5)]" />
-            <span className="font-bold text-[9px] text-green-500 uppercase tracking-widest">Air-Gapped</span>
+            <span className="font-bold text-[9px] text-green-500 uppercase tracking-widest">{t('wallet.air_gapped')}</span>
           </div>
         </div>
       </CardContent>
diff --git a/src/app/(main)/dashboard/finance/page.tsx b/src/app/(main)/dashboard/finance/page.tsx
index 4d4877e..cb9ce9d 100644
--- a/src/app/(main)/dashboard/finance/page.tsx
+++ b/src/app/(main)/dashboard/finance/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { format } from "date-fns";
 import { Download, RotateCw, Settings2 } from "lucide-react";
 
@@ -14,27 +15,28 @@ import { UpcomingTransactions } from "./_components/upcoming-transactions";
 import { Wallet } from "./_components/wallet";
 
 export default function Page() {
+  const t = useTranslations();
   const formattedDate = format(new Date(), "EEEE, do MMMM yyyy");
 
   return (
     <div className="flex flex-col gap-4">
       <div className="space-y-1">
-        <h1 className="text-3xl tracking-tight">Personal Finances</h1>
+        <h1 className="text-3xl tracking-tight">{t('page.personal_finances')}</h1>
         <p className="text-muted-foreground text-sm">{formattedDate}</p>
       </div>
 
       <Tabs defaultValue="30-days" className="flex flex-col gap-4">
         <div className="flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between">
           <TabsList variant="line">
-            <TabsTrigger value="30-days">Dashboard</TabsTrigger>
-            <TabsTrigger value="12-months">Accounts</TabsTrigger>
-            <TabsTrigger value="custom">Transactions</TabsTrigger>
+            <TabsTrigger value="30-days">{t('page.dashboard')}</TabsTrigger>
+            <TabsTrigger value="12-months">{t('page.accounts')}</TabsTrigger>
+            <TabsTrigger value="custom">{t('page.transactions')}</TabsTrigger>
           </TabsList>
 
           <div className="flex flex-wrap items-center gap-3">
             <div className="flex items-center gap-1.5 text-muted-foreground text-xs">
               <RotateCw className="size-4" />
-              <span>Updated 5 min ago</span>
+              <span>{t('page.updated_5_min_ago')}</span>
             </div>
             <Button size="sm" variant="outline">
               <Settings2 />
@@ -83,13 +85,13 @@ export default function Page() {
 
         <TabsContent value="12-months">
           <div className="flex h-64 items-center justify-center rounded-xl border border-border border-dashed text-muted-foreground">
-            Accounts view coming soon.
+            {t('page.accounts_view_coming_soon')}
           </div>
         </TabsContent>
 
         <TabsContent value="custom">
           <div className="flex h-64 items-center justify-center rounded-xl border border-border border-dashed text-muted-foreground">
-            Transactions view coming soon.
+            {t('page.transactions_view_coming_soon')}
           </div>
         </TabsContent>
       </Tabs>
diff --git a/src/app/(main)/dashboard/infrastructure/_components/infrastructure-header.tsx b/src/app/(main)/dashboard/infrastructure/_components/infrastructure-header.tsx
index 3f3fde2..5702f35 100644
--- a/src/app/(main)/dashboard/infrastructure/_components/infrastructure-header.tsx
+++ b/src/app/(main)/dashboard/infrastructure/_components/infrastructure-header.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Box, Container, Filter, PlusCircle, RefreshCw, Search, Server, Settings } from "lucide-react";
 
 import { Badge } from "@/components/ui/badge";
@@ -6,21 +7,22 @@ import { InputGroup, InputGroupAddon, InputGroupInput } from "@/components/ui/in
 import { Kbd } from "@/components/ui/kbd";
 
 export function InfrastructureHeader() {
+  const t = useTranslations();
   return (
     <div className="flex flex-col gap-4">
       <div className="flex flex-col gap-2">
         <div className="flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between">
           <div className="flex min-w-0 flex-col gap-1">
             <h1 className="font-medium text-2xl leading-tight tracking-tight sm:text-3xl sm:leading-none">
-              Infrastructure Overview
+              {t('infrastructure_header.infrastructure_overview')}
             </h1>
             <p className="text-muted-foreground text-sm">
-              Monitor environments, server health, uptime, and resource usage across every project.
+              {t('infrastructure_header.monitor_environments_server_health_uptim')}
             </p>
           </div>
 
           <div className="flex w-full items-center justify-between gap-2 sm:w-auto sm:justify-end">
-            <span className="whitespace-nowrap text-muted-foreground text-sm">Last updated: 30s ago</span>
+            <span className="whitespace-nowrap text-muted-foreground text-sm">{t('infrastructure_header.last_updated_30s_ago')}</span>
             <div className="flex items-center gap-2">
               <Button variant="outline" size="icon-sm">
                 <RefreshCw />
@@ -55,9 +57,9 @@ export function InfrastructureHeader() {
           <InputGroupAddon>
             <Search />
           </InputGroupAddon>
-          <InputGroupInput placeholder="Search by name or domain..." />
+          <InputGroupInput placeholder={t('infrastructure_header.search_by_name_or_domain')} />
           <InputGroupAddon align="inline-end">
-            <Kbd>⌘ K</Kbd>
+            <Kbd>{t('infrastructure_header.k')}</Kbd>
           </InputGroupAddon>
         </InputGroup>
 
diff --git a/src/app/(main)/dashboard/infrastructure/_components/project-environments.tsx b/src/app/(main)/dashboard/infrastructure/_components/project-environments.tsx
index 0b3cee4..7b38345 100644
--- a/src/app/(main)/dashboard/infrastructure/_components/project-environments.tsx
+++ b/src/app/(main)/dashboard/infrastructure/_components/project-environments.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import {
   ArrowUpDown,
   Bell,
@@ -107,6 +108,7 @@ export function ProjectEnvironments({ group }: { group: InfrastructureGroup }) {
 }
 
 function EnvironmentTable({ rows }: { rows: InfrastructureEnvironment[] }) {
+  const t = useTranslations();
   return (
     <div className="scrollbar-thin overflow-x-auto [scrollbar-color:var(--border)_transparent] **:data-[slot=table-container]:overflow-visible [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-border [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar]:h-1">
       <Table className="min-w-[1700px] table-fixed **:data-[slot='table-cell']:px-5 **:data-[slot='table-head']:px-5">
@@ -128,13 +130,13 @@ function EnvironmentTable({ rows }: { rows: InfrastructureEnvironment[] }) {
                 Domain <ArrowUpDown className="size-4" />
               </span>
             </TableHead>
-            <TableHead>Platform</TableHead>
-            <TableHead>Environment</TableHead>
-            <TableHead>Health</TableHead>
-            <TableHead>Latency</TableHead>
-            <TableHead>Uptime</TableHead>
-            <TableHead>Resources</TableHead>
-            <TableHead>Server</TableHead>
+            <TableHead>{t('project_environments.platform')}</TableHead>
+            <TableHead>{t('project_environments.environment')}</TableHead>
+            <TableHead>{t('project_environments.health')}</TableHead>
+            <TableHead>{t('project_environments.latency')}</TableHead>
+            <TableHead>{t('project_environments.uptime')}</TableHead>
+            <TableHead>{t('project_environments.resources')}</TableHead>
+            <TableHead>{t('project_environments.server')}</TableHead>
             <TableHead />
           </TableRow>
         </TableHeader>
@@ -285,11 +287,12 @@ function ResourceMeter({ label, value }: { label: string; value: number }) {
 }
 
 function EmptyProjectState() {
+  const t = useTranslations();
   return (
     <div className="flex min-h-24 items-center justify-center border-t bg-muted/50 p-4">
       <div className="flex items-center gap-2">
         <CircleDashed className="size-4" />
-        <p className="font-medium text-sm">No environments in this project</p>
+        <p className="font-medium text-sm">{t('project_environments.no_environments_in_this_project')}</p>
       </div>
     </div>
   );
diff --git a/src/app/(main)/dashboard/invoice/_components/client-selector.tsx b/src/app/(main)/dashboard/invoice/_components/client-selector.tsx
index b31dcf9..8907958 100644
--- a/src/app/(main)/dashboard/invoice/_components/client-selector.tsx
+++ b/src/app/(main)/dashboard/invoice/_components/client-selector.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Plus } from "lucide-react";
 import { Controller, useFormContext } from "react-hook-form";
 
@@ -10,12 +11,13 @@ import { getInitials } from "@/lib/utils";
 import { type InvoiceFormValues, invoiceClients } from "./data";
 
 export function ClientSelector() {
+  const t = useTranslations();
   const { control } = useFormContext<InvoiceFormValues>();
 
   return (
     <section className="flex flex-col gap-4">
       <div className="flex items-center justify-between gap-3">
-        <h2 className="font-medium tracking-tight">Billed To</h2>
+        <h2 className="font-medium tracking-tight">{t('client_selector.billed_to')}</h2>
         <Button type="button" variant="ghost" size="sm">
           <Plus data-icon="inline-start" />
           Add New Client
diff --git a/src/app/(main)/dashboard/invoice/_components/invoice-adjustments.tsx b/src/app/(main)/dashboard/invoice/_components/invoice-adjustments.tsx
index f822240..a462a83 100644
--- a/src/app/(main)/dashboard/invoice/_components/invoice-adjustments.tsx
+++ b/src/app/(main)/dashboard/invoice/_components/invoice-adjustments.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Controller, useFormContext, useWatch } from "react-hook-form";
 
 import { Field, FieldLabel } from "@/components/ui/field";
@@ -7,12 +8,13 @@ import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectVa
 import { type InvoiceFormValues, invoiceTaxOptions } from "./data";
 
 export function InvoiceAdjustments() {
+  const t = useTranslations();
   const { control, register } = useFormContext<InvoiceFormValues>();
   const discountType = useWatch({ control, name: "discountType" });
 
   return (
     <section className="flex flex-col gap-4">
-      <h2 className="font-medium tracking-tight">Adjustments</h2>
+      <h2 className="font-medium tracking-tight">{t('invoice_adjustments.adjustments')}</h2>
 
       <div className="grid gap-5 lg:grid-cols-[1fr_1.1fr]">
         <Controller
@@ -61,12 +63,12 @@ export function InvoiceAdjustments() {
             )}
           />
           <Field className="gap-1">
-            <FieldLabel className="text-xs opacity-0">Value</FieldLabel>
+            <FieldLabel className="text-xs opacity-0">{t('invoice_adjustments.value')}</FieldLabel>
             <InputGroup>
               <InputGroupInput
                 type="number"
                 step="0.01"
-                aria-label="Discount value"
+                aria-label={t('invoice_adjustments.discount_value')}
                 {...register("discountValue", { valueAsNumber: true })}
               />
               <InputGroupAddon align="inline-end">{discountType === "fixed" ? "$" : "%"}</InputGroupAddon>
diff --git a/src/app/(main)/dashboard/invoice/_components/invoice-details.tsx b/src/app/(main)/dashboard/invoice/_components/invoice-details.tsx
index 3a8b11b..edaaa77 100644
--- a/src/app/(main)/dashboard/invoice/_components/invoice-details.tsx
+++ b/src/app/(main)/dashboard/invoice/_components/invoice-details.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import * as React from "react";
 
 import { format, parseISO } from "date-fns";
@@ -30,6 +31,7 @@ const dateFields: Array<{
 ];
 
 export function InvoiceDetails() {
+  const t = useTranslations();
   const { control, register } = useFormContext<InvoiceFormValues>();
 
   return (
@@ -37,7 +39,7 @@ export function InvoiceDetails() {
       <FieldGroup>
         <Field className="gap-1">
           <FieldLabel className="text-xs" htmlFor="reference-number">
-            Reference Number
+            {t('invoice_details.reference_number')}
           </FieldLabel>
           <InputGroup>
             <InputGroupInput id="reference-number" {...register("referenceNumber")} />
diff --git a/src/app/(main)/dashboard/invoice/_components/invoice-form.tsx b/src/app/(main)/dashboard/invoice/_components/invoice-form.tsx
index 4108be2..7d6fe8e 100644
--- a/src/app/(main)/dashboard/invoice/_components/invoice-form.tsx
+++ b/src/app/(main)/dashboard/invoice/_components/invoice-form.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Separator } from "@/components/ui/separator";
 import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
 
@@ -7,13 +8,14 @@ import { InvoiceDetails } from "./invoice-details";
 import { InvoiceItems } from "./invoice-items";
 
 export function InvoiceForm() {
+  const t = useTranslations();
   return (
     <div className="flex flex-col gap-4 rounded-xl border bg-card p-4">
       <Tabs defaultValue="invoice">
         <TabsList className="w-full">
-          <TabsTrigger value="invoice">Invoice</TabsTrigger>
-          <TabsTrigger value="payment">Payment</TabsTrigger>
-          <TabsTrigger value="business">Business</TabsTrigger>
+          <TabsTrigger value="invoice">{t('invoice_form.invoice')}</TabsTrigger>
+          <TabsTrigger value="payment">{t('invoice_form.payment')}</TabsTrigger>
+          <TabsTrigger value="business">{t('invoice_form.business')}</TabsTrigger>
         </TabsList>
       </Tabs>
 
diff --git a/src/app/(main)/dashboard/invoice/_components/invoice-items.tsx b/src/app/(main)/dashboard/invoice/_components/invoice-items.tsx
index 4f28568..5d7a624 100644
--- a/src/app/(main)/dashboard/invoice/_components/invoice-items.tsx
+++ b/src/app/(main)/dashboard/invoice/_components/invoice-items.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import {
   closestCenter,
   DndContext,
@@ -25,6 +26,7 @@ import { cn, formatCurrency } from "@/lib/utils";
 import { getLineAmount, type InvoiceFormValues, type InvoiceLineItem } from "./data";
 
 export function InvoiceItems() {
+  const t = useTranslations();
   const { control, register } = useFormContext<InvoiceFormValues>();
   const { append, fields, move, remove } = useFieldArray({
     control,
@@ -56,7 +58,7 @@ export function InvoiceItems() {
   return (
     <section className="flex flex-col gap-4">
       <div className="flex items-center justify-between gap-3">
-        <h2 className="font-medium tracking-tight">Invoice Items</h2>
+        <h2 className="font-medium tracking-tight">{t('invoice_items.invoice_items')}</h2>
         <Button type="button" variant="ghost" size="sm" onClick={handleAddItem}>
           <Plus data-icon="inline-start" />
           Add Item
@@ -66,10 +68,10 @@ export function InvoiceItems() {
       <div className="flex flex-col gap-2">
         <div className="hidden items-center gap-2 px-1 font-medium text-muted-foreground text-xs md:grid md:grid-cols-[24px_minmax(0,1fr)_64px_112px_112px_32px]">
           <span />
-          <span>Description</span>
-          <span className="px-2">Units</span>
-          <span className="px-2">Unit cost</span>
-          <span className="text-right">Line Total</span>
+          <span>{t('invoice_items.description')}</span>
+          <span className="px-2">{t('invoice_items.units')}</span>
+          <span className="px-2">{t('invoice_items.unit_cost')}</span>
+          <span className="text-right">{t('invoice_items.line_total')}</span>
           <span />
         </div>
 
@@ -113,6 +115,7 @@ function SortableInvoiceItemRow({
   register: UseFormRegister<InvoiceFormValues>;
   onRemove: () => void;
 }) {
+  const t = useTranslations();
   const { attributes, isDragging, listeners, setActivatorNodeRef, setNodeRef, transform, transition } = useSortable({
     id,
   });
@@ -161,7 +164,7 @@ function SortableInvoiceItemRow({
         {...register(`items.${index}.unitPrice` as const, { valueAsNumber: true })}
       />
       <div className="min-w-0 text-right font-medium text-sm max-md:col-span-3 max-md:col-start-2 max-md:row-start-3 max-md:flex max-md:items-center max-md:justify-between max-md:text-left">
-        <span className="hidden text-muted-foreground max-md:inline">Line total</span>
+        <span className="hidden text-muted-foreground max-md:inline">{t('invoice_items.line_total_2')}</span>
         <span>{formatInvoiceCurrency(getLineAmount(item))}</span>
       </div>
       <Button
diff --git a/src/app/(main)/dashboard/invoice/_components/invoice-paper.tsx b/src/app/(main)/dashboard/invoice/_components/invoice-paper.tsx
index 20b81d9..735d5c5 100644
--- a/src/app/(main)/dashboard/invoice/_components/invoice-paper.tsx
+++ b/src/app/(main)/dashboard/invoice/_components/invoice-paper.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { formatCurrency } from "@/lib/utils";
 
 import {
@@ -14,6 +15,7 @@ import {
 } from "./data";
 
 export function InvoicePaper({ invoice }: { invoice: InvoiceFormValues }) {
+  const t = useTranslations();
   const taxOption = getInvoiceTaxOption(invoice);
   const discountValue = Number.isFinite(invoice.discountValue) ? invoice.discountValue : 0;
   const discountLabel = invoice.discountType === "percent" ? `Discount ${discountValue}%` : "Discount";
@@ -32,7 +34,7 @@ export function InvoicePaper({ invoice }: { invoice: InvoiceFormValues }) {
             <rect y="28" width="20" height="20" rx="3" fill="currentColor" />
             <rect x="28" y="28" width="20" height="20" rx="3" fill="currentColor" />
           </svg>
-          <h2 className="text-4xl uppercase tracking-widest">Invoice</h2>
+          <h2 className="text-4xl uppercase tracking-widest">{t('invoice_paper.invoice')}</h2>
         </div>
 
         <section className="grid grid-cols-2 gap-14 text-sm leading-relaxed">
@@ -42,7 +44,7 @@ export function InvoicePaper({ invoice }: { invoice: InvoiceFormValues }) {
             <p>Payment due: {invoice.paymentDueDate}</p>
           </div>
           <div>
-            <p>Payment account</p>
+            <p>{t('invoice_paper.payment_account')}</p>
             <p>{invoice.from.paymentAccountName}</p>
             <p>Routing no. {invoice.from.routingNumber}</p>
           </div>
@@ -50,7 +52,7 @@ export function InvoicePaper({ invoice }: { invoice: InvoiceFormValues }) {
 
         <section className="grid grid-cols-2 gap-14 text-sm leading-relaxed">
           <div>
-            <p className="mb-4 font-semibold uppercase">From</p>
+            <p className="mb-4 font-semibold uppercase">{t('invoice_paper.from')}</p>
             <p>{invoice.from.name}</p>
             {invoice.from.addressLines.map((line) => (
               <p key={line}>{line}</p>
@@ -58,7 +60,7 @@ export function InvoicePaper({ invoice }: { invoice: InvoiceFormValues }) {
             <p>Tax ID: {invoice.from.taxId}</p>
           </div>
           <div>
-            <p className="mb-4 font-semibold uppercase">Bill to</p>
+            <p className="mb-4 font-semibold uppercase">{t('invoice_paper.bill_to')}</p>
             <p>{invoice.to.name}</p>
             {invoice.to.addressLines.map((line) => (
               <p key={line}>{line}</p>
@@ -71,10 +73,10 @@ export function InvoicePaper({ invoice }: { invoice: InvoiceFormValues }) {
       <div className="flex flex-col gap-5">
         <section className="text-sm">
           <div className="grid grid-cols-[1fr_74px_116px_116px] bg-stone-200 px-3 py-3 font-semibold uppercase">
-            <span>Description</span>
-            <span className="text-right">Units</span>
-            <span className="text-right">Unit cost</span>
-            <span className="text-right">Line total</span>
+            <span>{t('invoice_paper.description')}</span>
+            <span className="text-right">{t('invoice_paper.units')}</span>
+            <span className="text-right">{t('invoice_paper.unit_cost')}</span>
+            <span className="text-right">{t('invoice_paper.line_total')}</span>
           </div>
           {getInvoiceItems(invoice).map((item) => (
             <div
@@ -93,7 +95,7 @@ export function InvoicePaper({ invoice }: { invoice: InvoiceFormValues }) {
           <section className="col-start-2 space-y-2">
             <div>
               <div className="flex justify-between gap-8">
-                <span>Net amount</span>
+                <span>{t('invoice_paper.net_amount')}</span>
                 <span>{formatInvoiceCurrency(getInvoiceSubtotal(invoice))}</span>
               </div>
               <div className="flex justify-between gap-8">
@@ -109,7 +111,7 @@ export function InvoicePaper({ invoice }: { invoice: InvoiceFormValues }) {
             </div>
             <div className="border-current border-y-2 py-3">
               <div className="flex justify-between gap-8">
-                <span className="font-semibold uppercase">Balance due</span>
+                <span className="font-semibold uppercase">{t('invoice_paper.balance_due')}</span>
                 <span className="font-semibold">{formatInvoiceCurrency(getInvoiceTotal(invoice))}</span>
               </div>
             </div>
@@ -124,7 +126,7 @@ export function InvoicePaper({ invoice }: { invoice: InvoiceFormValues }) {
           <p>{invoice.from.website}</p>
         </div>
         <div>
-          <p>Prepared for prompt processing.</p>
+          <p>{t('invoice_paper.prepared_for_prompt_processing')}</p>
           <p>Issued by {invoice.from.issuerName}</p>
         </div>
       </footer>
diff --git a/src/app/(main)/dashboard/invoice/_components/invoice-preview.tsx b/src/app/(main)/dashboard/invoice/_components/invoice-preview.tsx
index c7bab9f..81a6576 100644
--- a/src/app/(main)/dashboard/invoice/_components/invoice-preview.tsx
+++ b/src/app/(main)/dashboard/invoice/_components/invoice-preview.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -13,6 +14,7 @@ import { PrintInvoice } from "./print-invoice";
 import { useVisibleCenterPosition } from "./use-visible-center-position";
 
 export function InvoicePreview({ invoice }: { invoice: InvoiceFormValues }) {
+  const t = useTranslations();
   const previewBodyRef = React.useRef<HTMLDivElement>(null);
   const paperLayout = useVisibleCenterPosition(previewBodyRef, {
     height: INVOICE_PAPER_HEIGHT,
@@ -29,7 +31,7 @@ export function InvoicePreview({ invoice }: { invoice: InvoiceFormValues }) {
       <PrintInvoice invoice={invoice} />
       <div className="flex flex-col rounded-xl border bg-card">
         <div className="flex items-center justify-between px-4 py-4">
-          <h2 className="font-medium text-lg">Preview</h2>
+          <h2 className="font-medium text-lg">{t('invoice_preview.preview')}</h2>
           <ButtonGroup>
             <Button type="button" variant="outline" onClick={handlePrint}>
               <Printer data-icon="inline-start" />
diff --git a/src/app/(main)/dashboard/invoice/page.tsx b/src/app/(main)/dashboard/invoice/page.tsx
index 3d9814e..f4ff346 100644
--- a/src/app/(main)/dashboard/invoice/page.tsx
+++ b/src/app/(main)/dashboard/invoice/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Save, Send } from "lucide-react";
 
 import { Button } from "@/components/ui/button";
@@ -5,13 +6,14 @@ import { Button } from "@/components/ui/button";
 import { Invoice } from "./_components/invoice";
 
 export default function Page() {
+  const t = useTranslations();
   return (
     <div className="flex flex-col gap-6">
       <div className="flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between">
         <div className="flex flex-col gap-1">
-          <h1 className="font-medium text-3xl leading-none tracking-tight">Create New Invoice</h1>
+          <h1 className="font-medium text-3xl leading-none tracking-tight">{t('page.create_new_invoice')}</h1>
           <p className="text-muted-foreground text-sm">
-            Add invoice details, review the preview, and send it to your client.
+            {t('page.add_invoice_details_review_the_preview_a')}
           </p>
         </div>
 
diff --git a/src/app/(main)/dashboard/kanban/_components/kanban.tsx b/src/app/(main)/dashboard/kanban/_components/kanban.tsx
index d3fe545..4909ae5 100644
--- a/src/app/(main)/dashboard/kanban/_components/kanban.tsx
+++ b/src/app/(main)/dashboard/kanban/_components/kanban.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -57,6 +58,7 @@ interface KanbanProps {
 }
 
 export function Kanban({ initialBoard }: KanbanProps) {
+  const t = useTranslations();
   const [board, setBoard] = React.useState<BoardState>(initialBoard);
   const [columnOrder, setColumnOrder] = React.useState<ColumnId[]>(columnIds);
   const [activeTask, setActiveTask] = React.useState<Task | null>(null);
@@ -192,7 +194,7 @@ export function Kanban({ initialBoard }: KanbanProps) {
 
         <div className="flex min-w-0 flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center 2xl:justify-end">
           <InputGroup className="min-w-0 sm:w-64 2xl:w-48">
-            <InputGroupInput type="search" placeholder="Search tasks" />
+            <InputGroupInput type="search" placeholder={t('kanban.search_tasks')} />
             <InputGroupAddon>
               <Search />
             </InputGroupAddon>
@@ -213,7 +215,7 @@ export function Kanban({ initialBoard }: KanbanProps) {
             <ButtonGroupSeparator />
             <DropdownMenu>
               <DropdownMenuTrigger asChild>
-                <Button aria-label="Open add task menu">
+                <Button aria-label={t('kanban.open_add_task_menu')}>
                   <ChevronDown />
                 </Button>
               </DropdownMenuTrigger>
diff --git a/src/app/(main)/dashboard/layout.tsx b/src/app/(main)/dashboard/layout.tsx
index 2710b57..3c72d9c 100644
--- a/src/app/(main)/dashboard/layout.tsx
+++ b/src/app/(main)/dashboard/layout.tsx
@@ -1,3 +1,4 @@
+import { getTranslations } from 'next-intl/server';
 import type { ReactNode } from "react";
 
 import { cookies } from "next/headers";
@@ -21,6 +22,7 @@ import { SearchDialog } from "./_components/sidebar/search-dialog";
 import { ThemeSwitcher } from "./_components/sidebar/theme-switcher";
 
 export default async function Layout({ children }: Readonly<{ children: ReactNode }>) {
+  const t = await getTranslations();
   const cookieStore = await cookies();
   const defaultOpen = cookieStore.get("sidebar_state")?.value !== "false";
   const [variant, collapsible] = await Promise.all([
@@ -73,7 +75,7 @@ export default async function Layout({ children }: Readonly<{ children: ReactNod
                   href="https://github.com/arhamkhnz/next-shadcn-admin-dashboard"
                   target="_blank"
                   rel="noreferrer"
-                  aria-label="Open GitHub repository"
+                  aria-label={t('layout.open_github_repository')}
                 >
                   <SimpleIcon icon={siGithub} className="fill-primary-foreground" />
                 </Link>
diff --git a/src/app/(main)/dashboard/logistics/_components/logistics.tsx b/src/app/(main)/dashboard/logistics/_components/logistics.tsx
index 11a6606..7232145 100644
--- a/src/app/(main)/dashboard/logistics/_components/logistics.tsx
+++ b/src/app/(main)/dashboard/logistics/_components/logistics.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -9,6 +10,7 @@ import { ShipmentDetails } from "./shipment-details";
 import { ShipmentList } from "./shipment-list";
 
 export function Logistics() {
+  const t = useTranslations();
   const [detailsOpen, setDetailsOpen] = React.useState(false);
   const [selectedShipmentId, setSelectedShipmentId] = React.useState<string | null>(shipments[0].id);
   const selectedShipment = shipments.find((shipment) => shipment.id === selectedShipmentId) ?? shipments[0];
@@ -46,7 +48,7 @@ export function Logistics() {
         >
           <SheetHeader className="sr-only">
             <SheetTitle>{selectedShipment ? `Shipment ${selectedShipment.id}` : "Shipment details"}</SheetTitle>
-            <SheetDescription>Selected shipment details and route map.</SheetDescription>
+            <SheetDescription>{t('logistics.selected_shipment_details_and_route_map')}</SheetDescription>
           </SheetHeader>
           <ShipmentDetails shipment={selectedShipment} />
         </SheetContent>
diff --git a/src/app/(main)/dashboard/logistics/_components/shipment-details.tsx b/src/app/(main)/dashboard/logistics/_components/shipment-details.tsx
index 1c727c1..a5aa3e5 100644
--- a/src/app/(main)/dashboard/logistics/_components/shipment-details.tsx
+++ b/src/app/(main)/dashboard/logistics/_components/shipment-details.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { AlertTriangleIcon, Copy, Plane, Ship, Star, Truck } from "lucide-react";
 
 import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
@@ -66,14 +67,16 @@ function getTransportNumberLabel(mode: Shipment["mode"]) {
 }
 
 function EmptyShipmentOverview() {
+  const t = useTranslations();
   return (
     <div className="grid min-h-48 place-items-center rounded-lg border border-dashed text-muted-foreground text-sm">
-      Select a shipment to view details.
+      {t('shipment_details.select_a_shipment_to_view_details')}
     </div>
   );
 }
 
 function ShipmentOverview({ shipment }: { shipment: Shipment }) {
+  const t = useTranslations();
   const ContactIcon = modeIcons[shipment.mode];
   const contactLabel = getContactLabel(shipment.mode);
   const transportNumberLabel = getTransportNumberLabel(shipment.mode);
@@ -83,7 +86,7 @@ function ShipmentOverview({ shipment }: { shipment: Shipment }) {
       <div className="flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4">
         <div className="flex items-center gap-2">
           <h1 className="font-medium text-lg tabular-nums tracking-tight sm:text-xl">#{shipment.id}</h1>
-          <Button variant="ghost" size="icon-sm" aria-label="Copy shipment ID">
+          <Button variant="ghost" size="icon-sm" aria-label={t('shipment_details.copy_shipment_id')}>
             <Copy />
           </Button>
         </div>
@@ -132,7 +135,7 @@ function ShipmentOverview({ shipment }: { shipment: Shipment }) {
 
       <div className="flex flex-col gap-8">
         <div className="flex items-start justify-between gap-4">
-          <h2 className="font-medium">Cargo details</h2>
+          <h2 className="font-medium">{t('shipment_details.cargo_details')}</h2>
 
           <Button variant="outline" size="sm">
             <ContactIcon data-icon="inline-start" />
@@ -142,17 +145,17 @@ function ShipmentOverview({ shipment }: { shipment: Shipment }) {
 
         <div className="grid grid-cols-2 gap-x-4 gap-y-5 md:grid-cols-[1.35fr_1fr_1.1fr_1.15fr_1fr]">
           <div className="col-span-2 flex flex-col gap-1 md:col-span-1 md:gap-2">
-            <div className="text-muted-foreground text-xs leading-none md:invisible md:text-sm">Cargo</div>
+            <div className="text-muted-foreground text-xs leading-none md:invisible md:text-sm">{t('shipment_details.cargo')}</div>
             <div className="whitespace-nowrap text-sm leading-none">{shipment.cargo}</div>
           </div>
 
           <div className="flex flex-col gap-2">
-            <div className="text-muted-foreground text-xs leading-none md:text-sm">Total weight</div>
+            <div className="text-muted-foreground text-xs leading-none md:text-sm">{t('shipment_details.total_weight')}</div>
             <div className="text-sm leading-none">{shipment.weight}</div>
           </div>
 
           <div className="flex flex-col gap-2">
-            <div className="text-muted-foreground text-xs leading-none md:text-sm">Transport mode</div>
+            <div className="text-muted-foreground text-xs leading-none md:text-sm">{t('shipment_details.transport_mode')}</div>
             <div className="text-sm capitalize leading-none">
               {shipment.mode} · {shipment.routeType}
             </div>
@@ -164,7 +167,7 @@ function ShipmentOverview({ shipment }: { shipment: Shipment }) {
           </div>
 
           <div className="flex flex-col gap-2 md:text-right">
-            <div className="text-muted-foreground text-xs leading-none md:text-sm">Status</div>
+            <div className="text-muted-foreground text-xs leading-none md:text-sm">{t('shipment_details.status')}</div>
             <div className="text-sm leading-none">{shipment.progress}% complete</div>
           </div>
         </div>
@@ -201,6 +204,7 @@ function ShipmentOverview({ shipment }: { shipment: Shipment }) {
 }
 
 export function ShipmentDetails({ shipment }: ShipmentDetailsProps) {
+  const t = useTranslations();
   if (!shipment) {
     return (
       <div className="grid h-full min-h-0 grid-rows-[320px_1fr] overflow-hidden lg:grid-rows-[420px_1fr]">
@@ -227,19 +231,19 @@ export function ShipmentDetails({ shipment }: ShipmentDetailsProps) {
               variant="line"
             >
               <TabsTrigger className="flex-none" value="overview">
-                Overview
+                {t('shipment_details.overview')}
               </TabsTrigger>
               <TabsTrigger className="flex-none" value="route">
-                Route
+                {t('shipment_details.route')}
               </TabsTrigger>
               <TabsTrigger className="flex-none" value="cargo">
-                Cargo
+                {t('shipment_details.cargo')}
               </TabsTrigger>
               <TabsTrigger className="flex-none" value="documents">
-                Documents
+                {t('shipment_details.documents')}
               </TabsTrigger>
               <TabsTrigger className="flex-none" value="activity">
-                Activity
+                {t('shipment_details.activity')}
               </TabsTrigger>
             </TabsList>
             <TabsContent className="min-h-0 overflow-auto p-4" value="overview">
@@ -247,22 +251,22 @@ export function ShipmentDetails({ shipment }: ShipmentDetailsProps) {
             </TabsContent>
             <TabsContent className="p-4" value="route">
               <div className="grid h-full place-items-center rounded-md border border-dashed text-muted-foreground text-sm">
-                Route view coming soon.
+                {t('shipment_details.route_view_coming_soon')}
               </div>
             </TabsContent>
             <TabsContent className="p-4" value="cargo">
               <div className="grid h-full place-items-center rounded-md border border-dashed text-muted-foreground text-sm">
-                Cargo view coming soon.
+                {t('shipment_details.cargo_view_coming_soon')}
               </div>
             </TabsContent>
             <TabsContent className="p-4" value="documents">
               <div className="grid h-full place-items-center rounded-md border border-dashed text-muted-foreground text-sm">
-                Documents view coming soon.
+                {t('shipment_details.documents_view_coming_soon')}
               </div>
             </TabsContent>
             <TabsContent className="p-4" value="activity">
               <div className="grid h-full place-items-center rounded-md border border-dashed text-muted-foreground text-sm">
-                Activity view coming soon.
+                {t('shipment_details.activity_view_coming_soon')}
               </div>
             </TabsContent>
           </Tabs>
diff --git a/src/app/(main)/dashboard/logistics/_components/shipment-list.tsx b/src/app/(main)/dashboard/logistics/_components/shipment-list.tsx
index d3e250a..cb8b4ac 100644
--- a/src/app/(main)/dashboard/logistics/_components/shipment-list.tsx
+++ b/src/app/(main)/dashboard/logistics/_components/shipment-list.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { Plane, Search, Ship, SlidersHorizontal, Truck } from "lucide-react";
 
 import { Button } from "@/components/ui/button";
@@ -45,6 +46,7 @@ type ShipmentListProps = {
 };
 
 function ShipmentCard({ shipment, active, onSelectShipment }: ShipmentCardProps) {
+  const t = useTranslations();
   const angle = (shipment.progress / 100) * 360;
   const Icon = modeIcons[shipment.mode];
 
@@ -112,11 +114,11 @@ function ShipmentCard({ shipment, active, onSelectShipment }: ShipmentCardProps)
 
       <div className="flex items-center justify-between">
         <div>
-          <div className="text-muted-foreground text-xs leading-none">Cargo</div>
+          <div className="text-muted-foreground text-xs leading-none">{t('shipment_list.cargo')}</div>
           <div className="truncate text-sm tracking-tight">{shipment.cargo}</div>
         </div>
         <div className="text-right">
-          <div className="text-muted-foreground text-xs leading-none">ETA</div>
+          <div className="text-muted-foreground text-xs leading-none">{t('shipment_list.eta')}</div>
           <div className="text-sm tabular-nums tracking-tight">
             {shipment.eta}
             {shipment.etaMeta && (
@@ -130,10 +132,11 @@ function ShipmentCard({ shipment, active, onSelectShipment }: ShipmentCardProps)
 }
 
 export function ShipmentList({ shipments, selectedShipmentId, onSelectShipment }: ShipmentListProps) {
+  const t = useTranslations();
   return (
     <Card className="h-full rounded-none ring-0">
       <CardHeader>
-        <CardTitle className="font-normal text-xl">Shipments</CardTitle>
+        <CardTitle className="font-normal text-xl">{t('shipment_list.shipments')}</CardTitle>
         <CardAction>
           <Button size="icon-sm" variant="ghost">
             <SlidersHorizontal />
@@ -144,23 +147,23 @@ export function ShipmentList({ shipments, selectedShipmentId, onSelectShipment }
         <Tabs defaultValue="all">
           <TabsList className="w-full border-b px-4" variant="line">
             <TabsTrigger className="text-xs" value="all">
-              All (156)
+              {t('shipment_list.all_156')}
             </TabsTrigger>
             <TabsTrigger className="text-xs" value="in-transit">
-              In Transit (32)
+              {t('shipment_list.in_transit_32')}
             </TabsTrigger>
             <TabsTrigger className="text-xs" value="delivered">
-              Delivered (98)
+              {t('shipment_list.delivered_98')}
             </TabsTrigger>
             <TabsTrigger className="text-xs" value="delayed">
-              Delayed (9)
+              {t('shipment_list.delayed_9')}
             </TabsTrigger>
           </TabsList>
         </Tabs>
 
         <div className="px-4">
           <InputGroup className="h-8">
-            <InputGroupInput className="h-8" aria-label="Search shipments" placeholder="Search shipments..." />
+            <InputGroupInput className="h-8" aria-label={t('shipment_list.search_shipments')} placeholder={t('shipment_list.search_shipments_2')} />
             <InputGroupAddon>
               <Search />
             </InputGroupAddon>
diff --git a/src/app/(main)/dashboard/logistics/_components/shipment-route-map.tsx b/src/app/(main)/dashboard/logistics/_components/shipment-route-map.tsx
index 70b7edc..5c31874 100644
--- a/src/app/(main)/dashboard/logistics/_components/shipment-route-map.tsx
+++ b/src/app/(main)/dashboard/logistics/_components/shipment-route-map.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { useEffect, useMemo, useState } from "react";
 
@@ -79,6 +80,7 @@ type ShipmentRouteMapProps = {
 };
 
 export function ShipmentRouteMap({ shipment }: ShipmentRouteMapProps) {
+  const t = useTranslations();
   const [borders, setBorders] = useState<GeoJSON.MultiLineString | null>(null);
   const [land, setLand] = useState<GeoJSON.FeatureCollection | null>(null);
 
@@ -173,7 +175,7 @@ export function ShipmentRouteMap({ shipment }: ShipmentRouteMapProps) {
   return (
     <div className="size-full min-h-0 overflow-hidden bg-[#d4dadc] dark:bg-[#2C353C]">
       <svg
-        aria-label="Southeast Asia shipment region map"
+        aria-label={t('shipment_route_map.southeast_asia_shipment_region_map')}
         className="block size-full bg-[#d4dadc] dark:bg-[#2C353C]"
         role="img"
         viewBox={`0 0 ${WIDTH} ${HEIGHT}`}
diff --git a/src/app/(main)/dashboard/mail/page.tsx b/src/app/(main)/dashboard/mail/page.tsx
index d1068b6..c2a6637 100644
--- a/src/app/(main)/dashboard/mail/page.tsx
+++ b/src/app/(main)/dashboard/mail/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import Link from "next/link";
 
 import { ExternalLink } from "lucide-react";
@@ -5,23 +6,24 @@ import { ExternalLink } from "lucide-react";
 import { Button } from "@/components/ui/button";
 
 export default function Page() {
+  const t = useTranslations();
   return (
     <div className="flex h-full flex-col gap-2">
       <div className="flex items-center justify-between gap-3">
         <div className="flex flex-col gap-0.5">
-          <h1 className="font-medium text-sm leading-none">Mail preview</h1>
+          <h1 className="font-medium text-sm leading-none">{t('page.mail_preview')}</h1>
           <p className="text-muted-foreground text-sm">
-            This iframe shows the standalone mail screen. Open it in full screen for a better view.
+            {t('page.this_iframe_shows_the_standalone_mail_sc')}
           </p>
         </div>
         <Button asChild variant="ghost" size="icon-sm">
-          <Link href="/mail" target="_blank" rel="noreferrer" aria-label="Open mail in new tab">
+          <Link href="/mail" target="_blank" rel="noreferrer" aria-label={t('page.open_mail_in_new_tab')}>
             <ExternalLink />
           </Link>
         </Button>
       </div>
 
-      <iframe src="/mail" title="Mail preview" className="min-h-0 flex-1 rounded-lg border bg-background" />
+      <iframe src="/mail" title={t('page.mail_preview')} className="min-h-0 flex-1 rounded-lg border bg-background" />
     </div>
   );
 }
diff --git a/src/app/(main)/dashboard/productivity/_components/focus-card.tsx b/src/app/(main)/dashboard/productivity/_components/focus-card.tsx
index 65abd69..3d6617c 100644
--- a/src/app/(main)/dashboard/productivity/_components/focus-card.tsx
+++ b/src/app/(main)/dashboard/productivity/_components/focus-card.tsx
@@ -1,24 +1,26 @@
+import { useTranslations } from 'next-intl';
 import { BellOff } from "lucide-react";
 
 import { Button } from "@/components/ui/button";
 import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 
 export function FocusCard() {
+  const t = useTranslations();
   return (
     <Card className="shadow-xs">
       <CardHeader>
-        <CardTitle>Focus</CardTitle>
+        <CardTitle>{t('focus_card.focus')}</CardTitle>
       </CardHeader>
       <CardContent>
         <div className="flex flex-col gap-2">
           <div className="flex items-center justify-between gap-4">
             <div className="text-3xl tracking-tight">90:00</div>
-            <Button className="min-w-24">Start</Button>
+            <Button className="min-w-24">{t('focus_card.start')}</Button>
           </div>
 
           <div className="flex items-center gap-2 text-muted-foreground text-xs">
             <BellOff className="size-3" />
-            <span>No notifications · Full focus</span>
+            <span>{t('focus_card.no_notifications_full_focus')}</span>
           </div>
         </div>
       </CardContent>
diff --git a/src/app/(main)/dashboard/productivity/_components/projects-section.tsx b/src/app/(main)/dashboard/productivity/_components/projects-section.tsx
index f422683..d1a2348 100644
--- a/src/app/(main)/dashboard/productivity/_components/projects-section.tsx
+++ b/src/app/(main)/dashboard/productivity/_components/projects-section.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { addDays, format } from "date-fns";
 import { ClipboardCheck, Globe, Orbit, Plus } from "lucide-react";
 
@@ -37,20 +38,21 @@ const projects = [
 ] as const;
 
 export function ProjectsSection() {
+  const t = useTranslations();
   return (
     <section className="flex flex-col gap-2">
       <div className="flex items-center justify-between gap-4">
-        <h2 className="text-xl tracking-tight">Projects</h2>
+        <h2 className="text-xl tracking-tight">{t('projects_section.projects')}</h2>
         <div className="flex items-center gap-2">
           <Select defaultValue="active">
             <SelectTrigger className="w-28">
-              <SelectValue placeholder="Active" />
+              <SelectValue placeholder={t('projects_section.active')} />
             </SelectTrigger>
             <SelectContent>
               <SelectGroup>
-                <SelectItem value="active">Active</SelectItem>
-                <SelectItem value="planning">Planning</SelectItem>
-                <SelectItem value="completed">Completed</SelectItem>
+                <SelectItem value="active">{t('projects_section.active')}</SelectItem>
+                <SelectItem value="planning">{t('projects_section.planning')}</SelectItem>
+                <SelectItem value="completed">{t('projects_section.completed')}</SelectItem>
               </SelectGroup>
             </SelectContent>
           </Select>
diff --git a/src/app/(main)/dashboard/productivity/_components/quick-actions.tsx b/src/app/(main)/dashboard/productivity/_components/quick-actions.tsx
index e49f25f..0f836ae 100644
--- a/src/app/(main)/dashboard/productivity/_components/quick-actions.tsx
+++ b/src/app/(main)/dashboard/productivity/_components/quick-actions.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { CheckSquare, FileText, Focus, Orbit, Upload } from "lucide-react";
 
 import { Button } from "@/components/ui/button";
@@ -11,9 +12,10 @@ const quickActions = [
 ] as const;
 
 export function QuickActions() {
+  const t = useTranslations();
   return (
     <section className="flex flex-col gap-2">
-      <h2 className="text-xl tracking-tight">Quick Actions</h2>
+      <h2 className="text-xl tracking-tight">{t('quick_actions.quick_actions')}</h2>
       <div className="grid gap-4 sm:grid-cols-2 xl:grid-cols-5">
         {quickActions.map((action) => (
           <Button key={action.label} variant="outline" className="justify-start">
diff --git a/src/app/(main)/dashboard/productivity/_components/quote-card.tsx b/src/app/(main)/dashboard/productivity/_components/quote-card.tsx
index e13f28c..0e57cf8 100644
--- a/src/app/(main)/dashboard/productivity/_components/quote-card.tsx
+++ b/src/app/(main)/dashboard/productivity/_components/quote-card.tsx
@@ -1,6 +1,8 @@
+import { useTranslations } from 'next-intl';
 import { Quote } from "lucide-react";
 
 export function QuoteCard() {
+  const t = useTranslations();
   return (
     <section className="rounded-2xl border bg-card p-6 shadow-xs">
       <div className="flex items-start gap-4">
@@ -8,8 +10,8 @@ export function QuoteCard() {
           <Quote className="size-6" />
         </div>
         <div className="flex flex-col gap-1">
-          <p className="text-xl leading-none tracking-tight">Small, consistent actions lead to big results.</p>
-          <p className="text-muted-foreground">Keep showing up. You&apos;ve got this.</p>
+          <p className="text-xl leading-none tracking-tight">{t('quote_card.small_consistent_actions_lead_to_big_res')}</p>
+          <p className="text-muted-foreground">{t('quote_card.keep_showing_up_you_apos_ve_got_this')}</p>
         </div>
       </div>
     </section>
diff --git a/src/app/(main)/dashboard/productivity/_components/recent-notes-card.tsx b/src/app/(main)/dashboard/productivity/_components/recent-notes-card.tsx
index 896fe3a..29ef6f8 100644
--- a/src/app/(main)/dashboard/productivity/_components/recent-notes-card.tsx
+++ b/src/app/(main)/dashboard/productivity/_components/recent-notes-card.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { format, isToday, isYesterday, subDays } from "date-fns";
 import { BookOpen, FileText } from "lucide-react";
 
@@ -20,13 +21,14 @@ const recentNotes = [
 ] as const;
 
 export function RecentNotesCard() {
+  const t = useTranslations();
   return (
     <Card className="shadow-xs">
       <CardHeader>
-        <CardTitle>Recent Notes</CardTitle>
+        <CardTitle>{t('recent_notes_card.recent_notes')}</CardTitle>
         <CardAction>
           <Button variant="ghost" size="sm" className="text-muted-foreground">
-            View all
+            {t('recent_notes_card.view_all')}
           </Button>
         </CardAction>
       </CardHeader>
diff --git a/src/app/(main)/dashboard/productivity/_components/tasks-section.tsx b/src/app/(main)/dashboard/productivity/_components/tasks-section.tsx
index 536ec52..bd91e77 100644
--- a/src/app/(main)/dashboard/productivity/_components/tasks-section.tsx
+++ b/src/app/(main)/dashboard/productivity/_components/tasks-section.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -25,22 +26,23 @@ const tasks: Task[] = [
 ];
 
 export function TasksSection() {
+  const t = useTranslations();
   const [items, setItems] = React.useState(tasks);
 
   return (
     <section className="flex flex-col gap-2">
       <div className="flex items-center justify-between gap-4">
-        <h2 className="text-xl tracking-tight">Tasks</h2>
+        <h2 className="text-xl tracking-tight">{t('tasks_section.tasks')}</h2>
         <div className="flex items-center gap-2">
           <Select defaultValue="today">
             <SelectTrigger className="w-30">
-              <SelectValue placeholder="Today" />
+              <SelectValue placeholder={t('tasks_section.today')} />
             </SelectTrigger>
             <SelectContent>
               <SelectGroup>
-                <SelectItem value="today">Today</SelectItem>
-                <SelectItem value="tomorrow">Tomorrow</SelectItem>
-                <SelectItem value="this-week">This Week</SelectItem>
+                <SelectItem value="today">{t('tasks_section.today')}</SelectItem>
+                <SelectItem value="tomorrow">{t('tasks_section.tomorrow')}</SelectItem>
+                <SelectItem value="this-week">{t('tasks_section.this_week')}</SelectItem>
               </SelectGroup>
             </SelectContent>
           </Select>
diff --git a/src/app/(main)/dashboard/productivity/_components/weekly-summary-card.tsx b/src/app/(main)/dashboard/productivity/_components/weekly-summary-card.tsx
index a3dc0a9..49687cf 100644
--- a/src/app/(main)/dashboard/productivity/_components/weekly-summary-card.tsx
+++ b/src/app/(main)/dashboard/productivity/_components/weekly-summary-card.tsx
@@ -1,22 +1,24 @@
+import { useTranslations } from 'next-intl';
 import { Button } from "@/components/ui/button";
 import { Card, CardAction, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
 import { Progress } from "@/components/ui/progress";
 
 export function WeeklySummaryCard() {
+  const t = useTranslations();
   return (
     <Card className="shadow-xs">
       <CardHeader>
-        <CardTitle>This Week</CardTitle>
+        <CardTitle>{t('weekly_summary_card.this_week')}</CardTitle>
         <CardAction>
           <Button variant="ghost" size="sm" className="text-muted-foreground">
-            View all
+            {t('weekly_summary_card.view_all')}
           </Button>
         </CardAction>
       </CardHeader>
       <CardContent className="flex flex-col gap-4">
-        <p className="text-muted-foreground">You’re doing great. Keep the momentum going.</p>
+        <p className="text-muted-foreground">{t('weekly_summary_card.youre_doing_great_keep_the_momentum_goin')}</p>
         <div className="flex flex-col gap-2">
-          <div className="font-medium">4 of 6 goals completed</div>
+          <div className="font-medium">{t('weekly_summary_card.4_of_6_goals_completed')}</div>
           <Progress value={66} className="h-2" />
         </div>
       </CardContent>
diff --git a/src/app/(main)/dashboard/productivity/page.tsx b/src/app/(main)/dashboard/productivity/page.tsx
index 066b92a..a977a14 100644
--- a/src/app/(main)/dashboard/productivity/page.tsx
+++ b/src/app/(main)/dashboard/productivity/page.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import { CalendarPanel } from "./_components/calendar-panel";
 import { FocusCard } from "./_components/focus-card";
 import { ProjectsSection } from "./_components/projects-section";
@@ -9,14 +10,15 @@ import { TasksSection } from "./_components/tasks-section";
 import { WeeklySummaryCard } from "./_components/weekly-summary-card";
 
 export default function Page() {
+  const t = useTranslations();
   return (
     <div className="grid gap-6 lg:grid-cols-12">
       <section className="lg:col-span-9">
         <div className="flex flex-col gap-6">
           <div className="flex flex-col gap-2">
-            <h1 className="text-3xl text-foreground leading-none tracking-tight">Good morning, Arham.</h1>
+            <h1 className="text-3xl text-foreground leading-none tracking-tight">{t('page.good_morning_arham')}</h1>
             <p className="text-lg text-muted-foreground leading-none">
-              Let&apos;s make today productive and meaningful.
+              {t('page.let_apos_s_make_today_productive_and_mea')}
             </p>
           </div>
           <SummaryCards />
diff --git a/src/app/(main)/dashboard/roles/_components/roles-table/table.tsx b/src/app/(main)/dashboard/roles/_components/roles-table/table.tsx
index c111a09..0d254b0 100644
--- a/src/app/(main)/dashboard/roles/_components/roles-table/table.tsx
+++ b/src/app/(main)/dashboard/roles/_components/roles-table/table.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import { useMemo } from "react";
@@ -41,6 +42,7 @@ function groupRowsByRoleGroup(rows: RoleTableRow[]) {
 }
 
 export function RolesTable({ table }: { table: TableType<Role> }) {
+  const t = useTranslations();
   const { pageIndex, pageSize } = table.getState().pagination;
   const pageRows = table.getRowModel().rows;
   const filteredRows = table.getFilteredRowModel().rows;
@@ -143,7 +145,7 @@ export function RolesTable({ table }: { table: TableType<Role> }) {
         </div>
 
         <div className="flex items-center gap-2">
-          <span className="text-muted-foreground text-sm">Rows per page</span>
+          <span className="text-muted-foreground text-sm">{t('table.rows_per_page')}</span>
           <Select
             value={`${pageSize}`}
             onValueChange={(v) => {
diff --git a/src/app/(main)/dashboard/roles/_components/roles.tsx b/src/app/(main)/dashboard/roles/_components/roles.tsx
index dc7f522..a41e6e9 100644
--- a/src/app/(main)/dashboard/roles/_components/roles.tsx
+++ b/src/app/(main)/dashboard/roles/_components/roles.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import { useState } from "react";
@@ -48,6 +49,7 @@ function getRoleGroupFilterValue(typeFilter: string) {
 }
 
 export function Roles({ roles }: { roles: Role[] }) {
+  const t = useTranslations();
   const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
   const [pagination, setPagination] = useState<PaginationState>({
     pageIndex: 0,
@@ -84,8 +86,8 @@ export function Roles({ roles }: { roles: Role[] }) {
     <div className="flex h-full flex-col gap-4">
       <div className="flex flex-col items-start gap-4 sm:flex-row sm:justify-between">
         <div className="flex flex-col gap-1">
-          <h1 className="text-3xl tracking-tight">Roles & Permissions</h1>
-          <p className="text-muted-foreground text-sm">Manage access roles and permissions across your organization.</p>
+          <h1 className="text-3xl tracking-tight">{t('roles.roles_permissions')}</h1>
+          <p className="text-muted-foreground text-sm">{t('roles.manage_access_roles_and_permissions_acro')}</p>
         </div>
 
         <div className="flex items-center gap-2">
@@ -93,7 +95,7 @@ export function Roles({ roles }: { roles: Role[] }) {
             <FileUp data-icon="inline-start" />
             Import JSON
           </Button>
-          <Button size="sm">Create role</Button>
+          <Button size="sm">{t('roles.create_role')}</Button>
         </div>
       </div>
 
@@ -102,17 +104,17 @@ export function Roles({ roles }: { roles: Role[] }) {
           variant="line"
           className="w-full justify-start gap-2 border-b ps-0 *:data-[slot=tabs-trigger]:flex-none"
         >
-          <TabsTrigger value="roles">Roles</TabsTrigger>
-          <TabsTrigger value="permission-sets">Permission sets</TabsTrigger>
-          <TabsTrigger value="access-reviews">Access reviews</TabsTrigger>
+          <TabsTrigger value="roles">{t('roles.roles')}</TabsTrigger>
+          <TabsTrigger value="permission-sets">{t('roles.permission_sets')}</TabsTrigger>
+          <TabsTrigger value="access-reviews">{t('roles.access_reviews')}</TabsTrigger>
         </TabsList>
 
         <TabsContent value="roles">
           <div className="flex flex-col gap-4">
             <Alert className="border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-50">
               <AlertTriangle className="size-4" />
-              <AlertTitle>Review required</AlertTitle>
-              <AlertDescription>3 roles have unreviewed permission changes.</AlertDescription>
+              <AlertTitle>{t('roles.review_required')}</AlertTitle>
+              <AlertDescription>{t('roles.3_roles_have_unreviewed_permission_chang')}</AlertDescription>
               <AlertAction>
                 <Button size="sm" variant="link">
                   Review changes
@@ -129,7 +131,7 @@ export function Roles({ roles }: { roles: Role[] }) {
                   </InputGroupAddon>
                   <InputGroupInput
                     className="h-7"
-                    placeholder="Search roles..."
+                    placeholder={t('roles.search_roles')}
                     value={search}
                     onChange={(e) => {
                       table.getColumn("search")?.setFilterValue(e.target.value || undefined);
@@ -147,14 +149,14 @@ export function Roles({ roles }: { roles: Role[] }) {
                     }}
                   >
                     <SelectTrigger size="sm">
-                      <span className="text-muted-foreground">Type:</span>
-                      <SelectValue placeholder="All" />
+                      <span className="text-muted-foreground">{t('roles.type')}</span>
+                      <SelectValue placeholder={t('roles.all')} />
                     </SelectTrigger>
                     <SelectContent position="popper" align="start">
                       <SelectGroup>
-                        <SelectItem value="All">All</SelectItem>
-                        <SelectItem value="System">System</SelectItem>
-                        <SelectItem value="Custom">Custom</SelectItem>
+                        <SelectItem value="All">{t('roles.all')}</SelectItem>
+                        <SelectItem value="System">{t('roles.system')}</SelectItem>
+                        <SelectItem value="Custom">{t('roles.custom')}</SelectItem>
                       </SelectGroup>
                     </SelectContent>
                   </Select>
@@ -167,16 +169,16 @@ export function Roles({ roles }: { roles: Role[] }) {
                     }}
                   >
                     <SelectTrigger size="sm">
-                      <span className="text-muted-foreground">Owner:</span>
-                      <SelectValue placeholder="All" />
+                      <span className="text-muted-foreground">{t('roles.owner')}</span>
+                      <SelectValue placeholder={t('roles.all')} />
                     </SelectTrigger>
                     <SelectContent position="popper" align="start">
                       <SelectGroup>
-                        <SelectItem value="All">All</SelectItem>
-                        <SelectItem value="System">System</SelectItem>
-                        <SelectItem value="Jane Doe">Jane Doe</SelectItem>
-                        <SelectItem value="Alex Kim">Alex Kim</SelectItem>
-                        <SelectItem value="Chris Lee">Chris Lee</SelectItem>
+                        <SelectItem value="All">{t('roles.all')}</SelectItem>
+                        <SelectItem value="System">{t('roles.system')}</SelectItem>
+                        <SelectItem value="Jane Doe">{t('roles.jane_doe')}</SelectItem>
+                        <SelectItem value="Alex Kim">{t('roles.alex_kim')}</SelectItem>
+                        <SelectItem value="Chris Lee">{t('roles.chris_lee')}</SelectItem>
                       </SelectGroup>
                     </SelectContent>
                   </Select>
@@ -189,14 +191,14 @@ export function Roles({ roles }: { roles: Role[] }) {
                     }}
                   >
                     <SelectTrigger size="sm">
-                      <span className="text-muted-foreground">Status:</span>
-                      <SelectValue placeholder="All" />
+                      <span className="text-muted-foreground">{t('roles.status')}</span>
+                      <SelectValue placeholder={t('roles.all')} />
                     </SelectTrigger>
                     <SelectContent position="popper" align="start">
                       <SelectGroup>
-                        <SelectItem value="All">All</SelectItem>
-                        <SelectItem value="Active">Active</SelectItem>
-                        <SelectItem value="Needs review">Needs review</SelectItem>
+                        <SelectItem value="All">{t('roles.all')}</SelectItem>
+                        <SelectItem value="Active">{t('roles.active')}</SelectItem>
+                        <SelectItem value="Needs review">{t('roles.needs_review')}</SelectItem>
                       </SelectGroup>
                     </SelectContent>
                   </Select>
@@ -209,12 +211,12 @@ export function Roles({ roles }: { roles: Role[] }) {
         </TabsContent>
         <TabsContent value="permission-sets">
           <div className="flex h-full items-center justify-center rounded-md border border-dashed text-muted-foreground text-sm">
-            Permission Sets Coming Soon
+            {t('roles.permission_sets_coming_soon')}
           </div>
         </TabsContent>
         <TabsContent value="access-reviews">
           <div className="flex h-full items-center justify-center rounded-md border border-dashed text-muted-foreground text-sm">
-            Access Reviews Coming Soon
+            {t('roles.access_reviews_coming_soon')}
           </div>
         </TabsContent>
       </Tabs>
diff --git a/src/app/(main)/dashboard/tasks/_components/tasks-toolbar.tsx b/src/app/(main)/dashboard/tasks/_components/tasks-toolbar.tsx
index 3a2bdbd..77f54d6 100644
--- a/src/app/(main)/dashboard/tasks/_components/tasks-toolbar.tsx
+++ b/src/app/(main)/dashboard/tasks/_components/tasks-toolbar.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import type { Table } from "@tanstack/react-table";
@@ -25,6 +26,7 @@ interface TasksToolbarProps<TData> {
 }
 
 export function TasksToolbar<TData>({ table }: TasksToolbarProps<TData>) {
+  const t = useTranslations();
   const isFiltered = table.getState().columnFilters.length > 0;
   const searchValue = (table.getColumn("title")?.getFilterValue() as string) ?? "";
   const hideableColumns = table
@@ -36,7 +38,7 @@ export function TasksToolbar<TData>({ table }: TasksToolbarProps<TData>) {
     <div className="flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between">
       <div className="flex flex-1 flex-wrap items-center gap-2">
         <Input
-          placeholder="Filter tasks..."
+          placeholder={t('tasks_toolbar.filter_tasks')}
           value={searchValue}
           onChange={(event) => {
             table.getColumn("title")?.setFilterValue(event.target.value);
@@ -72,7 +74,7 @@ export function TasksToolbar<TData>({ table }: TasksToolbarProps<TData>) {
             </Button>
           </DropdownMenuTrigger>
           <DropdownMenuContent align="end" className="w-38">
-            <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>
+            <DropdownMenuLabel>{t('tasks_toolbar.toggle_columns')}</DropdownMenuLabel>
             <DropdownMenuSeparator />
             <DropdownMenuGroup>
               {hideableColumns.map((column) => (
diff --git a/src/app/(main)/dashboard/tasks/_components/tasks.tsx b/src/app/(main)/dashboard/tasks/_components/tasks.tsx
index 44cda4d..43491de 100644
--- a/src/app/(main)/dashboard/tasks/_components/tasks.tsx
+++ b/src/app/(main)/dashboard/tasks/_components/tasks.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import * as React from "react";
@@ -54,6 +55,7 @@ function getPageNumbers(currentPage: number, pageCount: number) {
 }
 
 export function Tasks({ data }: TasksProps) {
+  const t = useTranslations();
   const [rowSelection, setRowSelection] = React.useState({});
   const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({});
   const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);
@@ -139,7 +141,7 @@ export function Tasks({ data }: TasksProps) {
         </div>
         <div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-end sm:gap-6 lg:gap-8">
           <div className="flex items-center gap-2">
-            <p className="font-medium text-muted-foreground text-sm">Rows per page</p>
+            <p className="font-medium text-muted-foreground text-sm">{t('tasks.rows_per_page')}</p>
             <Select
               value={`${table.getState().pagination.pageSize}`}
               onValueChange={(value) => {
@@ -168,7 +170,7 @@ export function Tasks({ data }: TasksProps) {
               <PaginationItem className="hidden lg:block">
                 <PaginationLink
                   href="#"
-                  aria-label="Go to first page"
+                  aria-label={t('tasks.go_to_first_page')}
                   aria-disabled={!canPreviousPage}
                   className={cn(!canPreviousPage && "pointer-events-none opacity-50")}
                   onClick={(event) => {
@@ -182,7 +184,7 @@ export function Tasks({ data }: TasksProps) {
               <PaginationItem>
                 <PaginationPrevious
                   href="#"
-                  text="Prev"
+                  text={t('tasks.prev')}
                   aria-disabled={!canPreviousPage}
                   className={cn(!canPreviousPage && "pointer-events-none opacity-50")}
                   onClick={(event) => {
@@ -229,7 +231,7 @@ export function Tasks({ data }: TasksProps) {
               <PaginationItem className="hidden lg:block">
                 <PaginationLink
                   href="#"
-                  aria-label="Go to last page"
+                  aria-label={t('tasks.go_to_last_page')}
                   aria-disabled={!canNextPage}
                   className={cn(!canNextPage && "pointer-events-none opacity-50")}
                   onClick={(event) => {
diff --git a/src/app/(main)/dashboard/tasks/page.tsx b/src/app/(main)/dashboard/tasks/page.tsx
index 16843ef..107fa05 100644
--- a/src/app/(main)/dashboard/tasks/page.tsx
+++ b/src/app/(main)/dashboard/tasks/page.tsx
@@ -1,12 +1,14 @@
+import { useTranslations } from 'next-intl';
 import { tasks } from "./_components/data";
 import { Tasks } from "./_components/tasks";
 
 export default function Page() {
+  const t = useTranslations();
   return (
     <div className="flex flex-col gap-4">
       <div>
-        <h2 className="text-3xl tracking-tight">Welcome back!</h2>
-        <p className="text-muted-foreground">Here's a list of your tasks for this month!</p>
+        <h2 className="text-3xl tracking-tight">{t('page.welcome_back')}</h2>
+        <p className="text-muted-foreground">{t('page.heres_a_list_of_your_tasks_for_this_mont')}</p>
       </div>
       <Tasks data={tasks} />
     </div>
diff --git a/src/app/(main)/dashboard/users/_components/users-table.tsx b/src/app/(main)/dashboard/users/_components/users-table.tsx
index fa6f902..06f7dc9 100644
--- a/src/app/(main)/dashboard/users/_components/users-table.tsx
+++ b/src/app/(main)/dashboard/users/_components/users-table.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import type { MouseEvent } from "react";
@@ -36,6 +37,7 @@ function getPageNumbers(currentPage: number, pageCount: number) {
 }
 
 export function UsersTable({ table }: { table: TableType<UserRow> }) {
+  const t = useTranslations();
   const pageCount = Math.max(table.getPageCount(), 1);
   const currentPage = Math.min(table.getState().pagination.pageIndex + 1, pageCount);
   const pageNumbers = getPageNumbers(currentPage, pageCount);
@@ -88,7 +90,7 @@ export function UsersTable({ table }: { table: TableType<UserRow> }) {
       <div className="flex items-center justify-between px-4">
         <div className="flex items-center gap-4 text-muted-foreground text-sm">
           <div className="flex items-center gap-2">
-            <span>Rows per page</span>
+            <span>{t('users_table.rows_per_page')}</span>
             <Select
               value={`${table.getState().pagination.pageSize}`}
               onValueChange={(value) => table.setPageSize(Number(value))}
diff --git a/src/app/(main)/dashboard/users/_components/users.tsx b/src/app/(main)/dashboard/users/_components/users.tsx
index f18df7c..c584298 100644
--- a/src/app/(main)/dashboard/users/_components/users.tsx
+++ b/src/app/(main)/dashboard/users/_components/users.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 "use no memo";
 
 import * as React from "react";
@@ -28,6 +29,7 @@ import { usersColumns } from "./users-columns";
 import { UsersTable } from "./users-table";
 
 export function Users({ users }: { users: UserRow[] }) {
+  const t = useTranslations();
   const [rowSelection, setRowSelection] = React.useState({});
   const [sorting, setSorting] = React.useState<SortingState>([{ id: "joinedDate", desc: true }]);
   const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([]);
@@ -79,9 +81,9 @@ export function Users({ users }: { users: UserRow[] }) {
   return (
     <Card>
       <CardHeader className="border-b has-data-[slot=card-action]:grid-cols-1 md:has-data-[slot=card-action]:grid-cols-[1fr_auto]">
-        <CardTitle className="text-xl leading-none">Users</CardTitle>
+        <CardTitle className="text-xl leading-none">{t('users.users')}</CardTitle>
         <CardDescription className="max-w-sm leading-snug">
-          Manage your organization members and their access.
+          {t('users.manage_your_organization_members_and_the')}
         </CardDescription>
         <CardAction className="col-start-1 row-start-auto flex w-full flex-wrap justify-start gap-2 justify-self-stretch md:col-start-2 md:row-span-2 md:row-start-1 md:w-auto md:flex-nowrap md:justify-end md:justify-self-end">
           <InputGroup className="h-7 w-full md:w-64">
@@ -90,7 +92,7 @@ export function Users({ users }: { users: UserRow[] }) {
             </InputGroupAddon>
             <InputGroupInput
               className="h-7"
-              placeholder="Search users..."
+              placeholder={t('users.search_users')}
               value={searchQuery}
               onChange={(event) => {
                 table.getColumn("search")?.setFilterValue(event.target.value || undefined);
@@ -98,7 +100,7 @@ export function Users({ users }: { users: UserRow[] }) {
               }}
             />
             <InputGroupAddon align="inline-end">
-              <Kbd className="h-4 text-[10px]">⌘K</Kbd>
+              <Kbd className="h-4 text-[10px]">{t('users.k')}</Kbd>
             </InputGroupAddon>
           </InputGroup>
           <Button variant="outline" size="sm">
@@ -120,7 +122,7 @@ export function Users({ users }: { users: UserRow[] }) {
           <div className="flex flex-wrap items-center gap-3">
             <Select value={roleFilter} onValueChange={(value) => setColumnSelectFilter("role", value)}>
               <SelectTrigger size="sm">
-                <span className="text-muted-foreground">Role:</span>
+                <span className="text-muted-foreground">{t('users.role')}</span>
                 <SelectValue />
               </SelectTrigger>
               <SelectContent position="popper" align="start">
@@ -136,7 +138,7 @@ export function Users({ users }: { users: UserRow[] }) {
 
             <Select value={teamFilter} onValueChange={(value) => setColumnSelectFilter("team", value)}>
               <SelectTrigger size="sm">
-                <span className="text-muted-foreground">Team:</span>
+                <span className="text-muted-foreground">{t('users.team')}</span>
                 <SelectValue />
               </SelectTrigger>
               <SelectContent position="popper" align="start">
@@ -152,7 +154,7 @@ export function Users({ users }: { users: UserRow[] }) {
 
             <Select value={statusFilter} onValueChange={(value) => setColumnSelectFilter("status", value)}>
               <SelectTrigger size="sm">
-                <span className="text-muted-foreground">Status:</span>
+                <span className="text-muted-foreground">{t('users.status')}</span>
                 <SelectValue />
               </SelectTrigger>
               <SelectContent position="popper" align="start">
@@ -169,7 +171,7 @@ export function Users({ users }: { users: UserRow[] }) {
 
           <Select value={workspaceFilter} onValueChange={(value) => setColumnSelectFilter("workspace", value)}>
             <SelectTrigger size="sm">
-              <span className="text-muted-foreground">Workspace:</span>
+              <span className="text-muted-foreground">{t('users.workspace')}</span>
               <SelectValue />
             </SelectTrigger>
             <SelectContent position="popper" align="end">
@@ -189,10 +191,10 @@ export function Users({ users }: { users: UserRow[] }) {
 
           <Tabs defaultValue="list">
             <TabsList>
-              <TabsTrigger value="list" aria-label="List view">
+              <TabsTrigger value="list" aria-label={t('users.list_view')}>
                 <Rows3 />
               </TabsTrigger>
-              <TabsTrigger value="grid" aria-label="Grid view">
+              <TabsTrigger value="grid" aria-label={t('users.grid_view')}>
                 <Grid />
               </TabsTrigger>
             </TabsList>
diff --git a/src/app/(main)/mail/_components/mail-inbox.tsx b/src/app/(main)/mail/_components/mail-inbox.tsx
index adad2e2..3e5e5c1 100644
--- a/src/app/(main)/mail/_components/mail-inbox.tsx
+++ b/src/app/(main)/mail/_components/mail-inbox.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { Ellipsis, RotateCcw, Search, SlidersHorizontal } from "lucide-react";
 
@@ -16,6 +17,7 @@ interface MailInboxProps {
 }
 
 export function MailInbox({ mails, onSelectMail }: MailInboxProps) {
+  const t = useTranslations();
   const pinnedMails = mails.filter((mail) => mail.isPinned);
   const unpinnedMails = mails.filter((mail) => !mail.isPinned);
 
@@ -25,7 +27,7 @@ export function MailInbox({ mails, onSelectMail }: MailInboxProps) {
         <div className="flex items-center">
           <SidebarTrigger />
           <Separator orientation="vertical" className="mr-2 ml-1 h-4 data-vertical:self-center" />
-          <h1 className="font-medium text-xl leading-none">Inbox</h1>
+          <h1 className="font-medium text-xl leading-none">{t('mail_inbox.inbox')}</h1>
         </div>
         <div className="flex items-center gap-2">
           <Button variant="ghost" size="icon-sm">
@@ -46,7 +48,7 @@ export function MailInbox({ mails, onSelectMail }: MailInboxProps) {
 
       <div className="px-2">
         <InputGroup className="h-7 w-full rounded-md">
-          <InputGroupInput className="h-7" placeholder="Search..." />
+          <InputGroupInput className="h-7" placeholder={t('mail_inbox.search')} />
           <InputGroupAddon>
             <Search />
           </InputGroupAddon>
diff --git a/src/app/(main)/mail/_components/mail-sidebar.tsx b/src/app/(main)/mail/_components/mail-sidebar.tsx
index ee9128f..ac41368 100644
--- a/src/app/(main)/mail/_components/mail-sidebar.tsx
+++ b/src/app/(main)/mail/_components/mail-sidebar.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -36,6 +37,7 @@ import { cn, getInitials } from "@/lib/utils";
 import { accounts, type MailNavItem, mailNavigation } from "./data";
 
 export function MailSidebar() {
+  const t = useTranslations();
   const { state } = useSidebar();
   const isCollapsed = state === "collapsed";
   const [selectedAccount, setSelectedAccount] = React.useState(accounts[0]);
@@ -111,7 +113,7 @@ export function MailSidebar() {
 
         <Button size={isCollapsed ? "icon-sm" : "sm"} variant="outline" className="group-data-[state=expanded]:w-full">
           <PenLine data-icon="inline-start" />
-          <span className="group-data-[state=collapsed]:hidden">New email</span>
+          <span className="group-data-[state=collapsed]:hidden">{t('mail_sidebar.new_email')}</span>
         </Button>
       </SidebarHeader>
       <SidebarContent>
@@ -120,7 +122,7 @@ export function MailSidebar() {
         </SidebarGroup>
 
         <SidebarGroup>
-          <SidebarGroupLabel className="font-normal">Folders</SidebarGroupLabel>
+          <SidebarGroupLabel className="font-normal">{t('mail_sidebar.folders')}</SidebarGroupLabel>
           <SidebarMenu className="gap-1">{mailNavigation.folders.map(renderNavItem)}</SidebarMenu>
         </SidebarGroup>
       </SidebarContent>
diff --git a/src/app/(main)/mail/_components/mail-view.tsx b/src/app/(main)/mail/_components/mail-view.tsx
index fffc3fa..d8a7dfc 100644
--- a/src/app/(main)/mail/_components/mail-view.tsx
+++ b/src/app/(main)/mail/_components/mail-view.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import { format } from "date-fns/format";
 import {
@@ -46,6 +47,7 @@ interface MailDisplayProps {
 }
 
 export function MailView({ mail, onClose }: MailDisplayProps) {
+  const t = useTranslations();
   const [, setMail] = useMail();
 
   function handleClose() {
@@ -59,29 +61,29 @@ export function MailView({ mail, onClose }: MailDisplayProps) {
         <div className="flex items-center gap-2">
           <Tooltip>
             <TooltipTrigger asChild>
-              <Button variant="ghost" size="icon-sm" aria-label="Close message" onClick={handleClose}>
+              <Button variant="ghost" size="icon-sm" aria-label={t('mail_view.close_message')} onClick={handleClose}>
                 <X />
               </Button>
             </TooltipTrigger>
-            <TooltipContent>Close message</TooltipContent>
+            <TooltipContent>{t('mail_view.close_message')}</TooltipContent>
           </Tooltip>
           <Separator className="h-4 data-vertical:self-center" orientation="vertical" />
           <div className="flex items-center gap-0">
             <Tooltip>
               <TooltipTrigger asChild>
-                <Button variant="ghost" size="icon-sm" aria-label="Previous message">
+                <Button variant="ghost" size="icon-sm" aria-label={t('mail_view.previous_message')}>
                   <ChevronLeft />
                 </Button>
               </TooltipTrigger>
-              <TooltipContent>Previous message</TooltipContent>
+              <TooltipContent>{t('mail_view.previous_message')}</TooltipContent>
             </Tooltip>
             <Tooltip>
               <TooltipTrigger asChild>
-                <Button variant="ghost" size="icon-sm" aria-label="Next message">
+                <Button variant="ghost" size="icon-sm" aria-label={t('mail_view.next_message')}>
                   <ChevronRight />
                 </Button>
               </TooltipTrigger>
-              <TooltipContent>Next message</TooltipContent>
+              <TooltipContent>{t('mail_view.next_message')}</TooltipContent>
             </Tooltip>
           </div>
         </div>
@@ -89,33 +91,33 @@ export function MailView({ mail, onClose }: MailDisplayProps) {
         <div className="ml-auto flex items-center gap-2">
           <Tooltip>
             <TooltipTrigger asChild>
-              <Button variant="ghost" size="icon-sm" aria-label="Pin thread">
+              <Button variant="ghost" size="icon-sm" aria-label={t('mail_view.pin_thread')}>
                 <Pin />
               </Button>
             </TooltipTrigger>
-            <TooltipContent>Pin thread</TooltipContent>
+            <TooltipContent>{t('mail_view.pin_thread')}</TooltipContent>
           </Tooltip>
           <Tooltip>
             <TooltipTrigger asChild>
-              <Button variant="ghost" size="icon-sm" aria-label="Archive">
+              <Button variant="ghost" size="icon-sm" aria-label={t('mail_view.archive')}>
                 <Archive />
               </Button>
             </TooltipTrigger>
-            <TooltipContent>Archive</TooltipContent>
+            <TooltipContent>{t('mail_view.archive')}</TooltipContent>
           </Tooltip>
           <Tooltip>
             <TooltipTrigger asChild>
-              <Button variant="ghost" size="icon-sm" aria-label="Reply">
+              <Button variant="ghost" size="icon-sm" aria-label={t('mail_view.reply')}>
                 <Reply />
               </Button>
             </TooltipTrigger>
-            <TooltipContent>Reply</TooltipContent>
+            <TooltipContent>{t('mail_view.reply')}</TooltipContent>
           </Tooltip>
           <Tooltip>
             <DropdownMenu>
               <DropdownMenuTrigger asChild>
                 <TooltipTrigger asChild>
-                  <Button variant="ghost" size="icon-sm" aria-label="More actions">
+                  <Button variant="ghost" size="icon-sm" aria-label={t('mail_view.more_actions')}>
                     <EllipsisVertical />
                   </Button>
                 </TooltipTrigger>
@@ -144,16 +146,16 @@ export function MailView({ mail, onClose }: MailDisplayProps) {
                 </DropdownMenuGroup>
               </DropdownMenuContent>
             </DropdownMenu>
-            <TooltipContent>More actions</TooltipContent>
+            <TooltipContent>{t('mail_view.more_actions')}</TooltipContent>
           </Tooltip>
           <Separator className="h-4 data-vertical:self-center" orientation="vertical" />
           <Tooltip>
             <TooltipTrigger asChild>
-              <Button variant="ghost" size="icon-sm" aria-label="Move to trash">
+              <Button variant="ghost" size="icon-sm" aria-label={t('mail_view.move_to_trash')}>
                 <Trash2 className="text-destructive" />
               </Button>
             </TooltipTrigger>
-            <TooltipContent>Move to trash</TooltipContent>
+            <TooltipContent>{t('mail_view.move_to_trash')}</TooltipContent>
           </Tooltip>
         </div>
       </div>
diff --git a/src/app/(main)/mail/_components/mail.tsx b/src/app/(main)/mail/_components/mail.tsx
index 69a0b81..241effe 100644
--- a/src/app/(main)/mail/_components/mail.tsx
+++ b/src/app/(main)/mail/_components/mail.tsx
@@ -1,4 +1,5 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import * as React from "react";
 
@@ -24,6 +25,7 @@ interface MailProps {
 }
 
 export function MailComponent({ mails, defaultLayout = [...DEFAULT_MAIL_LAYOUT] }: MailProps) {
+  const t = useTranslations();
   const { isMobile } = useSidebar();
   const [isMounted, setIsMounted] = React.useState(false);
 
@@ -33,7 +35,7 @@ export function MailComponent({ mails, defaultLayout = [...DEFAULT_MAIL_LAYOUT]
 
   if (!isMounted) {
     return (
-      <div className="flex size-full items-center justify-center text-muted-foreground text-sm">Loading mail...</div>
+      <div className="flex size-full items-center justify-center text-muted-foreground text-sm">{t('mail.loading_mail')}</div>
     );
   }
 
@@ -45,6 +47,7 @@ export function MailComponent({ mails, defaultLayout = [...DEFAULT_MAIL_LAYOUT]
 }
 
 function MailMobileLayout({ mails }: Pick<MailProps, "mails">) {
+  const t = useTranslations();
   const [mail] = useMail();
   const [isMailOpen, setIsMailOpen] = React.useState(false);
   const selectedMail = mails.find((item) => item.id === mail.selected) || null;
@@ -55,8 +58,8 @@ function MailMobileLayout({ mails }: Pick<MailProps, "mails">) {
 
       <Drawer open={isMailOpen} onOpenChange={setIsMailOpen}>
         <DrawerContent>
-          <DrawerTitle className="sr-only">Mail message</DrawerTitle>
-          <DrawerDescription className="sr-only">Read the selected email message</DrawerDescription>
+          <DrawerTitle className="sr-only">{t('mail.mail_message')}</DrawerTitle>
+          <DrawerDescription className="sr-only">{t('mail.read_the_selected_email_message')}</DrawerDescription>
           <MailView mail={selectedMail} onClose={() => setIsMailOpen(false)} />
         </DrawerContent>
       </Drawer>
diff --git a/src/app/(main)/unauthorized/page.tsx b/src/app/(main)/unauthorized/page.tsx
index 41b8895..a27706b 100644
--- a/src/app/(main)/unauthorized/page.tsx
+++ b/src/app/(main)/unauthorized/page.tsx
@@ -1,16 +1,17 @@
+import { useTranslations } from 'next-intl';
 import Link from "next/link";
 
 import { Lock } from "lucide-react";
 
 export default function page() {
+  const t = useTranslations();
   return (
     <div className="flex min-h-dvh flex-col items-center justify-center bg-background px-4 py-12 sm:px-6 lg:px-8">
       <div className="mx-auto max-w-md text-center">
         <Lock className="mx-auto size-12 text-primary" />
-        <h1 className="mt-4 font-bold text-3xl tracking-tight sm:text-4xl">Unauthorized Access</h1>
+        <h1 className="mt-4 font-bold text-3xl tracking-tight sm:text-4xl">{t('page.unauthorized_access')}</h1>
         <p className="mt-4 text-muted-foreground">
-          You do not have permission to view the requested content. Please contact the site administrator if you believe
-          this is an error.
+          {t('page.you_do_not_have_permission_to_view_the_r')}
         </p>
         <div className="mt-6">
           <Link
@@ -18,7 +19,7 @@ export default function page() {
             className="inline-flex items-center rounded-md bg-primary px-4 py-2 font-medium text-primary-foreground text-sm shadow-xs transition-colors hover:bg-primary/90 focus:outline-hidden focus:ring-2 focus:ring-primary focus:ring-offset-2"
             prefetch={false}
           >
-            Go to Homepage
+            {t('page.go_to_homepage')}
           </Link>
         </div>
       </div>
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index cac588d..9c181e3 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,3 +1,5 @@
+import { NextIntlClientProvider } from 'next-intl';
+import { getMessages } from 'next-intl/server';
 import type { ReactNode } from "react";
 
 import type { Metadata } from "next";
@@ -17,7 +19,8 @@ export const metadata: Metadata = {
   description: APP_CONFIG.meta.description,
 };
 
-export default function RootLayout({ children }: Readonly<{ children: ReactNode }>) {
+export default async function RootLayout({ children }: Readonly<{ children: ReactNode }>) {
+  const messages = await getMessages();
   const { theme_mode, theme_preset, content_layout, navbar_style, sidebar_variant, sidebar_collapsible, font } =
     PREFERENCE_DEFAULTS;
   return (
@@ -37,6 +40,7 @@ export default function RootLayout({ children }: Readonly<{ children: ReactNode
         <ThemeBootScript />
       </head>
       <body className={`${fontVars} min-h-screen antialiased`}>
+        <NextIntlClientProvider messages={messages}>
         <TooltipProvider>
           <PreferencesStoreProvider
             themeMode={theme_mode}
@@ -49,6 +53,7 @@ export default function RootLayout({ children }: Readonly<{ children: ReactNode
             <Toaster />
           </PreferencesStoreProvider>
         </TooltipProvider>
+      </NextIntlClientProvider>
       </body>
     </html>
   );
diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx
index 3e72cad..180e5d9 100644
--- a/src/app/not-found.tsx
+++ b/src/app/not-found.tsx
@@ -1,16 +1,18 @@
 "use client";
+import { useTranslations } from 'next-intl';
 
 import Link from "next/link";
 
 import { Button } from "@/components/ui/button";
 
 export default function NotFound() {
+  const t = useTranslations();
   return (
     <div className="flex h-dvh flex-col items-center justify-center space-y-2 text-center">
-      <h1 className="font-semibold text-2xl">Page not found.</h1>
-      <p className="text-muted-foreground">The page you are looking for could not be found.</p>
+      <h1 className="font-semibold text-2xl">{t('not_found.page_not_found')}</h1>
+      <p className="text-muted-foreground">{t('not_found.the_page_you_are_looking_for_could_not_b')}</p>
       <Link prefetch={false} replace href="/dashboard/default">
-        <Button variant="outline">Go back home</Button>
+        <Button variant="outline">{t('not_found.go_back_home')}</Button>
       </Link>
     </div>
   );
diff --git a/src/components/ui/breadcrumb.tsx b/src/components/ui/breadcrumb.tsx
index db9afc0..15de8f7 100644
--- a/src/components/ui/breadcrumb.tsx
+++ b/src/components/ui/breadcrumb.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import * as React from "react"
 import { Slot } from "radix-ui"
 
@@ -5,9 +6,10 @@ import { cn } from "@/lib/utils"
 import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
 
 function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">) {
+  const t = useTranslations();
   return (
     <nav
-      aria-label="breadcrumb"
+      aria-label={t('breadcrumb.breadcrumb')}
       data-slot="breadcrumb"
       className={cn(className)}
       {...props}
@@ -93,6 +95,7 @@ function BreadcrumbEllipsis({
   className,
   ...props
 }: React.ComponentProps<"span">) {
+  const t = useTranslations();
   return (
     <span
       data-slot="breadcrumb-ellipsis"
@@ -106,7 +109,7 @@ function BreadcrumbEllipsis({
     >
       <MoreHorizontalIcon
       />
-      <span className="sr-only">More</span>
+      <span className="sr-only">{t('breadcrumb.more')}</span>
     </span>
   )
 }
diff --git a/src/components/ui/carousel.tsx b/src/components/ui/carousel.tsx
index dafc149..02a437c 100644
--- a/src/components/ui/carousel.tsx
+++ b/src/components/ui/carousel.tsx
@@ -1,4 +1,5 @@
 "use client"
+import { useTranslations } from 'next-intl';
 
 import * as React from "react"
 import useEmblaCarousel, {
@@ -177,6 +178,7 @@ function CarouselPrevious({
   size = "icon-sm",
   ...props
 }: React.ComponentProps<typeof Button>) {
+  const t = useTranslations();
   const { orientation, scrollPrev, canScrollPrev } = useCarousel()
 
   return (
@@ -196,7 +198,7 @@ function CarouselPrevious({
       {...props}
     >
       <ChevronLeftIcon />
-      <span className="sr-only">Previous slide</span>
+      <span className="sr-only">{t('carousel.previous_slide')}</span>
     </Button>
   )
 }
@@ -207,6 +209,7 @@ function CarouselNext({
   size = "icon-sm",
   ...props
 }: React.ComponentProps<typeof Button>) {
+  const t = useTranslations();
   const { orientation, scrollNext, canScrollNext } = useCarousel()
 
   return (
@@ -226,7 +229,7 @@ function CarouselNext({
       {...props}
     >
       <ChevronRightIcon />
-      <span className="sr-only">Next slide</span>
+      <span className="sr-only">{t('carousel.next_slide')}</span>
     </Button>
   )
 }
diff --git a/src/components/ui/pagination.tsx b/src/components/ui/pagination.tsx
index 96fdae7..616e115 100644
--- a/src/components/ui/pagination.tsx
+++ b/src/components/ui/pagination.tsx
@@ -1,3 +1,4 @@
+import { useTranslations } from 'next-intl';
 import * as React from "react"
 
 import { cn } from "@/lib/utils"
@@ -5,10 +6,11 @@ import { Button } from "@/components/ui/button"
 import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
 
 function Pagination({ className, ...props }: React.ComponentProps<"nav">) {
+  const t = useTranslations();
   return (
     <nav
       role="navigation"
-      aria-label="pagination"
+      aria-label={t('pagination.pagination')}
       data-slot="pagination"
       className={cn("mx-auto flex w-full justify-center", className)}
       {...props}
@@ -66,9 +68,10 @@ function PaginationPrevious({
   text = "Previous",
   ...props
 }: React.ComponentProps<typeof PaginationLink> & { text?: string }) {
+  const t = useTranslations();
   return (
     <PaginationLink
-      aria-label="Go to previous page"
+      aria-label={t('pagination.go_to_previous_page')}
       size="default"
       className={cn("pl-1.5!", className)}
       {...props}
@@ -84,9 +87,10 @@ function PaginationNext({
   text = "Next",
   ...props
 }: React.ComponentProps<typeof PaginationLink> & { text?: string }) {
+  const t = useTranslations();
   return (
     <PaginationLink
-      aria-label="Go to next page"
+      aria-label={t('pagination.go_to_next_page')}
       size="default"
       className={cn("pr-1.5!", className)}
       {...props}
@@ -101,6 +105,7 @@ function PaginationEllipsis({
   className,
   ...props
 }: React.ComponentProps<"span">) {
+  const t = useTranslations();
   return (
     <span
       aria-hidden
@@ -113,7 +118,7 @@ function PaginationEllipsis({
     >
       <MoreHorizontalIcon
       />
-      <span className="sr-only">More pages</span>
+      <span className="sr-only">{t('pagination.more_pages')}</span>
     </span>
   )
 }
diff --git a/src/components/ui/sidebar.tsx b/src/components/ui/sidebar.tsx
index ea78b50..0781054 100644
--- a/src/components/ui/sidebar.tsx
+++ b/src/components/ui/sidebar.tsx
@@ -1,4 +1,5 @@
 "use client"
+import { useTranslations } from 'next-intl';
 
 import * as React from "react"
 import { cva, type VariantProps } from "class-variance-authority"
@@ -161,6 +162,7 @@ function Sidebar({
   variant?: "sidebar" | "floating" | "inset"
   collapsible?: "offcanvas" | "icon" | "none"
 }) {
+  const t = useTranslations();
   const { isMobile, state, openMobile, setOpenMobile } = useSidebar()
 
   if (collapsible === "none") {
@@ -195,8 +197,8 @@ function Sidebar({
           side={side}
         >
           <SheetHeader className="sr-only">
-            <SheetTitle>Sidebar</SheetTitle>
-            <SheetDescription>Displays the mobile sidebar.</SheetDescription>
+            <SheetTitle>{t('sidebar.sidebar')}</SheetTitle>
+            <SheetDescription>{t('sidebar.displays_the_mobile_sidebar')}</SheetDescription>
           </SheetHeader>
           <div className="flex h-full w-full flex-col">{children}</div>
         </SheetContent>
@@ -255,6 +257,7 @@ function SidebarTrigger({
   onClick,
   ...props
 }: React.ComponentProps<typeof Button>) {
+  const t = useTranslations();
   const { toggleSidebar } = useSidebar()
 
   return (
@@ -271,22 +274,23 @@ function SidebarTrigger({
       {...props}
     >
       <PanelLeftIcon />
-      <span className="sr-only">Toggle Sidebar</span>
+      <span className="sr-only">{t('sidebar.toggle_sidebar')}</span>
     </Button>
   )
 }
 
 function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
+  const t = useTranslations();
   const { toggleSidebar } = useSidebar()
 
   return (
     <button
       data-sidebar="rail"
       data-slot="sidebar-rail"
-      aria-label="Toggle Sidebar"
+      aria-label={t('sidebar.toggle_sidebar')}
       tabIndex={-1}
       onClick={toggleSidebar}
-      title="Toggle Sidebar"
+      title={t('sidebar.toggle_sidebar')}
       className={cn(
         "absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2",
         "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
diff --git a/src/components/ui/spinner.tsx b/src/components/ui/spinner.tsx
index 8dca22b..aef5798 100644
--- a/src/components/ui/spinner.tsx
+++ b/src/components/ui/spinner.tsx
@@ -1,9 +1,11 @@
+import { useTranslations } from 'next-intl';
 import { cn } from "@/lib/utils"
 import { Loader2Icon } from "lucide-react"
 
 function Spinner({ className, ...props }: React.ComponentProps<"svg">) {
+  const t = useTranslations();
   return (
-    <Loader2Icon data-slot="spinner" role="status" aria-label="Loading" className={cn("size-4 animate-spin", className)} {...props} />
+    <Loader2Icon data-slot="spinner" role="status" aria-label={t('spinner.loading')} className={cn("size-4 animate-spin", className)} {...props} />
   )
 }
 
diff --git a/src/i18n/request.ts b/src/i18n/request.ts
new file mode 100644
index 0000000..eb85a4b
--- /dev/null
+++ b/src/i18n/request.ts
@@ -0,0 +1,11 @@
+import { getRequestConfig } from 'next-intl/server';
+
+// Single-locale setup (no locale routing): the agent localizes the code and seeds the
+// messages; negotiating / switching the active locale is left to the team.
+export default getRequestConfig(async () => {
+  const locale = 'en';
+  return {
+    locale,
+    messages: (await import(`../../messages/${locale}.json`)).default,
+  };
+});
