demeter

Autonomous Hydroponic Intelligence

frontend/src/utils/translations.js (54359B)


   1// Translations - English + Hindi
   2
   3const en = {
   4  // Navigation & Sidebar
   5  nav_crops: "Crops",
   6  nav_alerts: "Alerts",
   7  nav_analytics: "Analytics",
   8  nav_intelligence: "Intelligence",
   9  nav_settings: "Settings",
  10  nav_help: "Help",
  11  nav_system_online: "SYSTEM ONLINE",
  12  nav_alert_status: "ALERT STATUS",
  13  nav_crops_need_attention: "{n} crop{s} need attention",
  14  nav_all_clear: "All clear",
  15  nav_harvest_ready: "ЁЯМ╛ {n} ready to harvest",
  16  sidebar_agri_ai: "AGRI┬╖AI┬╖v4",
  17  sidebar_connecting: "CONNECTINGтАж",
  18  sidebar_farm_online: "FARM ONLINE",
  19  sidebar_no_data: "NO DATA",
  20
  21  // Landing Page
  22  landing_hero_1: "The Farm",
  23  landing_hero_2: "Thinks",
  24  landing_hero_3: "For Itself.",
  25  landing_hero_sub:
  26    "Demeter is a cognitive hydroponic system. Seven specialized AI agents collaborate to perceive, reason, and act - optimizing your crops 24/7 without human intervention.",
  27  landing_enter_dash: "Enter Dashboard",
  28  landing_intelligence: "Intelligence",
  29  landing_active_crops: "Active Crops",
  30  landing_crop_types: "Crop Types",
  31  landing_total_cycles: "Total Cycles",
  32  landing_active_alerts: "Active Alerts",
  33  landing_capabilities: "// CORE CAPABILITIES",
  34  landing_live_feed: "demeter://live-feed",
  35  landing_feature_rl: "Reinforcement Learning",
  36  landing_feature_rl_desc: "Contextual bandit that learns with every cycle",
  37  landing_feature_cv: "Computer Vision",
  38  landing_feature_cv_desc: "Azure CV-powered disease detection",
  39  landing_feature_vector: "Vector Memory",
  40  landing_feature_vector_desc: "Qdrant-backed long-term plant biographies",
  41  landing_feature_sim: "Physics Simulation",
  42  landing_feature_sim_desc: "LLM-based digital twin before every action",
  43  landing_optimal: "тЧП OPTIMAL",
  44  landing_alert: "тЧП ALERT",
  45  landing_recent_activity: "RECENT AGENT ACTIVITY",
  46  landing_no_cycles:
  47    "No cycles recorded yet. Run the agent loop to see activity.",
  48
  49  // Dashboard
  50  dash_title: "Crops Overview",
  51  dash_subtitle: "{filtered} of {total} crops shown",
  52  dash_add_crop: "Add Crop",
  53  dash_search_placeholder: "Search crops, IDs, stagesтАж",
  54  dash_filters: "Filters",
  55  dash_clear_all: "Clear all",
  56  dash_healthy: "Healthy",
  57  dash_attention: "Attention",
  58  dash_critical: "Critical",
  59  dash_maturity: "Maturity",
  60  dash_days_left: "{n}d left",
  61  dash_ready: "Ready",
  62  dash_no_crops: "No crops yet",
  63  dash_no_crops_sub: "Start by adding your first crop batch",
  64  dash_add_first: "Add Your First Crop",
  65  dash_no_match: "No crops match your filters",
  66  dash_clear_filters: "Clear filters",
  67  dash_harvest_banner: "{n} crop{s} ready to harvest!",
  68  dash_harvest_badge: "HARVEST READY",
  69  dash_harvest_banner_sub: "Tap a crop card to view details and plan harvest",
  70  dash_harvest_action: "View Ready Crops",
  71  dash_status_growing: "Growing",
  72
  73  // Crop Details
  74  details_not_found: "Crop not found",
  75  details_live: "LIVE",
  76  details_tab_overview: "Overview",
  77  details_tab_sensors: "Sensors",
  78  details_tab_log: "Log",
  79  details_ai_reasoning: "AI DECISION REASONING",
  80  details_chain_thought:
  81    "Chain-of-thought log generated by the Explainer agent",
  82  details_expand: "Expand",
  83  details_collapse: "Collapse",
  84  details_pending_exp:
  85    "Explanation will be generated after the agent completes its first analysis cycle for this crop.",
  86  details_hist_ph: "HISTORICAL pH TRACE",
  87  details_latest_cmd: "LATEST ACTUATOR COMMAND",
  88  details_temp_hum: "TEMP & HUMIDITY",
  89  details_ec_conc: "EC CONCENTRATION",
  90  details_event_log: "EVENT LOG - {total} ENTRIES (showing last {limit})",
  91  details_hide: "Hide",
  92  details_why: "Why?",
  93  details_more_lines: "+ {n} more lines",
  94
  95  // CropDetails - Info tab
  96  details_tab_info: "Info",
  97  details_planted: "Planted",
  98  details_cycle_duration: "Cycle Duration",
  99  details_location: "Location",
 100  details_total_sequences: "Total Sequences",
 101  details_sensor_hardware: "SENSOR HARDWARE",
 102  details_sensor_online: "Online",
 103  details_days_since: "{n} days since planting",
 104  details_days_remain: "{n} days remaining",
 105  details_notes: "Notes",
 106  details_run_cycle_btn: "Run Agent Cycle",
 107  details_lifecycle_progress: "Lifecycle Progress",
 108  details_hours_per_cycle: "{n}h per cycle",
 109
 110  // Agent Widgets
 111  widget_acid: "Acid Dosage",
 112  widget_base: "Base Dosage",
 113  widget_nutrients: "Nutrients",
 114  widget_fan: "Fan Speed",
 115  widget_water: "Water Refill",
 116  widget_ph_down: "pH Down",
 117  widget_ph_up: "pH Up",
 118  widget_ec_boost: "EC Boost",
 119  widget_airflow: "Airflow",
 120  widget_dilution: "Dilution",
 121  outcome_improved: "IMPROVED",
 122  outcome_deteriorated: "DETERIORATED",
 123  outcome_stable: "STABLE",
 124  reward_label: "Reward",
 125
 126  // Stages
 127  stage_all: "All",
 128  stage_seedling: "Seedling",
 129  stage_vegetative: "Vegetative",
 130  stage_flowering: "Flowering",
 131  stage_fruiting: "Fruiting",
 132
 133  // Sensor readings
 134  sensor_temp: "Temperature",
 135  sensor_ph: "pH Level",
 136  sensor_ec: "EC",
 137  sensor_humidity: "Humidity",
 138  sensor_ph_desc: "Water acidity - ideal range: 5.5 to 6.5",
 139  sensor_ec_desc: "Nutrient strength in water - ideal: 0.8 to 2.5 dS/m",
 140  sensor_temp_desc: "Air temperature - ideal: 18┬░C to 28┬░C",
 141  sensor_humidity_desc: "Moisture in air - ideal: 40% to 80%",
 142
 143  // Add Crop
 144  add_title: "Register New Crop",
 145  add_subtitle: "Register a new crop batch in the system",
 146  add_plant_image: "PLANT IMAGE",
 147  add_drop_image: "Drop crop image here",
 148  add_image_hint: "PNG or JPG ┬╖ helps AI detect disease",
 149  add_sensor_params: "SENSOR READINGS",
 150  add_start: "Start Monitoring",
 151  add_running: "AI RunningтАж",
 152  add_run_another: "Run Another Cycle",
 153  add_view_dashboard: "Go to Dashboard",
 154  add_run_next: "Run Next Cycle",
 155  add_cycle_done: "Cycle complete - crop registered тЬУ",
 156  add_cycle_fail: "Failed to connect to agent pipeline",
 157  add_cycles_done: "{n} CYCLE{s} DONE",
 158  add_field_location: "Location",
 159  add_field_location_hint: "Where this crop is physically placed",
 160  add_field_location_placeholder: "e.g. Rack A - Shelf 3",
 161  add_field_notes: "Notes",
 162  add_field_notes_placeholder: "Optional notes about this crop batch",
 163  add_auto_cycle_duration: "Cycle Duration (auto)",
 164  add_auto_cycle_hint:
 165    "Auto-determined based on crop type: {crop} cycles every {hours}h",
 166  add_register_btn: "Register Crop",
 167  add_registering: "Creating...",
 168  add_register_success: "Crop registered successfully!",
 169  add_run_first_cycle: "Run First Cycle",
 170  add_lifecycle_label: "Growth Timeline",
 171  add_crop_id_exists: "This Crop ID already exists",
 172
 173  // Add Crop fields
 174  add_field_ph: "pH Level",
 175  add_field_ec: "EC (Nutrient Strength)",
 176  add_field_temp: "Temperature (┬░C)",
 177  add_field_humidity: "Humidity (%)",
 178  add_field_crop_type: "Crop Type",
 179  add_field_stage: "Growth Stage",
 180  add_field_crop_id: "Batch / Crop ID",
 181  add_field_stage_hint:
 182    "Seedling = just planted ┬╖ Vegetative = growing leaves ┬╖ Flowering = making flowers ┬╖ Fruiting = making fruit",
 183  add_field_crop_id_hint:
 184    "Give this crop batch a unique name so you can track it easily",
 185  add_field_crop_id_placeholder: "e.g. Batch_A1 (optional)",
 186
 187  // Add Crop pipeline phases & logs
 188  add_phase_fetch: "Fetch",
 189  add_phase_judge: "Judge",
 190  add_phase_strategy: "Strategy",
 191  add_phase_research: "Research",
 192  add_phase_plan: "Plan",
 193  add_phase_execute: "Execute",
 194  add_log_live: "AGENT PIPELINE - LIVE",
 195  add_log_done: "CYCLE COMPLETE",
 196  add_log_idle: "PIPELINE LOG",
 197  add_log_lines: "{n} lines",
 198  add_actuator_dispatched: "ACTUATOR COMMANDS DISPATCHED",
 199
 200  // Run Cycle page
 201  run_title: "Run Agent Cycle",
 202  run_subtitle: "Execute AI monitoring cycle for {crop}",
 203  run_for_crop: "Running for: {crop}",
 204  run_loading_crop: "Loading cropтАж",
 205  run_growth_progress: "Growth Progress",
 206  run_streaming: "STREAMING",
 207  run_log_waiting: "Waiting for agent outputтАж",
 208  run_cycles_complete: "{n} cycle{s} completed",
 209  run_agents_working: "Agents WorkingтАж",
 210  run_harvest_ready: "тЬВ Ready to harvest",
 211  run_days_until: "{n}d until harvest",
 212
 213  // Alerts
 214  alerts_title: "Alerts",
 215  alerts_subtitle_loading: "Analyzing sensor historyтАж",
 216  alerts_subtitle: "{unacked} unacknowledged ┬╖ {total} total",
 217  alerts_ack_all: "Ack all",
 218  alerts_ack_all_btn: "Acknowledge All",
 219  alerts_unacked: "UNACKNOWLEDGED ┬╖ {n}",
 220  alerts_acknowledged: "ACKNOWLEDGED ┬╖ {n}",
 221  alerts_empty_connected: "All clear for the selected filter",
 222  alerts_empty_nodata: "No data loaded - connect your farm and run some cycles",
 223  alerts_unacked_only: "Unacked only",
 224  alerts_show_all: "All",
 225  alerts_filter_harvest: "ЁЯМ╛ Harvest",
 226  alerts_filter_warning: "Warning",
 227  alerts_filter_info: "Info",
 228  alerts_crop_label: "Crop: {crop}",
 229  alerts_severity_critical: "CRITICAL",
 230  alerts_severity_warning: "WARNING",
 231  alerts_severity_info: "INFO",
 232  alerts_severity_harvest: "HARVEST",
 233
 234  // Alert titles & descriptions
 235  alert_harvest_title: "Crop ready for harvest",
 236  alert_harvest_desc:
 237    "{crop} ({id}) has reached {pct}% maturity - time to harvest!",
 238  alert_ph_low_title: "pH critically low",
 239  alert_ph_low_desc:
 240    "{crop} ({id}): pH at {val} - immediate base dosing required.",
 241  alert_ph_high_title: "pH critically high",
 242  alert_ph_high_desc:
 243    "{crop} ({id}): pH at {val} - acid dosing required immediately.",
 244  alert_ec_high_title: "EC dangerously high",
 245  alert_ec_high_desc:
 246    "{crop} ({id}): EC at {val} dS/m - severe nutrient burn risk.",
 247  alert_temp_cold_title: "Temperature too cold",
 248  alert_temp_cold_desc:
 249    "{crop} ({id}): Air temp at {val}┬░C - root damage risk.",
 250  alert_temp_hot_title: "Temperature too hot",
 251  alert_temp_hot_desc:
 252    "{crop} ({id}): Air temp at {val}┬░C - heat stress and root rot risk.",
 253  alert_disease_title: "Disease or pest detected",
 254  alert_disease_desc: '{crop} ({id}): Visual anomaly. Outcome: "{outcome}"',
 255  alert_cycle_fail_title: "Cycle failure recorded",
 256  alert_cycle_fail_desc: '{crop} ({id}): Seq #{seq} outcome: "{outcome}"',
 257  alert_ph_warn_low_title: "pH below optimal range",
 258  alert_ph_warn_desc: "{crop} ({id}): pH at {val}. Target 5.5-6.5.",
 259  alert_ph_warn_high_title: "pH above optimal range",
 260  alert_ec_warn_title: "EC approaching high limit",
 261  alert_ec_warn_desc:
 262    "{crop} ({id}): EC at {val} dS/m - nutrient burn risk increasing.",
 263  alert_temp_warn_low_title: "Temperature on the low side",
 264  alert_temp_warn_low_desc: "{crop} ({id}): {val}┬░C - slow growth expected.",
 265  alert_temp_warn_high_title: "Temperature elevated",
 266  alert_temp_warn_high_desc: "{crop} ({id}): {val}┬░C - heat stress likely.",
 267  alert_deteriorating_title: "Condition deteriorating",
 268  alert_deteriorating_desc: '{crop} ({id}): Seq #{seq} - "{outcome}"',
 269  alert_cycle_done_title: "Cycle #{seq} completed",
 270  alert_cycle_done_desc: "{crop} ({id}): Sequence stored. {extra}",
 271
 272  // Analytics
 273  analytics_title: "Analytics",
 274  analytics_subtitle_loading: "LoadingтАж",
 275  analytics_subtitle: "{points} data points across {crops} crops",
 276  analytics_export: "Export CSV",
 277  analytics_avg_ph: "AVG pH",
 278  analytics_avg_ec: "AVG EC",
 279  analytics_avg_temp: "AVG TEMP",
 280  analytics_total_seq: "TOTAL SEQUENCES",
 281  analytics_vs_prior: "% vs prior",
 282  analytics_trace: "{range} TRACE",
 283  analytics_ph_over_time: "pH Over Time",
 284  analytics_ec_conc: "EC Concentration",
 285  analytics_temp_hum: "Temperature & Humidity",
 286  analytics_daily_act: "DAILY ACTIVITY",
 287  analytics_seq_per_day: "Sequences Logged per Day",
 288  analytics_param_health: "PARAMETER HEALTH",
 289  analytics_in_range_score: "In-Range Score (%)",
 290  analytics_per_crop: "PER CROP",
 291  analytics_latest_sensor: "Latest Sensor Summary",
 292  analytics_derived_act: "DERIVED FROM STORED ACTIONS",
 293  analytics_agent_act: "Agent Activity",
 294  analytics_no_data_range: "Not enough data for this range",
 295  analytics_no_data_days: "Need 2+ days of data",
 296  analytics_no_data_points: "Not enough data points",
 297  analytics_th_crop_id: "Crop ID",
 298  analytics_th_type: "Type",
 299  analytics_th_stage: "Stage",
 300  analytics_th_ph: "pH",
 301  analytics_th_ec: "EC",
 302  analytics_th_temp: "Temp",
 303  analytics_th_seq: "Sequences",
 304  analytics_th_agent: "Agent",
 305  analytics_th_apps: "Appearances",
 306  analytics_th_success: "Success Rate",
 307  analytics_th_status: "Status",
 308  analytics_online: "ONLINE",
 309
 310  // Charts
 311  chart_temp: "Temp ┬░C",
 312  chart_humidity: "Humidity %",
 313  chart_ec: "EC dS/m",
 314  chart_ph: "pH",
 315  chart_sequences: "Sequences",
 316  chart_in_range: "In-range %",
 317
 318  // Intelligence
 319  intel_title: "Farm Intelligence",
 320  intel_subtitle: "Query your crops ┬╖ Ask Demeter anything ┬╖ Explore patterns",
 321  intel_search: "Search",
 322  intel_ask_ai: "Ask AI",
 323  intel_total_crops: "Total Crops",
 324  intel_healthy: "Healthy",
 325  intel_needs_attention: "Needs Attention",
 326  intel_critical: "Critical",
 327  intel_fleet_wide: "FLEET-WIDE",
 328  intel_crop_aware: "CROP-AWARE",
 329  intel_search_placeholder: "Search crops - 'Show all Tomato'...",
 330  intel_ask_placeholder_fleet:
 331    "Ask anything about your farm - decisions, trends...",
 332  intel_ask_placeholder_crop: "Ask anything about {crop}тАж",
 333  intel_filter_by: "FILTER BY:",
 334  intel_ask_about: "ASK ABOUT:",
 335  intel_context_loaded: "Context loaded",
 336  intel_heard: "Heard:",
 337  intel_suggested_global: "QUICK QUERIES",
 338  intel_suggested_crop: "SUGGESTED QUESTIONS FOR {crop}",
 339  intel_results_found: "{n} RESULT{s} FOUND",
 340  intel_no_results: "NO RESULTS",
 341  intel_view_logic: "View query logic",
 342  intel_hide_logic: "Hide query logic",
 343  intel_qdrant_filter: "QDRANT FILTER",
 344  intel_no_match: "No crops matched",
 345  intel_try_ask: "Try Ask AI instead",
 346  intel_empty_ask_title: "Ask Demeter anything about your farm",
 347  intel_empty_search_title: "Search your crop database",
 348  intel_empty_ask_desc:
 349    "Select a specific crop for targeted questions, or ask fleet-wide questions. The AI uses live sensor data, agent decisions, and explanation logs to answer.",
 350  intel_empty_search_desc:
 351    "Use natural language to filter crops by type, stage, status or outcome. The supervisor translates your query into precise database filters.",
 352  intel_ai_reasoning: "THINKING PROCESS",
 353  intel_steps: "{n} steps",
 354  intel_similar_crops: "SIMILAR CROPS IN DATABASE",
 355  intel_match: "{n}% match",
 356  intel_last_cmd: "LAST COMMAND",
 357  intel_all_crops_filter: "All Crops",
 358  intel_all_crops_desc: "Fleet-wide query",
 359  intel_thinking: "Thinking",
 360  intel_demeter: "Demeter",
 361  intel_select_crop: "Select a crop ({n} total)",
 362  intel_fleet_query: "Query across all crops",
 363  intel_logic_header: "Query Translation Logic",
 364  intel_query_logic: "Query Logic",
 365  intel_no_response: "No response generated.",
 366  intel_llm_fail: "Failed to get a response. Please check your connection.",
 367  intel_llm_fail_toast: "LLM query failed",
 368  intel_search_fail_toast: "Search failed",
 369  intel_context: "Context",
 370
 371  // Suggested questions
 372  sug_g1: "Show all crops",
 373  sug_g2: "Which crops are critical?",
 374  sug_g3: "Find crops in flowering stage",
 375  sug_g4: "List recent negative outcomes",
 376  sug_g5: "Show Tomato batches",
 377  sug_g6: "Find crops with high EC",
 378  sug_c1: "Why did we take the last decision for {crop}?",
 379  sug_c2: "Explain the current action for {crop}",
 380  sug_c3: "Is {crop} performing well?",
 381  sug_c4: "What should I watch out for with {crop}?",
 382  sug_c5: "How has {crop} been trending lately?",
 383  sug_c6: "Compare {crop} to similar crops",
 384
 385  // Settings
 386  settings_title: "Settings",
 387  settings_subtitle: "Preferences, appearance & account",
 388  settings_save: "Save Changes",
 389  settings_reset: "Reset",
 390  settings_saved: "Saved!",
 391  settings_profile: "Profile",
 392  settings_profile_sub: "Your name and role shown in the sidebar",
 393  settings_display_name: "Display Name",
 394  settings_designation: "Designation",
 395  settings_initials: "Initials",
 396  settings_initials_hint: "Shown in the sidebar avatar (max 2 chars)",
 397  settings_appearance: "Appearance",
 398  settings_appearance_sub: "Theme and display options",
 399  settings_theme: "Theme",
 400  settings_theme_hint: "Controls the overall color scheme of the application",
 401  settings_dark: "Dark",
 402  settings_light: "Light",
 403  settings_system: "System",
 404  settings_compact: "Compact Mode",
 405  settings_compact_hint: "Reduces spacing for denser information display",
 406  settings_language: "Language / рднрд╛рд╖рд╛",
 407  settings_language_sub: "Choose your preferred display language",
 408  settings_lang_en: "English",
 409  settings_lang_hi: "рд╣рд┐рдВрджреА (Hindi)",
 410  settings_display_section: "Display",
 411  settings_display_sub: "Pagination and results",
 412  settings_max_crops: "Max Crops Per Page",
 413  settings_max_crops_hint: "Dashboard grid page size",
 414  settings_history_limit: "History Log Limit",
 415  settings_history_hint: "Max entries shown in crop event log",
 416  settings_alerts_section: "Alerts",
 417  settings_alerts_sub: "Notification preferences",
 418  settings_show_acked: "Show Acknowledged Alerts by Default",
 419  settings_data_source: "Data Source",
 420  settings_data_sub: "Backend connection settings",
 421  settings_mock_mode: "Mock Data Mode",
 422  settings_live_mode: "Live Backend Connected",
 423  settings_mock_hint:
 424    "To connect to live data, set USE_MOCK_DATA = false in src/data/mockData.js",
 425  settings_onboarding: "Help & Onboarding",
 426  settings_onboarding_sub: "Restart the welcome guide",
 427  settings_restart_onboarding: "Restart Guide",
 428
 429  // Help
 430  help_title: "Help & Glossary",
 431  help_subtitle: "Everything you need to know - explained simply",
 432  help_section_terms: "ЁЯУК Sensor Terms Explained",
 433  help_section_agents: "ЁЯдЦ How AI Works for You",
 434  help_section_stages: "ЁЯМ▒ Growth Stages",
 435  help_section_manual: "ЁЯЦР When You Need to Act",
 436  help_section_ai_cta: "Still have questions?",
 437  help_ai_cta_desc: "Ask our Farm Intelligence AI anything about your crops",
 438  help_ai_cta_btn: "Ask AI тЖТ",
 439  help_range_label: "Ideal Range",
 440  help_low_label: "Too Low",
 441  help_high_label: "Too High",
 442  help_ai_label: "AI Auto-Action",
 443  help_manual_label: "Manual Needed When",
 444  help_agri_label: "Why It Matters",
 445  help_tab_simple: "Simple",
 446  help_tab_detail: "Detailed",
 447
 448  // Onboarding
 449  onboarding_step: "Step {n} of {total}",
 450  onboarding_skip: "Skip",
 451  onboarding_next: "Next",
 452  onboarding_finish: "Get Started!",
 453  onboarding_s1_title: "Welcome to Demeter! ЁЯМ▒",
 454  onboarding_s1_desc:
 455    "Your smart farm assistant. Demeter automatically monitors your crops and adjusts water, nutrients, and temperature - 24 hours a day. No manual work needed.",
 456  onboarding_s2_title: "Your Crop Dashboard",
 457  onboarding_s2_desc:
 458    "See all your crops at a glance. Each card shows the health of that crop:\n\nЁЯЯв Green (Healthy) - Everything is fine\nЁЯЯб Yellow (Attention) - Needs checking\nЁЯФ┤ Red (Critical) - Act immediately",
 459  onboarding_s3_title: "Adding a Crop",
 460  onboarding_s3_desc:
 461    'Tap "Add Crop" to register a new batch. Choose the crop type (Lettuce, Tomato, Basil, or Strawberry), give it a unique ID, and the system will set up everything automatically - cycle duration, default sensors, and growth tracking. Once registered, you can run AI monitoring cycles from the crop\'s detail page.',
 462  onboarding_s4_title: "Alerts Keep You Informed",
 463  onboarding_s4_desc:
 464    "When a crop needs attention, a red number appears on the Alerts menu. Check it daily to keep your crops healthy. Critical alerts should be addressed immediately!",
 465  onboarding_s5_title: "Harvest Time ЁЯМ╛",
 466  onboarding_s5_desc:
 467    'When a crop is ready to harvest, a special banner will appear on your dashboard. The crop card will show a "HARVEST READY" badge so you never miss the right moment.',
 468  onboarding_s6_title: "Always Here to Help",
 469  onboarding_s6_desc:
 470    "Stuck on a farming term or need quick advice? Check out our Help & Glossary for simple explanations, or ask our Farm Intelligence AI for instant, personalized guidance.",
 471
 472  // Common
 473  common_loading: "LoadingтАж",
 474  common_back: "Back",
 475  common_enabled: "Enabled",
 476  common_disabled: "Disabled",
 477  common_showing_all: "Showing all",
 478  common_hiding_acked: "Hiding acknowledged",
 479  common_per_page: "per page",
 480  common_last: "Last",
 481  common_entries: "entries",
 482  common_live: "LIVE",
 483  common_all: "All",
 484  common_crop: "Crop",
 485  common_unknown: "Unknown",
 486  common_time_just_now: "just now",
 487  common_time_min_ago: "{n} min ago",
 488  common_time_hr_ago: "{n} hr ago",
 489  common_time_day_ago: "1 day ago",
 490  common_time_days_ago: "{n} days ago",
 491};
 492
 493const hi = {
 494  // Navigation & Sidebar
 495  nav_crops: "рдлрд╕рд▓реЗрдВ",
 496  nav_alerts: "рдЕрд▓рд░реНрдЯ",
 497  nav_analytics: "рд╡рд┐рд╢реНрд▓реЗрд╖рдг",
 498  nav_intelligence: "рдмреБрджреНрдзрд┐рдорддреНрддрд╛",
 499  nav_settings: "рд╕реЗрдЯрд┐рдВрдЧреНрд╕",
 500  nav_help: "рд╕рд╣рд╛рдпрддрд╛",
 501  nav_system_online: "рд╕рд┐рд╕реНрдЯрдо рдЪрд╛рд▓реВ рд╣реИ",
 502  nav_alert_status: "рдЕрд▓рд░реНрдЯ рд╕реНрдерд┐рддрд┐",
 503  nav_crops_need_attention: "{n} рдлрд╕рд▓{s} рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ",
 504  nav_all_clear: "рд╕рдм рдареАрдХ рд╣реИ",
 505  nav_harvest_ready: "ЁЯМ╛ {n} рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░",
 506  sidebar_agri_ai: "рдХреГрд╖рд┐┬╖рдПрдЖрдИ┬╖v2",
 507  sidebar_connecting: "рдЬреБрдбрд╝ рд░рд╣рд╛ рд╣реИтАж",
 508  sidebar_farm_online: "рдлрд╛рд░реНрдо рдСрдирд▓рд╛рдЗрди",
 509  sidebar_no_data: "рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ",
 510
 511  // Landing Page
 512  landing_hero_1: "рдпрд╣ рдлрд╛рд░реНрдо",
 513  landing_hero_2: "рдЦреБрдж",
 514  landing_hero_3: "рд╕реЛрдЪрддрд╛ рд╣реИред",
 515  landing_hero_sub:
 516    "рдбреЗрдореАрдЯрд░ рдПрдХ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рд╣рд╛рдЗрдбреНрд░реЛрдкреЛрдирд┐рдХ рдкреНрд░рдгрд╛рд▓реА рд╣реИред рд╕рд╛рдд рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ AI рдПрдЬреЗрдВрдЯ рдПрдХ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рд╕рдордЭрддреЗ рд╣реИрдВ рдФрд░ 24/7 рдЖрдкрдХреА рдлрд╕рд▓реЛрдВ рдХреЛ рдЗрд╖реНрдЯрддрдо рдХрд░рддреЗ рд╣реИрдВ - рдмрд┐рдирд╛ рдХрд┐рд╕реА рдорд╛рдирд╡реАрдп рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЗред",
 517  landing_enter_dash: "рдбреИрд╢рдмреЛрд░реНрдб рдЦреЛрд▓реЗрдВ",
 518  landing_intelligence: "рдмреБрджреНрдзрд┐рдорддреНрддрд╛",
 519  landing_active_crops: "рд╕рдХреНрд░рд┐рдп рдлрд╕рд▓реЗрдВ",
 520  landing_crop_types: "рдлрд╕рд▓реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░",
 521  landing_total_cycles: "рдХреБрд▓ рдЪрдХреНрд░",
 522  landing_active_alerts: "рд╕рдХреНрд░рд┐рдп рдЕрд▓рд░реНрдЯ",
 523  landing_capabilities: "// рдореБрдЦреНрдп рдХреНрд╖рдорддрд╛рдПрдВ",
 524  landing_live_feed: "рдбреЗрдореАрдЯрд░://рд▓рд╛рдЗрд╡-рдлреАрдб",
 525  landing_feature_rl: "рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдирд╛ (RL)",
 526  landing_feature_rl_desc: "рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмреИрдВрдбрд┐рдЯ рдЬреЛ рд╣рд░ рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рд╕реАрдЦрддрд╛ рд╣реИ",
 527  landing_feature_cv: "рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрди",
 528  landing_feature_cv_desc: "Azure CV рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдмреАрдорд╛рд░реА рдкрд╣рдЪрд╛рди",
 529  landing_feature_vector: "рд╡реЗрдХреНрдЯрд░ рдореЗрдореЛрд░реА",
 530  landing_feature_vector_desc: "Qdrant рдЖрдзрд╛рд░рд┐рдд рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдкреМрдзреЗ рдХреА рдЬреАрд╡рдирд┐рдпрд╛рдВ",
 531  landing_feature_sim: "рднреМрддрд┐рдХреА рд╕рд┐рдореБрд▓реЗрд╢рди",
 532  landing_feature_sim_desc: "рд╣рд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗ рдкрд╣рд▓реЗ LLM-рдЖрдзрд╛рд░рд┐рдд рдбрд┐рдЬрд┐рдЯрд▓ рдЬреБрдбрд╝рд╡рд╛рдВ",
 533  landing_optimal: "тЧП рдЗрд╖реНрдЯрддрдо",
 534  landing_alert: "тЧП рдЕрд▓рд░реНрдЯ",
 535  landing_recent_activity: "рд╣рд╛рд▓ рдХреА рдПрдЬреЗрдВрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐",
 536  landing_no_cycles: "рдЕрднреА рддрдХ рдХреЛрдИ рдЪрдХреНрд░ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред",
 537
 538  // Dashboard
 539  dash_title: "рдлрд╕рд▓реЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди",
 540  dash_subtitle: "{total} рдореЗрдВ рд╕реЗ {filtered} рдлрд╕рд▓реЗрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИрдВ",
 541  dash_add_crop: "рдлрд╕рд▓ рдЬреЛрдбрд╝реЗрдВ",
 542  dash_search_placeholder: "рдлрд╕рд▓ рдЦреЛрдЬреЗрдВ...",
 543  dash_filters: "рдлрд╝рд┐рд▓реНрдЯрд░",
 544  dash_clear_all: "рд╕рднреА рд╣рдЯрд╛рдПрдВ",
 545  dash_healthy: "рд╕реНрд╡рд╕реНрде",
 546  dash_attention: "рдзреНрдпрд╛рди рджреЗрдВ",
 547  dash_critical: "рдЧрдВрднреАрд░",
 548  dash_maturity: "рдкрд░рд┐рдкрдХреНрд╡рддрд╛",
 549  dash_days_left: "{n} рджрд┐рди рдмрд╛рдХреА",
 550  dash_ready: "рддреИрдпрд╛рд░",
 551  dash_no_crops: "рдХреЛрдИ рдлрд╕рд▓ рдирд╣реАрдВ",
 552  dash_no_crops_sub: "рдЕрдкрдиреА рдкрд╣рд▓реА рдлрд╕рд▓ рдЬреЛрдбрд╝рдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВ",
 553  dash_add_first: "рдкрд╣рд▓реА рдлрд╕рд▓ рдЬреЛрдбрд╝реЗрдВ",
 554  dash_no_match: "рдХреЛрдИ рдлрд╕рд▓ рдирд╣реАрдВ рдорд┐рд▓реА",
 555  dash_clear_filters: "рдлрд╝рд┐рд▓реНрдЯрд░ рд╣рдЯрд╛рдПрдВ",
 556  dash_harvest_banner: "{n} рдлрд╕рд▓{s} рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░!",
 557  dash_harvest_badge: "рдХрдЯрд╛рдИ рддреИрдпрд╛рд░",
 558  dash_harvest_banner_sub: "рдлрд╕рд▓ рдХрд╛рд░реНрдб рджрдмрд╛рдПрдВ рдФрд░ рдХрдЯрд╛рдИ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ",
 559  dash_harvest_action: "рддреИрдпрд╛рд░ рдлрд╕рд▓реЗрдВ рджреЗрдЦреЗрдВ",
 560  dash_status_growing: "рдмрдврд╝ рд░рд╣реА рд╣реИ",
 561
 562  // Crop Details
 563  details_not_found: "рдлрд╕рд▓ рдирд╣реАрдВ рдорд┐рд▓реА",
 564  details_live: "рд▓рд╛рдЗрд╡",
 565  details_tab_overview: "рдЕрд╡рд▓реЛрдХрди",
 566  details_tab_sensors: "рд╕реЗрдВрд╕рд░",
 567  details_tab_log: "рд▓реЙрдЧ",
 568  details_ai_reasoning: "AI рдирд┐рд░реНрдгрдп рддрд░реНрдХ",
 569  details_chain_thought: "рдПрдХреНрд╕реНрдкреНрд▓реЗрдирд░ рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╡рд┐рдЪрд╛рд░-рд╢реНрд░реГрдВрдЦрд▓рд╛",
 570  details_expand: "рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ",
 571  details_collapse: "рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░реЗрдВ",
 572  details_pending_exp:
 573    "рдПрдЬреЗрдВрдЯ рдХреЗ рдкрд╣рд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рдж рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред",
 574  details_hist_ph: "рдРрддрд┐рд╣рд╛рд╕рд┐рдХ pH рдЧреНрд░рд╛рдл",
 575  details_latest_cmd: "рдирд╡реАрдирддрдо рдПрдХреНрдЪреБрдПрдЯрд░ рдХрдорд╛рдВрдб",
 576  details_temp_hum: "рддрд╛рдкрдорд╛рди рдФрд░ рдирдореА",
 577  details_ec_conc: "EC рд╕рд╛рдВрджреНрд░рддрд╛",
 578  details_event_log:
 579    "рдЗрд╡реЗрдВрдЯ рд▓реЙрдЧ - {total} рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ (рдЕрдВрддрд┐рдо {limit} рджрд┐рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ)",
 580  details_hide: "рдЫрд┐рдкрд╛рдПрдВ",
 581  details_why: "рдХреНрдпреЛрдВ?",
 582  details_more_lines: "+ {n} рдФрд░ рдкрдВрдХреНрддрд┐рдпрд╛рдВ",
 583
 584  // CropDetails - Info tab
 585  details_tab_info: "рдЬрд╛рдирдХрд╛рд░реА",
 586  details_planted: "рдмреЛрдпрд╛ рдЧрдпрд╛",
 587  details_cycle_duration: "рдЪрдХреНрд░ рдЕрд╡рдзрд┐",
 588  details_location: "рд╕реНрдерд╛рди",
 589  details_total_sequences: "рдХреБрд▓ рдЕрдиреБрдХреНрд░рдо",
 590  details_sensor_hardware: "рд╕реЗрдВрд╕рд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░",
 591  details_sensor_online: "рдСрдирд▓рд╛рдЗрди",
 592  details_days_since: "{n} рджрд┐рди рдмреЛрдиреЗ рдХреЗ рдмрд╛рдж",
 593  details_days_remain: "{n} рджрд┐рди рд╢реЗрд╖",
 594  details_notes: "рдиреЛрдЯреНрд╕",
 595  details_run_cycle_btn: "рдПрдЬреЗрдВрдЯ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
 596  details_lifecycle_progress: "рдЬреАрд╡рдирдЪрдХреНрд░ рдкреНрд░рдЧрддрд┐",
 597  details_hours_per_cycle: "рдкреНрд░рддрд┐ рдЪрдХреНрд░ {n} рдШрдВрдЯреЗ",
 598
 599  // Agent Widgets
 600  widget_acid: "рдПрд╕рд┐рдб рдЦреБрд░рд╛рдХ",
 601  widget_base: "рдмреЗрд╕ рдЦреБрд░рд╛рдХ",
 602  widget_nutrients: "рдкреЛрд╖рдХ рддрддреНрд╡",
 603  widget_fan: "рдкрдВрдЦреЗ рдХреА рдЧрддрд┐",
 604  widget_water: "рдкрд╛рдиреА рднрд░рдирд╛",
 605  widget_ph_down: "pH рдХрдо рдХрд░реЗрдВ",
 606  widget_ph_up: "pH рдмрдврд╝рд╛рдПрдВ",
 607  widget_ec_boost: "EC рдмрдврд╝рд╛рдПрдВ",
 608  widget_airflow: "рд╣рд╡рд╛ рдХрд╛ рдмрд╣рд╛рд╡",
 609  widget_dilution: "рдкрддрд▓рд╛рдкрди",
 610  outcome_improved: "рд╕реБрдзрд╛рд░ рд╣реБрдЖ",
 611  outcome_deteriorated: "рд╕реНрдерд┐рддрд┐ рдмрд┐рдЧрдбрд╝реА",
 612  outcome_stable: "рд╕реНрдерд┐рд░",
 613  reward_label: "рдЗрдирд╛рдо",
 614
 615  // Stages
 616  stage_all: "рд╕рднреА",
 617  stage_seedling: "рдЕрдВрдХреБрд░",
 618  stage_vegetative: "рд╡рд╛рдирд╕реНрдкрддрд┐рдХ",
 619  stage_flowering: "рдлреВрд▓",
 620  stage_fruiting: "рдлрд▓",
 621
 622  // Sensor readings
 623  sensor_temp: "рддрд╛рдкрдорд╛рди",
 624  sensor_ph: "pH рд╕реНрддрд░",
 625  sensor_ec: "EC",
 626  sensor_humidity: "рдирдореА",
 627  sensor_ph_desc: "рдкрд╛рдиреА рдХреА рдЕрдореНрд▓рддрд╛ - рд╕рд╣реА: 5.5 рд╕реЗ 6.5",
 628  sensor_ec_desc: "рдкрд╛рдиреА рдореЗрдВ рдкреЛрд╖рдХ рддрддреНрд╡ - рд╕рд╣реА: 0.8 рд╕реЗ 2.5",
 629  sensor_temp_desc: "рд╣рд╡рд╛ рдХрд╛ рддрд╛рдкрдорд╛рди - рд╕рд╣реА: 18┬░C рд╕реЗ 28┬░C",
 630  sensor_humidity_desc: "рд╣рд╡рд╛ рдореЗрдВ рдирдореА - рд╕рд╣реА: 40% рд╕реЗ 80%",
 631
 632  // Add Crop
 633  add_title: "рдирдИ рдлрд╕рд▓ рджрд░реНрдЬ рдХрд░реЗрдВ",
 634  add_subtitle: "рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдирдИ рдлрд╕рд▓ рджрд░реНрдЬ рдХрд░реЗрдВ",
 635  add_plant_image: "рдкреМрдзреЗ рдХреА рддрд╕реНрд╡реАрд░",
 636  add_drop_image: "рдлрд╕рд▓ рдХреА рддрд╕реНрд╡реАрд░ рдпрд╣рд╛рдБ рдбрд╛рд▓реЗрдВ",
 637  add_image_hint: "PNG рдпрд╛ JPG ┬╖ рдмреАрдорд╛рд░реА рдкрд╣рдЪрд╛рди рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ",
 638  add_sensor_params: "рд╕реЗрдВрд╕рд░ рд░реАрдбрд┐рдВрдЧ",
 639  add_start: "рдирд┐рдЧрд░рд╛рдиреА рд╢реБрд░реВ рдХрд░реЗрдВ",
 640  add_running: "AI рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИтАж",
 641  add_run_another: "рджреЛрдмрд╛рд░рд╛ рдЪрд▓рд╛рдПрдВ",
 642  add_view_dashboard: "рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдЬрд╛рдПрдВ",
 643  add_run_next: "рдЕрдЧрд▓рд╛ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
 644  add_cycle_done: "рдЪрдХреНрд░ рдкреВрд░рд╛ - рдлрд╕рд▓ рджрд░реНрдЬ рд╣реЛ рдЧрдИ тЬУ",
 645  add_cycle_fail: "рдПрдЬреЗрдВрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛",
 646  add_cycles_done: "{n} рдЪрдХреНрд░ рдкреВрд░реЗ",
 647  add_field_location: "рд╕реНрдерд╛рди",
 648  add_field_location_hint: "рдпрд╣ рдлрд╕рд▓ рдХрд╣рд╛рдБ рд░рдЦреА рд╣реИ",
 649  add_field_location_placeholder: "рдЬреИрд╕реЗ рд░реИрдХ A - рд╢реЗрд▓реНрдл 3",
 650  add_field_notes: "рдиреЛрдЯреНрд╕",
 651  add_field_notes_placeholder: "рдЗрд╕ рдмреИрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреЛрдЯреНрд╕",
 652  add_auto_cycle_duration: "рдЪрдХреНрд░ рдЕрд╡рдзрд┐ (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд)",
 653  add_auto_cycle_hint: "рдлрд╕рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░: {crop} рд╣рд░ {hours} рдШрдВрдЯреЗ рдореЗрдВ",
 654  add_register_btn: "рдлрд╕рд▓ рджрд░реНрдЬ рдХрд░реЗрдВ",
 655  add_registering: "рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ...",
 656  add_register_success: "рдлрд╕рд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рджрд░реНрдЬ рд╣реЛ рдЧрдИ!",
 657  add_run_first_cycle: "рдкрд╣рд▓рд╛ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
 658  add_lifecycle_label: "рд╡рд┐рдХрд╛рд╕ рд╕рдордпрд░реЗрдЦрд╛",
 659  add_crop_id_exists: "рдпрд╣ рдлрд╕рд▓ ID рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ",
 660
 661  // Add Crop fields
 662  add_field_ph: "pH рд╕реНрддрд░",
 663  add_field_ec: "EC (рдкреЛрд╖рдХ рддрддреНрд╡)",
 664  add_field_temp: "рддрд╛рдкрдорд╛рди (┬░C)",
 665  add_field_humidity: "рдирдореА (%)",
 666  add_field_crop_type: "рдлрд╕рд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░",
 667  add_field_stage: "рд╡рд┐рдХрд╛рд╕ рдЕрд╡рд╕реНрдерд╛",
 668  add_field_crop_id: "рдмреИрдЪ / ID",
 669  add_field_stage_hint:
 670    "рдЕрдВрдХреБрд░ = рдЕрднреА рдмреЛрдпрд╛ ┬╖ рд╡рд╛рдирд╕реНрдкрддрд┐рдХ = рдкрддреНрддрд┐рдпрд╛рдВ ┬╖ рдлреВрд▓ = рдлреВрд▓ ┬╖ рдлрд▓ = рдлрд▓",
 671  add_field_crop_id_hint: "рдЗрд╕ рдлрд╕рд▓ рдмреИрдЪ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рджреЗрдВ",
 672  add_field_crop_id_placeholder: "рдЬреИрд╕реЗ Batch_A1 (рд╡реИрдХрд▓реНрдкрд┐рдХ)",
 673
 674  // Add Crop pipeline phases
 675  add_phase_fetch: "рдбреЗрдЯрд╛ рд▓рд╛рдПрдВ",
 676  add_phase_judge: "рдЬрд╛рдВрдЪ",
 677  add_phase_strategy: "рд░рдгрдиреАрддрд┐",
 678  add_phase_research: "рдЕрдиреБрд╕рдВрдзрд╛рди",
 679  add_phase_plan: "рдпреЛрдЬрдирд╛",
 680  add_phase_execute: "рдХрд╛рд░реНрд░рд╡рд╛рдИ",
 681  add_log_live: "рдПрдЬреЗрдВрдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрди - рд▓рд╛рдЗрд╡",
 682  add_log_done: "рдЪрдХреНрд░ рдкреВрд░рд╛ рд╣реБрдЖ",
 683  add_log_idle: "рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд▓реЙрдЧ",
 684  add_log_lines: "{n} рдкрдВрдХреНрддрд┐рдпрд╛рдВ",
 685  add_actuator_dispatched: "рдПрдХреНрдЪреБрдПрдЯрд░ рдХрдорд╛рдВрдб рднреЗрдЬреЗ рдЧрдП",
 686
 687  // Run Cycle page
 688  run_title: "рдПрдЬреЗрдВрдЯ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
 689  run_subtitle: "{crop} рдХреЗ рд▓рд┐рдП AI рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
 690  run_for_crop: "рдлрд╕рд▓: {crop} рдХреЗ рд▓рд┐рдП",
 691  run_loading_crop: "рдлрд╕рд▓ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИтАж",
 692  run_growth_progress: "рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдЧрддрд┐",
 693  run_streaming: "рд▓рд╛рдЗрд╡",
 694  run_log_waiting: "рдПрдЬреЗрдВрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛тАж",
 695  run_cycles_complete: "{n} рдЪрдХреНрд░ рдкреВрд░реЗ рд╣реБрдП",
 696  run_agents_working: "рдПрдЬреЗрдВрдЯ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВтАж",
 697  run_harvest_ready: "тЬВ рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░",
 698  run_days_until: "рдХрдЯрд╛рдИ рдореЗрдВ {n} рджрд┐рди рдмрд╛рдХреА",
 699
 700  // Alerts
 701  alerts_title: "рдЕрд▓рд░реНрдЯ",
 702  alerts_subtitle_loading: "рд╕реЗрдВрд╕рд░ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рдЬрд╛рдВрдЪ рд╣реЛ рд░рд╣реА рд╣реИтАж",
 703  alerts_subtitle: "{unacked} рдЕрдирджреЗрдЦреЗ ┬╖ {total} рдХреБрд▓",
 704  alerts_ack_all: "рд╕рднреА рджреЗрдЦреЗ",
 705  alerts_ack_all_btn: "рд╕рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ",
 706  alerts_unacked: "рдЕрдирджреЗрдЦреЗ ┬╖ {n}",
 707  alerts_acknowledged: "рджреЗрдЦреЗ рдЧрдП ┬╖ {n}",
 708  alerts_empty_connected: "рдЪреБрдиреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдм рдареАрдХ рд╣реИ",
 709  alerts_empty_nodata: "рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ - рдлрд╛рд░реНрдо рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
 710  alerts_unacked_only: "рдХреЗрд╡рд▓ рдЕрдирджреЗрдЦреЗ",
 711  alerts_show_all: "рд╕рднреА",
 712  alerts_filter_harvest: "ЁЯМ╛ рдХрдЯрд╛рдИ",
 713  alerts_filter_warning: "рдЪреЗрддрд╛рд╡рдиреА",
 714  alerts_filter_info: "рдЬрд╛рдирдХрд╛рд░реА",
 715  alerts_crop_label: "рдлрд╕рд▓: {crop}",
 716  alerts_severity_critical: "рдЧрдВрднреАрд░",
 717  alerts_severity_warning: "рдЪреЗрддрд╛рд╡рдиреА",
 718  alerts_severity_info: "рдЬрд╛рдирдХрд╛рд░реА",
 719  alerts_severity_harvest: "рдХрдЯрд╛рдИ",
 720
 721  // Alert titles & descriptions
 722  alert_harvest_title: "рдлрд╕рд▓ рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░",
 723  alert_harvest_desc: "{crop} ({id}) рдХреА рдкрд░рд┐рдкрдХреНрд╡рддрд╛ {pct}% - рдХрдЯрд╛рдИ рдХрд╛ рд╕рдордп!",
 724  alert_ph_low_title: "pH рдмрд╣реБрдд рдХрдо",
 725  alert_ph_low_desc: "{crop} ({id}): pH {val} - рддреБрд░рдВрдд рдмреЗрд╕ рдбреЛрдЬрд╝рд┐рдВрдЧ рдЬрд░реВрд░реАред",
 726  alert_ph_high_title: "pH рдмрд╣реБрдд рдЕрдзрд┐рдХ",
 727  alert_ph_high_desc: "{crop} ({id}): pH {val} - рддреБрд░рдВрдд рдПрд╕рд┐рдб рдбреЛрдЬрд╝рд┐рдВрдЧ рдЬрд░реВрд░реАред",
 728  alert_ec_high_title: "EC рдЦрддрд░рдирд╛рдХ рд╕реНрддрд░ рдкрд░",
 729  alert_ec_high_desc: "{crop} ({id}): EC {val} dS/m - рдкреЛрд╖рдХ рддрддреНрд╡ рдЬрд▓рдиреЗ рдХрд╛ рдЦрддрд░рд╛ред",
 730  alert_temp_cold_title: "рддрд╛рдкрдорд╛рди рдмрд╣реБрдд рдХрдо",
 731  alert_temp_cold_desc:
 732    "{crop} ({id}): рддрд╛рдкрдорд╛рди {val}┬░C - рдЬрдбрд╝реЗрдВ рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддреА рд╣реИрдВред",
 733  alert_temp_hot_title: "рддрд╛рдкрдорд╛рди рдмрд╣реБрдд рдЕрдзрд┐рдХ",
 734  alert_temp_hot_desc:
 735    "{crop} ({id}): рддрд╛рдкрдорд╛рди {val}┬░C - рдЧрд░реНрдореА рдХрд╛ рддрдирд╛рд╡ рдФрд░ рдЬрдбрд╝ рд╕рдбрд╝рдиреЗ рдХрд╛ рдЦрддрд░рд╛ред",
 736  alert_disease_title: "рдмреАрдорд╛рд░реА рдпрд╛ рдХреАрдЯ рдкрд╛рдпрд╛ рдЧрдпрд╛",
 737  alert_disease_desc: '{crop} ({id}): рджреГрд╢реНрдп рдЕрд╕рд╛рдорд╛рдиреНрдпрддрд╛ред рдкрд░рд┐рдгрд╛рдо: "{outcome}"',
 738  alert_cycle_fail_title: "рдЪрдХреНрд░ рд╡рд┐рдлрд▓",
 739  alert_cycle_fail_desc: '{crop} ({id}): рдЪрдХреНрд░ #{seq} рдкрд░рд┐рдгрд╛рдо: "{outcome}"',
 740  alert_ph_warn_low_title: "pH рдЗрд╖реНрдЯрддрдо рд╕реЗ рдХрдо",
 741  alert_ph_warn_desc: "{crop} ({id}): pH {val}ред рд▓рдХреНрд╖реНрдп: 5.5-6.5ред",
 742  alert_ph_warn_high_title: "pH рдЗрд╖реНрдЯрддрдо рд╕реЗ рдЕрдзрд┐рдХ",
 743  alert_ec_warn_title: "EC рд╕реАрдорд╛ рдХреЗ рдкрд╛рд╕",
 744  alert_ec_warn_desc:
 745    "{crop} ({id}): EC {val} dS/m - рдкреЛрд╖рдХ рддрддреНрд╡ рдЬрд▓рдиреЗ рдХрд╛ рдЦрддрд░рд╛ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред",
 746  alert_temp_warn_low_title: "рддрд╛рдкрдорд╛рди рдереЛрдбрд╝рд╛ рдХрдо",
 747  alert_temp_warn_low_desc: "{crop} ({id}): {val}┬░C - рдзреАрдореА рд╡реГрджреНрдзрд┐ рд╕рдВрднрд╡ред",
 748  alert_temp_warn_high_title: "рддрд╛рдкрдорд╛рди рдмрдврд╝рд╛ рд╣реБрдЖ",
 749  alert_temp_warn_high_desc: "{crop} ({id}): {val}┬░C - рдЧрд░реНрдореА рдХрд╛ рддрдирд╛рд╡ рд╕рдВрднрд╡ред",
 750  alert_deteriorating_title: "рд╕реНрдерд┐рддрд┐ рдмрд┐рдЧрдбрд╝ рд░рд╣реА рд╣реИ",
 751  alert_deteriorating_desc: '{crop} ({id}): рдЪрдХреНрд░ #{seq} - "{outcome}"',
 752  alert_cycle_done_title: "рдЪрдХреНрд░ #{seq} рдкреВрд░рд╛",
 753  alert_cycle_done_desc: "{crop} ({id}): рдЕрдиреБрдХреНрд░рдо рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ред {extra}",
 754
 755  // Analytics
 756  analytics_title: "рд╡рд┐рд╢реНрд▓реЗрд╖рдг",
 757  analytics_subtitle_loading: "рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИтАж",
 758  analytics_subtitle: "{crops} рдлрд╕рд▓реЛрдВ рдХреЗ {points} рдбреЗрдЯрд╛",
 759  analytics_export: "CSV рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ",
 760  analytics_avg_ph: "рдФрд╕рдд pH",
 761  analytics_avg_ec: "рдФрд╕рдд EC",
 762  analytics_avg_temp: "рдФрд╕рдд рддрд╛рдкрдорд╛рди",
 763  analytics_total_seq: "рдХреБрд▓ рдЪрдХреНрд░",
 764  analytics_vs_prior: "% рдкрд╣рд▓реЗ рд╕реЗ",
 765  analytics_trace: "{range} рдЧреНрд░рд╛рдл",
 766  analytics_ph_over_time: "pH рд╕рдордп рдХреЗ рд╕рд╛рде",
 767  analytics_ec_conc: "EC рд╕рд╛рдВрджреНрд░рддрд╛",
 768  analytics_temp_hum: "рддрд╛рдкрдорд╛рди рдФрд░ рдирдореА",
 769  analytics_daily_act: "рджреИрдирд┐рдХ рдЧрддрд┐рд╡рд┐рдзрд┐",
 770  analytics_seq_per_day: "рдкреНрд░рддрд┐ рджрд┐рди рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЪрдХреНрд░",
 771  analytics_param_health: "рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп",
 772  analytics_in_range_score: "рд╕реАрдорд╛ рдореЗрдВ рд╕реНрдХреЛрд░ (%)",
 773  analytics_per_crop: "рдкреНрд░рддрд┐ рдлрд╕рд▓",
 774  analytics_latest_sensor: "рдирд╡реАрдирддрдо рд╕реЗрдВрд╕рд░ рд╕рд╛рд░рд╛рдВрд╢",
 775  analytics_derived_act: "рд╕рдВрдЧреНрд░рд╣реАрдд рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд",
 776  analytics_agent_act: "рдПрдЬреЗрдВрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐",
 777  analytics_no_data_range: "рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ",
 778  analytics_no_data_days: "рдХрдо рд╕реЗ рдХрдо 2 рджрд┐рди рдХрд╛ рдбреЗрдЯрд╛ рдЪрд╛рд╣рд┐рдП",
 779  analytics_no_data_points: "рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реИрдВ",
 780  analytics_th_crop_id: "рдлрд╕рд▓ ID",
 781  analytics_th_type: "рдкреНрд░рдХрд╛рд░",
 782  analytics_th_stage: "рдЕрд╡рд╕реНрдерд╛",
 783  analytics_th_ph: "pH",
 784  analytics_th_ec: "EC",
 785  analytics_th_temp: "рддрд╛рдкрдорд╛рди",
 786  analytics_th_seq: "рдЪрдХреНрд░",
 787  analytics_th_agent: "рдПрдЬреЗрдВрдЯ",
 788  analytics_th_apps: "рдЙрдкрд╕реНрдерд┐рддрд┐",
 789  analytics_th_success: "рд╕рдлрд▓рддрд╛ рджрд░",
 790  analytics_th_status: "рд╕реНрдерд┐рддрд┐",
 791  analytics_online: "рдСрдирд▓рд╛рдЗрди",
 792
 793  // Charts
 794  chart_temp: "рддрд╛рдкрдорд╛рди ┬░C",
 795  chart_humidity: "рдирдореА %",
 796  chart_ec: "EC dS/m",
 797  chart_ph: "pH",
 798  chart_sequences: "рдЪрдХреНрд░",
 799  chart_in_range: "рд╕реАрдорд╛ рдореЗрдВ %",
 800
 801  // Intelligence
 802  intel_title: "рдлрд╛рд░реНрдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛",
 803  intel_subtitle: "рдлрд╕рд▓реЗрдВ рдЦреЛрдЬреЗрдВ ┬╖ Demeter рд╕реЗ рдкреВрдЫреЗрдВ ┬╖ рдкреИрдЯрд░реНрди рджреЗрдЦреЗрдВ",
 804  intel_search: "рдЦреЛрдЬреЗрдВ",
 805  intel_ask_ai: "AI рд╕реЗ рдкреВрдЫреЗрдВ",
 806  intel_total_crops: "рдХреБрд▓ рдлрд╕рд▓реЗрдВ",
 807  intel_healthy: "рд╕реНрд╡рд╕реНрде",
 808  intel_needs_attention: "рдзреНрдпрд╛рди рдЪрд╛рд╣рд┐рдП",
 809  intel_critical: "рдЧрдВрднреАрд░",
 810  intel_fleet_wide: "рд╕рднреА рдлрд╕рд▓реЗрдВ",
 811  intel_crop_aware: "рдлрд╕рд▓-рд╡рд┐рд╢реЗрд╖",
 812  intel_search_placeholder: "рдлрд╕рд▓реЗрдВ рдЦреЛрдЬреЗрдВ - 'рдЯрдорд╛рдЯрд░ рджрд┐рдЦрд╛рдПрдВ'...",
 813  intel_ask_placeholder_fleet: "рдЕрдкрдиреЗ рдлрд╛рд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВ...",
 814  intel_ask_placeholder_crop: "{crop} рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВтАж",
 815  intel_filter_by: "рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ:",
 816  intel_ask_about: "рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫреЗрдВ:",
 817  intel_context_loaded: "рд╕рдВрджрд░реНрдн рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛",
 818  intel_heard: "рд╕реБрдирд╛:",
 819  intel_suggested_global: "рддреНрд╡рд░рд┐рдд рдкреНрд░рд╢реНрди",
 820  intel_suggested_crop: "{crop} рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рдП рдЧрдП рдкреНрд░рд╢реНрди",
 821  intel_results_found: "{n} рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ",
 822  intel_no_results: "рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ",
 823  intel_view_logic: "рдХреНрд╡реЗрд░реА рддрд░реНрдХ рджреЗрдЦреЗрдВ",
 824  intel_hide_logic: "рдХреНрд╡реЗрд░реА рддрд░реНрдХ рдЫрд┐рдкрд╛рдПрдВ",
 825  intel_qdrant_filter: "Qdrant рдлрд╝рд┐рд▓реНрдЯрд░",
 826  intel_no_match: "рдХреЛрдИ рдлрд╕рд▓ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА",
 827  intel_try_ask: "рдЗрд╕рдХреЗ рдмрдЬрд╛рдп AI рд╕реЗ рдкреВрдЫреЗрдВ",
 828  intel_empty_ask_title: "Demeter рд╕реЗ рдЕрдкрдиреЗ рдлрд╛рд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВ",
 829  intel_empty_search_title: "рдЕрдкрдиреЗ рдлрд╕рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЦреЛрдЬреЗрдВ",
 830  intel_empty_ask_desc:
 831    "рд▓рдХреНрд╖рд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╕рд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдпрд╛ рдкреВрд░реЗ рдлрд╛рд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВред AI рд▓рд╛рдЗрд╡ рд╕реЗрдВрд╕рд░ рдбреЗрдЯрд╛, рдПрдЬреЗрдВрдЯ рдирд┐рд░реНрдгрдпреЛрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред",
 832  intel_empty_search_desc:
 833    "рдкреНрд░рдХрд╛рд░, рдЕрд╡рд╕реНрдерд╛, рд╕реНрдерд┐рддрд┐ рдпрд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╕рд▓реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред",
 834  intel_ai_reasoning: "рд╕реЛрдЪрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛",
 835  intel_steps: "{n} рдЪрд░рдг",
 836  intel_similar_crops: "рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдорд╛рди рдлрд╕рд▓реЗрдВ",
 837  intel_match: "{n}% рдореЗрд▓",
 838  intel_last_cmd: "рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб",
 839  intel_all_crops_filter: "рд╕рднреА рдлрд╕рд▓реЗрдВ",
 840  intel_all_crops_desc: "рдкреВрд░реЗ рдлрд╛рд░реНрдо рдореЗрдВ рдЦреЛрдЬреЗрдВ",
 841  intel_thinking: "рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ",
 842  intel_demeter: "рдбреЗрдореАрдЯрд░",
 843  intel_select_crop: "рдлрд╕рд▓ рдЪреБрдиреЗрдВ (рдХреБрд▓ {n})",
 844  intel_fleet_query: "рд╕рднреА рдлрд╕рд▓реЛрдВ рдореЗрдВ рдЦреЛрдЬреЗрдВ",
 845  intel_logic_header: "рдХреНрд╡реЗрд░реА рдЕрдиреБрд╡рд╛рдж рддрд░реНрдХ",
 846  intel_query_logic: "рдХреНрд╡реЗрд░реА рддрд░реНрдХ",
 847  intel_no_response: "рдХреЛрдИ рдЙрддреНрддрд░ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реБрдЖред",
 848  intel_llm_fail: "рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ред рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдХрдиреЗрдХреНрд╢рди рдЬрд╛рдВрдЪреЗрдВред",
 849  intel_llm_fail_toast: "LLM рдХреНрд╡реЗрд░реА рд╡рд┐рдлрд▓",
 850  intel_search_fail_toast: "рдЦреЛрдЬ рд╡рд┐рдлрд▓",
 851  intel_context: "рд╕рдВрджрд░реНрдн",
 852
 853  // Suggested questions
 854  sug_g1: "рд╕рднреА рдлрд╕рд▓реЗрдВ рджрд┐рдЦрд╛рдПрдВ",
 855  sug_g2: "рдХреМрди рд╕реА рдлрд╕рд▓реЗрдВ рдЧрдВрднреАрд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ?",
 856  sug_g3: "рдлреВрд▓ рдЖрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рд╡рд╛рд▓реА рдлрд╕рд▓реЗрдВ рдЦреЛрдЬреЗрдВ",
 857  sug_g4: "рд╣рд╛рд▓ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ",
 858  sug_g5: "рдЯрдорд╛рдЯрд░ рдХреЗ рдмреИрдЪ рджрд┐рдЦрд╛рдПрдВ",
 859  sug_g6: "рдЙрдЪреНрдЪ EC рд╡рд╛рд▓реА рдлрд╕рд▓реЗрдВ рдЦреЛрдЬреЗрдВ",
 860  sug_c1: "рд╣рдордиреЗ {crop} рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рдХреНрдпреЛрдВ рд▓рд┐рдпрд╛?",
 861  sug_c2: "{crop} рдХреА рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ",
 862  sug_c3: "рдХреНрдпрд╛ {crop} рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд░рд╣реА рд╣реИ?",
 863  sug_c4: "{crop} рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдХрд┐рд╕ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП?",
 864  sug_c5: "рд╣рд╛рд▓ рд╣реА рдореЗрдВ {crop} рдХрд╛ рд░реБрдЭрд╛рди рдХреИрд╕рд╛ рд░рд╣рд╛ рд╣реИ?",
 865  sug_c6: "{crop} рдХреА рддреБрд▓рдирд╛ рд╕рдорд╛рди рдлрд╕рд▓реЛрдВ рд╕реЗ рдХрд░реЗрдВ",
 866
 867  // Settings
 868  settings_title: "рд╕реЗрдЯрд┐рдВрдЧреНрд╕",
 869  settings_subtitle: "рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ, рджрд┐рдЦрд╛рд╡рдЯ рдФрд░ рдЦрд╛рддрд╛",
 870  settings_save: "рдмрджрд▓рд╛рд╡ рд╕рд╣реЗрдЬреЗрдВ",
 871  settings_reset: "рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ",
 872  settings_saved: "рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛!",
 873  settings_profile: "рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓",
 874  settings_profile_sub: "рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдирд╛рдо рдФрд░ рдкрдж",
 875  settings_display_name: "рдирд╛рдо",
 876  settings_designation: "рдкрдж",
 877  settings_initials: "рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо",
 878  settings_initials_hint: "рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ (рдЕрдзрд┐рдХрддрдо 2 рдЕрдХреНрд╖рд░)",
 879  settings_appearance: "рджрд┐рдЦрд╛рд╡рдЯ",
 880  settings_appearance_sub: "рдереАрдо рдФрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╡рд┐рдХрд▓реНрдк",
 881  settings_theme: "рдереАрдо",
 882  settings_theme_hint: "рдРрдк рдХрд╛ рд░рдВрдЧ рдмрджрд▓реЗрдВ",
 883  settings_dark: "рдЧрд╣рд░рд╛",
 884  settings_light: "рд╣рд▓реНрдХрд╛",
 885  settings_system: "рд╕рд┐рд╕реНрдЯрдо",
 886  settings_compact: "рдХреЙрдореНрдкреИрдХреНрдЯ рдореЛрдб",
 887  settings_compact_hint: "рдХрдо рдЬрдЧрд╣ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдПрдВ",
 888  settings_language: "рднрд╛рд╖рд╛ / Language",
 889  settings_language_sub: "рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдЪреБрдиреЗрдВ",
 890  settings_lang_en: "English",
 891  settings_lang_hi: "рд╣рд┐рдВрджреА (Hindi)",
 892  settings_display_section: "рдбрд┐рд╕реНрдкреНрд▓реЗ",
 893  settings_display_sub: "рдкреЗрдЬ рдФрд░ рдкрд░рд┐рдгрд╛рдо",
 894  settings_max_crops: "рдкреНрд░рддрд┐ рдкреЗрдЬ рдЕрдзрд┐рдХрддрдо рдлрд╕рд▓реЗрдВ",
 895  settings_max_crops_hint: "рдбреИрд╢рдмреЛрд░реНрдб рдкреЗрдЬ рд╕рд╛рдЗрдЬрд╝",
 896  settings_history_limit: "рдЗрддрд┐рд╣рд╛рд╕ рд▓реЙрдЧ рд╕реАрдорд╛",
 897  settings_history_hint: "рдлрд╕рд▓ рд▓реЙрдЧ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдПрдВрдЯреНрд░реА",
 898  settings_alerts_section: "рдЕрд▓рд░реНрдЯ",
 899  settings_alerts_sub: "рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ",
 900  settings_show_acked: "рджреЗрдЦреЗ рдЧрдП рдЕрд▓рд░реНрдЯ рднреА рджрд┐рдЦрд╛рдПрдВ",
 901  settings_data_source: "рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд",
 902  settings_data_sub: "рдмреИрдХрдПрдВрдб рдХрдиреЗрдХреНрд╢рди",
 903  settings_mock_mode: "рдореЙрдХ рдбреЗрдЯрд╛ рдореЛрдб",
 904  settings_live_mode: "рд▓рд╛рдЗрд╡ рдмреИрдХрдПрдВрдб рдЬреБрдбрд╝рд╛ рд╣реИ",
 905  settings_mock_hint:
 906    "рд▓рд╛рдЗрд╡ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП mockData.js рдореЗрдВ USE_MOCK_DATA = false рдХрд░реЗрдВ",
 907  settings_onboarding: "рд╕рд╣рд╛рдпрддрд╛ рдФрд░ рдЧрд╛рдЗрдб",
 908  settings_onboarding_sub: "рд╕реНрд╡рд╛рдЧрдд рдЧрд╛рдЗрдб рджреЛрдмрд╛рд░рд╛ рджреЗрдЦреЗрдВ",
 909  settings_restart_onboarding: "рдЧрд╛рдЗрдб рджреЛрдмрд╛рд░рд╛ рд╢реБрд░реВ рдХрд░реЗрдВ",
 910
 911  // Help
 912  help_title: "рд╕рд╣рд╛рдпрддрд╛ рдФрд░ рд╢рдмреНрджрдХреЛрд╢",
 913  help_subtitle: "рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛",
 914  help_section_terms: "ЁЯУК рд╕реЗрдВрд╕рд░ рд╢рдмреНрдж рд╕рдордЭрд╛рдП рдЧрдП",
 915  help_section_agents: "ЁЯдЦ AI рдЖрдкрдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ",
 916  help_section_stages: "ЁЯМ▒ рд╡рд┐рдХрд╛рд╕ рдХреА рдЕрд╡рд╕реНрдерд╛рдПрдВ",
 917  help_section_manual: "ЁЯЦР рдЬрдм рдЖрдкрдХреЛ рдХрджрдо рдЙрдард╛рдирд╛ рд╣реЛ",
 918  help_section_ai_cta: "рдЕрднреА рднреА рд╕рд╡рд╛рд▓ рд╣реИрдВ?",
 919  help_ai_cta_desc:
 920    "рд╣рдорд╛рд░реЗ рдлрд╛рд░реНрдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ AI рд╕реЗ рдЕрдкрдиреА рдлрд╕рд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВ",
 921  help_ai_cta_btn: "AI рд╕реЗ рдкреВрдЫреЗрдВ тЖТ",
 922  help_range_label: "рдЖрджрд░реНрд╢ рд╕реАрдорд╛",
 923  help_low_label: "рдмрд╣реБрдд рдХрдо рд╣реЛ рддреЛ",
 924  help_high_label: "рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рддреЛ",
 925  help_ai_label: "AI рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ",
 926  help_manual_label: "рдорд╛рдирд╡реАрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрдм рдЬрд░реВрд░реА",
 927  help_agri_label: "рдпрд╣ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ",
 928  help_tab_simple: "рд╕рд░рд▓",
 929  help_tab_detail: "рд╡рд┐рд╕реНрддреГрдд",
 930
 931  // Onboarding
 932  onboarding_step: "рдЪрд░рдг {n} / {total}",
 933  onboarding_skip: "рдЫреЛрдбрд╝реЗрдВ",
 934  onboarding_next: "рдЕрдЧрд▓рд╛",
 935  onboarding_finish: "рд╢реБрд░реВ рдХрд░реЗрдВ!",
 936  onboarding_s1_title: "Demeter рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ! ЁЯМ▒",
 937  onboarding_s1_desc:
 938    "рдпрд╣ рдЖрдкрдХрд╛ рд╕реНрдорд╛рд░реНрдЯ рдлрд╛рд░реНрдо рд╕рд╣рд╛рдпрдХ рд╣реИред Demeter рдЖрдкрдХреА рдлрд╕рд▓реЛрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╛рдиреА, рдкреЛрд╖рдХ рддрддреНрд╡ рдФрд░ рддрд╛рдкрдорд╛рди рдХреЛ 24 рдШрдВрдЯреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред",
 939  onboarding_s2_title: "рдЖрдкрдХрд╛ рдлрд╕рд▓ рдбреИрд╢рдмреЛрд░реНрдб",
 940  onboarding_s2_desc:
 941    "рдпрд╣рд╛рдБ рд╕рднреА рдлрд╕рд▓реЗрдВ рдПрдХ рд╕рд╛рде рджреЗрдЦреЗрдВред рд╣рд░ рдХрд╛рд░реНрдб рдлрд╕рд▓ рдХреА рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:\n\nЁЯЯв рд╣рд░рд╛ (рд╕реНрд╡рд╕реНрде) - рд╕рдм рдареАрдХ рд╣реИ\nЁЯЯб рдкреАрд▓рд╛ (рдзреНрдпрд╛рди рджреЗрдВ) - рдЬрд╛рдВрдЪ рдЬрд░реВрд░реА\nЁЯФ┤ рд▓рд╛рд▓ (рдЧрдВрднреАрд░) - рддреБрд░рдВрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░реЗрдВ",
 942  onboarding_s3_title: "рдлрд╕рд▓ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ",
 943  onboarding_s3_desc:
 944    '"рдлрд╕рд▓ рдЬреЛрдбрд╝реЗрдВ" рдкрд░ рдЯреИрдк рдХрд░реЗрдВред рдлрд╕рд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЪреБрдиреЗрдВ (рд▓реЗрдЯреНрдпреВрд╕, рдЯрдорд╛рдЯрд░, рддреБрд▓рд╕реА рдпрд╛ рд╕реНрдЯреНрд░реЙрдмреЗрд░реА), рдПрдХ рдЕрдиреЛрдЦреА ID рджреЗрдВ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╕рдм рдХреБрдЫ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ - рдЪрдХреНрд░ рдЕрд╡рдзрд┐, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдВрд╕рд░, рдФрд░ рд╡рд┐рдХрд╛рд╕ рдЯреНрд░реИрдХрд┐рдВрдЧред рдПрдХ рдмрд╛рд░ рджрд░реНрдЬ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╕рд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдкреГрд╖реНрда рд╕реЗ AI рдирд┐рдЧрд░рд╛рдиреА рдЪрдХреНрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред',
 945  onboarding_s4_title: "рдЕрд▓рд░реНрдЯ рд╕реЗ рдЕрдкрдбреЗрдЯ рд░рд╣реЗрдВ",
 946  onboarding_s4_desc:
 947    "рдЬрдм рдХрд┐рд╕реА рдлрд╕рд▓ рдХреЛ рдзреНрдпрд╛рди рдХреА рдЬрд░реВрд░рдд рд╣реЛ, рдЕрд▓рд░реНрдЯ рдореЗрдиреВ рдкрд░ рд▓рд╛рд▓ рдирдВрдмрд░ рджрд┐рдЦреЗрдЧрд╛ред рдЕрдкрдиреА рдлрд╕рд▓реЗрдВ рд╕реНрд╡рд╕реНрде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдЬрд╝ рдЬрд╛рдВрдЪреЗрдВ!",
 948  onboarding_s5_title: "рдХрдЯрд╛рдИ рдХрд╛ рд╕рдордп ЁЯМ╛",
 949  onboarding_s5_desc:
 950    "рдЬрдм рдлрд╕рд▓ рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ, рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдПрдХ рдмреИрдирд░ рдФрд░ рдлрд╕рд▓ рдХрд╛рд░реНрдб рдкрд░ 'рдХрдЯрд╛рдИ рддреИрдпрд╛рд░' рдмреИрдЬ рджрд┐рдЦреЗрдЧрд╛ред рд╕рд╣реА рд╕рдордп рдкрд░ рдХрдЯрд╛рдИ рдХрднреА рди рдЪреВрдХреЗрдВ!",
 951  onboarding_s6_title: "рд╣рдореЗрд╢рд╛ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░",
 952  onboarding_s6_desc:
 953    "рдЦреЗрддреА рдХреЗ рдХрд┐рд╕реА рд╢рдмреНрдж рдХреЛ рд▓реЗрдХрд░ рдЙрд▓рдЭрди рдореЗрдВ рд╣реИрдВ рдпрд╛ рддреБрд░рдВрдд рд╕рд▓рд╛рд╣ рдЪрд╛рд╣рд┐рдП? рдЖрд╕рд╛рди рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рд╢рдмреНрджрдХреЛрд╢ рджреЗрдЦреЗрдВ, рдпрд╛ рддреБрд░рдВрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдлрд╛рд░реНрдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ AI рд╕реЗ рдкреВрдЫреЗрдВред",
 954
 955  // Common
 956  common_loading: "рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИтАж",
 957  common_back: "рд╡рд╛рдкрд╕",
 958  common_enabled: "рдЪрд╛рд▓реВ",
 959  common_disabled: "рдмрдВрдж",
 960  common_showing_all: "рд╕рднреА рджрд┐рдЦрд╛рдП",
 961  common_hiding_acked: "рджреЗрдЦреЗ рд╣реБрдП рдЫреБрдкрд╛рдП",
 962  common_per_page: "рдкреНрд░рддрд┐ рдкреЗрдЬ",
 963  common_last: "рдЕрдВрддрд┐рдо",
 964  common_entries: "рдПрдВрдЯреНрд░реА",
 965  common_live: "рд▓рд╛рдЗрд╡",
 966  common_all: "рд╕рднреА",
 967  common_crop: "рдлрд╕рд▓",
 968  common_unknown: "рдЕрдЬреНрдЮрд╛рдд",
 969  common_time_just_now: "рдЕрднреА-рдЕрднреА",
 970  common_time_min_ago: "{n} рдорд┐рдирдЯ рдкрд╣рд▓реЗ",
 971  common_time_hr_ago: "{n} рдШрдВрдЯреЗ рдкрд╣рд▓реЗ",
 972  common_time_day_ago: "1 рджрд┐рди рдкрд╣рд▓реЗ",
 973  common_time_days_ago: "{n} рджрд┐рди рдкрд╣рд▓реЗ",
 974};
 975
 976export const TRANSLATIONS = { en, hi };
 977
 978// Translates a key, replacing {placeholder} tokens
 979export function translate(lang, key, vars = {}) {
 980  const dict = TRANSLATIONS[lang] || TRANSLATIONS.en;
 981  let str = dict[key] ?? TRANSLATIONS.en[key] ?? key;
 982  Object.entries(vars).forEach(([k, v]) => {
 983    str = str.replace(new RegExp(`\\{${k}\\}`, "g"), String(v));
 984  });
 985  return str;
 986}
 987
 988// Dynamically translates known agent explanation strings, outcomes, and crops to Hindi
 989export function translateDynamic(text, lang) {
 990  if (!text || lang !== "hi") return text;
 991  let translated = text;
 992
 993  const replacements = [
 994    [/Observation/gi, "рдЕрд╡рд▓реЛрдХрди (Observation)"],
 995    [/Precedent/gi, "рдкреВрд░реНрд╡ рдЙрджрд╛рд╣рд░рдг (Precedent)"],
 996    [/Logic/gi, "рддрд░реНрдХ (Logic)"],
 997    [/Conclusion/gi, "рдирд┐рд╖реНрдХрд░реНрд╖ (Conclusion)"],
 998    [/Sensors show/gi, "рд╕реЗрдВрд╕рд░ рджрд┐рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ"],
 999    [/within acceptable range/gi, "рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реАрдорд╛ рдХреЗ рднреАрддрд░"],
1000    [/disease was detected/gi, "рдмреАрдорд╛рд░реА рдкрд╛рдИ рдЧрдИ"],
1001    [/Action Taken:/gi, "рдХреА рдЧрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ:"],
1002    [/Outcome:/gi, "рдкрд░рд┐рдгрд╛рдо:"],
1003    [/PENDING_ANALYSIS/gi, "рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рдВрдмрд┐рдд рд╣реИ..."],
1004    [/IMPROVED/gi, "рд╕реБрдзрд╛рд░ рд╣реБрдЖ"],
1005    [/DETERIORATED/gi, "рд╕реНрдерд┐рддрд┐ рдмрд┐рдЧрдбрд╝реА"],
1006    [/STABLE/gi, "рд╕реНрдерд┐рд░"],
1007    [/Reward:/gi, "рдЗрдирд╛рдо:"],
1008
1009    // Crops and Stages
1010    [/\bLettuce\b/gi, "рд▓реЗрдЯреНрдпреВрд╕ (Lettuce)"],
1011    [/\bTomato\b/gi, "рдЯрдорд╛рдЯрд░ (Tomato)"],
1012    [/\bCucumber\b/gi, "рдЦреАрд░рд╛ (Cucumber)"],
1013    [/\bBasil\b/gi, "рддреБрд▓рд╕реА (Basil)"],
1014    [/\bSpinach\b/gi, "рдкрд╛рд▓рдХ (Spinach)"],
1015    [/\bKale\b/gi, "рдХреЗрд▓ (Kale)"],
1016    [/\bStrawberry\b/gi, "рд╕реНрдЯреНрд░реЙрдмреЗрд░реА (Strawberry)"],
1017    [/\bPepper\b/gi, "рд╢рд┐рдорд▓рд╛ рдорд┐рд░реНрдЪ (Pepper)"],
1018    [/\bSeedling\b/gi, "рдЕрдВрдХреБрд░ (Seedling)"],
1019    [/\bVegetative\b/gi, "рд╡рд╛рдирд╕реНрдкрддрд┐рдХ (Vegetative)"],
1020    [/\bFlowering\b/gi, "рдлреВрд▓ (Flowering)"],
1021    [/\bFruiting\b/gi, "рдлрд▓ (Fruiting)"],
1022    [/\bUnknown\b/gi, "рдЕрдЬреНрдЮрд╛рдд"],
1023    [/\bHealthy\b/gi, "рд╕реНрд╡рд╕реНрде"],
1024    [/\bAttention\b/gi, "рдзреНрдпрд╛рди рджреЗрдВ"],
1025    [/\bCritical\b/gi, "рдЧрдВрднреАрд░"],
1026  ];
1027
1028  replacements.forEach(([regex, replacement]) => {
1029    translated = translated.replace(regex, replacement);
1030  });
1031
1032  return translated;
1033}