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; } |