缩短 Studio 叠字与重复说明,色标只保留量程
去掉 depth_empty 与无用选区峰值文案,并修正「视图 → 分析视频」。已用 locale 单测与 depth_scale_text 核对;含证据录制的 wiring 用例本机跳过。
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
"plot_settings": "Plot settings…",
|
||||
"rotate_arrows": "Rotate arrows 90°",
|
||||
"recompute": "Analyze video",
|
||||
"recompute_tip": "On: serve a stored analysis result for this video, or run the pass if there is none. Off: leave analysis and read the recording’s own forces.csv when it has one. To change profile, calibration or reference frame use Analysis ▸ Analysis setup…",
|
||||
"recompute_tip": "Use a result if there is one; otherwise analyse. Change settings in Analysis setup.",
|
||||
"analysis_setup": "Analysis setup…",
|
||||
"analysis_setup_tip": "Choose the profile, calibration and reference frame for this video, then run (or re-run) the analysis pass.",
|
||||
"run": "Run / Stop",
|
||||
@@ -78,8 +78,8 @@
|
||||
"reset_defaults": "Reset to defaults",
|
||||
"plot_orientation_group": "Finger 2D presentation (2D only; the 3D view keeps the design frame)",
|
||||
"plot_orientation": "Orientation",
|
||||
"plot_orientation_tip": "How the finger's 2D canvas (the unrolled domain) is presented. The 180° default is derived from the unroll map and the design frame: the canvas's +x is the frame's +X and its screen up is −Z, while the 3D default view puts −X right and +Z up, so both axes are reversed and a half turn is what makes the arrows agree left-to-right. Display only — the record and the stored arrays are untouched",
|
||||
"plot_orientation_note": "Affects the 2D finger canvas only: the stored flow, valid mask and recorded data keep the domain's own orientation. The 3D view is not affected (its frame is the design export's)",
|
||||
"plot_orientation_tip": "Affects the 2D view only; default rotation is 180°.",
|
||||
"plot_orientation_note": "Affects the 2D view only; default rotation is 180°.",
|
||||
"orientation_identity": "As drawn (no rotation)",
|
||||
"orientation_rotate180": "Rotate 180° (default)",
|
||||
"orientation_mirror_h": "Mirror horizontally",
|
||||
@@ -89,7 +89,7 @@
|
||||
"filter_preset_tip": "A ready-made combination; editing any value below switches to Custom",
|
||||
"filter_preset_custom": "Custom",
|
||||
"filter_flow_ema": "Flow EMA α",
|
||||
"filter_flow_ema_tip": "Temporal smoothing of the optical flow. 1.00 = off. It changes what is *measured* (contact statistics and forces along with it), so two recordings with different α are not comparable — only use it when the flow jitter really has to go",
|
||||
"filter_flow_ema_tip": "1.00 is off. Changing it changes the measured force.",
|
||||
"filter_median": "Median window",
|
||||
"filter_median_tip": "Sliding-median window over the force readings (samples). 1 = off. Removes single-sample spikes at the cost of about half a window of delay",
|
||||
"filter_lowpass": "Low-pass cutoff",
|
||||
@@ -116,7 +116,7 @@
|
||||
"choose_video": "Choose a recorded video…",
|
||||
"choose_video_tip": "Open a recorded video: the 2D panel plays it and the charts read the forces.csv beside it",
|
||||
"recompute": "Analyze video…",
|
||||
"recompute_tip": "Serve a stored analysis result for this video, or run the pass if there is none. The 2D panel can then draw arrows and depth; the charts may show force from the result. Stop cancels a pass that is still running. To change profile, calibration or reference frame use Analysis ▸ Analysis setup…",
|
||||
"recompute_tip": "Use a result if there is one; otherwise analyse. Change settings in Analysis setup.",
|
||||
"replay_view_only": "Open a recording from the History replay view",
|
||||
"preview": "Preview",
|
||||
"preview_stop": "Stop preview",
|
||||
@@ -143,7 +143,7 @@
|
||||
"reset_display": "Reset display",
|
||||
"reset_display_tip": "Clear the accumulated display: the curves, cursor and value cards go back to their defaults and the replay returns to the start of the recording. There is no device session in this view, so nothing of the device is touched; the 3D camera is View ▸ Reset views (F8).",
|
||||
"pause": "⏸ Pause",
|
||||
"pause_tip": "Pause the computation and the display (F7): no flow, depth or contact is computed, the picture holds its last frame, and the device stays connected for an immediate resume. A recording that spans a pause has a gap.",
|
||||
"pause_tip": "Pause computation; the picture holds and the device stays connected (F7).",
|
||||
"resume_tip": "Resume the computation and the display (F7), from the newest frame.",
|
||||
"resume_label": "▶ Resume",
|
||||
"resume_label_tip": "Resume the computation and the display (F7): it carries on from the newest frame with the device still connected.",
|
||||
@@ -210,8 +210,8 @@
|
||||
"view_mode_tip": "Image display mode while running",
|
||||
"arrow_settings_tip": "Finger 2D presentation (orientation; display only)",
|
||||
"replay_pipeline": "Recorded video (raw camera image)",
|
||||
"replay_pipeline_tip": "Replay shows the recorded raw camera image with no live arrow overlay; to get arrows and depth from analysis, use View → Analyze video",
|
||||
"replay_raw_note": "No analysis result yet. Opening a recording runs analysis, or choose Analyze video… above.",
|
||||
"replay_pipeline_tip": "This is the recorded camera image. For arrows and depth use Analysis ▸ Analyze video.",
|
||||
"replay_raw_note": "No analysis result yet; use Analysis ▸ Analyze video.",
|
||||
"frame_missing_note": "This frame carries no {fields}: there is nothing for this view to draw",
|
||||
"field_flow": "flow",
|
||||
"field_depth": "depth",
|
||||
@@ -222,9 +222,8 @@
|
||||
"arrow_empty_tip": "The deformation arrow image appears here while running or previewing",
|
||||
"arrow_render_failed": "Flow arrows could not be drawn for this frame\nTry another view, or reload the video",
|
||||
"arrow_capture_unavailable": "The captured frame is not available for this overlay\nThe raw camera view is still one selection away",
|
||||
"depth_unavailable": "No depth data for this frame\n(not a depth of zero, and no silent fallback to the processed image)",
|
||||
"depth_unavailable": "No depth data for this frame",
|
||||
"depth_scale": "Depth scale {low} – {high}",
|
||||
"depth_empty": "This frame's depth is all zeros (0 of {pixels} px non-zero): the ramp's low colour is a real zero response, not missing data",
|
||||
"arrow_scale": "Arrows: displacement ×{factor}",
|
||||
"arrow_scale_tip": "Display magnification of the relative displacement: the arrows are drawn from the algorithm output of the captured image, with the measured displacement multiplied by this factor and capped at 0.8 of the grid spacing (a capped arrow no longer shows its true factor).",
|
||||
"arrow_pipeline": "Captured image → algorithm output",
|
||||
@@ -246,9 +245,9 @@
|
||||
"mesh3d_unavailable_gl_reason": "3D is not available on this machine: {reason}\nMeasuring, recording and the charts work as usual.",
|
||||
"mesh3d_settings_tip": "3D display settings (view, housing, colour scale, frame rate)",
|
||||
"mesh3d_reset_tip": "Reset view: back to the framing the scene itself uses",
|
||||
"replay_analysis_running": "this recording is being analysed: there are no arrows or depth to draw until it finishes. Progress and Cancel are on the analysis panel.",
|
||||
"replay_analysis_failed": "there is no analysis result to draw: {reason}. Only the raw camera image can be shown here; once that is dealt with, Analyze video runs the pass again by hand.",
|
||||
"replay_analysis_unavailable": "This video has no analysis setup. Choose Analyze video… above to select one and generate results."
|
||||
"replay_analysis_running": "Analysing; arrows and depth appear when it finishes.",
|
||||
"replay_analysis_failed": "Analysis failed: {reason}.",
|
||||
"replay_analysis_unavailable": "No analysis setup yet; use Analysis ▸ Analyze video."
|
||||
},
|
||||
"chart": {
|
||||
"fn": "FN",
|
||||
@@ -267,7 +266,7 @@
|
||||
"mode_replay": "Replaying a recording (browsing)",
|
||||
"mode_replay_tip": "The charts read the open recording; capture and recording continue",
|
||||
"mode_recomputed": "Recomputed from this video (browsing)",
|
||||
"mode_recomputed_tip": "The charts read the force the analysis pass recomputed from this video and stored in its result. This is not the recorded forces.csv — no device measured these numbers",
|
||||
"mode_recomputed_tip": "Curves come from this analysis, not forces.csv.",
|
||||
"mode_no_trace": "No force trace — {reason}",
|
||||
"mode_no_trace_tip": "There is nothing to plot, and the reason is a fact about the input rather than a loading state",
|
||||
"trace_not_analysed": "this video has not been analysed yet",
|
||||
@@ -280,10 +279,7 @@
|
||||
"box_zoom_tip": "Switch to rubber-band zoom (drag a region on the chart)",
|
||||
"settings": "Chart settings",
|
||||
"settings_tip": "Time window, axis ranges, and the acquisition filters (screen and record use the same data)",
|
||||
"selection": "Selection {duration}s / {samples} samples — {detail}",
|
||||
"selection_summary": "Selection {duration}s / {samples} samples",
|
||||
"selection_detail": "mean {mean} · σ {std}",
|
||||
"selection_peak_tip": "The large number is the selection's peak; the line under it is its mean",
|
||||
"selection_empty": "No valid samples in the selection",
|
||||
"value_unavailable": "n/a",
|
||||
"value_unavailable_tip": "No curve is loaded for {channel}, so it has no value in this unit (raw counts are never shown in its place)",
|
||||
@@ -298,7 +294,7 @@
|
||||
"video_filter": "Recorded video (*.mp4 *.avi *.mov *.mkv);;All files (*)",
|
||||
"no_video": "This recording has no usable video segment",
|
||||
"open_failed": "Could not open that recording: {error}",
|
||||
"not_a_recording": "“{name}” is not a recording: its folder has no forces.csv (a recording is the video plus forces.csv and session.json). Replay needs a recording; to just watch this video, open it as a video or use Analysis ▸ Analyze video.",
|
||||
"not_a_recording": "No forces.csv beside it; cannot open as a recording.",
|
||||
"video_only_opened": "Opened “{name}”; no analysis result yet. Choose Analyze video… above to generate one.",
|
||||
"video_only_notice": "This video has no recording beside it (no forces.csv): it plays, but the force charts and the recording details are empty.",
|
||||
"video_only_panel": "This is not a recording, and this video cannot be decoded (no forces.csv beside it, and it does not read as playable video)\nYou can still try Analysis ▸ Analyze video",
|
||||
@@ -325,7 +321,7 @@
|
||||
},
|
||||
"video_analysis": {
|
||||
"title": "Analyse this video",
|
||||
"video": "{name} — {frames} frames at {fps} fps ({seconds} s). It has no recording beside it (no forces.csv, no frames.csv), so the pass will work from a frame index generated for it.",
|
||||
"video": "{name} — {frames} frames at {fps} fps",
|
||||
"profile": "Processing profile",
|
||||
"calibration": "Calibration",
|
||||
"calibration_default": "Profile default — {name}",
|
||||
@@ -487,7 +483,7 @@
|
||||
"run_failed": "Run failed: {error}",
|
||||
"filters_saved": "Filter settings saved: {describe} (applies to the next session)",
|
||||
"rail_camera_fps": "camera {fps}",
|
||||
"capture_slow": "The camera delivers less than the configured frame rate: {detail}. The recording keeps the real rate. This is a capture-side (camera/driver) matter that software cannot change: use a camera that really does deliver 30 fps — after checking that the cable or port is not slowing this one down — and measure again.",
|
||||
"capture_slow": "Camera frame rate is below the configured value: {detail}.",
|
||||
"video_ended": "Video ended",
|
||||
"camera_disconnected": "Camera disconnected",
|
||||
"reset_ok": "Sensor tracker reset",
|
||||
@@ -510,7 +506,7 @@
|
||||
"deform_tip": "Display-only magnification of the measured deformation. It changes the picture and nothing else: the recorded data, the calibration and the camera are not touched.",
|
||||
"deform_unavailable": "This data source provides no 3D displacement: the pane can only colour the surface, so exaggeration is unavailable.",
|
||||
"field": "Colour by",
|
||||
"field_tip": "Which quantity colours the surface: the depth response (the chain's relative deformation response, unitless) or the optical-flow magnitude (the tracker's pixel displacement). Neither is a length in millimetres — both are approximate. When the chosen one cannot be drawn for a frame, the other is used and the line below says so.",
|
||||
"field_tip": "Colour the surface by depth or optical flow.",
|
||||
"field_depth": "Depth response",
|
||||
"field_flow": "Optical flow magnitude",
|
||||
"field_substituted": "This frame shows {shown}, not the chosen {chosen}.",
|
||||
@@ -537,7 +533,7 @@
|
||||
"max_fps_tip": "How many frames per second the 3D view draws. A display budget only: the camera and the recording are unaffected, and a dropped frame here is never a dropped sample.",
|
||||
"reset_view": "Reset view",
|
||||
"settings_title": "3D display settings",
|
||||
"settings_hint": "Per-frame adaptive applies to both the 2D depth view and the 3D surface. Every other item affects the 3D display only. Measuring, recording and the charts are untouched, and each change applies at once.",
|
||||
"settings_hint": "Per-frame adaptive applies to both 2D and 3D.",
|
||||
"legend": "{quantity} [{unit}] · {quality}",
|
||||
"legend_none": "No measurement on screen — the surface model is shown uncoloured",
|
||||
"quality_calibrated": "calibrated",
|
||||
|
||||
Reference in New Issue
Block a user