319 lines
12 KiB
JSON
319 lines
12 KiB
JSON
{
|
|
"app": {
|
|
"title": "Orisys AutoCal Platform Control",
|
|
"about_title": "About Orisys AutoCal",
|
|
"about_body": "Orisys AutoCal — internal controller for the 5-axis calibration platform\nVersion: {app_version}\nShared library: {shared_version} (API {api_version})\n\nQt binding: {binding}\nController library: {dll_dir}\nPreferences: {prefs_path}\n\nInternal use only.",
|
|
"internal_notice": "Internal tool: not shipped in the customer installer."
|
|
},
|
|
"brand": {
|
|
"name": "ORISYS",
|
|
"detail": "Orisys Technology"
|
|
},
|
|
"menu": {
|
|
"file": "File",
|
|
"open_bas": "Download BAS init program…",
|
|
"reveal_config": "Show config in Explorer…",
|
|
"quit": "Quit",
|
|
"view": "View",
|
|
"theme": "Theme",
|
|
"theme_dark": "Dark",
|
|
"theme_light": "Light",
|
|
"language": "Language",
|
|
"lang_zh": "简体中文",
|
|
"lang_en": "English",
|
|
"show_diagnostics": "Diagnostics",
|
|
"tabs": "Workspace",
|
|
"outputs": "Outputs folder",
|
|
"help": "Help",
|
|
"about": "About AutoCal"
|
|
},
|
|
"connection": {
|
|
"title": "Controller connection",
|
|
"mode": "Connection",
|
|
"mode_eth": "Ethernet",
|
|
"mode_com": "Serial",
|
|
"mode_pci": "PCI card",
|
|
"mode_local": "Local / simulated",
|
|
"mode_demo": "Demo (no hardware)",
|
|
"ip": "IP",
|
|
"scan": "Scan IP",
|
|
"com": "COM port",
|
|
"card": "Card",
|
|
"local_string": "Connect string",
|
|
"open": "Connect",
|
|
"close": "Disconnect",
|
|
"status": "Status",
|
|
"state_open": "Connected",
|
|
"state_closed": "Not connected",
|
|
"state_connecting": "Connecting…",
|
|
"source": "Library",
|
|
"no_more": "The 『{mode}』 connection is not available yet."
|
|
},
|
|
"bus": {
|
|
"title": "Bus initialisation",
|
|
"bas_path": "BAS file",
|
|
"choose": "Choose BAS…",
|
|
"download": "Download and initialise",
|
|
"reinit": "Re-initialise",
|
|
"type": "Bus type",
|
|
"type_ecat": "EtherCAT",
|
|
"type_rtex": "RTEX",
|
|
"type_unknown": "Unknown",
|
|
"state": "Init state",
|
|
"state_pending": "Not started",
|
|
"state_running": "Initialising…",
|
|
"state_ok": "Initialised",
|
|
"state_failed": "Initialisation failed",
|
|
"state_timeout": "Initialisation timed out",
|
|
"nodes": "Nodes",
|
|
"axes": "Axes",
|
|
"downloaded": "File downloaded; the controller will scan the bus after its delay",
|
|
"dialog_title": "Choose a BAS file"
|
|
},
|
|
"axes": {
|
|
"title": "Axis motion",
|
|
"axis": "Axis",
|
|
"enable": "Enable",
|
|
"enable_on": "Enabled",
|
|
"enable_off": "Disabled",
|
|
"atype": "Type",
|
|
"units": "Units",
|
|
"speed": "Speed",
|
|
"accel": "Accel",
|
|
"dpos": "DPOS",
|
|
"mpos": "MPOS",
|
|
"dpos_mm": "DPOS (mm)",
|
|
"mpos_mm": "MPOS (mm)",
|
|
"status": "Status",
|
|
"motion": "Motion",
|
|
"motion_word": "Motion",
|
|
"idle": "Stopped",
|
|
"moving": "Moving",
|
|
"position_pair": "{value} ({mm} mm)",
|
|
"enable_all": "Enable all",
|
|
"disable_all": "Disable all",
|
|
"clear_alarm_all": "Clear all alarms",
|
|
"detail": "Axis {axis}: type {atype} · accel {accel} · feedback {mpos} ({mpos_mm} mm) · status {status} · {home}",
|
|
"detail_none": "Axis {axis}: no data yet (not connected or not initialised)",
|
|
"home_status": "Homing",
|
|
"home_ok": "Homed",
|
|
"home_pending": "Not homed",
|
|
"home_running": "Homing…",
|
|
"jog_fwd": "Fwd",
|
|
"jog_rev": "Rev",
|
|
"stop_all": "Stop all",
|
|
"stop": "Stop",
|
|
"target": "Target",
|
|
"move_abs": "Move abs",
|
|
"move_rel": "Move rel",
|
|
"home_mode": "Home mode",
|
|
"home_high": "Home speed",
|
|
"home_low": "Home creep",
|
|
"home_offset": "Home offset",
|
|
"clear_alarm": "Clear alarm",
|
|
"apply": "Apply",
|
|
"home": "Home",
|
|
"controls": "Actions",
|
|
"mm_derived_tip": "Millimetres are derived from the pulse equivalent: a display value, not a calibrated length.",
|
|
"enabled_count": "{on}/{total} axes enabled"
|
|
},
|
|
"busdata": {
|
|
"title": "Bus data exchange",
|
|
"group": "Bus data (SDO / RTEX)",
|
|
"ecat": "EtherCAT (SDO)",
|
|
"rtex": "RTEX",
|
|
"node": "Node",
|
|
"index": "Index",
|
|
"subindex": "Subindex",
|
|
"type": "Type",
|
|
"value": "Value",
|
|
"read": "Read",
|
|
"write": "Write",
|
|
"axis": "Axis",
|
|
"parameter": "Parameter",
|
|
"last_result": "Last: {text}",
|
|
"not_available": "The current bus does not support this",
|
|
"read_ok": "Read: {value}",
|
|
"write_ok": "Written"
|
|
},
|
|
"status": {
|
|
"motion": "Motion",
|
|
"ready": "Ready",
|
|
"poll_ok": "State refresh healthy",
|
|
"poll_paused": "State refresh paused",
|
|
"poll_stalled": "State refresh stalled",
|
|
"last_error": "Last error",
|
|
"none": "None",
|
|
"refused": "Refused",
|
|
"done": "Done",
|
|
"failed": "Failed",
|
|
"pause": "Pause refresh",
|
|
"resume": "Resume refresh",
|
|
"paused": "State refresh paused",
|
|
"alarm_short": "Alarm",
|
|
"axes_enabled": "{on}/{total} axes enabled",
|
|
"health_none": "Refresh —",
|
|
"health_age": "Read {ms} ms ago",
|
|
"health_paused": "Refresh paused",
|
|
"poll_every": "Refresh every {ms} ms"
|
|
},
|
|
"run": {
|
|
"title": "Run",
|
|
"phase_idle": "Idle",
|
|
"phase_dry_run": "Dry run",
|
|
"phase_running": "Running",
|
|
"phase_paused": "Paused",
|
|
"phase_done": "Done",
|
|
"phase_failed": "Failed",
|
|
"step_of": "Point {done}/{total}",
|
|
"no_steps": "No points generated",
|
|
"elapsed_only": "Elapsed {elapsed}",
|
|
"elapsed_remaining": "Elapsed {elapsed} · about {remaining} left",
|
|
"run": "Run",
|
|
"pause": "Pause",
|
|
"abort": "Abort",
|
|
"abort_stopped": "Run aborted and all axes stopped.",
|
|
"not_implemented": "The runner belongs to phase P7 and is not implemented yet; abort is always available."
|
|
},
|
|
"readout": {
|
|
"title": "Axis state"
|
|
},
|
|
"workspace": {
|
|
"tab_axes": "Axis debug",
|
|
"tab_sequence": "Test sequence",
|
|
"tab_finger": "Finger debug",
|
|
"tab_sensor": "Sensor",
|
|
"tab_surface": "Surface map",
|
|
"tab_points": "Calibration points",
|
|
"not_built": "Not built yet",
|
|
"reserved_sensor": "Sensor connection, live image and force curves will appear here: device and source selection, preview, and a compact version of the Studio curve view.",
|
|
"reserved_surface": "Multi-point calibration sensitivity will be drawn as a colour map on the sensor's 3D surface here: each point's sensitivity interpolated and coloured, with a legend and range.",
|
|
"reserved_points": "The calibration point table and capture controls will appear here: platform coordinates, reference load, sampling statistics and the resulting sensitivity."
|
|
},
|
|
"finger": {
|
|
"title": "Finger calibration-point debug",
|
|
"bundle_path": "Export bundle",
|
|
"load": "Load bundle…",
|
|
"reset_view": "Reset view",
|
|
"initial_view": "Initial view",
|
|
"textured": "UV texture: {name}",
|
|
"untextured": "No UV texture: showing the shaded layout map.",
|
|
"texture_missing": "No texture at {path}: showing the shaded layout map.",
|
|
"flat_title": "Flat image (click to pick)",
|
|
"readout_title": "Readouts",
|
|
"preview_title": "3D preview",
|
|
"points_title": "Picked points",
|
|
"select_hint": "Click a point on the flat image to pick a calibration point.",
|
|
"no_bundle": "No export bundle loaded.",
|
|
"no_surface": "Pixel ({x}, {y}) is not on the sensing surface (UV gap).",
|
|
"row_sensor_point": "Sensor point (mm)",
|
|
"row_sensor_normal": "Surface normal",
|
|
"row_platform_point": "Platform point (mm)",
|
|
"row_pose": "Pose X / Y / yaw / pitch",
|
|
"row_residual": "Alignment residual",
|
|
"row_frames": "Frame mapping",
|
|
"row_bundle": "Bundle",
|
|
"bundle_summary": "{vertices} vertices · {triangles} triangles · {extent} mm · {scale} mm per unit",
|
|
"plate_thickness": "Mounting plate",
|
|
"tool_offset": "Tool offset x,y,z",
|
|
"clear_points": "Clear points",
|
|
"point_count": "{count} points",
|
|
"residual_value": "{residual}° — {verdict}",
|
|
"reachable": "this normal can be aligned with Z",
|
|
"unreachable": "this normal cannot be aligned with Z (yaw travel limit)",
|
|
"reach_summary": "Alignable surface vertices {aligned}/{vertices} ({share}%), worst {worst}°",
|
|
"preview_legend": "Surface colour = alignment residual (green aligned, red not) · yellow is the tool axis · X/Y are the table, Z the tool travel",
|
|
"show_axes": "Show motion axes",
|
|
"sim_play": "Play motion",
|
|
"sim_stop": "Stop",
|
|
"sim_hint": "Play the solved motion: the stages rotate the normal onto the tool axis, then the XY table moves. Pick a point first.",
|
|
"preview_no_gl": "No OpenGL context: {error}",
|
|
"preview_draw_failed": "Drawing failed: {error}",
|
|
"preview_solve_failed": "Solve failed: {error}",
|
|
"col_x": "x", "col_y": "y", "col_z": "z",
|
|
"col_nx": "nx", "col_ny": "ny", "col_nz": "nz",
|
|
"col_X": "X", "col_Y": "Y", "col_Z": "Z",
|
|
"col_yaw": "yaw", "col_pitch": "pitch", "col_residual": "residual(°)",
|
|
"loaded": "Bundle loaded: {vertices} vertices · {extent} mm",
|
|
"load_failed": "Load failed: {error}",
|
|
"picked": "Picked: residual {residual}° · yaw {yaw}° · pitch {pitch}°"
|
|
},
|
|
"sequence": {
|
|
"title": "Test sequence design",
|
|
"profile_title": "Point generation",
|
|
"preview_title": "Preview",
|
|
"validation_title": "Checks",
|
|
"points_title": "Calibration points",
|
|
"field_mode": "Surface mode",
|
|
"field_name": "Sequence name",
|
|
"field_note": "Note",
|
|
"field_pitch": "Pitch (mm)",
|
|
"field_margin": "Margin (mm)",
|
|
"field_radius": "Radius (mm)",
|
|
"field_clear_height": "Clear height (mm)",
|
|
"field_approach_speed": "Approach speed (mm/s)",
|
|
"field_press_speed": "Press speed (mm/s)",
|
|
"field_press_depth": "Press depth (mm)",
|
|
"field_dwell": "Dwell (s)",
|
|
"field_settle": "Settle window (s)",
|
|
"field_repeats": "Repeats",
|
|
"field_order": "Point order",
|
|
"mode_flat": "Flat",
|
|
"mode_curved": "Curved",
|
|
"order_row": "Row-wise",
|
|
"order_serpentine": "Serpentine",
|
|
"order_distance": "By distance",
|
|
"preview_placeholder": "3D preview: sensor surface · calibration points · visiting order\n(implemented in the simulation phase)",
|
|
"preview_hint": "After generation, check here that each point is on the surface, inside travel, and confirmable by contact.",
|
|
"validation_pending": "No points generated yet.",
|
|
"check_on_surface": "On the surface",
|
|
"check_within_travel": "Within travel",
|
|
"check_contact_confirmable": "Contact confirmable",
|
|
"btn_generate": "Generate points",
|
|
"btn_simulate": "Simulate",
|
|
"btn_dry_run": "Dry run (no contact)",
|
|
"btn_export": "Export sequence…",
|
|
"btn_import": "Import sequence…",
|
|
"import_export_tip": "Saved as a JSON document (.oryseq), reusable across machines; the format version is checked on import.",
|
|
"export_failed": "Export failed: {error}",
|
|
"import_failed": "Import failed: {error}",
|
|
"pending_tooltip": "This belongs to phase {phase} and is not implemented yet.",
|
|
"col_index": "#",
|
|
"col_x": "X (mm)",
|
|
"col_y": "Y (mm)",
|
|
"col_z": "Z (mm)",
|
|
"col_status": "Status",
|
|
"col_sensitivity": "Sensitivity (last)",
|
|
"col_samples": "Samples",
|
|
"col_actions": "Actions",
|
|
"not_generated": "—",
|
|
"status_pending": "Pending",
|
|
"status_skipped": "Skipped",
|
|
"summary": "{count} points ({enabled} enabled) · {spans} · about {duration} (estimate)",
|
|
"summary_empty": "No points yet: generate or import to see the count and travel span.",
|
|
"dialog_export": "Export sequence",
|
|
"dialog_import": "Import sequence",
|
|
"filter_sequence": "Calibration sequence (*.oryseq *.json)",
|
|
"exported": "Sequence exported: {name}",
|
|
"imported": "Sequence imported: {name} ({count} points)",
|
|
"import_warnings": "Import reported {count} warning(s)",
|
|
"confirm_discard": "The current sequence has not been exported. Importing replaces it. Continue?",
|
|
"points_hint": "Coordinates are generated and checked per point; they are not typed. A typed coordinate is one nothing has checked, and one wrong number ruins a run."
|
|
},
|
|
"action": {
|
|
"ok": "Done",
|
|
"refused": "Refused",
|
|
"failed": "Failed"
|
|
},
|
|
"diagnostics": {
|
|
"title": "Diagnostics",
|
|
"binding": "Qt binding",
|
|
"dll_dir": "Controller library",
|
|
"prefs": "Preferences",
|
|
"outputs": "Outputs",
|
|
"bas_loaded": "BAS loaded",
|
|
"yes": "Yes",
|
|
"no": "No"
|
|
}
|
|
}
|