demeter

Autonomous Hydroponic Intelligence

translations.js (54359B)


   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
// Translations - English + Hindi

const en = {
  // Navigation & Sidebar
  nav_crops: "Crops",
  nav_alerts: "Alerts",
  nav_analytics: "Analytics",
  nav_intelligence: "Intelligence",
  nav_settings: "Settings",
  nav_help: "Help",
  nav_system_online: "SYSTEM ONLINE",
  nav_alert_status: "ALERT STATUS",
  nav_crops_need_attention: "{n} crop{s} need attention",
  nav_all_clear: "All clear",
  nav_harvest_ready: "ЁЯМ╛ {n} ready to harvest",
  sidebar_agri_ai: "AGRI┬╖AI┬╖v4",
  sidebar_connecting: "CONNECTINGтАж",
  sidebar_farm_online: "FARM ONLINE",
  sidebar_no_data: "NO DATA",

  // Landing Page
  landing_hero_1: "The Farm",
  landing_hero_2: "Thinks",
  landing_hero_3: "For Itself.",
  landing_hero_sub:
    "Demeter is a cognitive hydroponic system. Seven specialized AI agents collaborate to perceive, reason, and act - optimizing your crops 24/7 without human intervention.",
  landing_enter_dash: "Enter Dashboard",
  landing_intelligence: "Intelligence",
  landing_active_crops: "Active Crops",
  landing_crop_types: "Crop Types",
  landing_total_cycles: "Total Cycles",
  landing_active_alerts: "Active Alerts",
  landing_capabilities: "// CORE CAPABILITIES",
  landing_live_feed: "demeter://live-feed",
  landing_feature_rl: "Reinforcement Learning",
  landing_feature_rl_desc: "Contextual bandit that learns with every cycle",
  landing_feature_cv: "Computer Vision",
  landing_feature_cv_desc: "Azure CV-powered disease detection",
  landing_feature_vector: "Vector Memory",
  landing_feature_vector_desc: "Qdrant-backed long-term plant biographies",
  landing_feature_sim: "Physics Simulation",
  landing_feature_sim_desc: "LLM-based digital twin before every action",
  landing_optimal: "тЧП OPTIMAL",
  landing_alert: "тЧП ALERT",
  landing_recent_activity: "RECENT AGENT ACTIVITY",
  landing_no_cycles:
    "No cycles recorded yet. Run the agent loop to see activity.",

  // Dashboard
  dash_title: "Crops Overview",
  dash_subtitle: "{filtered} of {total} crops shown",
  dash_add_crop: "Add Crop",
  dash_search_placeholder: "Search crops, IDs, stagesтАж",
  dash_filters: "Filters",
  dash_clear_all: "Clear all",
  dash_healthy: "Healthy",
  dash_attention: "Attention",
  dash_critical: "Critical",
  dash_maturity: "Maturity",
  dash_days_left: "{n}d left",
  dash_ready: "Ready",
  dash_no_crops: "No crops yet",
  dash_no_crops_sub: "Start by adding your first crop batch",
  dash_add_first: "Add Your First Crop",
  dash_no_match: "No crops match your filters",
  dash_clear_filters: "Clear filters",
  dash_harvest_banner: "{n} crop{s} ready to harvest!",
  dash_harvest_badge: "HARVEST READY",
  dash_harvest_banner_sub: "Tap a crop card to view details and plan harvest",
  dash_harvest_action: "View Ready Crops",
  dash_status_growing: "Growing",

  // Crop Details
  details_not_found: "Crop not found",
  details_live: "LIVE",
  details_tab_overview: "Overview",
  details_tab_sensors: "Sensors",
  details_tab_log: "Log",
  details_ai_reasoning: "AI DECISION REASONING",
  details_chain_thought:
    "Chain-of-thought log generated by the Explainer agent",
  details_expand: "Expand",
  details_collapse: "Collapse",
  details_pending_exp:
    "Explanation will be generated after the agent completes its first analysis cycle for this crop.",
  details_hist_ph: "HISTORICAL pH TRACE",
  details_latest_cmd: "LATEST ACTUATOR COMMAND",
  details_temp_hum: "TEMP & HUMIDITY",
  details_ec_conc: "EC CONCENTRATION",
  details_event_log: "EVENT LOG - {total} ENTRIES (showing last {limit})",
  details_hide: "Hide",
  details_why: "Why?",
  details_more_lines: "+ {n} more lines",

  // CropDetails - Info tab
  details_tab_info: "Info",
  details_planted: "Planted",
  details_cycle_duration: "Cycle Duration",
  details_location: "Location",
  details_total_sequences: "Total Sequences",
  details_sensor_hardware: "SENSOR HARDWARE",
  details_sensor_online: "Online",
  details_days_since: "{n} days since planting",
  details_days_remain: "{n} days remaining",
  details_notes: "Notes",
  details_run_cycle_btn: "Run Agent Cycle",
  details_lifecycle_progress: "Lifecycle Progress",
  details_hours_per_cycle: "{n}h per cycle",

  // Agent Widgets
  widget_acid: "Acid Dosage",
  widget_base: "Base Dosage",
  widget_nutrients: "Nutrients",
  widget_fan: "Fan Speed",
  widget_water: "Water Refill",
  widget_ph_down: "pH Down",
  widget_ph_up: "pH Up",
  widget_ec_boost: "EC Boost",
  widget_airflow: "Airflow",
  widget_dilution: "Dilution",
  outcome_improved: "IMPROVED",
  outcome_deteriorated: "DETERIORATED",
  outcome_stable: "STABLE",
  reward_label: "Reward",

  // Stages
  stage_all: "All",
  stage_seedling: "Seedling",
  stage_vegetative: "Vegetative",
  stage_flowering: "Flowering",
  stage_fruiting: "Fruiting",

  // Sensor readings
  sensor_temp: "Temperature",
  sensor_ph: "pH Level",
  sensor_ec: "EC",
  sensor_humidity: "Humidity",
  sensor_ph_desc: "Water acidity - ideal range: 5.5 to 6.5",
  sensor_ec_desc: "Nutrient strength in water - ideal: 0.8 to 2.5 dS/m",
  sensor_temp_desc: "Air temperature - ideal: 18┬░C to 28┬░C",
  sensor_humidity_desc: "Moisture in air - ideal: 40% to 80%",

  // Add Crop
  add_title: "Register New Crop",
  add_subtitle: "Register a new crop batch in the system",
  add_plant_image: "PLANT IMAGE",
  add_drop_image: "Drop crop image here",
  add_image_hint: "PNG or JPG ┬╖ helps AI detect disease",
  add_sensor_params: "SENSOR READINGS",
  add_start: "Start Monitoring",
  add_running: "AI RunningтАж",
  add_run_another: "Run Another Cycle",
  add_view_dashboard: "Go to Dashboard",
  add_run_next: "Run Next Cycle",
  add_cycle_done: "Cycle complete - crop registered тЬУ",
  add_cycle_fail: "Failed to connect to agent pipeline",
  add_cycles_done: "{n} CYCLE{s} DONE",
  add_field_location: "Location",
  add_field_location_hint: "Where this crop is physically placed",
  add_field_location_placeholder: "e.g. Rack A - Shelf 3",
  add_field_notes: "Notes",
  add_field_notes_placeholder: "Optional notes about this crop batch",
  add_auto_cycle_duration: "Cycle Duration (auto)",
  add_auto_cycle_hint:
    "Auto-determined based on crop type: {crop} cycles every {hours}h",
  add_register_btn: "Register Crop",
  add_registering: "Creating...",
  add_register_success: "Crop registered successfully!",
  add_run_first_cycle: "Run First Cycle",
  add_lifecycle_label: "Growth Timeline",
  add_crop_id_exists: "This Crop ID already exists",

  // Add Crop fields
  add_field_ph: "pH Level",
  add_field_ec: "EC (Nutrient Strength)",
  add_field_temp: "Temperature (┬░C)",
  add_field_humidity: "Humidity (%)",
  add_field_crop_type: "Crop Type",
  add_field_stage: "Growth Stage",
  add_field_crop_id: "Batch / Crop ID",
  add_field_stage_hint:
    "Seedling = just planted ┬╖ Vegetative = growing leaves ┬╖ Flowering = making flowers ┬╖ Fruiting = making fruit",
  add_field_crop_id_hint:
    "Give this crop batch a unique name so you can track it easily",
  add_field_crop_id_placeholder: "e.g. Batch_A1 (optional)",

  // Add Crop pipeline phases & logs
  add_phase_fetch: "Fetch",
  add_phase_judge: "Judge",
  add_phase_strategy: "Strategy",
  add_phase_research: "Research",
  add_phase_plan: "Plan",
  add_phase_execute: "Execute",
  add_log_live: "AGENT PIPELINE - LIVE",
  add_log_done: "CYCLE COMPLETE",
  add_log_idle: "PIPELINE LOG",
  add_log_lines: "{n} lines",
  add_actuator_dispatched: "ACTUATOR COMMANDS DISPATCHED",

  // Run Cycle page
  run_title: "Run Agent Cycle",
  run_subtitle: "Execute AI monitoring cycle for {crop}",
  run_for_crop: "Running for: {crop}",
  run_loading_crop: "Loading cropтАж",
  run_growth_progress: "Growth Progress",
  run_streaming: "STREAMING",
  run_log_waiting: "Waiting for agent outputтАж",
  run_cycles_complete: "{n} cycle{s} completed",
  run_agents_working: "Agents WorkingтАж",
  run_harvest_ready: "тЬВ Ready to harvest",
  run_days_until: "{n}d until harvest",

  // Alerts
  alerts_title: "Alerts",
  alerts_subtitle_loading: "Analyzing sensor historyтАж",
  alerts_subtitle: "{unacked} unacknowledged ┬╖ {total} total",
  alerts_ack_all: "Ack all",
  alerts_ack_all_btn: "Acknowledge All",
  alerts_unacked: "UNACKNOWLEDGED ┬╖ {n}",
  alerts_acknowledged: "ACKNOWLEDGED ┬╖ {n}",
  alerts_empty_connected: "All clear for the selected filter",
  alerts_empty_nodata: "No data loaded - connect your farm and run some cycles",
  alerts_unacked_only: "Unacked only",
  alerts_show_all: "All",
  alerts_filter_harvest: "ЁЯМ╛ Harvest",
  alerts_filter_warning: "Warning",
  alerts_filter_info: "Info",
  alerts_crop_label: "Crop: {crop}",
  alerts_severity_critical: "CRITICAL",
  alerts_severity_warning: "WARNING",
  alerts_severity_info: "INFO",
  alerts_severity_harvest: "HARVEST",

  // Alert titles & descriptions
  alert_harvest_title: "Crop ready for harvest",
  alert_harvest_desc:
    "{crop} ({id}) has reached {pct}% maturity - time to harvest!",
  alert_ph_low_title: "pH critically low",
  alert_ph_low_desc:
    "{crop} ({id}): pH at {val} - immediate base dosing required.",
  alert_ph_high_title: "pH critically high",
  alert_ph_high_desc:
    "{crop} ({id}): pH at {val} - acid dosing required immediately.",
  alert_ec_high_title: "EC dangerously high",
  alert_ec_high_desc:
    "{crop} ({id}): EC at {val} dS/m - severe nutrient burn risk.",
  alert_temp_cold_title: "Temperature too cold",
  alert_temp_cold_desc:
    "{crop} ({id}): Air temp at {val}┬░C - root damage risk.",
  alert_temp_hot_title: "Temperature too hot",
  alert_temp_hot_desc:
    "{crop} ({id}): Air temp at {val}┬░C - heat stress and root rot risk.",
  alert_disease_title: "Disease or pest detected",
  alert_disease_desc: '{crop} ({id}): Visual anomaly. Outcome: "{outcome}"',
  alert_cycle_fail_title: "Cycle failure recorded",
  alert_cycle_fail_desc: '{crop} ({id}): Seq #{seq} outcome: "{outcome}"',
  alert_ph_warn_low_title: "pH below optimal range",
  alert_ph_warn_desc: "{crop} ({id}): pH at {val}. Target 5.5-6.5.",
  alert_ph_warn_high_title: "pH above optimal range",
  alert_ec_warn_title: "EC approaching high limit",
  alert_ec_warn_desc:
    "{crop} ({id}): EC at {val} dS/m - nutrient burn risk increasing.",
  alert_temp_warn_low_title: "Temperature on the low side",
  alert_temp_warn_low_desc: "{crop} ({id}): {val}┬░C - slow growth expected.",
  alert_temp_warn_high_title: "Temperature elevated",
  alert_temp_warn_high_desc: "{crop} ({id}): {val}┬░C - heat stress likely.",
  alert_deteriorating_title: "Condition deteriorating",
  alert_deteriorating_desc: '{crop} ({id}): Seq #{seq} - "{outcome}"',
  alert_cycle_done_title: "Cycle #{seq} completed",
  alert_cycle_done_desc: "{crop} ({id}): Sequence stored. {extra}",

  // Analytics
  analytics_title: "Analytics",
  analytics_subtitle_loading: "LoadingтАж",
  analytics_subtitle: "{points} data points across {crops} crops",
  analytics_export: "Export CSV",
  analytics_avg_ph: "AVG pH",
  analytics_avg_ec: "AVG EC",
  analytics_avg_temp: "AVG TEMP",
  analytics_total_seq: "TOTAL SEQUENCES",
  analytics_vs_prior: "% vs prior",
  analytics_trace: "{range} TRACE",
  analytics_ph_over_time: "pH Over Time",
  analytics_ec_conc: "EC Concentration",
  analytics_temp_hum: "Temperature & Humidity",
  analytics_daily_act: "DAILY ACTIVITY",
  analytics_seq_per_day: "Sequences Logged per Day",
  analytics_param_health: "PARAMETER HEALTH",
  analytics_in_range_score: "In-Range Score (%)",
  analytics_per_crop: "PER CROP",
  analytics_latest_sensor: "Latest Sensor Summary",
  analytics_derived_act: "DERIVED FROM STORED ACTIONS",
  analytics_agent_act: "Agent Activity",
  analytics_no_data_range: "Not enough data for this range",
  analytics_no_data_days: "Need 2+ days of data",
  analytics_no_data_points: "Not enough data points",
  analytics_th_crop_id: "Crop ID",
  analytics_th_type: "Type",
  analytics_th_stage: "Stage",
  analytics_th_ph: "pH",
  analytics_th_ec: "EC",
  analytics_th_temp: "Temp",
  analytics_th_seq: "Sequences",
  analytics_th_agent: "Agent",
  analytics_th_apps: "Appearances",
  analytics_th_success: "Success Rate",
  analytics_th_status: "Status",
  analytics_online: "ONLINE",

  // Charts
  chart_temp: "Temp ┬░C",
  chart_humidity: "Humidity %",
  chart_ec: "EC dS/m",
  chart_ph: "pH",
  chart_sequences: "Sequences",
  chart_in_range: "In-range %",

  // Intelligence
  intel_title: "Farm Intelligence",
  intel_subtitle: "Query your crops ┬╖ Ask Demeter anything ┬╖ Explore patterns",
  intel_search: "Search",
  intel_ask_ai: "Ask AI",
  intel_total_crops: "Total Crops",
  intel_healthy: "Healthy",
  intel_needs_attention: "Needs Attention",
  intel_critical: "Critical",
  intel_fleet_wide: "FLEET-WIDE",
  intel_crop_aware: "CROP-AWARE",
  intel_search_placeholder: "Search crops - 'Show all Tomato'...",
  intel_ask_placeholder_fleet:
    "Ask anything about your farm - decisions, trends...",
  intel_ask_placeholder_crop: "Ask anything about {crop}тАж",
  intel_filter_by: "FILTER BY:",
  intel_ask_about: "ASK ABOUT:",
  intel_context_loaded: "Context loaded",
  intel_heard: "Heard:",
  intel_suggested_global: "QUICK QUERIES",
  intel_suggested_crop: "SUGGESTED QUESTIONS FOR {crop}",
  intel_results_found: "{n} RESULT{s} FOUND",
  intel_no_results: "NO RESULTS",
  intel_view_logic: "View query logic",
  intel_hide_logic: "Hide query logic",
  intel_qdrant_filter: "QDRANT FILTER",
  intel_no_match: "No crops matched",
  intel_try_ask: "Try Ask AI instead",
  intel_empty_ask_title: "Ask Demeter anything about your farm",
  intel_empty_search_title: "Search your crop database",
  intel_empty_ask_desc:
    "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.",
  intel_empty_search_desc:
    "Use natural language to filter crops by type, stage, status or outcome. The supervisor translates your query into precise database filters.",
  intel_ai_reasoning: "THINKING PROCESS",
  intel_steps: "{n} steps",
  intel_similar_crops: "SIMILAR CROPS IN DATABASE",
  intel_match: "{n}% match",
  intel_last_cmd: "LAST COMMAND",
  intel_all_crops_filter: "All Crops",
  intel_all_crops_desc: "Fleet-wide query",
  intel_thinking: "Thinking",
  intel_demeter: "Demeter",
  intel_select_crop: "Select a crop ({n} total)",
  intel_fleet_query: "Query across all crops",
  intel_logic_header: "Query Translation Logic",
  intel_query_logic: "Query Logic",
  intel_no_response: "No response generated.",
  intel_llm_fail: "Failed to get a response. Please check your connection.",
  intel_llm_fail_toast: "LLM query failed",
  intel_search_fail_toast: "Search failed",
  intel_context: "Context",

  // Suggested questions
  sug_g1: "Show all crops",
  sug_g2: "Which crops are critical?",
  sug_g3: "Find crops in flowering stage",
  sug_g4: "List recent negative outcomes",
  sug_g5: "Show Tomato batches",
  sug_g6: "Find crops with high EC",
  sug_c1: "Why did we take the last decision for {crop}?",
  sug_c2: "Explain the current action for {crop}",
  sug_c3: "Is {crop} performing well?",
  sug_c4: "What should I watch out for with {crop}?",
  sug_c5: "How has {crop} been trending lately?",
  sug_c6: "Compare {crop} to similar crops",

  // Settings
  settings_title: "Settings",
  settings_subtitle: "Preferences, appearance & account",
  settings_save: "Save Changes",
  settings_reset: "Reset",
  settings_saved: "Saved!",
  settings_profile: "Profile",
  settings_profile_sub: "Your name and role shown in the sidebar",
  settings_display_name: "Display Name",
  settings_designation: "Designation",
  settings_initials: "Initials",
  settings_initials_hint: "Shown in the sidebar avatar (max 2 chars)",
  settings_appearance: "Appearance",
  settings_appearance_sub: "Theme and display options",
  settings_theme: "Theme",
  settings_theme_hint: "Controls the overall color scheme of the application",
  settings_dark: "Dark",
  settings_light: "Light",
  settings_system: "System",
  settings_compact: "Compact Mode",
  settings_compact_hint: "Reduces spacing for denser information display",
  settings_language: "Language / рднрд╛рд╖рд╛",
  settings_language_sub: "Choose your preferred display language",
  settings_lang_en: "English",
  settings_lang_hi: "рд╣рд┐рдВрджреА (Hindi)",
  settings_display_section: "Display",
  settings_display_sub: "Pagination and results",
  settings_max_crops: "Max Crops Per Page",
  settings_max_crops_hint: "Dashboard grid page size",
  settings_history_limit: "History Log Limit",
  settings_history_hint: "Max entries shown in crop event log",
  settings_alerts_section: "Alerts",
  settings_alerts_sub: "Notification preferences",
  settings_show_acked: "Show Acknowledged Alerts by Default",
  settings_data_source: "Data Source",
  settings_data_sub: "Backend connection settings",
  settings_mock_mode: "Mock Data Mode",
  settings_live_mode: "Live Backend Connected",
  settings_mock_hint:
    "To connect to live data, set USE_MOCK_DATA = false in src/data/mockData.js",
  settings_onboarding: "Help & Onboarding",
  settings_onboarding_sub: "Restart the welcome guide",
  settings_restart_onboarding: "Restart Guide",

  // Help
  help_title: "Help & Glossary",
  help_subtitle: "Everything you need to know - explained simply",
  help_section_terms: "ЁЯУК Sensor Terms Explained",
  help_section_agents: "ЁЯдЦ How AI Works for You",
  help_section_stages: "ЁЯМ▒ Growth Stages",
  help_section_manual: "ЁЯЦР When You Need to Act",
  help_section_ai_cta: "Still have questions?",
  help_ai_cta_desc: "Ask our Farm Intelligence AI anything about your crops",
  help_ai_cta_btn: "Ask AI тЖТ",
  help_range_label: "Ideal Range",
  help_low_label: "Too Low",
  help_high_label: "Too High",
  help_ai_label: "AI Auto-Action",
  help_manual_label: "Manual Needed When",
  help_agri_label: "Why It Matters",
  help_tab_simple: "Simple",
  help_tab_detail: "Detailed",

  // Onboarding
  onboarding_step: "Step {n} of {total}",
  onboarding_skip: "Skip",
  onboarding_next: "Next",
  onboarding_finish: "Get Started!",
  onboarding_s1_title: "Welcome to Demeter! ЁЯМ▒",
  onboarding_s1_desc:
    "Your smart farm assistant. Demeter automatically monitors your crops and adjusts water, nutrients, and temperature - 24 hours a day. No manual work needed.",
  onboarding_s2_title: "Your Crop Dashboard",
  onboarding_s2_desc:
    "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",
  onboarding_s3_title: "Adding a Crop",
  onboarding_s3_desc:
    '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.',
  onboarding_s4_title: "Alerts Keep You Informed",
  onboarding_s4_desc:
    "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!",
  onboarding_s5_title: "Harvest Time ЁЯМ╛",
  onboarding_s5_desc:
    '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.',
  onboarding_s6_title: "Always Here to Help",
  onboarding_s6_desc:
    "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.",

  // Common
  common_loading: "LoadingтАж",
  common_back: "Back",
  common_enabled: "Enabled",
  common_disabled: "Disabled",
  common_showing_all: "Showing all",
  common_hiding_acked: "Hiding acknowledged",
  common_per_page: "per page",
  common_last: "Last",
  common_entries: "entries",
  common_live: "LIVE",
  common_all: "All",
  common_crop: "Crop",
  common_unknown: "Unknown",
  common_time_just_now: "just now",
  common_time_min_ago: "{n} min ago",
  common_time_hr_ago: "{n} hr ago",
  common_time_day_ago: "1 day ago",
  common_time_days_ago: "{n} days ago",
};

const hi = {
  // Navigation & Sidebar
  nav_crops: "рдлрд╕рд▓реЗрдВ",
  nav_alerts: "рдЕрд▓рд░реНрдЯ",
  nav_analytics: "рд╡рд┐рд╢реНрд▓реЗрд╖рдг",
  nav_intelligence: "рдмреБрджреНрдзрд┐рдорддреНрддрд╛",
  nav_settings: "рд╕реЗрдЯрд┐рдВрдЧреНрд╕",
  nav_help: "рд╕рд╣рд╛рдпрддрд╛",
  nav_system_online: "рд╕рд┐рд╕реНрдЯрдо рдЪрд╛рд▓реВ рд╣реИ",
  nav_alert_status: "рдЕрд▓рд░реНрдЯ рд╕реНрдерд┐рддрд┐",
  nav_crops_need_attention: "{n} рдлрд╕рд▓{s} рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ",
  nav_all_clear: "рд╕рдм рдареАрдХ рд╣реИ",
  nav_harvest_ready: "ЁЯМ╛ {n} рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░",
  sidebar_agri_ai: "рдХреГрд╖рд┐┬╖рдПрдЖрдИ┬╖v2",
  sidebar_connecting: "рдЬреБрдбрд╝ рд░рд╣рд╛ рд╣реИтАж",
  sidebar_farm_online: "рдлрд╛рд░реНрдо рдСрдирд▓рд╛рдЗрди",
  sidebar_no_data: "рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ",

  // Landing Page
  landing_hero_1: "рдпрд╣ рдлрд╛рд░реНрдо",
  landing_hero_2: "рдЦреБрдж",
  landing_hero_3: "рд╕реЛрдЪрддрд╛ рд╣реИред",
  landing_hero_sub:
    "рдбреЗрдореАрдЯрд░ рдПрдХ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рд╣рд╛рдЗрдбреНрд░реЛрдкреЛрдирд┐рдХ рдкреНрд░рдгрд╛рд▓реА рд╣реИред рд╕рд╛рдд рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ AI рдПрдЬреЗрдВрдЯ рдПрдХ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рд╕рдордЭрддреЗ рд╣реИрдВ рдФрд░ 24/7 рдЖрдкрдХреА рдлрд╕рд▓реЛрдВ рдХреЛ рдЗрд╖реНрдЯрддрдо рдХрд░рддреЗ рд╣реИрдВ - рдмрд┐рдирд╛ рдХрд┐рд╕реА рдорд╛рдирд╡реАрдп рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЗред",
  landing_enter_dash: "рдбреИрд╢рдмреЛрд░реНрдб рдЦреЛрд▓реЗрдВ",
  landing_intelligence: "рдмреБрджреНрдзрд┐рдорддреНрддрд╛",
  landing_active_crops: "рд╕рдХреНрд░рд┐рдп рдлрд╕рд▓реЗрдВ",
  landing_crop_types: "рдлрд╕рд▓реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░",
  landing_total_cycles: "рдХреБрд▓ рдЪрдХреНрд░",
  landing_active_alerts: "рд╕рдХреНрд░рд┐рдп рдЕрд▓рд░реНрдЯ",
  landing_capabilities: "// рдореБрдЦреНрдп рдХреНрд╖рдорддрд╛рдПрдВ",
  landing_live_feed: "рдбреЗрдореАрдЯрд░://рд▓рд╛рдЗрд╡-рдлреАрдб",
  landing_feature_rl: "рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдирд╛ (RL)",
  landing_feature_rl_desc: "рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмреИрдВрдбрд┐рдЯ рдЬреЛ рд╣рд░ рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рд╕реАрдЦрддрд╛ рд╣реИ",
  landing_feature_cv: "рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрди",
  landing_feature_cv_desc: "Azure CV рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдмреАрдорд╛рд░реА рдкрд╣рдЪрд╛рди",
  landing_feature_vector: "рд╡реЗрдХреНрдЯрд░ рдореЗрдореЛрд░реА",
  landing_feature_vector_desc: "Qdrant рдЖрдзрд╛рд░рд┐рдд рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдкреМрдзреЗ рдХреА рдЬреАрд╡рдирд┐рдпрд╛рдВ",
  landing_feature_sim: "рднреМрддрд┐рдХреА рд╕рд┐рдореБрд▓реЗрд╢рди",
  landing_feature_sim_desc: "рд╣рд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗ рдкрд╣рд▓реЗ LLM-рдЖрдзрд╛рд░рд┐рдд рдбрд┐рдЬрд┐рдЯрд▓ рдЬреБрдбрд╝рд╡рд╛рдВ",
  landing_optimal: "тЧП рдЗрд╖реНрдЯрддрдо",
  landing_alert: "тЧП рдЕрд▓рд░реНрдЯ",
  landing_recent_activity: "рд╣рд╛рд▓ рдХреА рдПрдЬреЗрдВрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐",
  landing_no_cycles: "рдЕрднреА рддрдХ рдХреЛрдИ рдЪрдХреНрд░ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред",

  // Dashboard
  dash_title: "рдлрд╕рд▓реЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди",
  dash_subtitle: "{total} рдореЗрдВ рд╕реЗ {filtered} рдлрд╕рд▓реЗрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИрдВ",
  dash_add_crop: "рдлрд╕рд▓ рдЬреЛрдбрд╝реЗрдВ",
  dash_search_placeholder: "рдлрд╕рд▓ рдЦреЛрдЬреЗрдВ...",
  dash_filters: "рдлрд╝рд┐рд▓реНрдЯрд░",
  dash_clear_all: "рд╕рднреА рд╣рдЯрд╛рдПрдВ",
  dash_healthy: "рд╕реНрд╡рд╕реНрде",
  dash_attention: "рдзреНрдпрд╛рди рджреЗрдВ",
  dash_critical: "рдЧрдВрднреАрд░",
  dash_maturity: "рдкрд░рд┐рдкрдХреНрд╡рддрд╛",
  dash_days_left: "{n} рджрд┐рди рдмрд╛рдХреА",
  dash_ready: "рддреИрдпрд╛рд░",
  dash_no_crops: "рдХреЛрдИ рдлрд╕рд▓ рдирд╣реАрдВ",
  dash_no_crops_sub: "рдЕрдкрдиреА рдкрд╣рд▓реА рдлрд╕рд▓ рдЬреЛрдбрд╝рдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВ",
  dash_add_first: "рдкрд╣рд▓реА рдлрд╕рд▓ рдЬреЛрдбрд╝реЗрдВ",
  dash_no_match: "рдХреЛрдИ рдлрд╕рд▓ рдирд╣реАрдВ рдорд┐рд▓реА",
  dash_clear_filters: "рдлрд╝рд┐рд▓реНрдЯрд░ рд╣рдЯрд╛рдПрдВ",
  dash_harvest_banner: "{n} рдлрд╕рд▓{s} рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░!",
  dash_harvest_badge: "рдХрдЯрд╛рдИ рддреИрдпрд╛рд░",
  dash_harvest_banner_sub: "рдлрд╕рд▓ рдХрд╛рд░реНрдб рджрдмрд╛рдПрдВ рдФрд░ рдХрдЯрд╛рдИ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ",
  dash_harvest_action: "рддреИрдпрд╛рд░ рдлрд╕рд▓реЗрдВ рджреЗрдЦреЗрдВ",
  dash_status_growing: "рдмрдврд╝ рд░рд╣реА рд╣реИ",

  // Crop Details
  details_not_found: "рдлрд╕рд▓ рдирд╣реАрдВ рдорд┐рд▓реА",
  details_live: "рд▓рд╛рдЗрд╡",
  details_tab_overview: "рдЕрд╡рд▓реЛрдХрди",
  details_tab_sensors: "рд╕реЗрдВрд╕рд░",
  details_tab_log: "рд▓реЙрдЧ",
  details_ai_reasoning: "AI рдирд┐рд░реНрдгрдп рддрд░реНрдХ",
  details_chain_thought: "рдПрдХреНрд╕реНрдкреНрд▓реЗрдирд░ рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╡рд┐рдЪрд╛рд░-рд╢реНрд░реГрдВрдЦрд▓рд╛",
  details_expand: "рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ",
  details_collapse: "рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░реЗрдВ",
  details_pending_exp:
    "рдПрдЬреЗрдВрдЯ рдХреЗ рдкрд╣рд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рдж рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред",
  details_hist_ph: "рдРрддрд┐рд╣рд╛рд╕рд┐рдХ pH рдЧреНрд░рд╛рдл",
  details_latest_cmd: "рдирд╡реАрдирддрдо рдПрдХреНрдЪреБрдПрдЯрд░ рдХрдорд╛рдВрдб",
  details_temp_hum: "рддрд╛рдкрдорд╛рди рдФрд░ рдирдореА",
  details_ec_conc: "EC рд╕рд╛рдВрджреНрд░рддрд╛",
  details_event_log:
    "рдЗрд╡реЗрдВрдЯ рд▓реЙрдЧ - {total} рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ (рдЕрдВрддрд┐рдо {limit} рджрд┐рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ)",
  details_hide: "рдЫрд┐рдкрд╛рдПрдВ",
  details_why: "рдХреНрдпреЛрдВ?",
  details_more_lines: "+ {n} рдФрд░ рдкрдВрдХреНрддрд┐рдпрд╛рдВ",

  // CropDetails - Info tab
  details_tab_info: "рдЬрд╛рдирдХрд╛рд░реА",
  details_planted: "рдмреЛрдпрд╛ рдЧрдпрд╛",
  details_cycle_duration: "рдЪрдХреНрд░ рдЕрд╡рдзрд┐",
  details_location: "рд╕реНрдерд╛рди",
  details_total_sequences: "рдХреБрд▓ рдЕрдиреБрдХреНрд░рдо",
  details_sensor_hardware: "рд╕реЗрдВрд╕рд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░",
  details_sensor_online: "рдСрдирд▓рд╛рдЗрди",
  details_days_since: "{n} рджрд┐рди рдмреЛрдиреЗ рдХреЗ рдмрд╛рдж",
  details_days_remain: "{n} рджрд┐рди рд╢реЗрд╖",
  details_notes: "рдиреЛрдЯреНрд╕",
  details_run_cycle_btn: "рдПрдЬреЗрдВрдЯ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
  details_lifecycle_progress: "рдЬреАрд╡рдирдЪрдХреНрд░ рдкреНрд░рдЧрддрд┐",
  details_hours_per_cycle: "рдкреНрд░рддрд┐ рдЪрдХреНрд░ {n} рдШрдВрдЯреЗ",

  // Agent Widgets
  widget_acid: "рдПрд╕рд┐рдб рдЦреБрд░рд╛рдХ",
  widget_base: "рдмреЗрд╕ рдЦреБрд░рд╛рдХ",
  widget_nutrients: "рдкреЛрд╖рдХ рддрддреНрд╡",
  widget_fan: "рдкрдВрдЦреЗ рдХреА рдЧрддрд┐",
  widget_water: "рдкрд╛рдиреА рднрд░рдирд╛",
  widget_ph_down: "pH рдХрдо рдХрд░реЗрдВ",
  widget_ph_up: "pH рдмрдврд╝рд╛рдПрдВ",
  widget_ec_boost: "EC рдмрдврд╝рд╛рдПрдВ",
  widget_airflow: "рд╣рд╡рд╛ рдХрд╛ рдмрд╣рд╛рд╡",
  widget_dilution: "рдкрддрд▓рд╛рдкрди",
  outcome_improved: "рд╕реБрдзрд╛рд░ рд╣реБрдЖ",
  outcome_deteriorated: "рд╕реНрдерд┐рддрд┐ рдмрд┐рдЧрдбрд╝реА",
  outcome_stable: "рд╕реНрдерд┐рд░",
  reward_label: "рдЗрдирд╛рдо",

  // Stages
  stage_all: "рд╕рднреА",
  stage_seedling: "рдЕрдВрдХреБрд░",
  stage_vegetative: "рд╡рд╛рдирд╕реНрдкрддрд┐рдХ",
  stage_flowering: "рдлреВрд▓",
  stage_fruiting: "рдлрд▓",

  // Sensor readings
  sensor_temp: "рддрд╛рдкрдорд╛рди",
  sensor_ph: "pH рд╕реНрддрд░",
  sensor_ec: "EC",
  sensor_humidity: "рдирдореА",
  sensor_ph_desc: "рдкрд╛рдиреА рдХреА рдЕрдореНрд▓рддрд╛ - рд╕рд╣реА: 5.5 рд╕реЗ 6.5",
  sensor_ec_desc: "рдкрд╛рдиреА рдореЗрдВ рдкреЛрд╖рдХ рддрддреНрд╡ - рд╕рд╣реА: 0.8 рд╕реЗ 2.5",
  sensor_temp_desc: "рд╣рд╡рд╛ рдХрд╛ рддрд╛рдкрдорд╛рди - рд╕рд╣реА: 18┬░C рд╕реЗ 28┬░C",
  sensor_humidity_desc: "рд╣рд╡рд╛ рдореЗрдВ рдирдореА - рд╕рд╣реА: 40% рд╕реЗ 80%",

  // Add Crop
  add_title: "рдирдИ рдлрд╕рд▓ рджрд░реНрдЬ рдХрд░реЗрдВ",
  add_subtitle: "рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдирдИ рдлрд╕рд▓ рджрд░реНрдЬ рдХрд░реЗрдВ",
  add_plant_image: "рдкреМрдзреЗ рдХреА рддрд╕реНрд╡реАрд░",
  add_drop_image: "рдлрд╕рд▓ рдХреА рддрд╕реНрд╡реАрд░ рдпрд╣рд╛рдБ рдбрд╛рд▓реЗрдВ",
  add_image_hint: "PNG рдпрд╛ JPG ┬╖ рдмреАрдорд╛рд░реА рдкрд╣рдЪрд╛рди рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ",
  add_sensor_params: "рд╕реЗрдВрд╕рд░ рд░реАрдбрд┐рдВрдЧ",
  add_start: "рдирд┐рдЧрд░рд╛рдиреА рд╢реБрд░реВ рдХрд░реЗрдВ",
  add_running: "AI рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИтАж",
  add_run_another: "рджреЛрдмрд╛рд░рд╛ рдЪрд▓рд╛рдПрдВ",
  add_view_dashboard: "рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдЬрд╛рдПрдВ",
  add_run_next: "рдЕрдЧрд▓рд╛ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
  add_cycle_done: "рдЪрдХреНрд░ рдкреВрд░рд╛ - рдлрд╕рд▓ рджрд░реНрдЬ рд╣реЛ рдЧрдИ тЬУ",
  add_cycle_fail: "рдПрдЬреЗрдВрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛",
  add_cycles_done: "{n} рдЪрдХреНрд░ рдкреВрд░реЗ",
  add_field_location: "рд╕реНрдерд╛рди",
  add_field_location_hint: "рдпрд╣ рдлрд╕рд▓ рдХрд╣рд╛рдБ рд░рдЦреА рд╣реИ",
  add_field_location_placeholder: "рдЬреИрд╕реЗ рд░реИрдХ A - рд╢реЗрд▓реНрдл 3",
  add_field_notes: "рдиреЛрдЯреНрд╕",
  add_field_notes_placeholder: "рдЗрд╕ рдмреИрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреЛрдЯреНрд╕",
  add_auto_cycle_duration: "рдЪрдХреНрд░ рдЕрд╡рдзрд┐ (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд)",
  add_auto_cycle_hint: "рдлрд╕рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░: {crop} рд╣рд░ {hours} рдШрдВрдЯреЗ рдореЗрдВ",
  add_register_btn: "рдлрд╕рд▓ рджрд░реНрдЬ рдХрд░реЗрдВ",
  add_registering: "рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ...",
  add_register_success: "рдлрд╕рд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рджрд░реНрдЬ рд╣реЛ рдЧрдИ!",
  add_run_first_cycle: "рдкрд╣рд▓рд╛ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
  add_lifecycle_label: "рд╡рд┐рдХрд╛рд╕ рд╕рдордпрд░реЗрдЦрд╛",
  add_crop_id_exists: "рдпрд╣ рдлрд╕рд▓ ID рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ",

  // Add Crop fields
  add_field_ph: "pH рд╕реНрддрд░",
  add_field_ec: "EC (рдкреЛрд╖рдХ рддрддреНрд╡)",
  add_field_temp: "рддрд╛рдкрдорд╛рди (┬░C)",
  add_field_humidity: "рдирдореА (%)",
  add_field_crop_type: "рдлрд╕рд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░",
  add_field_stage: "рд╡рд┐рдХрд╛рд╕ рдЕрд╡рд╕реНрдерд╛",
  add_field_crop_id: "рдмреИрдЪ / ID",
  add_field_stage_hint:
    "рдЕрдВрдХреБрд░ = рдЕрднреА рдмреЛрдпрд╛ ┬╖ рд╡рд╛рдирд╕реНрдкрддрд┐рдХ = рдкрддреНрддрд┐рдпрд╛рдВ ┬╖ рдлреВрд▓ = рдлреВрд▓ ┬╖ рдлрд▓ = рдлрд▓",
  add_field_crop_id_hint: "рдЗрд╕ рдлрд╕рд▓ рдмреИрдЪ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рджреЗрдВ",
  add_field_crop_id_placeholder: "рдЬреИрд╕реЗ Batch_A1 (рд╡реИрдХрд▓реНрдкрд┐рдХ)",

  // Add Crop pipeline phases
  add_phase_fetch: "рдбреЗрдЯрд╛ рд▓рд╛рдПрдВ",
  add_phase_judge: "рдЬрд╛рдВрдЪ",
  add_phase_strategy: "рд░рдгрдиреАрддрд┐",
  add_phase_research: "рдЕрдиреБрд╕рдВрдзрд╛рди",
  add_phase_plan: "рдпреЛрдЬрдирд╛",
  add_phase_execute: "рдХрд╛рд░реНрд░рд╡рд╛рдИ",
  add_log_live: "рдПрдЬреЗрдВрдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрди - рд▓рд╛рдЗрд╡",
  add_log_done: "рдЪрдХреНрд░ рдкреВрд░рд╛ рд╣реБрдЖ",
  add_log_idle: "рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд▓реЙрдЧ",
  add_log_lines: "{n} рдкрдВрдХреНрддрд┐рдпрд╛рдВ",
  add_actuator_dispatched: "рдПрдХреНрдЪреБрдПрдЯрд░ рдХрдорд╛рдВрдб рднреЗрдЬреЗ рдЧрдП",

  // Run Cycle page
  run_title: "рдПрдЬреЗрдВрдЯ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
  run_subtitle: "{crop} рдХреЗ рд▓рд┐рдП AI рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
  run_for_crop: "рдлрд╕рд▓: {crop} рдХреЗ рд▓рд┐рдП",
  run_loading_crop: "рдлрд╕рд▓ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИтАж",
  run_growth_progress: "рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдЧрддрд┐",
  run_streaming: "рд▓рд╛рдЗрд╡",
  run_log_waiting: "рдПрдЬреЗрдВрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛тАж",
  run_cycles_complete: "{n} рдЪрдХреНрд░ рдкреВрд░реЗ рд╣реБрдП",
  run_agents_working: "рдПрдЬреЗрдВрдЯ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВтАж",
  run_harvest_ready: "тЬВ рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░",
  run_days_until: "рдХрдЯрд╛рдИ рдореЗрдВ {n} рджрд┐рди рдмрд╛рдХреА",

  // Alerts
  alerts_title: "рдЕрд▓рд░реНрдЯ",
  alerts_subtitle_loading: "рд╕реЗрдВрд╕рд░ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рдЬрд╛рдВрдЪ рд╣реЛ рд░рд╣реА рд╣реИтАж",
  alerts_subtitle: "{unacked} рдЕрдирджреЗрдЦреЗ ┬╖ {total} рдХреБрд▓",
  alerts_ack_all: "рд╕рднреА рджреЗрдЦреЗ",
  alerts_ack_all_btn: "рд╕рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ",
  alerts_unacked: "рдЕрдирджреЗрдЦреЗ ┬╖ {n}",
  alerts_acknowledged: "рджреЗрдЦреЗ рдЧрдП ┬╖ {n}",
  alerts_empty_connected: "рдЪреБрдиреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдм рдареАрдХ рд╣реИ",
  alerts_empty_nodata: "рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ - рдлрд╛рд░реНрдо рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЪрдХреНрд░ рдЪрд▓рд╛рдПрдВ",
  alerts_unacked_only: "рдХреЗрд╡рд▓ рдЕрдирджреЗрдЦреЗ",
  alerts_show_all: "рд╕рднреА",
  alerts_filter_harvest: "ЁЯМ╛ рдХрдЯрд╛рдИ",
  alerts_filter_warning: "рдЪреЗрддрд╛рд╡рдиреА",
  alerts_filter_info: "рдЬрд╛рдирдХрд╛рд░реА",
  alerts_crop_label: "рдлрд╕рд▓: {crop}",
  alerts_severity_critical: "рдЧрдВрднреАрд░",
  alerts_severity_warning: "рдЪреЗрддрд╛рд╡рдиреА",
  alerts_severity_info: "рдЬрд╛рдирдХрд╛рд░реА",
  alerts_severity_harvest: "рдХрдЯрд╛рдИ",

  // Alert titles & descriptions
  alert_harvest_title: "рдлрд╕рд▓ рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░",
  alert_harvest_desc: "{crop} ({id}) рдХреА рдкрд░рд┐рдкрдХреНрд╡рддрд╛ {pct}% - рдХрдЯрд╛рдИ рдХрд╛ рд╕рдордп!",
  alert_ph_low_title: "pH рдмрд╣реБрдд рдХрдо",
  alert_ph_low_desc: "{crop} ({id}): pH {val} - рддреБрд░рдВрдд рдмреЗрд╕ рдбреЛрдЬрд╝рд┐рдВрдЧ рдЬрд░реВрд░реАред",
  alert_ph_high_title: "pH рдмрд╣реБрдд рдЕрдзрд┐рдХ",
  alert_ph_high_desc: "{crop} ({id}): pH {val} - рддреБрд░рдВрдд рдПрд╕рд┐рдб рдбреЛрдЬрд╝рд┐рдВрдЧ рдЬрд░реВрд░реАред",
  alert_ec_high_title: "EC рдЦрддрд░рдирд╛рдХ рд╕реНрддрд░ рдкрд░",
  alert_ec_high_desc: "{crop} ({id}): EC {val} dS/m - рдкреЛрд╖рдХ рддрддреНрд╡ рдЬрд▓рдиреЗ рдХрд╛ рдЦрддрд░рд╛ред",
  alert_temp_cold_title: "рддрд╛рдкрдорд╛рди рдмрд╣реБрдд рдХрдо",
  alert_temp_cold_desc:
    "{crop} ({id}): рддрд╛рдкрдорд╛рди {val}┬░C - рдЬрдбрд╝реЗрдВ рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддреА рд╣реИрдВред",
  alert_temp_hot_title: "рддрд╛рдкрдорд╛рди рдмрд╣реБрдд рдЕрдзрд┐рдХ",
  alert_temp_hot_desc:
    "{crop} ({id}): рддрд╛рдкрдорд╛рди {val}┬░C - рдЧрд░реНрдореА рдХрд╛ рддрдирд╛рд╡ рдФрд░ рдЬрдбрд╝ рд╕рдбрд╝рдиреЗ рдХрд╛ рдЦрддрд░рд╛ред",
  alert_disease_title: "рдмреАрдорд╛рд░реА рдпрд╛ рдХреАрдЯ рдкрд╛рдпрд╛ рдЧрдпрд╛",
  alert_disease_desc: '{crop} ({id}): рджреГрд╢реНрдп рдЕрд╕рд╛рдорд╛рдиреНрдпрддрд╛ред рдкрд░рд┐рдгрд╛рдо: "{outcome}"',
  alert_cycle_fail_title: "рдЪрдХреНрд░ рд╡рд┐рдлрд▓",
  alert_cycle_fail_desc: '{crop} ({id}): рдЪрдХреНрд░ #{seq} рдкрд░рд┐рдгрд╛рдо: "{outcome}"',
  alert_ph_warn_low_title: "pH рдЗрд╖реНрдЯрддрдо рд╕реЗ рдХрдо",
  alert_ph_warn_desc: "{crop} ({id}): pH {val}ред рд▓рдХреНрд╖реНрдп: 5.5-6.5ред",
  alert_ph_warn_high_title: "pH рдЗрд╖реНрдЯрддрдо рд╕реЗ рдЕрдзрд┐рдХ",
  alert_ec_warn_title: "EC рд╕реАрдорд╛ рдХреЗ рдкрд╛рд╕",
  alert_ec_warn_desc:
    "{crop} ({id}): EC {val} dS/m - рдкреЛрд╖рдХ рддрддреНрд╡ рдЬрд▓рдиреЗ рдХрд╛ рдЦрддрд░рд╛ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред",
  alert_temp_warn_low_title: "рддрд╛рдкрдорд╛рди рдереЛрдбрд╝рд╛ рдХрдо",
  alert_temp_warn_low_desc: "{crop} ({id}): {val}┬░C - рдзреАрдореА рд╡реГрджреНрдзрд┐ рд╕рдВрднрд╡ред",
  alert_temp_warn_high_title: "рддрд╛рдкрдорд╛рди рдмрдврд╝рд╛ рд╣реБрдЖ",
  alert_temp_warn_high_desc: "{crop} ({id}): {val}┬░C - рдЧрд░реНрдореА рдХрд╛ рддрдирд╛рд╡ рд╕рдВрднрд╡ред",
  alert_deteriorating_title: "рд╕реНрдерд┐рддрд┐ рдмрд┐рдЧрдбрд╝ рд░рд╣реА рд╣реИ",
  alert_deteriorating_desc: '{crop} ({id}): рдЪрдХреНрд░ #{seq} - "{outcome}"',
  alert_cycle_done_title: "рдЪрдХреНрд░ #{seq} рдкреВрд░рд╛",
  alert_cycle_done_desc: "{crop} ({id}): рдЕрдиреБрдХреНрд░рдо рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ред {extra}",

  // Analytics
  analytics_title: "рд╡рд┐рд╢реНрд▓реЗрд╖рдг",
  analytics_subtitle_loading: "рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИтАж",
  analytics_subtitle: "{crops} рдлрд╕рд▓реЛрдВ рдХреЗ {points} рдбреЗрдЯрд╛",
  analytics_export: "CSV рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ",
  analytics_avg_ph: "рдФрд╕рдд pH",
  analytics_avg_ec: "рдФрд╕рдд EC",
  analytics_avg_temp: "рдФрд╕рдд рддрд╛рдкрдорд╛рди",
  analytics_total_seq: "рдХреБрд▓ рдЪрдХреНрд░",
  analytics_vs_prior: "% рдкрд╣рд▓реЗ рд╕реЗ",
  analytics_trace: "{range} рдЧреНрд░рд╛рдл",
  analytics_ph_over_time: "pH рд╕рдордп рдХреЗ рд╕рд╛рде",
  analytics_ec_conc: "EC рд╕рд╛рдВрджреНрд░рддрд╛",
  analytics_temp_hum: "рддрд╛рдкрдорд╛рди рдФрд░ рдирдореА",
  analytics_daily_act: "рджреИрдирд┐рдХ рдЧрддрд┐рд╡рд┐рдзрд┐",
  analytics_seq_per_day: "рдкреНрд░рддрд┐ рджрд┐рди рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЪрдХреНрд░",
  analytics_param_health: "рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп",
  analytics_in_range_score: "рд╕реАрдорд╛ рдореЗрдВ рд╕реНрдХреЛрд░ (%)",
  analytics_per_crop: "рдкреНрд░рддрд┐ рдлрд╕рд▓",
  analytics_latest_sensor: "рдирд╡реАрдирддрдо рд╕реЗрдВрд╕рд░ рд╕рд╛рд░рд╛рдВрд╢",
  analytics_derived_act: "рд╕рдВрдЧреНрд░рд╣реАрдд рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд",
  analytics_agent_act: "рдПрдЬреЗрдВрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐",
  analytics_no_data_range: "рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ",
  analytics_no_data_days: "рдХрдо рд╕реЗ рдХрдо 2 рджрд┐рди рдХрд╛ рдбреЗрдЯрд╛ рдЪрд╛рд╣рд┐рдП",
  analytics_no_data_points: "рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реИрдВ",
  analytics_th_crop_id: "рдлрд╕рд▓ ID",
  analytics_th_type: "рдкреНрд░рдХрд╛рд░",
  analytics_th_stage: "рдЕрд╡рд╕реНрдерд╛",
  analytics_th_ph: "pH",
  analytics_th_ec: "EC",
  analytics_th_temp: "рддрд╛рдкрдорд╛рди",
  analytics_th_seq: "рдЪрдХреНрд░",
  analytics_th_agent: "рдПрдЬреЗрдВрдЯ",
  analytics_th_apps: "рдЙрдкрд╕реНрдерд┐рддрд┐",
  analytics_th_success: "рд╕рдлрд▓рддрд╛ рджрд░",
  analytics_th_status: "рд╕реНрдерд┐рддрд┐",
  analytics_online: "рдСрдирд▓рд╛рдЗрди",

  // Charts
  chart_temp: "рддрд╛рдкрдорд╛рди ┬░C",
  chart_humidity: "рдирдореА %",
  chart_ec: "EC dS/m",
  chart_ph: "pH",
  chart_sequences: "рдЪрдХреНрд░",
  chart_in_range: "рд╕реАрдорд╛ рдореЗрдВ %",

  // Intelligence
  intel_title: "рдлрд╛рд░реНрдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛",
  intel_subtitle: "рдлрд╕рд▓реЗрдВ рдЦреЛрдЬреЗрдВ ┬╖ Demeter рд╕реЗ рдкреВрдЫреЗрдВ ┬╖ рдкреИрдЯрд░реНрди рджреЗрдЦреЗрдВ",
  intel_search: "рдЦреЛрдЬреЗрдВ",
  intel_ask_ai: "AI рд╕реЗ рдкреВрдЫреЗрдВ",
  intel_total_crops: "рдХреБрд▓ рдлрд╕рд▓реЗрдВ",
  intel_healthy: "рд╕реНрд╡рд╕реНрде",
  intel_needs_attention: "рдзреНрдпрд╛рди рдЪрд╛рд╣рд┐рдП",
  intel_critical: "рдЧрдВрднреАрд░",
  intel_fleet_wide: "рд╕рднреА рдлрд╕рд▓реЗрдВ",
  intel_crop_aware: "рдлрд╕рд▓-рд╡рд┐рд╢реЗрд╖",
  intel_search_placeholder: "рдлрд╕рд▓реЗрдВ рдЦреЛрдЬреЗрдВ - 'рдЯрдорд╛рдЯрд░ рджрд┐рдЦрд╛рдПрдВ'...",
  intel_ask_placeholder_fleet: "рдЕрдкрдиреЗ рдлрд╛рд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВ...",
  intel_ask_placeholder_crop: "{crop} рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВтАж",
  intel_filter_by: "рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ:",
  intel_ask_about: "рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫреЗрдВ:",
  intel_context_loaded: "рд╕рдВрджрд░реНрдн рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛",
  intel_heard: "рд╕реБрдирд╛:",
  intel_suggested_global: "рддреНрд╡рд░рд┐рдд рдкреНрд░рд╢реНрди",
  intel_suggested_crop: "{crop} рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рдП рдЧрдП рдкреНрд░рд╢реНрди",
  intel_results_found: "{n} рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ",
  intel_no_results: "рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ",
  intel_view_logic: "рдХреНрд╡реЗрд░реА рддрд░реНрдХ рджреЗрдЦреЗрдВ",
  intel_hide_logic: "рдХреНрд╡реЗрд░реА рддрд░реНрдХ рдЫрд┐рдкрд╛рдПрдВ",
  intel_qdrant_filter: "Qdrant рдлрд╝рд┐рд▓реНрдЯрд░",
  intel_no_match: "рдХреЛрдИ рдлрд╕рд▓ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА",
  intel_try_ask: "рдЗрд╕рдХреЗ рдмрдЬрд╛рдп AI рд╕реЗ рдкреВрдЫреЗрдВ",
  intel_empty_ask_title: "Demeter рд╕реЗ рдЕрдкрдиреЗ рдлрд╛рд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВ",
  intel_empty_search_title: "рдЕрдкрдиреЗ рдлрд╕рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЦреЛрдЬреЗрдВ",
  intel_empty_ask_desc:
    "рд▓рдХреНрд╖рд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╕рд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдпрд╛ рдкреВрд░реЗ рдлрд╛рд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВред AI рд▓рд╛рдЗрд╡ рд╕реЗрдВрд╕рд░ рдбреЗрдЯрд╛, рдПрдЬреЗрдВрдЯ рдирд┐рд░реНрдгрдпреЛрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред",
  intel_empty_search_desc:
    "рдкреНрд░рдХрд╛рд░, рдЕрд╡рд╕реНрдерд╛, рд╕реНрдерд┐рддрд┐ рдпрд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╕рд▓реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред",
  intel_ai_reasoning: "рд╕реЛрдЪрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛",
  intel_steps: "{n} рдЪрд░рдг",
  intel_similar_crops: "рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдорд╛рди рдлрд╕рд▓реЗрдВ",
  intel_match: "{n}% рдореЗрд▓",
  intel_last_cmd: "рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб",
  intel_all_crops_filter: "рд╕рднреА рдлрд╕рд▓реЗрдВ",
  intel_all_crops_desc: "рдкреВрд░реЗ рдлрд╛рд░реНрдо рдореЗрдВ рдЦреЛрдЬреЗрдВ",
  intel_thinking: "рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ",
  intel_demeter: "рдбреЗрдореАрдЯрд░",
  intel_select_crop: "рдлрд╕рд▓ рдЪреБрдиреЗрдВ (рдХреБрд▓ {n})",
  intel_fleet_query: "рд╕рднреА рдлрд╕рд▓реЛрдВ рдореЗрдВ рдЦреЛрдЬреЗрдВ",
  intel_logic_header: "рдХреНрд╡реЗрд░реА рдЕрдиреБрд╡рд╛рдж рддрд░реНрдХ",
  intel_query_logic: "рдХреНрд╡реЗрд░реА рддрд░реНрдХ",
  intel_no_response: "рдХреЛрдИ рдЙрддреНрддрд░ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реБрдЖред",
  intel_llm_fail: "рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ред рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдХрдиреЗрдХреНрд╢рди рдЬрд╛рдВрдЪреЗрдВред",
  intel_llm_fail_toast: "LLM рдХреНрд╡реЗрд░реА рд╡рд┐рдлрд▓",
  intel_search_fail_toast: "рдЦреЛрдЬ рд╡рд┐рдлрд▓",
  intel_context: "рд╕рдВрджрд░реНрдн",

  // Suggested questions
  sug_g1: "рд╕рднреА рдлрд╕рд▓реЗрдВ рджрд┐рдЦрд╛рдПрдВ",
  sug_g2: "рдХреМрди рд╕реА рдлрд╕рд▓реЗрдВ рдЧрдВрднреАрд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ?",
  sug_g3: "рдлреВрд▓ рдЖрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рд╡рд╛рд▓реА рдлрд╕рд▓реЗрдВ рдЦреЛрдЬреЗрдВ",
  sug_g4: "рд╣рд╛рд▓ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ",
  sug_g5: "рдЯрдорд╛рдЯрд░ рдХреЗ рдмреИрдЪ рджрд┐рдЦрд╛рдПрдВ",
  sug_g6: "рдЙрдЪреНрдЪ EC рд╡рд╛рд▓реА рдлрд╕рд▓реЗрдВ рдЦреЛрдЬреЗрдВ",
  sug_c1: "рд╣рдордиреЗ {crop} рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рдХреНрдпреЛрдВ рд▓рд┐рдпрд╛?",
  sug_c2: "{crop} рдХреА рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ",
  sug_c3: "рдХреНрдпрд╛ {crop} рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд░рд╣реА рд╣реИ?",
  sug_c4: "{crop} рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдХрд┐рд╕ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП?",
  sug_c5: "рд╣рд╛рд▓ рд╣реА рдореЗрдВ {crop} рдХрд╛ рд░реБрдЭрд╛рди рдХреИрд╕рд╛ рд░рд╣рд╛ рд╣реИ?",
  sug_c6: "{crop} рдХреА рддреБрд▓рдирд╛ рд╕рдорд╛рди рдлрд╕рд▓реЛрдВ рд╕реЗ рдХрд░реЗрдВ",

  // Settings
  settings_title: "рд╕реЗрдЯрд┐рдВрдЧреНрд╕",
  settings_subtitle: "рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ, рджрд┐рдЦрд╛рд╡рдЯ рдФрд░ рдЦрд╛рддрд╛",
  settings_save: "рдмрджрд▓рд╛рд╡ рд╕рд╣реЗрдЬреЗрдВ",
  settings_reset: "рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ",
  settings_saved: "рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛!",
  settings_profile: "рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓",
  settings_profile_sub: "рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдирд╛рдо рдФрд░ рдкрдж",
  settings_display_name: "рдирд╛рдо",
  settings_designation: "рдкрдж",
  settings_initials: "рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо",
  settings_initials_hint: "рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ (рдЕрдзрд┐рдХрддрдо 2 рдЕрдХреНрд╖рд░)",
  settings_appearance: "рджрд┐рдЦрд╛рд╡рдЯ",
  settings_appearance_sub: "рдереАрдо рдФрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╡рд┐рдХрд▓реНрдк",
  settings_theme: "рдереАрдо",
  settings_theme_hint: "рдРрдк рдХрд╛ рд░рдВрдЧ рдмрджрд▓реЗрдВ",
  settings_dark: "рдЧрд╣рд░рд╛",
  settings_light: "рд╣рд▓реНрдХрд╛",
  settings_system: "рд╕рд┐рд╕реНрдЯрдо",
  settings_compact: "рдХреЙрдореНрдкреИрдХреНрдЯ рдореЛрдб",
  settings_compact_hint: "рдХрдо рдЬрдЧрд╣ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдПрдВ",
  settings_language: "рднрд╛рд╖рд╛ / Language",
  settings_language_sub: "рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдЪреБрдиреЗрдВ",
  settings_lang_en: "English",
  settings_lang_hi: "рд╣рд┐рдВрджреА (Hindi)",
  settings_display_section: "рдбрд┐рд╕реНрдкреНрд▓реЗ",
  settings_display_sub: "рдкреЗрдЬ рдФрд░ рдкрд░рд┐рдгрд╛рдо",
  settings_max_crops: "рдкреНрд░рддрд┐ рдкреЗрдЬ рдЕрдзрд┐рдХрддрдо рдлрд╕рд▓реЗрдВ",
  settings_max_crops_hint: "рдбреИрд╢рдмреЛрд░реНрдб рдкреЗрдЬ рд╕рд╛рдЗрдЬрд╝",
  settings_history_limit: "рдЗрддрд┐рд╣рд╛рд╕ рд▓реЙрдЧ рд╕реАрдорд╛",
  settings_history_hint: "рдлрд╕рд▓ рд▓реЙрдЧ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдПрдВрдЯреНрд░реА",
  settings_alerts_section: "рдЕрд▓рд░реНрдЯ",
  settings_alerts_sub: "рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ",
  settings_show_acked: "рджреЗрдЦреЗ рдЧрдП рдЕрд▓рд░реНрдЯ рднреА рджрд┐рдЦрд╛рдПрдВ",
  settings_data_source: "рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд",
  settings_data_sub: "рдмреИрдХрдПрдВрдб рдХрдиреЗрдХреНрд╢рди",
  settings_mock_mode: "рдореЙрдХ рдбреЗрдЯрд╛ рдореЛрдб",
  settings_live_mode: "рд▓рд╛рдЗрд╡ рдмреИрдХрдПрдВрдб рдЬреБрдбрд╝рд╛ рд╣реИ",
  settings_mock_hint:
    "рд▓рд╛рдЗрд╡ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП mockData.js рдореЗрдВ USE_MOCK_DATA = false рдХрд░реЗрдВ",
  settings_onboarding: "рд╕рд╣рд╛рдпрддрд╛ рдФрд░ рдЧрд╛рдЗрдб",
  settings_onboarding_sub: "рд╕реНрд╡рд╛рдЧрдд рдЧрд╛рдЗрдб рджреЛрдмрд╛рд░рд╛ рджреЗрдЦреЗрдВ",
  settings_restart_onboarding: "рдЧрд╛рдЗрдб рджреЛрдмрд╛рд░рд╛ рд╢реБрд░реВ рдХрд░реЗрдВ",

  // Help
  help_title: "рд╕рд╣рд╛рдпрддрд╛ рдФрд░ рд╢рдмреНрджрдХреЛрд╢",
  help_subtitle: "рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛",
  help_section_terms: "ЁЯУК рд╕реЗрдВрд╕рд░ рд╢рдмреНрдж рд╕рдордЭрд╛рдП рдЧрдП",
  help_section_agents: "ЁЯдЦ AI рдЖрдкрдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ",
  help_section_stages: "ЁЯМ▒ рд╡рд┐рдХрд╛рд╕ рдХреА рдЕрд╡рд╕реНрдерд╛рдПрдВ",
  help_section_manual: "ЁЯЦР рдЬрдм рдЖрдкрдХреЛ рдХрджрдо рдЙрдард╛рдирд╛ рд╣реЛ",
  help_section_ai_cta: "рдЕрднреА рднреА рд╕рд╡рд╛рд▓ рд╣реИрдВ?",
  help_ai_cta_desc:
    "рд╣рдорд╛рд░реЗ рдлрд╛рд░реНрдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ AI рд╕реЗ рдЕрдкрдиреА рдлрд╕рд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВ",
  help_ai_cta_btn: "AI рд╕реЗ рдкреВрдЫреЗрдВ тЖТ",
  help_range_label: "рдЖрджрд░реНрд╢ рд╕реАрдорд╛",
  help_low_label: "рдмрд╣реБрдд рдХрдо рд╣реЛ рддреЛ",
  help_high_label: "рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рддреЛ",
  help_ai_label: "AI рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ",
  help_manual_label: "рдорд╛рдирд╡реАрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрдм рдЬрд░реВрд░реА",
  help_agri_label: "рдпрд╣ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ",
  help_tab_simple: "рд╕рд░рд▓",
  help_tab_detail: "рд╡рд┐рд╕реНрддреГрдд",

  // Onboarding
  onboarding_step: "рдЪрд░рдг {n} / {total}",
  onboarding_skip: "рдЫреЛрдбрд╝реЗрдВ",
  onboarding_next: "рдЕрдЧрд▓рд╛",
  onboarding_finish: "рд╢реБрд░реВ рдХрд░реЗрдВ!",
  onboarding_s1_title: "Demeter рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ! ЁЯМ▒",
  onboarding_s1_desc:
    "рдпрд╣ рдЖрдкрдХрд╛ рд╕реНрдорд╛рд░реНрдЯ рдлрд╛рд░реНрдо рд╕рд╣рд╛рдпрдХ рд╣реИред Demeter рдЖрдкрдХреА рдлрд╕рд▓реЛрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╛рдиреА, рдкреЛрд╖рдХ рддрддреНрд╡ рдФрд░ рддрд╛рдкрдорд╛рди рдХреЛ 24 рдШрдВрдЯреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред",
  onboarding_s2_title: "рдЖрдкрдХрд╛ рдлрд╕рд▓ рдбреИрд╢рдмреЛрд░реНрдб",
  onboarding_s2_desc:
    "рдпрд╣рд╛рдБ рд╕рднреА рдлрд╕рд▓реЗрдВ рдПрдХ рд╕рд╛рде рджреЗрдЦреЗрдВред рд╣рд░ рдХрд╛рд░реНрдб рдлрд╕рд▓ рдХреА рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:\n\nЁЯЯв рд╣рд░рд╛ (рд╕реНрд╡рд╕реНрде) - рд╕рдм рдареАрдХ рд╣реИ\nЁЯЯб рдкреАрд▓рд╛ (рдзреНрдпрд╛рди рджреЗрдВ) - рдЬрд╛рдВрдЪ рдЬрд░реВрд░реА\nЁЯФ┤ рд▓рд╛рд▓ (рдЧрдВрднреАрд░) - рддреБрд░рдВрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░реЗрдВ",
  onboarding_s3_title: "рдлрд╕рд▓ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ",
  onboarding_s3_desc:
    '"рдлрд╕рд▓ рдЬреЛрдбрд╝реЗрдВ" рдкрд░ рдЯреИрдк рдХрд░реЗрдВред рдлрд╕рд▓ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЪреБрдиреЗрдВ (рд▓реЗрдЯреНрдпреВрд╕, рдЯрдорд╛рдЯрд░, рддреБрд▓рд╕реА рдпрд╛ рд╕реНрдЯреНрд░реЙрдмреЗрд░реА), рдПрдХ рдЕрдиреЛрдЦреА ID рджреЗрдВ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╕рдм рдХреБрдЫ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ - рдЪрдХреНрд░ рдЕрд╡рдзрд┐, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдВрд╕рд░, рдФрд░ рд╡рд┐рдХрд╛рд╕ рдЯреНрд░реИрдХрд┐рдВрдЧред рдПрдХ рдмрд╛рд░ рджрд░реНрдЬ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╕рд▓ рдХреЗ рд╡рд┐рд╡рд░рдг рдкреГрд╖реНрда рд╕реЗ AI рдирд┐рдЧрд░рд╛рдиреА рдЪрдХреНрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред',
  onboarding_s4_title: "рдЕрд▓рд░реНрдЯ рд╕реЗ рдЕрдкрдбреЗрдЯ рд░рд╣реЗрдВ",
  onboarding_s4_desc:
    "рдЬрдм рдХрд┐рд╕реА рдлрд╕рд▓ рдХреЛ рдзреНрдпрд╛рди рдХреА рдЬрд░реВрд░рдд рд╣реЛ, рдЕрд▓рд░реНрдЯ рдореЗрдиреВ рдкрд░ рд▓рд╛рд▓ рдирдВрдмрд░ рджрд┐рдЦреЗрдЧрд╛ред рдЕрдкрдиреА рдлрд╕рд▓реЗрдВ рд╕реНрд╡рд╕реНрде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдЬрд╝ рдЬрд╛рдВрдЪреЗрдВ!",
  onboarding_s5_title: "рдХрдЯрд╛рдИ рдХрд╛ рд╕рдордп ЁЯМ╛",
  onboarding_s5_desc:
    "рдЬрдм рдлрд╕рд▓ рдХрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ, рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдПрдХ рдмреИрдирд░ рдФрд░ рдлрд╕рд▓ рдХрд╛рд░реНрдб рдкрд░ 'рдХрдЯрд╛рдИ рддреИрдпрд╛рд░' рдмреИрдЬ рджрд┐рдЦреЗрдЧрд╛ред рд╕рд╣реА рд╕рдордп рдкрд░ рдХрдЯрд╛рдИ рдХрднреА рди рдЪреВрдХреЗрдВ!",
  onboarding_s6_title: "рд╣рдореЗрд╢рд╛ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░",
  onboarding_s6_desc:
    "рдЦреЗрддреА рдХреЗ рдХрд┐рд╕реА рд╢рдмреНрдж рдХреЛ рд▓реЗрдХрд░ рдЙрд▓рдЭрди рдореЗрдВ рд╣реИрдВ рдпрд╛ рддреБрд░рдВрдд рд╕рд▓рд╛рд╣ рдЪрд╛рд╣рд┐рдП? рдЖрд╕рд╛рди рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рд╢рдмреНрджрдХреЛрд╢ рджреЗрдЦреЗрдВ, рдпрд╛ рддреБрд░рдВрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдлрд╛рд░реНрдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ AI рд╕реЗ рдкреВрдЫреЗрдВред",

  // Common
  common_loading: "рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИтАж",
  common_back: "рд╡рд╛рдкрд╕",
  common_enabled: "рдЪрд╛рд▓реВ",
  common_disabled: "рдмрдВрдж",
  common_showing_all: "рд╕рднреА рджрд┐рдЦрд╛рдП",
  common_hiding_acked: "рджреЗрдЦреЗ рд╣реБрдП рдЫреБрдкрд╛рдП",
  common_per_page: "рдкреНрд░рддрд┐ рдкреЗрдЬ",
  common_last: "рдЕрдВрддрд┐рдо",
  common_entries: "рдПрдВрдЯреНрд░реА",
  common_live: "рд▓рд╛рдЗрд╡",
  common_all: "рд╕рднреА",
  common_crop: "рдлрд╕рд▓",
  common_unknown: "рдЕрдЬреНрдЮрд╛рдд",
  common_time_just_now: "рдЕрднреА-рдЕрднреА",
  common_time_min_ago: "{n} рдорд┐рдирдЯ рдкрд╣рд▓реЗ",
  common_time_hr_ago: "{n} рдШрдВрдЯреЗ рдкрд╣рд▓реЗ",
  common_time_day_ago: "1 рджрд┐рди рдкрд╣рд▓реЗ",
  common_time_days_ago: "{n} рджрд┐рди рдкрд╣рд▓реЗ",
};

export const TRANSLATIONS = { en, hi };

// Translates a key, replacing {placeholder} tokens
export function translate(lang, key, vars = {}) {
  const dict = TRANSLATIONS[lang] || TRANSLATIONS.en;
  let str = dict[key] ?? TRANSLATIONS.en[key] ?? key;
  Object.entries(vars).forEach(([k, v]) => {
    str = str.replace(new RegExp(`\\{${k}\\}`, "g"), String(v));
  });
  return str;
}

// Dynamically translates known agent explanation strings, outcomes, and crops to Hindi
export function translateDynamic(text, lang) {
  if (!text || lang !== "hi") return text;
  let translated = text;

  const replacements = [
    [/Observation/gi, "рдЕрд╡рд▓реЛрдХрди (Observation)"],
    [/Precedent/gi, "рдкреВрд░реНрд╡ рдЙрджрд╛рд╣рд░рдг (Precedent)"],
    [/Logic/gi, "рддрд░реНрдХ (Logic)"],
    [/Conclusion/gi, "рдирд┐рд╖реНрдХрд░реНрд╖ (Conclusion)"],
    [/Sensors show/gi, "рд╕реЗрдВрд╕рд░ рджрд┐рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ"],
    [/within acceptable range/gi, "рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реАрдорд╛ рдХреЗ рднреАрддрд░"],
    [/disease was detected/gi, "рдмреАрдорд╛рд░реА рдкрд╛рдИ рдЧрдИ"],
    [/Action Taken:/gi, "рдХреА рдЧрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ:"],
    [/Outcome:/gi, "рдкрд░рд┐рдгрд╛рдо:"],
    [/PENDING_ANALYSIS/gi, "рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рдВрдмрд┐рдд рд╣реИ..."],
    [/IMPROVED/gi, "рд╕реБрдзрд╛рд░ рд╣реБрдЖ"],
    [/DETERIORATED/gi, "рд╕реНрдерд┐рддрд┐ рдмрд┐рдЧрдбрд╝реА"],
    [/STABLE/gi, "рд╕реНрдерд┐рд░"],
    [/Reward:/gi, "рдЗрдирд╛рдо:"],

    // Crops and Stages
    [/\bLettuce\b/gi, "рд▓реЗрдЯреНрдпреВрд╕ (Lettuce)"],
    [/\bTomato\b/gi, "рдЯрдорд╛рдЯрд░ (Tomato)"],
    [/\bCucumber\b/gi, "рдЦреАрд░рд╛ (Cucumber)"],
    [/\bBasil\b/gi, "рддреБрд▓рд╕реА (Basil)"],
    [/\bSpinach\b/gi, "рдкрд╛рд▓рдХ (Spinach)"],
    [/\bKale\b/gi, "рдХреЗрд▓ (Kale)"],
    [/\bStrawberry\b/gi, "рд╕реНрдЯреНрд░реЙрдмреЗрд░реА (Strawberry)"],
    [/\bPepper\b/gi, "рд╢рд┐рдорд▓рд╛ рдорд┐рд░реНрдЪ (Pepper)"],
    [/\bSeedling\b/gi, "рдЕрдВрдХреБрд░ (Seedling)"],
    [/\bVegetative\b/gi, "рд╡рд╛рдирд╕реНрдкрддрд┐рдХ (Vegetative)"],
    [/\bFlowering\b/gi, "рдлреВрд▓ (Flowering)"],
    [/\bFruiting\b/gi, "рдлрд▓ (Fruiting)"],
    [/\bUnknown\b/gi, "рдЕрдЬреНрдЮрд╛рдд"],
    [/\bHealthy\b/gi, "рд╕реНрд╡рд╕реНрде"],
    [/\bAttention\b/gi, "рдзреНрдпрд╛рди рджреЗрдВ"],
    [/\bCritical\b/gi, "рдЧрдВрднреАрд░"],
  ];

  replacements.forEach(([regex, replacement]) => {
    translated = translated.replace(regex, replacement);
  });

  return translated;
}