2129 lines
88 KiB
JSON
2129 lines
88 KiB
JSON
{
|
||
"app_name": "Maibu Mowing Robot",
|
||
|
||
"device_control_mode": {
|
||
"title": "Confirm control mode",
|
||
"unknown_mode": "The current mode has not been reported. Press OK to request %s.",
|
||
"current": "Current live mode",
|
||
"target": "Mode required by this page",
|
||
"waiting": "Waiting for the device to report its control mode…",
|
||
"submitting": "Sending the mode change…",
|
||
"awaiting_report": "Request sent. Waiting for the device to confirm…",
|
||
"matched": "The current mode is correct. Press OK to enter.",
|
||
"mismatch": "The current mode does not match this page. Press OK to switch to %s.",
|
||
"retry": "Refresh live mode",
|
||
"invalid_device": "Device code is empty. Go back and select a device.",
|
||
"no_report": "No valid live control mode received. Check the device connection and retry.",
|
||
"request_timeout": "The mode change request timed out. Check the live mode before retrying.",
|
||
"switch_unconfirmed": "The request was accepted, but the device has not reported the requested mode. Check its status before retrying."
|
||
},
|
||
"common": {
|
||
"confirm": "Confirm",
|
||
"cancel": "Cancel",
|
||
"ok": "OK",
|
||
"back": "Back",
|
||
"close": "Close",
|
||
"loading": "Loading...",
|
||
"error": "Error",
|
||
"success": "Success",
|
||
"unknown": "Unknown"
|
||
},
|
||
|
||
"login": {
|
||
"title": "Login",
|
||
"username": "Username",
|
||
"password": "Password",
|
||
"login_button": "Login",
|
||
"logout": "Logout",
|
||
"confirm_logout": "Are you sure to logout?",
|
||
"username_hint": "Enter username",
|
||
"password_hint": "Enter password",
|
||
"login_success": "Login Success",
|
||
"login_failed": "Login Failed",
|
||
"token_expired_title": "Login Expired",
|
||
"token_expired_content": "Your login session has expired, please log in again",
|
||
"kicked_out_title": "Logged In Elsewhere",
|
||
"kicked_out_content": "Your account has logged in on another device, signing out...",
|
||
"reconnect_failed_title": "Connection Error",
|
||
"reconnect_failed_content": "TCP reconnection authentication failed, please log in again",
|
||
"reconnecting": "TCP reconnecting...",
|
||
"reconnect_success": "Connection successful",
|
||
"account_login_title": "Account Login",
|
||
"subtitle": "Please fill in the following to verify your identity",
|
||
"cert_text": "Certified by Huawei Cloud ecosystem, safe to use. Certificate No. C202605301",
|
||
"login_submit": "Log In",
|
||
"logging_in": "Logging in...",
|
||
"no_account": "No account?",
|
||
"register_now": "Sign up",
|
||
"agree_first": "Please read and agree to the user agreement first",
|
||
"agree_prefix": "I have read and agree to the ",
|
||
"agree_and": " and ",
|
||
"user_agreement_link": "User Agreement",
|
||
"privacy_policy_link": "Privacy Policy",
|
||
"understood": "Got it",
|
||
"protocol_detail_text": "Your %s details will appear here..."
|
||
},
|
||
|
||
"register": {
|
||
"title": "Sign Up",
|
||
"subtitle": "Fill in the following information to sign up",
|
||
"username": "Username",
|
||
"username_hint": "Set your username",
|
||
"password": "Password",
|
||
"password_hint": "Set your password",
|
||
"confirm_password": "Confirm Password",
|
||
"confirm_password_hint": "Enter your password again",
|
||
"submit": "Sign Up",
|
||
"has_account": "Already have an account?",
|
||
"login_now": "Log in now",
|
||
"incomplete": "Please complete all the required information",
|
||
"password_mismatch": "The two passwords do not match",
|
||
"developing": "Registration is under development...",
|
||
"agree_hint": "Please check and agree before creating a new account"
|
||
},
|
||
|
||
"home": {
|
||
"title": "Home",
|
||
"devices": "My Devices",
|
||
"no_devices": "No devices",
|
||
"add_device": "Add Device",
|
||
"device_online": "Online",
|
||
"device_offline": "Offline",
|
||
"remote_control": "Remote Control",
|
||
"route_plan": "Route Plan",
|
||
"machine_status": "Machine Status",
|
||
"switch_device": "Switch Device",
|
||
"loading": "Loading...",
|
||
"no_history": "No records",
|
||
"work_params": "Work Params",
|
||
"view_details": "Details",
|
||
"work_area": "Area",
|
||
"work_distance": "Distance",
|
||
"work_duration": "Duration",
|
||
"history_details": "History",
|
||
"start_time": "Start",
|
||
"end_time": "End",
|
||
"working_area": "Area",
|
||
"working_distance": "Distance",
|
||
"time_spent": "Time",
|
||
"click_to_view": "View details",
|
||
"in_use": "In Use",
|
||
"switch": "Switch",
|
||
"details": "Details",
|
||
"unknown_device": "Unknown Device",
|
||
"no_device_bound": "No device bound"
|
||
},
|
||
|
||
"running_status": {
|
||
"title": "Device Data Monitor",
|
||
"motor_params": "Motor Parameters",
|
||
"other_params": "Other Parameters",
|
||
"left_wheel": "Left Wheel",
|
||
"right_wheel": "Right Wheel",
|
||
"target_speed": "Target Speed",
|
||
"measure_speed": "Measure Speed",
|
||
"current": "Current",
|
||
"motor_temp": "Motor Temp",
|
||
"pitch_angle": "Pitch",
|
||
"roll_angle": "Roll",
|
||
"heading_angle": "Heading",
|
||
"battery": "Battery",
|
||
"chip_temp": "Chip Temp",
|
||
"knife_speed": "Knife Speed",
|
||
"linear_speed": "Linear Speed",
|
||
"angular_speed": "Angular Speed",
|
||
"control_mode": "Control Mode",
|
||
"longitude": "Longitude",
|
||
"latitude": "Latitude",
|
||
"altitude": "Altitude",
|
||
"satellite_count": "Satellites",
|
||
"heading_status": "Heading Status",
|
||
"position_quality": "Position Quality",
|
||
"not_initialized": "Not Initialized",
|
||
"invalid": "Invalid",
|
||
"valid": "Valid",
|
||
"local_control": "Local Control",
|
||
"remote_control": "Remote Control",
|
||
"autonomous_task": "Autonomous Task",
|
||
"data_refresh_success": "Data refreshed!",
|
||
"no_device": "No device available",
|
||
"left_right_measure_speed": "Left/Right Measure Speed",
|
||
"left_right_target_speed": "Left/Right Target Speed",
|
||
"current_compare": "Current Compare",
|
||
"motor_temp_compare": "Motor Temp Compare",
|
||
"heading_angle_chart": "Heading Angle",
|
||
"card": "Card",
|
||
"chart": "Chart",
|
||
"name": "Name",
|
||
"value": "Value",
|
||
"initialized": "Initialized",
|
||
"no_data": "No Data",
|
||
"voltage": "Voltage",
|
||
"tcp_reconnected": "TCP connection restored",
|
||
"tcp_reconnect_failed": "TCP reconnection failed, please check network"
|
||
},
|
||
|
||
"machine_details": {
|
||
"title": "Device Details",
|
||
"real_time_status": "Real-time Status",
|
||
"control_mode": "Control Mode",
|
||
"battery_voltage": "Battery Voltage",
|
||
"remaining_battery": "Remaining Battery",
|
||
"basic_info": "Basic Info",
|
||
"device_name": "Device Name",
|
||
"device_id": "Device ID",
|
||
"resource_center": "Resource Center",
|
||
"user_manual": "User Manual",
|
||
"product_manual": "Product Manual",
|
||
"unbind": "Unbind Device",
|
||
"unbind_confirm_title": "Confirm Unbind",
|
||
"unbind_confirm_content": "Are you sure to unbind [%s]? You will not be able to manage this device after unbinding.",
|
||
"edit_name_title": "Edit Device Name",
|
||
"edit_name_hint": "Enter device name",
|
||
"name_empty_error": "Name cannot be empty",
|
||
"name_updated_success": "Device name updated to: %s",
|
||
"unbind_success": "Device '%s' unbound successfully",
|
||
"unbind_failed": "Unbind failed: %s",
|
||
"update_failed": "Update failed: %s",
|
||
"device_info_error": "Device information error, cannot unbind",
|
||
"unbind_exception": "Unbind exception: %s",
|
||
"update_exception": "Update exception: %s",
|
||
"updating_name": "Updating name...",
|
||
"unbinding_device": "Unbinding device...",
|
||
"edit_name": "Edit Name",
|
||
"name_updated": "Name updated",
|
||
"remote_mode": "Remote Mode",
|
||
"local_mode": "Local Mode",
|
||
"copied": "Copied"
|
||
},
|
||
|
||
"ai": {
|
||
"title": "New Energy PV Agent",
|
||
"new_session": "New Session",
|
||
"history": "History",
|
||
"deep_thinking": "Deep Thinking",
|
||
"final_conclusion": "Final Conclusion",
|
||
"thinking_hint": "AI is thinking...",
|
||
"input_hint": "Enter your thoughts...",
|
||
"album": "Album",
|
||
"camera": "Camera"
|
||
},
|
||
|
||
"my": {
|
||
"title": "Profile",
|
||
"language": "Language",
|
||
"chinese": "中文",
|
||
"english": "English",
|
||
"settings": "Settings",
|
||
"about": "About",
|
||
"version": "Version",
|
||
"feedback": "Feedback",
|
||
"privacy_policy": "Privacy Policy",
|
||
"user_agreement": "User Agreement",
|
||
"operation_video": "Operation Video",
|
||
"rental_service": "Rental Service",
|
||
"help_support": "Help & Support",
|
||
"after_sales_policy": "After-sales Policy"
|
||
},
|
||
|
||
"manual": {
|
||
"title": "User Manual",
|
||
"detail": "Details",
|
||
"no_content": "No content available",
|
||
"menu_titles": [
|
||
"Safety Warnings and Precautions",
|
||
"Machine Operation Instructions",
|
||
"Maintenance and Repair",
|
||
"Troubleshooting",
|
||
"Transportation Guidelines",
|
||
"Warranty and After-sales Service"
|
||
],
|
||
"submenus": {
|
||
"alert": "Special Warnings",
|
||
"alertinstruction": "Warning Label Instructions",
|
||
"safety": "Safety Operation Guidelines",
|
||
"safetywork": "Safe Driving and Working Practices",
|
||
"prepare": "Pre-start Preparation",
|
||
"startmethod": "Starting Method",
|
||
"work": "Mowing Method",
|
||
"stop": "Parking Method",
|
||
"controluse": "Remote Control Usage",
|
||
"check1": "Regular Inspection Checklist",
|
||
"check2": "Walking and Mowing Parts Inspection",
|
||
"supply": "Fuel, Water, Lubricant and Grease Schedule",
|
||
"check4": "Consumable Parts Replacement List",
|
||
"check5": "Engine",
|
||
"check6": "Walking Device",
|
||
"check7": "Post-use Maintenance",
|
||
"breakdown1": "Problem Diagnosis Table",
|
||
"starpoint": "Transportation Guidelines",
|
||
"about1": "About Warranty",
|
||
"about2": "About After-sales Service",
|
||
"supplyyear": "Parts Supply Period"
|
||
},
|
||
"tables": {
|
||
"supply_title": "Fuel, Water, Lubricant and Grease Schedule",
|
||
"item": "Item",
|
||
"period": "Replenishment/Replacement Period",
|
||
"recommend": "Recommended Type",
|
||
"capacity": "Capacity",
|
||
"problem": "Problem Description",
|
||
"reason": "Cause",
|
||
"solution": "Solution",
|
||
"generator": "Generator",
|
||
"walking_device": "Walking Device",
|
||
"mowing_device": "Mowing Device"
|
||
}
|
||
},
|
||
|
||
"remote_control": {
|
||
"controlling": "Controlling",
|
||
"not_controlling": "Not Controlling",
|
||
"permission_request_title": "Permission Change",
|
||
"permission_request_content": "Web is requesting control permission. Do you agree to release?",
|
||
"refuse": "Refuse",
|
||
"agree": "Agree",
|
||
"device_disconnected": "Device Disconnected",
|
||
"back": "Back",
|
||
"switch_view_hint": "Double-tap blank area to switch view",
|
||
"chassis": "Chassis",
|
||
"mower": "Mower",
|
||
"fire_skill": "Fire Skill",
|
||
"mode_none": "No Mode",
|
||
"remote_mode": "Remote Mode",
|
||
"local_mode": "Local Mode",
|
||
"forward_backward": "Forward/Backward",
|
||
"left_right": "Left/Right",
|
||
"emergency_stop": "E-Stop",
|
||
"emergency_stopping": "Stopping",
|
||
"perm_unknown_device": "Unknown device",
|
||
"perm_unknown_platform": "Unknown platform",
|
||
"permission_request_body": "{platform} is requesting control\n\nDevice ID: {deviceId}\n\nRelease control?",
|
||
"toast_released": "Remote control permission released",
|
||
"toast_release_failed": "Failed to release control permission",
|
||
"mode_picker_title": "Select control mode",
|
||
"mode_minimal": "Minimal mode",
|
||
"mode_minimal_sub": "Classic remote control screen",
|
||
"mode_full": "Full mode",
|
||
"mode_full_sub": "Landscape dashboard control",
|
||
"video_load_failed": "Video failed to load. Check the device is online or retry.",
|
||
"video_loading": "Loading video...",
|
||
"joystick_no_data": "No telemetry from this machine yet; control unavailable"
|
||
},
|
||
|
||
"pv_control": {
|
||
"manual_control": "Manual",
|
||
"pause_task": "Pause",
|
||
"screenshot": "Snapshot",
|
||
"view_map": "Map",
|
||
"emergency_stop": "E-Stop",
|
||
"emergency_stopping": "Stopping",
|
||
"sheet_mower_title": "Mower Lift",
|
||
"sheet_mower_hint": "Left: raise · Right: lower · Release: stop",
|
||
"sheet_chassis_title": "Chassis Lift",
|
||
"sheet_chassis_hint": "Left: up · Right: down · Release: stop",
|
||
"sheet_fire_title": "Ignition",
|
||
"sheet_fire_hint": "Left: ignite · Right: extinguish · Center: stop",
|
||
"seg_mower_up": "Raise",
|
||
"seg_mower_down": "Lower",
|
||
"seg_chassis_up": "Up",
|
||
"seg_chassis_down": "Down",
|
||
"seg_fire_up": "Ignite",
|
||
"seg_fire_down": "Extinguish",
|
||
"seg_stop": "Stop",
|
||
"scrub_hint": "Press & hold \"{label}\", then slide",
|
||
"toast_paused": "Task paused",
|
||
"toast_emergency_sent": "Emergency stop sent",
|
||
"toast_emergency_released": "Emergency stop released",
|
||
"toast_screenshot_failed": "Screenshot failed",
|
||
"toast_screenshot_saved": "Screenshot saved",
|
||
"toast_permission_released": "Remote control released",
|
||
"toast_permission_release_failed": "Failed to release control",
|
||
"remote_mode": "Remote Mode",
|
||
"online": "Online",
|
||
"offline": "Offline",
|
||
"unknown": "Unknown",
|
||
"nav_task": "Task",
|
||
"nav_map": "Map",
|
||
"nav_video": "Video",
|
||
"nav_settings": "Settings",
|
||
"mode_remote": "Remote",
|
||
"mode_local": "Local",
|
||
"qual_none": "No Fix",
|
||
"qual_single": "Single",
|
||
"qual_differential": "DGPS",
|
||
"qual_ins": "Dead Reckoning",
|
||
"qual_rtk_fixed": "RTK Fixed",
|
||
"qual_rtk_float": "RTK Float",
|
||
"qual_rtk_fixed_nh": "RTK Fixed (no heading)",
|
||
"qual_rtk_float_nh": "RTK Float (no heading)",
|
||
"obstacle_ahead": "Obstacle Ahead",
|
||
"view_left_pip": "Left View",
|
||
"view_right_pip": "Right View",
|
||
"rear_view": "Rear View",
|
||
"reverse_camera": "Reverse Cam",
|
||
"map_current_task": "Task: Auto Mowing - Zone 1",
|
||
"map_switch": "Switch ›",
|
||
"work_progress": "Progress",
|
||
"work_area_size": "Area",
|
||
"work_duration": "Duration",
|
||
"vehicle_status": "Vehicle",
|
||
"status_normal": "Normal",
|
||
"status_abnormal": "Abnormal",
|
||
"drive_speed": "Speed",
|
||
"gear": "Gear",
|
||
"gear_low": "Low",
|
||
"chassis_height": "Height",
|
||
"position_quality": "Position Quality",
|
||
"mower_status": "Mower",
|
||
"mower_running": "Running",
|
||
"battery_label": "Battery",
|
||
"current_speed": "Speed",
|
||
"patrol_mileage": "Mileage",
|
||
"network_status": "Network",
|
||
"device_temperature": "Temp",
|
||
"battery_unknown": "Battery N/A",
|
||
"battery_percent": "Battery {n}%",
|
||
"auto_driving": "Auto Driving",
|
||
"manual_controlling": "Manual Control",
|
||
"switch_mode": "Switch Mode",
|
||
"rtsp_searching": "Searching local camera…",
|
||
"rtsp_connecting": "Connecting stream…",
|
||
"rtsp_reconnecting": "Signal lost, reconnecting…",
|
||
"rtsp_not_found": "No camera found, retrying…",
|
||
"rtsp_failed": "Stream failed, retrying…",
|
||
"rtsp_no_ethernet": "No Ethernet, check the cable",
|
||
"map_waiting_push": "Waiting for location…",
|
||
"task_current": "Current Task",
|
||
"task_none_running": "No running task",
|
||
"task_field_no": "Task No.",
|
||
"task_field_device": "Device No.",
|
||
"task_field_status": "Status",
|
||
"task_field_route": "Route No.",
|
||
"task_field_site": "Plot No.",
|
||
"task_field_create_time": "Created",
|
||
"task_none_value": "None",
|
||
"task_new": "New",
|
||
"task_executing": "Running",
|
||
"task_paused": "Paused",
|
||
"set_video_source": "Source",
|
||
"set_source_rtsp": "Ethernet RTSP",
|
||
"set_source_hdmi": "HDMI",
|
||
"set_source_webrtc": "WebRTC",
|
||
"set_video_fit": "Display",
|
||
"set_fit_contain": "Fit",
|
||
"set_fit_cover": "Fill",
|
||
"set_fit_contain_hint": "No crop; letterbox if ratios differ",
|
||
"set_fit_cover_hint": "Fill with no bars; edges cropped",
|
||
"set_sim_obstacle": "Simulate Obstacle",
|
||
"set_sim_obstacle_sub": "Alert: banner + box + red flash",
|
||
"set_sim_reverse": "Reverse Camera",
|
||
"set_sim_reverse_sub": "Overlay reverse guide lines on the main view",
|
||
"set_show_joysticks": "Joysticks",
|
||
"set_show_joysticks_sub": "Hide both direction joysticks and recenter",
|
||
"perm_unknown_device": "Unknown device",
|
||
"perm_unknown_platform": "Unknown platform",
|
||
"perm_request_body": "{platform} is requesting control\n\nDevice ID: {deviceId}\n\nRelease control?",
|
||
"realtime_video": "Live Video",
|
||
"pv_robot_remote_control": "PV Robot Remote Control",
|
||
"screenshot_saved_path": "Saved: {path}",
|
||
"close": "Close",
|
||
"rail_return_home": "Return Home",
|
||
"rail_find_vehicle": "Find Vehicle",
|
||
"rail_pause_work": "Pause Work",
|
||
"rail_light": "Lights",
|
||
"rail_horn": "Horn",
|
||
"rail_record_shot": "Record/Snapshot",
|
||
"speed_high": "High",
|
||
"speed_low": "Low",
|
||
"axis_forward": "Forward",
|
||
"axis_backward": "Backward",
|
||
"axis_left": "Turn Left",
|
||
"axis_right": "Turn Right",
|
||
"network_good": "Network good",
|
||
"network_bad": "Network issue",
|
||
"video_not_loaded": "Video not loaded",
|
||
"obstacle_alert": "Obstacle alert",
|
||
"no_device": "No device selected",
|
||
"unit_m": "m",
|
||
"unit_km": "km",
|
||
"task_patrol_running": "Patrol task in progress"
|
||
},
|
||
|
||
"route_planning": {
|
||
"title": "Route Planning",
|
||
"save_plot": "Save Plot",
|
||
"plot_name_hint": "Enter plot name (e.g., North Field, Field 1)",
|
||
"plot_name_label": "Plot Name",
|
||
"save": "Save",
|
||
"cancel": "Cancel",
|
||
"plot_name_empty": "Plot name cannot be empty!",
|
||
"plot_name_too_long": "Plot name cannot exceed 20 characters!",
|
||
"saving": "Saving plot",
|
||
"save_success": "Saved successfully",
|
||
"save_failed": "Save failed",
|
||
"user_id_empty": "User ID is empty, cannot save!",
|
||
"no_work_points": "No work points to undo",
|
||
"no_obstacles": "No obstacles to delete",
|
||
"clear_work_area": "Cleared all work area points and paths",
|
||
"clear_obstacles": "Cleared all obstacles",
|
||
"work_mode": "Work Mode",
|
||
"start_work": "Start Work",
|
||
"no_plot_data": "No plot data",
|
||
"heading_not_init": "Heading angle not initialized, cannot start work",
|
||
"switch_remote_mode": "Please switch to remote mode before starting work",
|
||
"my_location": "My Location",
|
||
"location_permission_denied": "Location permission denied, cannot get current location",
|
||
"location_permanently_denied": "Location permission permanently denied, please enable in settings",
|
||
"go_to_settings": "Settings",
|
||
"location_service_disabled": "Location service disabled, please enable it",
|
||
"location_failed": "Location failed",
|
||
"retry": "Retry",
|
||
"plot_list_title": "Plot List (%d items)",
|
||
"route_direction": "Route Direction",
|
||
"optimal_heading": "Optimal Heading",
|
||
"land": "Land",
|
||
"route": "Route",
|
||
"crosshair": "Crosshair",
|
||
"robot_mode": "Robot Mode",
|
||
"work_area": "Work Area",
|
||
"obstacle_area": "Obstacle Area",
|
||
"delete": "Delete",
|
||
"undo": "Undo",
|
||
"complete": "Complete",
|
||
"work_distance": "Work Distance (m)",
|
||
"monitoring": "Monitoring",
|
||
"mark_land": "Mark Land",
|
||
"list": "List",
|
||
"station": "Station",
|
||
"location": "Location",
|
||
"refresh": "Refresh",
|
||
"select_work_mode": "Select Work Mode",
|
||
"bow_mode": "Coverage Mode",
|
||
"bow_mode_subtitle": "Standard full coverage path planning",
|
||
"custom_mode": "Custom Mode",
|
||
"custom_mode_subtitle": "Manually set work area",
|
||
"station_1": "Station 1",
|
||
"station_2": "Station 2",
|
||
"station_3": "Station 3",
|
||
"crosshair": "Crosshair",
|
||
"robot_mode": "Robot Mode",
|
||
"work_area": "Work Area",
|
||
"obstacle_area": "Obstacle Area",
|
||
"delete": "Delete",
|
||
"undo": "Undo",
|
||
"complete": "Complete",
|
||
"land": "Land",
|
||
"route": "Route",
|
||
"route_direction": "Route Direction",
|
||
"optimal_heading": "Optimal Heading",
|
||
"settings": "Settings",
|
||
"clear_cache_success": "Cleared all cache, restored to initial state",
|
||
"refresh_failed": "Refresh failed"
|
||
},
|
||
|
||
"home_v2": {
|
||
"select_site": "Select Site",
|
||
"no_sites": "No available sites",
|
||
"site_code": "Code: %s",
|
||
"weather": "Cloudy 28°C",
|
||
"emergency_alarm": "Emergency Alarm",
|
||
"real_time_power": "Real-time Power",
|
||
"today_generation": "Today's Generation",
|
||
"equivalent_hours": "Equivalent Hours",
|
||
"alarm_count": "Alarm Count",
|
||
"pending_work_order": "Pending Orders",
|
||
"quick_entry": "Quick Entry",
|
||
"device_report": "Device Report",
|
||
"scan_qr": "Scan QR",
|
||
"work_order": "Work Order",
|
||
"alarm_center": "Alarm Center",
|
||
"power_plant_map": "Plant Map",
|
||
"device_list": "Device List",
|
||
"power_trend": "Power Trend",
|
||
"day": "Day",
|
||
"month": "Month",
|
||
"year": "Year",
|
||
"plant_overview": "Plant Overview",
|
||
"installed_capacity": "Installed Capacity",
|
||
"commission_date": "Commission Date",
|
||
"work_order_stats": "Work Order Stats",
|
||
"work_order_pending": "Pending",
|
||
"work_order_processing": "Processing",
|
||
"work_order_pending_acceptance": "Pending Acceptance",
|
||
"power_trend": "Power Trend (Today)",
|
||
"day": "Day",
|
||
"month": "Month"
|
||
},
|
||
|
||
"device_list_v2": {
|
||
"title": "Device Status",
|
||
"search_hint": "Search device name/ID",
|
||
"search": "Search",
|
||
"all": "All",
|
||
"robot": "Robot",
|
||
"drone_station": "Drone Station",
|
||
"inverter": "Inverter",
|
||
"combiner_box": "Combiner Box",
|
||
"module": "Module",
|
||
"monitor": "Monitor",
|
||
"total_devices": "All Devices",
|
||
"online": "Online",
|
||
"alarm": "Alarm",
|
||
"offline": "Offline",
|
||
"no_data": "No data",
|
||
"select_site_first": "Please select a site first",
|
||
"no_drone_stations": "No drone stations at this site",
|
||
"view_details_from_tab": "Please view details from the 'Drone Station' tab",
|
||
"device_type_not_supported": "Device type not supported: %s",
|
||
"battery_level": "Battery",
|
||
"current_task": "Current Task",
|
||
"task": "Task",
|
||
"power": "Power",
|
||
"today_energy": "Today Energy",
|
||
"current": "Current",
|
||
"temperature": "Temperature",
|
||
"radiation": "Radiation",
|
||
"data": "Data",
|
||
"inspection_robot": "Inspection Robot",
|
||
"cleaning_robot": "Cleaning Robot",
|
||
"weeding_robot": "Weeding Robot",
|
||
"device_not_found_title": "Device Not Found",
|
||
"device_not_found_content": "Device not matched yet, please retry later",
|
||
"no_alias": "No alias",
|
||
"task_standby": "Standby",
|
||
"task_charging": "Charging",
|
||
"control_panel": "Control Panel",
|
||
"speed_gear": "Speed",
|
||
"speed_low": "Low",
|
||
"speed_mid": "Medium",
|
||
"speed_high": "High",
|
||
"status_speed": "Speed",
|
||
"status_mode": "Mode",
|
||
"status_signal": "Signal",
|
||
"action_start": "Start",
|
||
"action_pause": "Pause",
|
||
"action_return": "Return",
|
||
"task_in_progress": "In Progress",
|
||
"task_default": "Inverter area patrol",
|
||
"checklist_title": "Checklist",
|
||
"signal_strong": "Strong",
|
||
"view_front": "Front",
|
||
"view_back": "Back",
|
||
"view_left": "Left",
|
||
"view_right": "Right",
|
||
"view_panorama": "Panorama",
|
||
"no_video": "No Video",
|
||
"play": "Play",
|
||
"path_planning": "Path Planning",
|
||
"path_planning_desc": "View and edit the robot patrol path",
|
||
"release_permission_success": "Remote control permission released",
|
||
"release_permission_failed": "Failed to release control permission",
|
||
"open_bluetooth_first": "Please turn on Bluetooth first",
|
||
"searching_bluetooth": "Searching for Bluetooth devices...",
|
||
"stat_online_devices": "Online Devices",
|
||
"stat_working": "Working",
|
||
"stat_standby": "Standby",
|
||
"stat_offline": "Offline",
|
||
"no_matching_device": "No matching devices",
|
||
"feature_todo": "Feature not available yet",
|
||
"rename_failed": "Failed to rename device",
|
||
"rename_failed_code": "Failed to rename device: status code %s",
|
||
"rename_success": "Device renamed to \"%s\"",
|
||
"no_site_selected": "No site selected",
|
||
"site_suffix": " (%s)",
|
||
"site_suffix_personal": " (%s) · Personal account",
|
||
"personal_single_site": "Personal accounts are bound to a single site",
|
||
"no_site_data": "No site data",
|
||
"select_site": "Select site",
|
||
"my_robots": "My robots",
|
||
"my_robots_desc": "Unified multi-model management · Features loaded by device SN",
|
||
"view_card": "Card view",
|
||
"view_overview": "Overview",
|
||
"search_hint_full": "Search device name, model or SN",
|
||
"overview_title": "Device overview",
|
||
"overview_desc": "Built for centralized multi-robot management",
|
||
"stat_total": "Total devices",
|
||
"stat_alarm_offline": "Alarm/Offline",
|
||
"device_distribution": "Device distribution",
|
||
"total_devices_count": "%s devices in total",
|
||
"th_device_info": "Device",
|
||
"th_status": "Status",
|
||
"th_location_task": "Location / Task",
|
||
"add_robot": "Add robot",
|
||
"scan_action": "Scan",
|
||
"add_device": "Add device",
|
||
"local_video": "Local video",
|
||
"usb_camera": "USB camera",
|
||
"drone_station_model": "Drone dock · %s",
|
||
"no_device_title": "No robots added yet",
|
||
"no_device_desc": "You can explore the app first,\nand bind your robot once it arrives.",
|
||
"guide_title": "Getting started",
|
||
"guide1_title": "Product guide",
|
||
"guide1_desc": "Learn the basic features and workflow",
|
||
"guide2_title": "Watch product videos",
|
||
"guide2_desc": "Get started with control, video and work features",
|
||
"guide3_title": "Help & after-sales",
|
||
"guide3_desc": "FAQ, repair requests and customer support",
|
||
"work_text_working": "Autonomous work in progress",
|
||
"work_text_online": "Standby",
|
||
"work_text_offline": "Unable to connect",
|
||
"sn_copied": "SN copied to clipboard",
|
||
"edition_plus": "PLUS Smart",
|
||
"edition_std": "STD Standard",
|
||
"edition_pro": "PRO Flagship",
|
||
"location_plant_1": "Plant 1",
|
||
"location_plant_2": "Plant 2",
|
||
"location_raw_material": "Raw material area",
|
||
"location_office_building": "Office building",
|
||
"rename_title": "Rename device",
|
||
"rename_label": "Device name",
|
||
"rename_empty": "Name cannot be empty",
|
||
"rename_hint": "Chinese, English, digits and common symbols are supported; 1-%s characters recommended",
|
||
"rename_quick": "Quick naming",
|
||
"rename_field_hint": "Enter device name",
|
||
"rename_footer": "Only the display name changes; SN, binding and permissions stay unchanged",
|
||
"preset_1": "Unit 1",
|
||
"preset_2": "Unit 2",
|
||
"preset_north": "North area",
|
||
"preset_south": "South area",
|
||
"preset_test": "Test robot",
|
||
"preset_custom": "Custom",
|
||
"action_cancel": "Cancel",
|
||
"action_confirm": "Confirm",
|
||
"action_save": "Save",
|
||
"fr_title": "Find robot",
|
||
"fr_gnss_valid": "GNSS fix valid",
|
||
"fr_gnss_invalid": "GNSS fix invalid",
|
||
"fr_model_std": "%s Standard",
|
||
"fr_map_entry": "View robot on map",
|
||
"fr_map_entry_sub": "Location and last update time",
|
||
"fr_sound_title": "Sound & light locating",
|
||
"fr_sound_desc": "Triggers buzzer and indicator lights so on-site staff can find the device; stops automatically.",
|
||
"fr_auto_stop": "Auto stop",
|
||
"fr_auto_stop_value": "10s (demo)",
|
||
"fr_start": "Start locating alert",
|
||
"fr_stop": "Stop locating",
|
||
"fr_note": "Sound & light locating is unavailable while the device is offline; only the last known location can be viewed.",
|
||
"fr_toast_offline": "Device is offline, cannot trigger locating alert",
|
||
"fr_toast_start_todo": "Locating command is not connected yet",
|
||
"fr_toast_start_sent": "Locating command sent, watch for the device sound & light alert",
|
||
"fr_toast_start_failed": "Failed to send locating command, please retry",
|
||
"fr_toast_stop_todo": "Stop-locating command is not connected yet",
|
||
"fr_toast_map_todo": "Map location entry is not connected yet",
|
||
"unknown": "Unknown"
|
||
},
|
||
|
||
"device_detail_v2": {
|
||
"title": "Device details",
|
||
"tab_overview": "Overview",
|
||
"tab_monitor": "Monitor",
|
||
"tab_control": "Control",
|
||
"tab_record": "Records",
|
||
"tab_settings": "Settings",
|
||
"footer_settings": "Settings opened by model (%s)",
|
||
"footer_demo": "Sample data; quick actions are navigation entries only",
|
||
"overview_title": "Robot status overview",
|
||
"view_detail": "View details",
|
||
"stat_energy": "Energy",
|
||
"stat_control_mode": "Control mode",
|
||
"stat_chip_temp": "Chip temperature",
|
||
"stat_blade_speed": "Blade speed",
|
||
"stat_voltage": "Battery voltage",
|
||
"stat_gnss": "GNSS fix",
|
||
"mode_remote": "Remote",
|
||
"mode_local": "Local",
|
||
"location_task_title": "Position & current task",
|
||
"view_map": "View map",
|
||
"current_location": "Current location: %s",
|
||
"location_hint": "Current position only; tasks follow the control page",
|
||
"live_monitor": "Live monitoring",
|
||
"data_update_sec": "Updated %ss ago",
|
||
"unknown_version": "Unknown",
|
||
"sensor_status": "Sensor status",
|
||
"sensor_status_trailing": "Configured for this SN",
|
||
"st_valid": "Valid",
|
||
"st_normal": "Normal",
|
||
"st_not_established": "Not established",
|
||
"st_no_fault": "No fault",
|
||
"m_gnss_title": "GNSS basic positioning",
|
||
"m_gnss_sub": "Position valid · Basic positioning (non-RTK)",
|
||
"m_ultrasonic_title": "Ultrasonic obstacle detection",
|
||
"m_ultrasonic_sub": "4 sensors · No obstacle alert currently",
|
||
"m_imu_title": "Chassis IMU",
|
||
"m_imu_sub": "Attitude reporting normal · Monitoring only",
|
||
"comm_link": "Communication links",
|
||
"comm_link_hint": "Data and video links shown separately",
|
||
"m_cloud_title": "Cloud data connection",
|
||
"m_cloud_sub": "Lightweight channel for status and alerts",
|
||
"m_rc_title": "Physical remote controller link",
|
||
"m_rc_sub": "Receiver online · Control not taken over",
|
||
"m_video_title": "Video streaming session",
|
||
"m_video_sub": "Video page not opened, no stream",
|
||
"m_mcu_title": "Lower controller & relay board",
|
||
"m_mcu_sub": "Key control communication status",
|
||
"actuator_title": "Actuators & current faults",
|
||
"fault_detail": "Fault details",
|
||
"m_blade_title": "Blade feedback",
|
||
"m_blade_sub": "Stopped · Safety interlock normal",
|
||
"m_active_fault_title": "Active faults",
|
||
"m_active_fault_sub": "0 items · No active alert detected",
|
||
"grid_title": "Sensor & communication monitoring",
|
||
"g_camera_title": "Perception camera",
|
||
"g_camera_sub": "4 channels · Image normal",
|
||
"g_ultrasonic_sub": "Detection normal · No obstacle",
|
||
"g_gnss_title": "GNSS/RTK",
|
||
"g_gnss_sub": "Fixed solution · Error <2cm",
|
||
"g_motion_title": "Motion state",
|
||
"g_motion_sub": "Attitude and speed normal",
|
||
"g_mcu_title": "MCU communication",
|
||
"g_mcu_sub": "Controller connected",
|
||
"g_cloud_sub": "Data reporting normal",
|
||
"g_ai_title": "Basic person/vehicle recognition",
|
||
"g_ai_sub": "Recognition module working",
|
||
"g_rc_title": "Remote control link",
|
||
"g_rc_sub": "Video and control channels normal",
|
||
"g_heartbeat_title": "Device heartbeat",
|
||
"g_heartbeat_sub": "Last report: 2s ago",
|
||
"quick_diag": "Quick diagnostics",
|
||
"self_check": "Device self-check",
|
||
"self_check_sub": "Last check OK · 2024-10-19 09:32",
|
||
"check_now": "Check now",
|
||
"ctrl_video_remote": "Video & remote control",
|
||
"ctrl_on_demand": "Connect on demand",
|
||
"ctrl_realtime_video": "Open live video",
|
||
"ctrl_realtime_video_sub": "View live footage",
|
||
"ctrl_need_permission": "Enter manually and request permission",
|
||
"ctrl_remote": "Open remote control",
|
||
"ctrl_remote_sub": "Operate the robot remotely",
|
||
"ctrl_note": "Live video and remote control start only on their dedicated pages; they never start automatically.",
|
||
"ctrl_task": "Task & operation control",
|
||
"ctrl_route": "Open path planning",
|
||
"ctrl_route_sub": "Set operation routes",
|
||
"ctrl_route_hint": "Auto planning and editing supported",
|
||
"ctrl_task_mgr": "Task management",
|
||
"ctrl_task_mgr_sub": "Create and run mowing tasks",
|
||
"ctrl_task_mgr_hint": "Scheduled tasks supported",
|
||
"ctrl_ops": "Quick controls",
|
||
"op_task_start": "Start task",
|
||
"op_task_start_sub": "Begin operation",
|
||
"op_task_pause": "Pause task",
|
||
"op_task_pause_sub": "Pause current task",
|
||
"op_return_home": "Return home",
|
||
"op_return_home_sub": "Back to charging station",
|
||
"op_find": "Find robot",
|
||
"op_find_sub": "Locate the robot quickly",
|
||
"op_manual_switch": "Manual/Auto switch",
|
||
"op_manual_switch_sub": "Switch control mode",
|
||
"op_robot_info": "Robot info",
|
||
"op_robot_info_sub": "View detailed configuration",
|
||
"op_app_power": "APP power",
|
||
"op_app_power_sub": "Remote power control",
|
||
"op_voice": "Voice broadcast",
|
||
"op_voice_sub": "Remote voice announcement",
|
||
"op_light": "Lights & sound",
|
||
"op_light_sub": "Control lights and warnings",
|
||
"rec_fault_title": "Fault & alert records",
|
||
"rec_work_title": "Operation records",
|
||
"view_all": "View all",
|
||
"rec_7d": "Faults/alerts in 7 days",
|
||
"rec_7d_sub": "3 records (1 fault, 2 alerts)",
|
||
"rec_count": "%s items",
|
||
"rec_today": "Today's operation",
|
||
"rec_date": "%s/%s",
|
||
"rec_area": "Area",
|
||
"rec_duration": "Duration",
|
||
"rec_efficiency": "Efficiency",
|
||
"fault_state": "Fault status",
|
||
"fault_none": "No faults",
|
||
"fault_none_sub": "Device running normally, no anomaly detected",
|
||
"fn_title": "Quick actions",
|
||
"fn_edit_order": "Edit order",
|
||
"fn_realtime_video": "Live video",
|
||
"fn_remote": "Remote control",
|
||
"fn_find": "Find robot",
|
||
"fn_app_power": "APP power",
|
||
"fn_fault": "Fault diagnosis",
|
||
"fn_sensor": "Sensor monitoring",
|
||
"all_functions": "View all functions",
|
||
"set_group_device": "Device settings & upgrade",
|
||
"set_param": "Device parameters",
|
||
"set_param_sub": "Operation, chassis and blade parameters",
|
||
"set_firmware": "Firmware & OTA upgrade",
|
||
"set_firmware_sub": "Current version V1.1.2 · Check for updates",
|
||
"set_firmware_sub_old": "Current version V0.9.7 · Requires downtime",
|
||
"set_check_update": "Check update",
|
||
"set_group_blade": "Operation & blade strategy",
|
||
"set_manage_perm": "Admin permission",
|
||
"set_obstacle_stop": "Blade stop on obstacle",
|
||
"set_obstacle_stop_sub": "Enabled · Stop blade by strategy on obstacle",
|
||
"set_enabled": "Enabled",
|
||
"set_blade_resume": "Blade resume strategy",
|
||
"set_blade_resume_sub": "Manual confirmation (recommended)",
|
||
"set_manual_confirm": "Manual confirm",
|
||
"set_chassis": "Chassis lift parameters",
|
||
"set_chassis_sub": "Configured by model and limit signals",
|
||
"set_view": "View",
|
||
"set_cancel": "Cancel",
|
||
"set_group_comm": "Communication & video settings",
|
||
"set_network": "Network & communication",
|
||
"set_network_sub": "4G/5G/Wi-Fi and GNSS communication",
|
||
"set_video": "Video transmission",
|
||
"set_video_sub": "Quality, channel and lane guide lines",
|
||
"set_group_map": "Positioning & map settings",
|
||
"set_map": "Positioning & map parameters",
|
||
"set_map_sub": "GNSS parameters, map and work areas",
|
||
"set_group_safety": "Safety settings",
|
||
"set_auto_stop": "Auto blade stop on obstacle",
|
||
"set_auto_stop_sub": "Stop the blade automatically when an obstacle is detected",
|
||
"set_auto_resume": "Auto blade resume after clearing",
|
||
"set_auto_resume_sub": "Resume mowing once the obstacle is removed",
|
||
"set_alarm": "Alarm & light settings",
|
||
"set_alarm_sub": "Volume, light prompts and alert methods",
|
||
"set_group_control": "Control & video preferences",
|
||
"set_rc_pref": "Remote control preferences",
|
||
"set_rc_pref_sub": "Layout and speed level limit",
|
||
"set_config": "Configure",
|
||
"set_video_pref": "Video display preferences",
|
||
"set_light_pref": "Light & sound preferences",
|
||
"set_light_pref_sub": "Only non-critical prompts can be adjusted",
|
||
"set_group_advanced": "Advanced capabilities",
|
||
"set_ai": "AI recognition",
|
||
"set_ai_sub": "Person/vehicle recognition, sensitivity and areas",
|
||
"set_follow": "Person following",
|
||
"set_follow_sub": "Target lock, follow mode and distance",
|
||
"set_remote_ctrl": "Remote control settings",
|
||
"set_remote_ctrl_sub": "Preferences, layout and video latency",
|
||
"set_group_maintain": "Network & system maintenance",
|
||
"set_net_loc": "Network & positioning",
|
||
"set_net_loc_sub": "4G/Wi-Fi and GNSS communication",
|
||
"unbind": "Unbind device",
|
||
"unbinding": "Unbinding…",
|
||
"unbind_confirm_body": "After unbinding you can no longer monitor or control \"%s\". Rebinding is required. Unbind now?",
|
||
"unbind_confirm_ok": "Unbind",
|
||
"unbind_success": "Unbound %s",
|
||
"unbind_error": "Unbind failed: %s"
|
||
},
|
||
|
||
"device_pages_v2": {
|
||
"title": "All functions",
|
||
"empty": "No matching function",
|
||
"search_hint": "Search functions",
|
||
"notice_prefix": "Current device: ",
|
||
"notice_suffix": ". Only functions supported by this device are shown; this version does not provide auto planning, task dispatch or return-home.",
|
||
"group_video": "Video & actions",
|
||
"group_info": "Device info",
|
||
"group_monitor": "Device monitoring",
|
||
"live_video": "Live video",
|
||
"remote": "Remote control",
|
||
"find": "Find robot",
|
||
"voice": "Voice broadcast",
|
||
"app_power": "APP power",
|
||
"follow": "Person following",
|
||
"return_home": "Return home",
|
||
"robot_info": "Robot info",
|
||
"location_map": "Location & map",
|
||
"voice_preset": "Voice presets",
|
||
"run_record": "Operation records",
|
||
"sensor": "Sensor monitoring",
|
||
"fault": "Fault diagnosis",
|
||
"step_scan": "Scan device",
|
||
"step_confirm": "Confirm info",
|
||
"step_bind": "Bind & activate",
|
||
"bind_title": "Confirm device info",
|
||
"bind_banner": "Device recognized, please confirm its info and ownership",
|
||
"bind_sn": "Device serial number",
|
||
"bind_status": "Binding status",
|
||
"bind_conn": "Connection",
|
||
"bind_area": "Service region",
|
||
"bind_verify_title": "Ownership verification",
|
||
"bind_verify_desc": "Scanning the SN does not grant control. Activation credentials or local confirmation on the device are required before binding.",
|
||
"bind_next": "Verify ownership and continue",
|
||
"qr_title": "Add robot",
|
||
"qr_scan_title": "Scan device QR code",
|
||
"qr_scan_desc": "Place the QR code on the robot inside the frame",
|
||
"qr_flash": "Flash",
|
||
"qr_album": "From album",
|
||
"qr_manual": "Or enter SN manually",
|
||
"qr_sn_hint": "Enter device SN, e.g. SA260002",
|
||
"qr_confirm": "Recognize",
|
||
"qr_not_arrived": "Robot not delivered yet?",
|
||
"qr_not_arrived_desc": "Try the APP first and add the device once it arrives",
|
||
"qr_skip_later": "Skip for now, add later →",
|
||
"qr_skip": "Skip for now",
|
||
"qr_err_no_code": "No QR code recognized, try a clearer image",
|
||
"qr_err_sn_empty": "Please enter the device SN"
|
||
},
|
||
|
||
"device_ownership_v2": {
|
||
"title": "Ownership & Security",
|
||
"card_basic": "Device Basics",
|
||
"basic_name": "Device Name",
|
||
"basic_org": "Organization",
|
||
"basic_site": "Site",
|
||
"basic_owner": "Owner",
|
||
"unknown": "Unknown",
|
||
"owner": "Owner",
|
||
"unsynced": "Not synced",
|
||
"type": "Ownership Type",
|
||
"type_org": "Enterprise",
|
||
"bound_active": "Bound · Online",
|
||
"bound_offline": "Bound · Offline",
|
||
"sn": "Device SN",
|
||
"first_claim": "First Claim",
|
||
"admin": "Administrator",
|
||
"member_enter": "Sharing",
|
||
"card_permission": "My Permissions",
|
||
"role_current": "Role: %s",
|
||
"perm_desc": "Ownership follows Organization → Site → Owner. Your role can only act on the level within its scope.",
|
||
"perm_level_org": "Organization",
|
||
"perm_level_site": "Site",
|
||
"perm_level_user": "Owner",
|
||
"perm_self_short": "Self only",
|
||
"perm_self_only": "Self only (cannot transfer to others)",
|
||
"perm_transfer_to": "Can transfer to",
|
||
"perm_unbind_to": "Can unbind up to",
|
||
"card_actions": "Ownership Actions",
|
||
"risky_transfer": "Transfer Device",
|
||
"risky_transfer_sub": "Re-attach to an organization, site or owner",
|
||
"risky_unbind": "Unbind Device",
|
||
"risky_unbind_sub": "Remove the device from its current level (irreversible)",
|
||
"tag_locked": "No access",
|
||
"action_locked": "Your role has no permission for this action",
|
||
"footer": "Administrator is not the device owner. The SN is only an identifier and cannot complete an unbind. Real ownership data appears once the ownership API is connected.",
|
||
"toast_member_todo": "Member sharing management is not connected yet",
|
||
"transfer_device_title": "Transfer Device",
|
||
"transfer_device_msg": "Transferring re-attaches the device to the selected level and replaces the current ownership link. Continue?",
|
||
"transfer_device_note": "The device identity must be verified by scanning first. Regular users can only transfer to themselves.",
|
||
"transfer_device_ok": "Start Transfer",
|
||
"unbind_device_title": "Unbind Device",
|
||
"unbind_device_msg": "After unbinding, your link to this device expires immediately and re-binding is required. Continue?",
|
||
"unbind_device_note": "The device identity must be verified by scanning first; the SN cannot replace identity verification.",
|
||
"unbind_device_ok": "Start Unbind"
|
||
},
|
||
|
||
"device_ownership_action_v2": {
|
||
"title_transfer": "Transfer Device",
|
||
"title_unbind": "Unbind Device",
|
||
"card_scan": "Scan Verification",
|
||
"scan_device_code": "Device Code",
|
||
"scan_result": "Scanned Value",
|
||
"scan_state": "Verification",
|
||
"scan_unscanned": "Not scanned · using current device",
|
||
"scan_matched": "Matches current device",
|
||
"scan_mismatch": "Does not match current device",
|
||
"scan_mismatch_hint": "The scanned value differs from the current device code. Submitting will act on the scanned device instead; make sure you did not scan the wrong one.",
|
||
"card_scope_transfer": "Level to Attach To",
|
||
"card_scope_unbind": "Ownership Level to Remove",
|
||
"scope_org": "Organization",
|
||
"scope_site": "Site",
|
||
"scope_user": "Owner",
|
||
"scope_opt_user": "Individual",
|
||
"scope_opt_site": "Site",
|
||
"scope_opt_org": "Organization",
|
||
"scope_opt_user_sub": "Only removes the owner's link to the device",
|
||
"scope_opt_site_sub": "Removes the site and everything below it",
|
||
"scope_opt_org_sub": "Removes the whole organization link, widest impact",
|
||
"scope_locked_hint": "Out of your role's permission, cannot be selected",
|
||
"tag_locked": "No access",
|
||
"scope_select_tip": "Unbinding only does one thing: detach the device from the selected level. Re-binding is required to restore the link.",
|
||
"unassigned_org": "No organization selected",
|
||
"unassigned_site": "No site selected",
|
||
"unassigned_user": "No owner selected",
|
||
"role_current": "Role: %s",
|
||
"role_admin": "Administrator",
|
||
"role_manager": "Organization Manager",
|
||
"role_site_manager": "Site Manager",
|
||
"role_personal": "Personal Account",
|
||
"role_user": "Regular User",
|
||
"scope_tip_transfer": "Select level by level (Organization → Site → Owner); the device is attached to the deepest level you pick. Leaving the owner empty attaches it to the organization or site only.",
|
||
"scope_tip_unbind": "Select level by level (Organization → Site → Owner). Locked levels are only used for context and are never removed. To remove an upper level, pick \"Not specified\" in the picker.",
|
||
"scope_max_transfer": "Your role can attach up to: %s",
|
||
"scope_max_unbind": "Your role can remove up to: %s",
|
||
"picker_clear_transfer": "Not specified (skip this level)",
|
||
"picker_clear_unbind": "Not specified (remove one level up)",
|
||
"preview_transfer": "Will be attached to:",
|
||
"preview_unbind": "This will remove:",
|
||
"picker_empty": "No options available",
|
||
"submit_transfer": "Confirm Transfer",
|
||
"submit_unbind": "Confirm Unbind",
|
||
"toast_transfer": "Device transferred",
|
||
"toast_unbind": "Device unbound",
|
||
"mismatch_title": "Scanned Device Differs",
|
||
"mismatch_msg": "Scanned value %s does not match the current device %s. Continuing will act on the scanned device. Continue?",
|
||
"mismatch_note": "This action changes device ownership. Make sure the scanned device is the one you selected.",
|
||
"mismatch_ok": "Proceed Anyway",
|
||
"footer_transfer": "Transfer equals binding: the device is attached to the selected level and the previous ownership link is replaced.",
|
||
"footer_unbind": "Unbinding is irreversible: the device is detached from the selected level and must be bound again to restore access."
|
||
},
|
||
|
||
"robot_power_v2": {
|
||
"title": "APP Power & Linkage Control",
|
||
"state_on": "Powered on",
|
||
"state_off": "Powered off",
|
||
"state_off_short": "Off",
|
||
"sec_remote_power": "Remote Power",
|
||
"power_help": "Power Help",
|
||
"sec_linkage": "Linkage Actions",
|
||
"unlocked": "Unlocked, ready to use",
|
||
"locked_hint": "Power on first",
|
||
"sec_unlock": "Controls Unlocked After Power On",
|
||
"unlock_hint": "Unlocked automatically after remote power on",
|
||
"cur_state": "Current Status",
|
||
"powered_desc": "Linkage actions are unlocked: blade, chassis, lights and horn are available.",
|
||
"unpowered_desc": "Power on remotely first to use blade, chassis, E-stop, lights and horn.",
|
||
"btn_power_on": "Power On",
|
||
"btn_power_off": "Power Off",
|
||
"lk_blade": "Blade",
|
||
"lk_chassis": "Chassis Lift",
|
||
"lk_estop": "Emergency Stop",
|
||
"lk_light": "Lights",
|
||
"lk_horn": "Horn / Voice",
|
||
"act_start": "Start",
|
||
"act_stop": "Stop",
|
||
"act_raise": "Raise",
|
||
"act_lower": "Lower",
|
||
"act_estop": "E-Stop",
|
||
"act_on": "On",
|
||
"act_off": "Off",
|
||
"act_horn": "Horn",
|
||
"act_voice": "Voice",
|
||
"tile_device_off": "Device is off",
|
||
"tile_operable": "Ready",
|
||
"find_tile": "Find Robot",
|
||
"find_locked": "Needs power on",
|
||
"find_start": "Start Finding",
|
||
"more": "More",
|
||
"footer": "Remote power and motion control require safety authentication. Ensure the area is clear first.",
|
||
"toast_channel_tip": "The %s channel is not connected yet (requires remote control authority and ignition command). The state shown is a preview only.",
|
||
"toast_channel_short": "The %s channel is not connected yet",
|
||
"toast_already_on": "Device is already powered on",
|
||
"toast_already_off": "Device is currently powered off",
|
||
"toast_offline_on": "Device is offline; the power-on command was not sent",
|
||
"toast_offline_off": "Device is offline; the power-off command was not sent",
|
||
"toast_need_power": "Power on remotely first to run %s",
|
||
"toast_need_power_voice": "Power on remotely first to broadcast voice",
|
||
"toast_more_unlock": "More unlocked features will be released in later versions",
|
||
"toast_power_help": "Blade, chassis, E-stop, lights and horn are available only after remote power on",
|
||
"toast_safety_help": "Remote power and motion control require device-side safety authentication. Make sure nobody is nearby.",
|
||
"power_on_title": "Confirm Remote Power On",
|
||
"power_on_msg": "Send a remote power-on command to the robot? Blade, chassis lift and E-stop become available only after power on.",
|
||
"power_on_note": "Make sure the surrounding area is safe and the network is stable.",
|
||
"power_on_ok": "Power On",
|
||
"power_off_title": "Confirm Remote Power Off",
|
||
"power_off_msg": "Send a remote power-off command to the robot? Blade, chassis, lights and horn will stop working immediately.",
|
||
"power_off_note": "Make sure the device has stopped working and is in a safe position.",
|
||
"power_off_ok": "Power Off"
|
||
},
|
||
|
||
"robot_sensor_v2": {
|
||
"title": "Sensors & Connectivity",
|
||
"todo": "This feature is not available yet",
|
||
"tab_ultrasonic": "Ultrasonic",
|
||
"tab_position": "Position",
|
||
"tab_comm": "Network",
|
||
"tab_mechanism": "Mechanism",
|
||
"sec_ultrasonic": "Ultrasonic Live Status",
|
||
"us_card_title": "Ultrasonic Obstacle Detection",
|
||
"us_ok_count": "6/6 normal",
|
||
"us_note": "Distances below are demo data; real sensor layout is loaded per device SN.",
|
||
"sec_distance": "Sensor Ranging",
|
||
"dir_front_left": "Front-left",
|
||
"dir_front_mid": "Front-center",
|
||
"dir_front_right": "Front-right",
|
||
"dir_left": "Left",
|
||
"dir_right": "Right",
|
||
"dir_rear": "Rear",
|
||
"dist_normal": "%s · normal",
|
||
"sonar_front": "Front: 1.8m",
|
||
"sonar_rear": "Rear: 2.1m",
|
||
"sec_position": "Position & Satellites",
|
||
"row_lng": "Longitude",
|
||
"row_lat": "Latitude",
|
||
"row_fix": "Fix Type",
|
||
"row_fix_value": "Built-in GNSS",
|
||
"row_fix_state": "Fix Status",
|
||
"fix_loading": "Loading…",
|
||
"fix_valid": "Valid · meter level",
|
||
"fix_none": "Not reported",
|
||
"row_sats": "Satellites",
|
||
"row_sats_value": "Example: 18",
|
||
"row_rtk": "RTK Correction",
|
||
"row_rtk_value": "Example: disabled",
|
||
"sec_comm": "Network Link",
|
||
"row_online": "Device Online",
|
||
"online": "Online",
|
||
"offline": "Offline",
|
||
"row_comm_mode": "Connection",
|
||
"row_comm_mode_value": "Example: MQTT long connection",
|
||
"row_net_type": "Network Type",
|
||
"row_net_type_value": "Example: 4G",
|
||
"row_signal": "Signal Strength",
|
||
"row_signal_value": "Example: -68 dBm",
|
||
"row_latency": "Link Latency",
|
||
"row_latency_value": "Example: 120 ms",
|
||
"row_last_report": "Last Report",
|
||
"row_last_report_value": "Example: 2026-10-20 09:41",
|
||
"sec_mechanism": "Working Mechanism",
|
||
"row_blade_lift": "Blade Deck Lift",
|
||
"row_blade_lift_value": "Example: stopped",
|
||
"row_blade_rpm": "Blade Speed",
|
||
"row_blade_rpm_value": "Example: 0 r/min",
|
||
"row_tilt": "Chassis Tilt",
|
||
"row_tilt_value": "Example: normal",
|
||
"row_obstacle": "Obstacle Detection",
|
||
"row_obstacle_value": "Example: not triggered",
|
||
"row_drive": "Drive System",
|
||
"row_drive_value": "Example: normal",
|
||
"row_estop": "E-Stop Switch",
|
||
"row_estop_value": "Example: not pressed",
|
||
"sample_note": "Fields marked \"Example\" are not reported by the backend yet and will update automatically once connected"
|
||
},
|
||
|
||
"robot_fault_v2": {
|
||
"title": "Fault Diagnosis Center",
|
||
"todo": "This feature is not available yet",
|
||
"sec_current": "Current Faults & Alerts",
|
||
"sec_filter": "Fault Filter",
|
||
"sec_support": "Diagnosis Support",
|
||
"cur_none": "No unresolved faults",
|
||
"cur_unknown": "Current fault status unknown",
|
||
"cur_sub_online": "Latest valid report · %s",
|
||
"cur_sub_offline": "Device offline, telemetry interrupted · checked at %s",
|
||
"st_normal": "Normal",
|
||
"st_unknown": "Unknown",
|
||
"filter_current": "Current (0)",
|
||
"filter_recovered": "Recovered (%s)",
|
||
"filter_all": "All Records",
|
||
"list_recovered": "Recovered Events",
|
||
"list_all": "All Records",
|
||
"list_recent_recovered": "Recently Recovered",
|
||
"empty_offline": "Device offline, no records available",
|
||
"empty": "No records",
|
||
"recovered_suffix": "%s · recovered",
|
||
"badge_recovered": "Recovered",
|
||
"support_codes": "View Fault Codes",
|
||
"support_codes_sub": "Description, impact and troubleshooting",
|
||
"support_sensor": "Sensor & Network Live Status",
|
||
"support_sensor_sub": "Check current link and hardware feedback",
|
||
"note": "When offline or telemetry is stale, never show \"No faults\"; label it as \"status unknown\" instead. Recovered events are demo data and will update once the fault record API is connected.",
|
||
"sheet_codes_title": "Fault Codes",
|
||
"sheet_codes_hint": "Tap any code to see description, impact and troubleshooting",
|
||
"sheet_problem": "Description",
|
||
"sheet_impact": "Impact & Advice",
|
||
"sheet_ok": "Got it",
|
||
"fc_c201_name": "Brief 4G signal loss",
|
||
"fc_c201_desc": "The 4G link between the device and the cloud dropped for a short time and recovered automatically after reconnecting.",
|
||
"fc_c201_impact": "Impact: remote commands and status reports are delayed; work itself is not affected.",
|
||
"fc_c201_advice": "Action: check 4G coverage in the work area, inspect the antenna connection, and replace the SIM if it happens often.",
|
||
"fc_u108_name": "Brief ultrasonic comms error",
|
||
"fc_u108_desc": "The ultrasonic sensor serial link briefly lost packets and recovered once the link was restored.",
|
||
"fc_u108_impact": "Impact: obstacle distance refresh lags; low-speed work can continue meanwhile.",
|
||
"fc_u108_advice": "Action: check the sensor harness and connectors, clean the sensor surface, replace the sensor if needed.",
|
||
"ev_time_1": "Oct 19, 18:23",
|
||
"ev_time_2": "Oct 17, 15:42"
|
||
},
|
||
|
||
"robot_light_v2": {
|
||
"title": "Lights & Sound",
|
||
"info_tip": "Lights and horn require a control channel on the device; currently a UI preview only",
|
||
"sec_light": "Light Control",
|
||
"sec_sound": "Sound & Light Alerts",
|
||
"sec_auto": "Automation",
|
||
"pill_on": "Lights on",
|
||
"pill_off": "All lights off",
|
||
"headlight": "Headlight",
|
||
"headlight_sub": "Work and night lighting for the travel direction",
|
||
"warning_light": "Warning Light",
|
||
"warning_light_sub": "Amber strobe to alert people nearby during work",
|
||
"marker_light": "Marker Light",
|
||
"marker_light_sub": "Body outline hint so others can see the machine at night",
|
||
"act_on_headlight": "Turn on headlight",
|
||
"act_off_headlight": "Turn off headlight",
|
||
"act_on_warning": "Turn on warning light",
|
||
"act_off_warning": "Turn off warning light",
|
||
"act_on_marker": "Turn on marker light",
|
||
"act_off_marker": "Turn off marker light",
|
||
"act_horn": "Horn",
|
||
"volume": "Alarm Volume",
|
||
"vol_low": "Low",
|
||
"vol_mid": "Medium",
|
||
"vol_high": "High",
|
||
"volume_set": "Volume set to \"%s\" (local preference, not sent to the device)",
|
||
"horn_dur": "Horn Duration",
|
||
"dur_3": "3 s",
|
||
"dur_5": "5 s",
|
||
"dur_10": "10 s",
|
||
"horn_set": "Horn duration set to \"%s\" (local preference, not sent to the device)",
|
||
"test_horn": "Test horn %s",
|
||
"auto_night": "Auto Light at Night",
|
||
"auto_night_sub": "Turn on headlight and marker light automatically in low light",
|
||
"auto_night_on": "Auto light at night enabled (local policy, not sent to the device)",
|
||
"auto_night_off": "Auto light at night disabled (local policy, not sent to the device)",
|
||
"auto_work": "Warning Light During Work",
|
||
"auto_work_sub": "Turn on the warning light when a task starts and off when it ends",
|
||
"auto_work_on": "Warning light during work enabled (local policy, not sent to the device)",
|
||
"auto_work_off": "Warning light during work disabled (local policy, not sent to the device)",
|
||
"auto_battery": "Low Battery Alert",
|
||
"auto_battery_sub": "Sound the horn and strobe the warning light below 20% battery",
|
||
"auto_battery_on": "Low battery alert enabled (local policy, not sent to the device)",
|
||
"auto_battery_off": "Low battery alert disabled (local policy, not sent to the device)",
|
||
"offline_tip": "Device is offline; the %s command was not sent",
|
||
"channel_tip": "The %s channel is not connected yet (no light control on the device); the state shown is a preview only",
|
||
"footer": "The remote protocol does not expose light or horn commands yet: switches here only reflect the UI state, and volume, horn duration and automation are local preferences. Real control requires the device side to expose these channels."
|
||
},
|
||
|
||
"robot_firmware_v2": {
|
||
"title": "Software & Firmware Update",
|
||
"info_tip": "Updating requires the device to be online, powered stably and safely stopped",
|
||
"sec_version": "Current Versions",
|
||
"sec_check": "Update Check",
|
||
"sec_prereq": "Before You Update",
|
||
"sec_history": "Update History",
|
||
"row_mcu": "Controller MCU",
|
||
"row_comm": "Comms Module",
|
||
"row_video": "Video Module",
|
||
"row_cfg": "Config Version",
|
||
"check_title": "System Update Check",
|
||
"check_sub": "Device must be online, powered and safely stopped",
|
||
"check_idle": "Not checked",
|
||
"check_checking": "Checking…",
|
||
"check_btn": "Check for Updates",
|
||
"prereq_1": "Robot is safely stopped or idle",
|
||
"prereq_2": "Blade and chassis actuators have stopped",
|
||
"prereq_3": "Power is sufficient and the link is stable",
|
||
"prereq_4": "Current account has update permission",
|
||
"rec_success": "Success",
|
||
"rec_done": "Completed",
|
||
"mod_mcu": "MCU v1.0.3",
|
||
"mod_comm": "Comms Module v1.1.2",
|
||
"mod_video": "Video Module v1.0.8",
|
||
"record_open_tip": "Update details for %s are not available yet",
|
||
"toast_offline": "Device is offline; cannot check for updates",
|
||
"toast_ota_todo": "The OTA service is not connected yet, so no version result is returned",
|
||
"footer": "Version numbers and history are demo data; real values appear once the device version API and OTA channel are connected. Update actions always ask for confirmation first."
|
||
},
|
||
|
||
"robot_network_v2": {
|
||
"title": "Network & Location",
|
||
"info_tip": "Network configuration depends on the device; this page only shows read-only info",
|
||
"todo": "The configuration channel is not connected yet",
|
||
"tab_network": "Network",
|
||
"tab_gnss": "GNSS",
|
||
"sec_net_current": "Current Network",
|
||
"sec_net_cfg": "Network Configuration",
|
||
"sec_gnss_state": "Fix Status",
|
||
"sec_coord": "Coordinates",
|
||
"sec_gnss_cfg": "Location Settings & Map",
|
||
"row_conn_mode": "Connection Mode",
|
||
"val_cellular": "4G cellular",
|
||
"val_disconnected": "Not connected",
|
||
"row_net_state": "Network Status",
|
||
"val_online_good": "Online · good signal",
|
||
"val_offline": "Offline",
|
||
"row_cloud": "Cloud Connection",
|
||
"val_normal": "Normal",
|
||
"val_broken": "Disconnected",
|
||
"row_heartbeat": "Last Heartbeat",
|
||
"val_just_now": "Just now",
|
||
"val_no_heartbeat": "No heartbeat",
|
||
"row_video_session": "Video Session",
|
||
"val_no_session": "No viewing session",
|
||
"entry_4g": "4G Module Info",
|
||
"entry_4g_sub": "Carrier, signal strength and module state",
|
||
"entry_wifi": "Wi-Fi Settings",
|
||
"entry_wifi_sub": "Available if the device has Wi-Fi hardware",
|
||
"entry_cloud": "Cloud Access",
|
||
"entry_cloud_sub": "Server and heartbeat read-only / limited settings",
|
||
"note_net": "Connection mode and cloud status come from the device online state; carrier and signal strength appear once the device reports them.",
|
||
"row_fix_module": "GPS Module",
|
||
"val_builtin_gnss": "Built-in GNSS",
|
||
"row_cur_fix": "Current Fix",
|
||
"fix_loading": "Loading…",
|
||
"fix_valid": "Valid · meter level",
|
||
"fix_none": "No fix",
|
||
"row_sat": "Satellite Info",
|
||
"val_sat_only": "Only real device reports",
|
||
"row_fix_time": "Last Fix Time",
|
||
"row_lat": "Latitude",
|
||
"row_lng": "Longitude",
|
||
"entry_map": "View on Map",
|
||
"entry_map_sub": "Pin, track and last update time",
|
||
"entry_gnss_param": "Location Parameters",
|
||
"entry_gnss_param_sub": "Coordinate system, report rate (device side)",
|
||
"note_loading": "Getting the device location…",
|
||
"note_from_device": "Coordinates come from real GNSS reports and are synced to Location & Map",
|
||
"note_error": "Failed to get location: %s",
|
||
"note_no_fix": "The device has not reported a valid fix yet"
|
||
},
|
||
|
||
"robot_run_v2": {
|
||
"title": "Run Records & Health",
|
||
"todo": "This feature is not available yet",
|
||
"custom_todo": "Custom time ranges are not available yet",
|
||
"sec_overview": "Run Overview",
|
||
"sec_events": "History & Events",
|
||
"footer": "Run statistics and history are demo data and will update once the statistics API is connected",
|
||
"range_7": "7 days",
|
||
"range_30": "30 days",
|
||
"range_90": "90 days",
|
||
"range_custom": "Custom",
|
||
"chart_7": "Run Trend (Last 7 Days)",
|
||
"chart_30": "Run Trend (Last 30 Days)",
|
||
"chart_90": "Run Trend (Last 90 Days)",
|
||
"axis_mon": "Mon",
|
||
"axis_tue": "Tue",
|
||
"axis_wed": "Wed",
|
||
"axis_thu": "Thu",
|
||
"axis_fri": "Fri",
|
||
"axis_sat": "Sat",
|
||
"axis_sun": "Sun",
|
||
"axis_week_1": "W1",
|
||
"axis_week_2": "W2",
|
||
"axis_week_3": "W3",
|
||
"axis_week_4": "W4",
|
||
"axis_week_5": "W5",
|
||
"axis_month_7": "Jul",
|
||
"axis_month_8": "Aug",
|
||
"axis_month_9": "Sep",
|
||
"stat_runtime": "Total Runtime",
|
||
"stat_runtime_value": "128.5h",
|
||
"stat_starts": "Start Count",
|
||
"stat_starts_value": "86 times",
|
||
"stat_mileage": "Mileage",
|
||
"stat_mileage_value": "12.8km",
|
||
"chart_daily": "Daily Runtime",
|
||
"chart_unit": "Unit: hours",
|
||
"ev_1_title": "Robot powered on",
|
||
"ev_1_time": "Today 08:41",
|
||
"ev_1_tag": "Status",
|
||
"ev_2_title": "APP remote session released",
|
||
"ev_2_time": "Yesterday 17:06",
|
||
"ev_2_tag": "Control",
|
||
"ev_3_title": "Ultrasonic blade-stop triggered",
|
||
"ev_3_time": "Oct 18, 15:42",
|
||
"ev_3_tag": "Cleared",
|
||
"ev_4_title": "Cloud connection restored",
|
||
"ev_4_time": "Oct 18, 15:40",
|
||
"ev_4_tag": "Network"
|
||
},
|
||
|
||
"robot_full_info_v2": {
|
||
"title": "Robot Full Info",
|
||
"todo": "This feature is not available yet",
|
||
"sec_profile": "Basic Profile",
|
||
"sec_runtime": "Runtime & Control",
|
||
"footer": "Power type, last report, control session and fault count are demo values; they will be replaced once connected",
|
||
"model_suffix": "%s · STD",
|
||
"tagline": "Dedicated video · Ultrasonic & light · Basic GNSS",
|
||
"pill_online": "Online · %s",
|
||
"pill_offline": "Offline · %s",
|
||
"mode_idle": "Standby",
|
||
"sn_masked": "%s · · · · %s (masked)",
|
||
"row_name": "Device Name",
|
||
"row_sn": "Device SN",
|
||
"row_bind": "Binding",
|
||
"row_type": "Category",
|
||
"row_power": "Power Type",
|
||
"row_report": "Last Report",
|
||
"val_bound": "Authorized",
|
||
"val_unbound": "Unbound",
|
||
"val_type": "Tracked mowing robot",
|
||
"val_power": "Demo: Electric",
|
||
"val_report": "Demo: 2026-10-20 09:41",
|
||
"stat_energy": "Energy",
|
||
"stat_mode": "Run Mode",
|
||
"stat_session": "Control Session",
|
||
"val_none": "None",
|
||
"row_gnss": "GNSS Fix",
|
||
"val_gnss_ok": "Fix valid",
|
||
"val_gnss_none": "No fix",
|
||
"row_fault": "Active Faults",
|
||
"val_fault_count": "0"
|
||
},
|
||
|
||
"robot_voice_v2": {
|
||
"title": "Voice Presets",
|
||
"todo": "This feature is not available yet",
|
||
"sec_list": "Preset Voices",
|
||
"add": "+ New",
|
||
"sec_edit": "Edit Voice Content",
|
||
"sec_realtime": "Live Broadcast (Phase 2)",
|
||
"footer": "Presets are stored on this device; speech synthesis is a device capability and plays only when supported",
|
||
"name_label": "Voice Name",
|
||
"name_hint": "e.g. Safety warning",
|
||
"text_label": "Voice Text (editable)",
|
||
"text_hint": "Enter the text to broadcast",
|
||
"language": "Language: Simplified Chinese",
|
||
"sync_note": "Synthesis/sync requires device support",
|
||
"save": "Save Preset",
|
||
"toast_name_required": "Please enter a voice name",
|
||
"toast_text_required": "Please enter the voice text",
|
||
"toast_saved": "Preset saved",
|
||
"toast_preview": "Preview requires on-device speech synthesis, not yet available",
|
||
"toast_realtime": "Live broadcast will be available in phase 2",
|
||
"realtime_title": "Live broadcast via APP microphone",
|
||
"realtime_sub": "Capture voice with the APP microphone and play it on the device in real time",
|
||
"badge_todo": "Coming soon",
|
||
"def_safety_name": "Safety warning",
|
||
"def_safety_text": "Caution: the robot is working, please keep a safe distance.",
|
||
"def_start_name": "Start reminder",
|
||
"def_start_text": "The device is about to start, please stay away from the work area.",
|
||
"def_polite_name": "Polite notice",
|
||
"def_polite_text": "Please keep clear, thank you for your cooperation.",
|
||
"sheet_title": "Voice Broadcast",
|
||
"sheet_manage": "Manage/Edit Presets",
|
||
"sheet_note": "Hold-to-talk live broadcast will be available later; presets are always kept. This mode does not open the mic automatically or require video monitoring.",
|
||
"tab_preset": "Presets · Phase 1",
|
||
"tab_realtime": "Live · Later",
|
||
"toast_realtime_later": "Live broadcast will be available later",
|
||
"hold_title": "Hold the microphone to talk",
|
||
"hold_sub": "Coming later: hold to talk, release to broadcast on the device"
|
||
},
|
||
|
||
"robot_location_v2": {
|
||
"title": "Location & Map",
|
||
"todo": "This feature is not available yet",
|
||
"sec_current": "Current Location & Map",
|
||
"trailing_loc": "Location Info",
|
||
"sec_data": "Location Data",
|
||
"map_title": "Device Location",
|
||
"map_sub": "Map is illustrative; the marker comes from the device's actual GNSS data",
|
||
"pill_fix": "GNSS fix",
|
||
"pill_no_fix": "No fix",
|
||
"row_lng": "Longitude",
|
||
"row_lat": "Latitude",
|
||
"row_mode": "Positioning",
|
||
"val_mode": "Built-in GNSS",
|
||
"row_fix": "Fix Status",
|
||
"val_fix_ok": "Valid · meter level",
|
||
"val_fix_none": "Not reported",
|
||
"row_sat": "Satellite Info",
|
||
"val_sat": "Only device-reported data",
|
||
"note_loading": "Getting device location…",
|
||
"note_from_device": "Coordinates come from the device's actual GNSS report",
|
||
"note_error": "Failed to get location: %s",
|
||
"note_no_fix": "The device has not reported a valid fix yet"
|
||
},
|
||
|
||
"robot_bind_v2": {
|
||
"title": "Bind & Activate",
|
||
"step_identify": "Identify",
|
||
"step_confirm": "Confirm",
|
||
"step_bind": "Activate",
|
||
"equip_id": "Selected Equipment ID",
|
||
"org": "Organization",
|
||
"site": "Site",
|
||
"owner": "Owner",
|
||
"role_current": "Role: %s (%s)",
|
||
"role_admin": "Administrator",
|
||
"role_manager": "Org Administrator",
|
||
"role_site_manager": "Site Administrator",
|
||
"role_user": "Standard User",
|
||
"unassigned_org": "No organization assigned",
|
||
"unassigned_site": "No site assigned",
|
||
"unassigned_owner": "No owner assigned",
|
||
"please_select": "Please select",
|
||
"select_org_first": "Select an organization first",
|
||
"select_site_first": "Select a site first",
|
||
"submit": "Confirm Binding",
|
||
"bind_success": "Bound successfully"
|
||
},
|
||
|
||
"ble_detail_v2": {
|
||
"title": "Device Details",
|
||
"dlg_occupied_title": "Another device connected",
|
||
"dlg_occupied_msg": "Currently connected: %s\n\nDisconnect it before connecting a new device.",
|
||
"dlg_ok": "Got it",
|
||
"err_no_name": "Unable to get the Bluetooth device name",
|
||
"err_no_match": "No device found whose name contains \"%s\"",
|
||
"err_no_device_id": "Matched device is missing a device ID",
|
||
"err_bind_failed": "Failed to bind device: %s",
|
||
"unknown_device": "Unknown device",
|
||
"cmd_remote": "Remote control",
|
||
"cmd_path": "Path planning",
|
||
"cmd_status": "Status info",
|
||
"cmd_get_id": "Query ID",
|
||
"cmd_get_auth": "Get authorization",
|
||
"cmd_read_cfg": "Read config",
|
||
"cmd_write_cfg": "Write config",
|
||
"cmd_obstacle": "Obstacle avoidance",
|
||
"cmd_heartbeat": "Heartbeat",
|
||
"cmd_unknown": "Unknown (0x%s)",
|
||
"row_name": "Device Name",
|
||
"row_rssi": "Signal Strength",
|
||
"row_adv_name": "Advertising Name",
|
||
"row_conn": "Connection",
|
||
"state_connected": "Connected",
|
||
"state_connecting": "Connecting %s...",
|
||
"state_connecting_short": "Connecting %s",
|
||
"state_disconnected": "Disconnected",
|
||
"sec_actions": "Actions",
|
||
"btn_disconnect": "Disconnect",
|
||
"btn_connect": "Connect",
|
||
"btn_bind": "Bind Device",
|
||
"btn_read_cfg": "Read Config",
|
||
"sec_services": "Services",
|
||
"sec_commands": "Send Command",
|
||
"sec_push": "Data Pushes",
|
||
"clear": "Clear",
|
||
"waiting": "Waiting for data...",
|
||
"sec_config": "Device Config",
|
||
"writing": "Writing...",
|
||
"write_cfg": "Write Config",
|
||
"toast_not_editable": "Editing this field is not supported",
|
||
"edit_title": "Edit %s",
|
||
"edit_hint": "Enter a new value",
|
||
"edit_current": "Current: %s",
|
||
"cancel": "Cancel",
|
||
"confirm": "OK",
|
||
"err_no_chip": "Device serial number not available, read the config first",
|
||
"err_no_permission": "Permission check failed, cannot write config",
|
||
"err_readback_timeout": "Read-back timed out, please read the config manually",
|
||
"err_mismatch": "Verification mismatch: %s, values restored to the device's actual values",
|
||
"write_ok": "Config written and confirmed by read-back",
|
||
"write_error": "Failed to write config: %s",
|
||
"list_sep": ", "
|
||
},
|
||
|
||
"alarm_center": {
|
||
"title": "Alarm Center",
|
||
"retry": "Retry",
|
||
"filter_title": "Filter",
|
||
"alarm_level": "Alarm Level",
|
||
"time_range": "Time Range",
|
||
"area": "Area",
|
||
"device": "Device",
|
||
"high_risk": "High Risk",
|
||
"medium_risk": "Medium Risk",
|
||
"low_risk": "Low Risk",
|
||
"hint": "Hint",
|
||
"today": "Today",
|
||
"this_week": "This Week",
|
||
"this_month": "This Month",
|
||
"all": "All",
|
||
"apply_filter": "Apply Filter",
|
||
"ai_diagnosis": "AI Diagnosis",
|
||
"view_details": "View Details",
|
||
"unprocessed": "Unprocessed",
|
||
"processing": "Processing",
|
||
"confirmed": "Confirmed",
|
||
"recovered": "Recovered",
|
||
"unconfirmed": "Unconfirmed",
|
||
"today_new": "Today's New"
|
||
},
|
||
|
||
"work_order_v2": {
|
||
"title": "Work Orders",
|
||
"retry": "Retry",
|
||
"add": "Add",
|
||
"pending": "Pending",
|
||
"executing": "Executing",
|
||
"completed": "Completed",
|
||
"all": "All",
|
||
"today_completed": "Today Completed",
|
||
"order_no": "Order No.",
|
||
"priority": "Priority",
|
||
"create_time": "Create Time",
|
||
"complete_time": "Complete Time",
|
||
"location": "Location",
|
||
"executor": "Executor",
|
||
"high": "High",
|
||
"medium": "Medium",
|
||
"low": "Low",
|
||
"progress": "Progress",
|
||
"no_data": "No data"
|
||
},
|
||
|
||
"my_v2": {
|
||
"title": "Profile",
|
||
"clear_cache": "Clear Cache",
|
||
"confirm_clear_cache": "Are you sure to clear all cache data?",
|
||
"cancel": "Cancel",
|
||
"confirm": "Confirm",
|
||
"night_mode": "Night Mode",
|
||
"system_settings": "System Settings",
|
||
"personal_info": "Personal Info",
|
||
"offline_cache": "Offline Cache",
|
||
"message": "My Messages",
|
||
"message_settings": "Message Settings",
|
||
"favorite": "My Favorites",
|
||
"work_order": "My Orders",
|
||
"help_feedback": "Help & Feedback",
|
||
"about_us": "About Us",
|
||
"suspend_bar": "Float Bar",
|
||
"suspend_bar_desc": "Show device status float bar at the bottom",
|
||
"tab_settings": "Tab Settings",
|
||
"default_user_name": "SATA User",
|
||
"todo_developing": "This feature is not available yet",
|
||
"service_support": "Support",
|
||
"account_settings": "Account & Settings",
|
||
"after_sales_center": "After-sales Service",
|
||
"after_sales_center_desc": "Repairs, work orders and warranty",
|
||
"maintenance": "Maintenance",
|
||
"maintenance_desc": "Plans, reminders and records",
|
||
"help_guide": "Help & Guide",
|
||
"help_guide_desc": "Manuals, tutorials and FAQ",
|
||
"account_security": "Account & Security",
|
||
"account_security_desc": "Email/phone, password and devices",
|
||
"message_notice": "Notifications",
|
||
"message_notice_desc": "Device, work, service and auth messages",
|
||
"general_settings": "General Settings",
|
||
"general_settings_desc": "Language, units, region and app preferences",
|
||
"about_legal": "About & Legal",
|
||
"about_legal_desc": "App version, terms and privacy policy",
|
||
"stat_processing_order": "Open Orders",
|
||
"stat_maintenance_reminder": "Maintenance",
|
||
"stat_tutorial": "Guides",
|
||
"stat_usage_help": "Help",
|
||
"unknown": "N/A",
|
||
"unread_unknown": "Unread N/A",
|
||
"personal_account": "Personal account",
|
||
"contact_not_set": "No contact info",
|
||
"edit_profile": "Edit Profile",
|
||
"footer_note": "Design prototype · Demo data only · Not linked to real devices or accounts",
|
||
"note_card": "Device sharing, member authorization, admin transfer and unbinding reuse the existing flows in the Device module; they are not re-implemented here.",
|
||
"logout": "Log Out",
|
||
"logout_confirm": "Are you sure you want to log out?",
|
||
"profile_title": "Personal Info",
|
||
"not_logged_in": "Not signed in",
|
||
"user_id": "User ID",
|
||
"username": "Username",
|
||
"nickname": "Nickname",
|
||
"email": "Email",
|
||
"phone": "Phone",
|
||
"edit_profile_action": "Edit Profile",
|
||
"edit_in_progress": "Editing is under development...",
|
||
"version_update": "Version Update",
|
||
"up_to_date": "You are on the latest version",
|
||
"current_version": "Current version: %s",
|
||
"checking_update": "Checking for updates...",
|
||
"tap_to_check": "Tap to check for a new version",
|
||
"check_update": "Check for Updates"
|
||
},
|
||
|
||
"work_v2": {
|
||
"title": "Work",
|
||
"tag": "SATA · Smart O&M",
|
||
"overview": "Work Overview",
|
||
"all_work_robots": "All work robots",
|
||
"no_site_selected": "No site selected",
|
||
"site_prefix": "Site: ",
|
||
"site_summary_area": "%s work zones",
|
||
"site_summary_robot": "%s robots ready",
|
||
"switch": "Switch",
|
||
"no_site_data": "No site data",
|
||
"select_site": "Select Site",
|
||
"stat_running": "Running",
|
||
"stat_pending": "Pending",
|
||
"stat_done_today": "Done Today",
|
||
"tag_normal": "Normal",
|
||
"tag_to_schedule": "To schedule",
|
||
"tag_task": "Tasks",
|
||
"section_current": "Current Work",
|
||
"all_tasks": "All Tasks",
|
||
"section_features": "Work Features",
|
||
"toast_todo": "This feature is not available yet",
|
||
"toast_loading_devices": "Loading the device list, please try again shortly",
|
||
"demo_zone_a_task": "Zone A · Autonomous mowing",
|
||
"demo_zone_b_task": "Zone B · Morning mowing",
|
||
"demo_robot_1": "Shandong Unit 01",
|
||
"demo_robot_2": "Shandong Unit 02",
|
||
"demo_robot_3": "Shandong Unit 03",
|
||
"demo_route_a1": "Zone A Route 01",
|
||
"demo_route_b1": "Zone B Route 01",
|
||
"demo_task_zone_a": "Zone A · Autonomous mowing",
|
||
"demo_task_c_trim": "Zone C · Nursery trimming",
|
||
"demo_task_c_retry": "Zone C · After-rain touch-up",
|
||
"demo_task_all_edge": "Whole site · Edge trimming",
|
||
"demo_task_a_inspect": "Zone A · Spot inspection",
|
||
"demo_task_d_edge": "Zone D · Boundary trimming",
|
||
"demo_tomorrow": "Tomorrow 08:00",
|
||
"done_progress": "Completed %s",
|
||
"demo_done_value": "1.7 / 2.5 mu",
|
||
"demo_remain": "About 40 min left",
|
||
"enter_work_center": "Open Work Center",
|
||
"view_work_plan": "View Work Plan",
|
||
"feature_map": "Work Map",
|
||
"feature_area": "Zones",
|
||
"feature_route_library": "Route Library",
|
||
"feature_plan": "Dispatch Work Plans",
|
||
"feature_record": "Work Records",
|
||
"feature_autonomous": "Autonomous",
|
||
"create_task": "New Route",
|
||
"no_current_task": "No current work",
|
||
"no_current_task_sub": "You can switch the site",
|
||
"task_pool": {
|
||
"no_user": "Sign in to view work tasks",
|
||
"no_site": "Select a site first",
|
||
"load_failed": "Unable to load tasks",
|
||
"retry": "Retry",
|
||
"refresh": "Refresh tasks",
|
||
"task_title": "Task #%s",
|
||
"device": "Device: %s",
|
||
"route": "Work route #%s",
|
||
"created": "Created: %s",
|
||
"paused": "Paused",
|
||
"failed": "Failed",
|
||
"canceling": "Canceling",
|
||
"unknown_status": "Unknown status",
|
||
"view_task": "View task",
|
||
"device_load_failed": "Unable to load devices. Please retry.",
|
||
"device_missing": "The device was not found in the current site"
|
||
},
|
||
|
||
"area": {
|
||
"title": "Zones",
|
||
"new": "New",
|
||
"page_title": "Work Zone Management",
|
||
"page_subtitle": "Draw work zones, no-go zones and obstacle zones in the map editor",
|
||
"filter_all": "All zones",
|
||
"kind_work": "Work zone",
|
||
"kind_forbidden": "No-go zone",
|
||
"kind_obstacle": "Obstacle zone",
|
||
"empty": "No zones in this category yet",
|
||
"disabled": "Disabled",
|
||
"view": "View",
|
||
"edit": "Edit",
|
||
"boundary_points": "%s boundary points",
|
||
"applies_to": "Applies to: %s",
|
||
"detail_todo": "Zone detail API not connected (demo)",
|
||
"demo_zone_a": "Zone A · Main lawn",
|
||
"demo_zone_b": "Zone B · East lawn",
|
||
"demo_zone_c": "Zone C · Nursery",
|
||
"demo_zone_all": "Whole site",
|
||
"demo_area_pool": "Pool no-go zone",
|
||
"demo_area_toolshed": "Tool shed obstacle",
|
||
"demo_all_devices": "All devices"
|
||
},
|
||
|
||
"map": {
|
||
"title": "Work Map",
|
||
"subtitle": "Robots, zones and tasks on one site map",
|
||
"online_count": "%s online",
|
||
"layer_all": "All layers",
|
||
"layer_area": "Work zones",
|
||
"layer_robot": "Robots",
|
||
"layer_forbidden": "No-go zones",
|
||
"layer_route": "Routes",
|
||
"basemap_label": "Orthophoto · Shandong site",
|
||
"toast_record_todo": "Work record entry not connected (demo)",
|
||
"toast_layer_todo": "Layer settings follow the top filter (demo)",
|
||
"toast_center_reset": "Back to site center (demo)",
|
||
"task_device": "Device: %s · task running",
|
||
"manage_area": "Manage zones",
|
||
"toast_work_center_todo": "Open the Work Center from device details (demo)"
|
||
},
|
||
|
||
"plan": {
|
||
"title": "Dispatch Work Plans",
|
||
"new": "New",
|
||
"page_title": "Task List & Schedule",
|
||
"page_subtitle": "Tasks arranged by date; running tasks update progress in real time",
|
||
"filter_all": "All",
|
||
"status_running": "Running",
|
||
"status_pending": "Pending",
|
||
"status_done": "Completed",
|
||
"status_aborted": "Aborted",
|
||
"empty": "No plans with this status",
|
||
"day_today": "Today",
|
||
"day_tomorrow": "Tomorrow",
|
||
"day_yesterday": "Yesterday",
|
||
"weekday_mon": "Mon",
|
||
"weekday_tue": "Tue",
|
||
"weekday_wed": "Wed",
|
||
"weekday_thu": "Thu",
|
||
"weekday_fri": "Fri",
|
||
"weekday_sat": "Sat",
|
||
"weekday_sun": "Sun",
|
||
"task_count": "%s tasks",
|
||
"start": "Start",
|
||
"detail": "Details",
|
||
"toast_calendar_todo": "Calendar view API not connected (demo)",
|
||
"toast_new_todo": "Task scheduling API not connected (demo)",
|
||
"toast_detail_todo": "Plan detail API not connected (demo)"
|
||
},
|
||
|
||
"plan_create": {
|
||
"title": "New Work Task",
|
||
"dispatch_route": "Routes",
|
||
"dispatch_area": "Areas",
|
||
"execution_timing": "Execution Mode",
|
||
"timing_immediate": "Immediate",
|
||
"timing_scheduled": "Scheduled",
|
||
"scheduled_hint": "Set a cycle and date range. The device will run at the scheduled time.",
|
||
"immediate_hint": "Open the work center with the selected device and route, then tap Start Work to begin.",
|
||
"area_immediate_hint": "Select the device and area, then confirm the work details.",
|
||
"selection_changed": "The station or device assignment changed. Reopen this page to select the device and route again.",
|
||
"task_info": "Task Details",
|
||
"schedule_settings": "Schedule Settings",
|
||
"area_label": "Work Area",
|
||
"area_pick": "Coming soon",
|
||
"area_pending": "Area dispatch is coming soon. Choose Routes to schedule a task or open the work center.",
|
||
"immediate_pending": "Immediate dispatch is coming soon. Choose Scheduled to create a work plan.",
|
||
"coming_soon": "Coming soon",
|
||
"submit_now": "Dispatch Now",
|
||
"subtitle": "Pick device and route, set the cycle, work starts automatically on time",
|
||
"name_label": "Plan Name",
|
||
"name_hint": "e.g. Zone A daily morning mowing",
|
||
"device_label": "Device",
|
||
"device_pick": "Select a device",
|
||
"device_empty": "No devices under this station",
|
||
"device_sheet_title": "Select Device",
|
||
"route_label": "Work Route",
|
||
"route_pick": "Select a route",
|
||
"route_loading": "Routes are loading, please wait",
|
||
"route_sheet_title": "Select Work Route",
|
||
"route_unsupported": "This route does not support scheduled tasks",
|
||
"no_site": "Please select a station on the home page first",
|
||
"cycle_label": "Cycle Type",
|
||
"type_day": "Daily",
|
||
"type_week": "Weekly",
|
||
"type_month": "Monthly",
|
||
"week_hint": "Choose one or more weekdays",
|
||
"month_hint": "Choose days of month (1-31; skipped if the month has no such day)",
|
||
"time_label": "Execution Time",
|
||
"valid_label": "Valid Range",
|
||
"start_date": "Start Date",
|
||
"end_date": "End Date",
|
||
"submit": "Create Scheduled Task",
|
||
"success": "Work plan created",
|
||
"failed": "Create failed, please try again later"
|
||
},
|
||
|
||
"record": {
|
||
"title": "Work Records",
|
||
"page_subtitle": "Every job archived by month; open one to see its report",
|
||
"filter_all": "All",
|
||
"filter_done": "Completed",
|
||
"filter_aborted": "Aborted",
|
||
"filter_week": "This week",
|
||
"empty": "No records match this filter",
|
||
"summary_title": "This Month",
|
||
"summary_count": "Jobs",
|
||
"summary_area": "Total area (mu)",
|
||
"summary_hours": "Working hours",
|
||
"report": "Report",
|
||
"toast_export_todo": "Bulk export API not connected (demo)"
|
||
},
|
||
|
||
"report": {
|
||
"title": "Work Report",
|
||
"toast_share_todo": "Share API not connected (demo)",
|
||
"time_subtitle": "2026-10-26 08:00 — 10:42 · %s",
|
||
"trace_badge": "Actual work route",
|
||
"trace_replay": "Route playback",
|
||
"metric_area": "Work area",
|
||
"metric_duration": "Duration",
|
||
"metric_coverage": "Coverage",
|
||
"metric_power": "Power used",
|
||
"info_title": "Job Info",
|
||
"info_zone": "Work zone",
|
||
"info_route": "Work route",
|
||
"info_device": "Device",
|
||
"info_start": "Start time",
|
||
"info_end": "End time",
|
||
"demo_route_pattern": "%s · Back-and-forth",
|
||
"event_title": "Process Log",
|
||
"event1_title": "Task dispatched",
|
||
"event1_desc": "Device accepted the task and ran a self-check",
|
||
"event2_title": "Entered Zone B and started",
|
||
"event2_desc": "Advancing back and forth along %s",
|
||
"event3_title": "Mowing height adjusted",
|
||
"event3_desc": "Manual intervention: mowing height 45 → 50 mm",
|
||
"event4_title": "Job finished and returned",
|
||
"event4_desc": "Back at the charging dock, 66% battery left",
|
||
"back_to_records": "Back to records",
|
||
"export": "Export report",
|
||
"toast_export_todo": "Report export API not connected (demo)"
|
||
},
|
||
|
||
"route_lib": {
|
||
"title": "Route Library",
|
||
"new": "New",
|
||
"page_subtitle": "Coverage routes grouped by zone, ready to apply to a new task",
|
||
"filter_all": "All routes",
|
||
"kind_coverage": "Coverage",
|
||
"kind_return": "Return",
|
||
"kind_edge": "Edge",
|
||
"kind_custom": "Custom",
|
||
"loading": "Loading routes…",
|
||
"reload": "Reload",
|
||
"empty_site": "No routes under this station yet",
|
||
"no_site": "Please select a station on the home page first",
|
||
"empty": "No routes in this category yet",
|
||
"recent": "Recent %s",
|
||
"used_today": "today",
|
||
"used_yesterday": "yesterday",
|
||
"edit": "Edit",
|
||
"apply_to_task": "Apply to task",
|
||
"apply_todo": "Task scheduling API not connected (demo)",
|
||
"demo_route_a1": "Zone A Route 01",
|
||
"demo_route_b1": "Zone B Route 01",
|
||
"demo_route_b_edge": "Zone B Edge 01",
|
||
"demo_route_c_cov": "Zone C Coverage 01",
|
||
"demo_route_all_return": "Whole-site Return Route"
|
||
}
|
||
},
|
||
|
||
"ble_v2": {
|
||
"already_connected_title": "Device already connected",
|
||
"already_connected_msg": "Currently connected: %s\n\nPlease disconnect it before connecting a new device.",
|
||
"got_it": "Got it",
|
||
"connected_toast": "Connected to %s",
|
||
"title": "Bluetooth Devices",
|
||
"connected_current": "Connected: %s",
|
||
"scanning_nearby": "Scanning nearby devices...",
|
||
"turn_on_bt_first": "Please turn on Bluetooth",
|
||
"bt_on": "Bluetooth is on",
|
||
"bt_off": "Bluetooth is off",
|
||
"connected_device": "Connected device",
|
||
"scanning_nearby_short": "Scanning nearby devices",
|
||
"turn_on_bt_to_scan": "Turn on Bluetooth to scan nearby devices",
|
||
"go_turn_on": "Turn on",
|
||
"nearby_devices": "Nearby Devices",
|
||
"search_hint": "Search device name or MAC",
|
||
"bt_off_cannot_scan": "Bluetooth is off, cannot scan",
|
||
"no_match": "No matching devices",
|
||
"scanning_dots": "Scanning nearby devices...",
|
||
"connected": "Connected",
|
||
"disconnect": "Disconnect",
|
||
"connect": "Connect",
|
||
"tip": "Choose the on-site device to avoid connecting to unrelated devices"
|
||
},
|
||
|
||
"help_feedback": {
|
||
"tab_faq": "FAQ",
|
||
"tab_feedback": "Feedback",
|
||
"type_feature": "Feature Suggestion",
|
||
"type_bug": "Bug Report",
|
||
"type_experience": "Experience Issue",
|
||
"type_other": "Other",
|
||
"cat_bind": "Device Binding",
|
||
"cat_path": "Path Planning",
|
||
"cat_remote": "Remote Control",
|
||
"cat_order": "Work Order System",
|
||
"cat_account": "Account Issues",
|
||
"q_bind_fail": "What should I do if QR-code binding fails?",
|
||
"a_bind_fail": "Check that the device is powered on and in pending-binding state, and make sure Bluetooth and the network are working on your phone. If it still fails, restart the device and scan again.",
|
||
"q_bt_notfound": "Can't find the device's Bluetooth signal?",
|
||
"a_bt_notfound": "Make sure the device is on and its Bluetooth indicator is blinking. Move closer to the device (within 1 meter) and search again. When binding multiple devices, do them one by one.",
|
||
"q_path_none": "Unable to generate a path?",
|
||
"a_path_none": "Ensure a complete work area is drawn (at least 3 points) and the GPS signal is good. If using auto-planning, make sure the area boundary does not self-intersect.",
|
||
"q_map_issue": "Map not displaying or location drifting?",
|
||
"a_map_issue": "Check that phone GPS is enabled and location permission is granted. Drifting may occur indoors or in weak-signal areas; use it in open areas.",
|
||
"q_video_stutter": "Remote video lagging or connection timeout?",
|
||
"a_video_stutter": "Check that the network connection on both phone and device is stable. Use remote control under good 4G/Wi-Fi. If lag persists, try lowering the video resolution.",
|
||
"q_estop": "How do I use the emergency stop?",
|
||
"a_estop": "On the remote control page, tap the red emergency-stop button at the center to stop the device immediately. You must manually release it to resume.",
|
||
"q_order_submit": "How do I submit a work order?",
|
||
"a_order_submit": "On the Work Order page, tap \"New Order\" at the bottom right, choose a type, fill in the description, upload images, then submit.",
|
||
"q_order_status": "How do I check work order status?",
|
||
"a_order_status": "On the Work Order page you can view all submitted orders and their status (Pending/Processing/Completed). Tap an order for details and replies.",
|
||
"q_pwd_forget": "What if I forgot my password?",
|
||
"a_pwd_forget": "Tap \"Forgot Password\" on the login page and verify with your registered phone number to reset it.",
|
||
"q_rebind_device": "Do I need to rebind after switching devices?",
|
||
"a_rebind_device": "Device bindings are not lost when logging into the same account on a new phone, but you need to search and connect the devices again on the new phone.",
|
||
"contact_title": "Contact Support",
|
||
"hotline": "Service Hotline",
|
||
"wechat_work": "WeCom",
|
||
"wechat_hint": "Scan to add support on WeChat",
|
||
"feedback_type": "Feedback Type",
|
||
"problem_desc": "Description",
|
||
"problem_hint": "Please describe your problem or suggestion in detail...",
|
||
"add_screenshot": "Add Screenshot",
|
||
"contact_label": "Contact (optional)",
|
||
"contact_hint": "Phone/WeChat number for follow-up",
|
||
"submit_feedback": "Submit Feedback",
|
||
"close": "Close",
|
||
"copy_number": "Copy Number",
|
||
"number_copied": "Number copied",
|
||
"please_input_desc": "Please enter a description",
|
||
"submit_success": "Feedback submitted. Thank you for your support!"
|
||
},
|
||
|
||
"report": {
|
||
"title": "Field Report",
|
||
"submit": "Submit",
|
||
"select_location": "Select Location",
|
||
"report_type": "Report Type",
|
||
"device_fault": "Device Fault",
|
||
"patrol_record": "Patrol Record",
|
||
"hidden_danger": "Hidden Danger",
|
||
"defect_report": "Defect Report",
|
||
"select_device": "Select Device",
|
||
"please_select_device": "Please select device",
|
||
"problem_description": "Problem Description",
|
||
"description_hint": "Please describe the problem in detail...",
|
||
"upload_media": "Upload Image/Video",
|
||
"take_photo": "Take Photo",
|
||
"record_video": "Record Video",
|
||
"problem_level": "Problem Level",
|
||
"normal": "Normal",
|
||
"important": "Important",
|
||
"urgent": "Urgent",
|
||
"cancel": "Cancel",
|
||
"select": "Select",
|
||
"submit_success": "Submitted",
|
||
"submit_success_message": "Your report has been submitted successfully",
|
||
"submit_failed": "Submission Failed",
|
||
"confirm": "OK",
|
||
"main_building_a": "Main Building A",
|
||
"main_building_b": "Main Building B",
|
||
"boiler_room": "Boiler Room",
|
||
"turbine_room": "Turbine Room",
|
||
"control_room": "Control Room",
|
||
"power_distribution_room": "Power Distribution Room",
|
||
"boiler_1": "Boiler #1",
|
||
"boiler_2": "Boiler #2",
|
||
"turbine_1": "Turbine #1",
|
||
"generator_1": "Generator #1",
|
||
"transformer_1": "Transformer #1",
|
||
"water_pump_1": "Water Pump #1",
|
||
"select_image": "Select Image",
|
||
"select_video": "Select Video"
|
||
},
|
||
|
||
"product": {
|
||
"intro": "Product Introduction",
|
||
"highlights": "Product Highlights",
|
||
"functions": "Features",
|
||
"parameters": "Specifications",
|
||
"scenes": "Application Scenarios",
|
||
"star_points": {
|
||
"design": {
|
||
"title": "Overall Design",
|
||
"content": "Load-bearing body, high-power walking system, tank-type tracks, oil-electric hybrid, anti-slope system, active/passive floating mower deck, air-assisted lifting mechanism, adaptive mowing device."
|
||
},
|
||
"control": {
|
||
"title": "Control System",
|
||
"content": "Automotive-grade control and electrical system, industrial-grade anti-interference remote control, speed control and detection, traction control, manual and automatic driving modes, LCD display for machine status."
|
||
},
|
||
"power": {
|
||
"title": "Power System",
|
||
"content": "Adaptive range extender system, top-tier Honda engine, high-power AC/DC discharge function."
|
||
},
|
||
"safety": {
|
||
"title": "Safety Features",
|
||
"content": "Vehicle stability system, ABS brakes, electronic rollover protection, tilt protection, rapid stop on fall/rollover, auto shutdown when idle."
|
||
},
|
||
"smart": {
|
||
"title": "Smart Functions",
|
||
"content": "Straight-line hold, collision avoidance, collision shutdown."
|
||
},
|
||
"expand": {
|
||
"title": "Extended Functions",
|
||
"content": "Path planning, inspection detection, IoT control."
|
||
}
|
||
},
|
||
"scenes": {
|
||
"orchard": "Orchard & Forestry",
|
||
"photovoltaic": "Photovoltaic Energy Storage",
|
||
"highway": "Highway Administration",
|
||
"agriculture": "Agricultural Production",
|
||
"municipal": "Municipal & Riverbank",
|
||
"airport": "Airport Facilities"
|
||
}
|
||
}
|
||
}
|