---
en:
  gg_cabinet_tools:
    toolbar_scale_tooltip: Scale selected groups/components by width/height/depth
    toolbar_scale_status: Run Dumb Scale on current selection
    toolbar_color_tooltip: Pick a component to select all with the same material
    toolbar_color_status: Select by material color
    toolbar_remove_color_tooltip: Remove material from the current selection
    toolbar_remove_color_status: Clear materials on selected objects
    menu_remove_color: Remove Color
    toolbar_warehouse_tooltip: 'Warehouse: browse local SketchUp models'
    toolbar_warehouse_status: Open GG Cabinet Tools warehouse
    toolbar_settings_tooltip: Plugin Settings & Version Manager
    toolbar_settings_status: Upgrade or downgrade plugin version
    toolbar_gcode_tooltip: G-code Manager — define toolpaths and generate G-code
    toolbar_gcode_status: Open G-code Manager
    menu_dumb_scale: Dumb Scale
    menu_hover_dimensions: Hover dimensions
    toolbar_hover_dimensions_tooltip: Show width, depth, and height on hovered groups/components
    toolbar_hover_dimensions_status: Hover a group or component — Esc to exit
    menu_color: Color
    menu_settings: Settings
    menu_warehouse: Warehouse
    menu_gcode: Generate G-code
    menu_sign_out: Sign Out
    menu_hot_reload: Hot Reload
    ctx_remove_material: Remove material
    ctx_remove_material_op: GG Cabinet Tools — Remove material
    auth_dialog_title: Sign In — GG Cabinet Tools
    auth_signin_tab: Sign In
    auth_signup_tab: Sign Up
    auth_subtitle: Sign in or create an account to use the plugin.
    auth_email_label: Email
    auth_password_label: Password
    auth_password_confirm_label: Confirm Password
    auth_email_placeholder: you@example.com
    auth_password_placeholder: "••••••••"
    auth_signin_btn: Sign In
    auth_signup_btn: Sign Up
    auth_signing_in: Signing in...
    auth_creating_account: Creating account...
    auth_create_account_link: Create an account
    auth_already_have_account: Already have an account?
    auth_account_created_title: Account created!
    auth_account_created_body: Please check your email and verify your account before
      signing in.
    auth_redirect_countdown: Redirecting to sign in
    auth_verify_banner: Account created! Please verify your email before signing in.
    auth_online_required: "No network connection. Please connect to the internet and try again."
    auth_forgot_password_link: Forgot password?
    auth_forgot_password_title: Reset Password
    auth_forgot_password_subtitle: Enter your email and we'll send you reset instructions.
    auth_forgot_password_btn: Send Reset Link
    auth_forgot_password_sending: Sending...
    auth_forgot_password_success_title: Check your email
    auth_forgot_password_success_body: Password reset instructions have been sent. Open the link in your browser to set a new password.
    auth_forgot_password_error: "Failed to send reset email. Please try again."
    auth_back_to_signin: Back to sign in
    session_superseded_msg: |-
      Your session was ended because the account was signed in on another machine.

      Please sign in again.
    settings_dialog_title: GG Cabinet Tools — Settings
    settings_title: Settings
    settings_subtitle: GG Cabinet Tools — versions
    settings_sign_out: Sign Out
    settings_current_version: Current version
    settings_promo_placeholder: Promo code
    settings_promo_redeem: Redeem
    settings_promo_enter_code: Enter a code first.
    settings_promo_applying: Applying…
    settings_downloading: Downloading...
    settings_switched_note: "✓ Switched. Restart SketchUp to load."
    settings_col_version: Version
    settings_col_changelog: Changelog
    settings_col_created_at: Created at
    settings_current_badge: Current
    settings_switch_btn: Switch
    settings_go_pro: Go Pro
    settings_pro_days_left: "%d Pro days left"
    settings_pro_lifetime: Lifetime Pro
    settings_language: Language
    settings_loading: Loading versions...
    version_updated: |-
      Updated to v%s!

      Restart SketchUp to use the new version.
    version_update_failed: Failed to download or extract version %s.
    version_switched: |-
      Switched to v%s.

      Restart SketchUp to apply.
    version_switch_failed: Failed to download or extract version %s.
    version_no_version: No version specified.
    versions_none_available: |-
      No versions available from server.
      Check your connection to %s
    versions_load_failed: |-
      Failed to load versions from server (status %s).
      Check your connection to %s
    update_dialog_title: GG Cabinet Tools — Update Available
    update_title: Update Available
    update_subtitle: A new version of GG Cabinet Tools is available
    update_current_label: Current
    update_latest_label: Latest
    update_whats_new: 'What''s new:'
    update_later: Later
    update_now: Update Now
    update_downloading: Downloading update...
    upgrade_dialog_title: Upgrade to Pro — GG Cabinet Tools
    upgrade_title: Upgrade to Pro
    upgrade_subtitle: 6 months Pro access
    upgrade_bank_tab: Bank Transfer
    upgrade_stripe_tab: Stripe / Card
    upgrade_bank_hint: Scan QR — plan upgraded automatically after payment confirmed
    upgrade_transfer_no_qr: Transfer without QR
    upgrade_transfer_step: 'Transfer %s VND to:'
    upgrade_bank_label: 'Bank:'
    upgrade_account_label: 'Account:'
    upgrade_account_name_label: 'Account name:'
    upgrade_branch_label: 'Branch:'
    upgrade_transfer_msg: 'Transfer message — enter <strong>only this code</strong>:'
    upgrade_stripe_hint: Pay by card via <span class="stripe-logo">Stripe</span> —
      scan QR to open secure checkout
    upgrade_gen_qr_btn: Generate Payment QR
    upgrade_stripe_step1: Click “Generate Payment QR” above
    upgrade_stripe_step2: Scan the QR code with your phone
    upgrade_stripe_step3: Complete card payment on the Stripe checkout page
    upgrade_stripe_step4: Your plan is upgraded automatically for 6 months
    upgrade_failed: 'Upgrade to Pro failed: %s'
    upgrade_stripe_failed: Failed to create Stripe session.
    upgrade_qr_valid: Scan to open Stripe checkout — link valid for 24 hours
    upgrade_qr_click_hint: Click the button below to generate a QR code
    upgrade_generating: Generating…
    promo_activated_until: Pro activated until %s!
    promo_lifetime: Lifetime Pro activated!
    promo_failed: Failed to redeem code.
    promo_dialog_title: June 2026 promotion
    promo_amount_label: Lifetime Pro price
    promo_bank_hint: Scan the QR to pay via bank transfer (SePay). Use the activation code in the transfer description.
    promo_bank_step2: After payment is confirmed, your account is upgraded to lifetime Pro automatically.
    promo_gumroad_hint: Or buy lifetime Pro via Gumroad — scan the QR or open the store link.
    promo_gumroad_step1: Scan the QR code or click “Open Gumroad Store”
    promo_gumroad_step2: Complete purchase on Gumroad to receive your lifetime Pro access
    promo_close: Close
    trial_notice_title: You're on a Pro trial
    trial_notice_body: Enjoy full Pro features during your free trial.
    trial_days_left: "%d days of Pro trial left"
    promo_sepay_qr_alt: Payment QR — Military Bank 0777444222
    scale_select_objects: Please select one or more objects.
    scale_select_groups: Please select one or more groups or component instances.
    scale_error: |-
      GG Cabinet Tools Dumb Scale error:
      %s
    color_selected: Selected %d object(s) with same material.
    color_applied: Applied material to %d object(s).
    color_remove_failed: 'Remove color failed: %s'
    color_apply_failed: 'Apply material failed: %s'
    color_remove_failed2: 'Remove material failed: %s'
    remove_color_empty_selection: Select at least one object to remove material.
    remove_color_op: GG Cabinet Tools — Remove color
    remove_color_done: Removed material from %d object(s).
    warehouse_search_placeholder: Search warehouse models…
    warehouse_search_title: Search
    warehouse_refresh_title: Refresh index
    warehouse_change_dir_title: Change models folder
    warehouse_loading: Loading…
    warehouse_no_models: No models found.
    warehouse_folder_label: 'Folder:'
    warehouse_remove: Remove
    warehouse_dialog_title: GG Cabinet Tools — Warehouse
    warehouse_select_dir_title: Select warehouse models folder
    gcode_manager_dialog_title: GG Cabinet Tools — G-code Manager
    gcode_select_output_folder: Select G-code output folder
    upgrade_gumroad_tab: Promo Code
    upgrade_gumroad_hint: Buy a 6-month promo code from our Gumroad store — scan the
      QR or click the button below.
    upgrade_gumroad_scan: Scan to open Gumroad store
    upgrade_gumroad_step1: Scan the QR code or click “Open Gumroad Store”
    upgrade_gumroad_step2: Purchase a promo code (valid for 6 months)
    upgrade_gumroad_step3: Go to Settings → enter the code in “Promo Code” → click
      Redeem
    upgrade_gumroad_open_btn: Open Gumroad Store
    menu_bend: Bend
    toolbar_bend_tooltip: Bend a board group into a curved arc shape
    toolbar_bend_status: Hover over a flat face; type radius,segments in VCB; click
      to apply
    bend_instruction: Hover over a flat face to preview bend — type radius,segments
      (e.g. 200,24) — click to apply
    bend_vcb_label: R(mm), Segs
    bend_error: |-
      GG Cabinet Tools Bend error:
      %s
    menu_unfold: Unfold
    toolbar_unfold_tooltip: Flatten a curved surface (adjacent faces) into a 2D sheet
      for CNC kerf cutting
    toolbar_unfold_status: Hover a face; click to flatten its strip and generate kerf
      + hold sub-groups
    unfold_instruction: Hover over a face — adjacent faces within the angle threshold
      will be flattened on click
    unfold_hud_pocket: POCKET
    unfold_hud_zigzag: ZIGZAG
    unfold_hud_outer: Outer
    unfold_hud_inner: Inner
    unfold_hud_mid: Mid
    unfold_hud_union: Union
    unfold_hud_ang: Ang
    unfold_hud_tool: Tool Dia
    unfold_hud_meat: Meat
    unfold_hud_kerf: ZigZag Line Offset
    unfold_hud_hold: Safeguard Lines Offset
    unfold_hud_thick: Board Thickness
    unfold_hud_bonew: Bone Width
    unfold_hud_midoff: Mid-Bone Offset
    unfold_hud_midtrim: Mid-Bone Trim Off
    unfold_hud_curvt: Filler Thickness
    unfold_hud_fillertrim: Filler Trim Off
    unfold_hud_pathtag: ZigZag Tag
    unfold_hud_holdtag: Safeguard Lines Tag
    unfold_hud_fleshtag: Pocket Area Tag
    unfold_operation: GG Cabinet Tools — Unfold strip
    unfold_error: |-
      GG Cabinet Tools Unfold error:
      %s
    unfold_settings_title: Unfold / Flatten
    unfold_settings_subtitle: Parameters for the fabrication unfold tool
    unfold_settings_gear_tooltip: Unfold settings
    unfold_settings_mode_section: Mode
    unfold_settings_bones_section: Bones
    unfold_settings_params_section: Parameters
    unfold_settings_tags_section: Group tags
    unfold_strip_angle_label: Strip angle threshold (°)
    unfold_hold_offset_label: Hold line offset (mm)
    unfold_tool_diameter_label: Tool diameter (mm)
    unfold_meat_clearance_label: Meat clearance (mm)
    unfold_kerf_extend_label: Kerf extension (mm)
    unfold_board_thickness_label: Board thickness (mm)
    unfold_boustrophedon_path_group_name_label: Boustrophedon path group / tag (ABF_BOUSTROPHEDON_PATH)
    unfold_hold_group_name_label: Hold group name
    unfold_fleshing_settings_title: Fleshing (flat strip)
    unfold_fleshing_settings_subtitle: Main unfold is normal with ABF_POCKET inside it (curved span only); ABF_CURVED objects are separate with kerf/hold.
    unfold_fleshing_enabled_label: Fleshing on curved segments only (no kerf/hold on main unfold)
    unfold_fleshing_group_name_label: Pocket area group / tag (ABF_POCKET)
    unfold_curved_segment_enabled_label: Create separate curved segment groups (ABF_CURVED_1, …) with kerf/hold
    unfold_curved_segment_thickness_label: Curved segment thickness (mm)
    unfold_backbone_enabled_label: Backbone (front/back groups)
    unfold_backbone_width_label: Backbone depth (mm)
    unfold_bone_outer_enabled_label: Outer rib
    unfold_bone_middle_enabled_label: Middle ribs (curved sections)
    unfold_bone_inner_enabled_label: Inner rib
    unfold_bone_union_enabled_label: Auto-union inner + middle
    unfold_bone_middle_offset_label: Middle rib inset (mm)
    unfold_bone_middle_trim_label: Middle rib trim both ends (mm)
    unfold_saved: Saved
    unfold_save_failed: Save failed
    settings_tab_user_info: Account
    settings_tab_versions: Versions
    settings_tab_unfold: Unfold
    settings_tab_khau: Cross halving join
    settings_tab_nesting: Nesting
    nesting_settings_title: Nesting (ABF Extra Nesting)
    nesting_settings_subtitle: Default margins used when packing boards onto sheets.
    nesting_parts_margin_label: Margin between parts (mm)
    nesting_parts_margin_hint: Gap kept between any two placed parts during BLF
      packing. Use a decimal point (e.g. 7.5).
    nesting_sheet_border_margin_label: Margin to sheet border (mm)
    nesting_sheet_border_margin_hint: Gap kept between each part and the sheet
      edge. Use a decimal point (e.g. 4.0).
    nesting_refine_step_label: Refine step (mm)
    nesting_refine_step_hint: Snap tolerance for tight packing — smaller packs
      tighter but slower (default 3).
    nesting_sheet_size_label: Default sheet size (mm)
    nesting_sheet_size_hint: Size of a sheet created from scratch (default 1220 × 2440).
    nesting_sheet_w_label: Width
    nesting_sheet_h_label: Height
    nesting_in_holes_label: Nest parts into holes
    nesting_in_holes_hint: When a small part fits inside a hole of a larger part,
      pack it into that hole (uses the parts margin as the gap).
    nesting_auto_cut_label: Auto-set cut layers after nesting
    nesting_auto_cut_hint: After a nesting run, tag every part with its cut-order
      layer (T/B/L/R bands).
    nesting_save_btn: Save
    nesting_saved: Saved
    nesting_save_error_empty: Both fields are required.
    nesting_save_error_not_a_number: Use a number (decimal separator is ".").
    nesting_save_error_negative: Margins must be ≥ 0.
    khau_settings_title: Cross halving join (ABF_KHAU)
    khau_settings_subtitle: CNC tag ABF_KHAU, offset, and end stretch for cross halving
      join regions.
    khau_group_name_label: Group / tag name
    khau_offset_label: Offset (mm)
    khau_end_stretch_label: End stretch (mm)
    khau_hud_tag: Tag
    khau_hud_offset: Offset
    khau_hud_stretch: Stretch
    khau_saved: Saved
    khau_save_failed: Save failed
    menu_khau: Cross halving join
    menu_cross_cut: Cross Cut
    toolbar_cross_cut_tooltip: Split an object into two along a cut perpendicular to the selected edge
    toolbar_cross_cut_status: Hover a face edge — type cut width, click to split
    menu_isolate: Isolate selection
    toolbar_isolate_tooltip: Hide everything except the current selection
    toolbar_isolate_status: Hidden unselected objects — use Undo to restore
    isolate_error_empty: Select at least one object to isolate.
    isolate_operation: GG Cabinet Tools — Isolate selection
    isolate_restore_operation: GG Cabinet Tools — Restore isolated view
    isolate_failed: "Isolate failed: %s"
    menu_abf_selector: ABF selector
    toolbar_abf_selector_tooltip: Find ABF nesting boards and relatives from selection
    toolbar_abf_selector_status: RMB — find board / relatives; HUD for overlay and opacity
    menu_entity_dump: Dump selection to console
    toolbar_entity_dump_tooltip: Print selection details to the Ruby Console
    toolbar_entity_dump_status: Select entities, then run to dump class, bounds, and attributes
    menu_entity_dump_txt: Export selection to TXT
    toolbar_entity_dump_txt_tooltip: Export selection dump to a text file
    toolbar_entity_dump_txt_status: Choose folder and filename for a TXT export
    menu_entity_dump_json: Export selection to JSON
    toolbar_entity_dump_json_tooltip: Recursively export selection to JSON
    toolbar_entity_dump_json_status: Choose folder and filename for a JSON export
    menu_cnc_relief: CNC relief circles
    toolbar_cnc_relief_tooltip: Place relief circles at concave corners on selected boards
    toolbar_cnc_relief_status: Select groups/components — click corner; Shift for coplanar batch
    menu_cnc_relief_settings: Relief circles settings
    toolbar_cnc_relief_settings_tooltip: Preview/final diameter, tag template, loop mode
    menu_tenon_helper: Tenon helper
    toolbar_tenon_helper_tooltip: Create mortise patches on side faces with arrow picks
    toolbar_tenon_helper_status: Select boards — click arrows; Shift opposite, Ctrl all slots
    menu_cam_lock: Cam Lock
    toolbar_cam_lock_tooltip: Mark cam-lock joints (D15 lock + D10 pin) on contacting boards
    toolbar_cam_lock_status: Select cam-lock board — click anchors; Shift opposite, Ctrl all slots
    menu_unsolid_trim: Unsolid Trim
    toolbar_unsolid_trim_tooltip: 'Trim a target by a cutter (Eneroth-style): pick 1 = Cutter, 2 = Target'
    toolbar_unsolid_trim_status: Pick CUTTER first, then TARGET — keeps the cutter selected
    menu_unsolid_outer_shell: Unsolid Outer Shell
    toolbar_unsolid_outer_shell_tooltip: 'Outer shell a target with a cutter: pick 1 = Cutter, 2 = Target'
    toolbar_unsolid_outer_shell_status: Pick CUTTER first, then TARGET — outer shell on target, cutter removed
    menu_intersect_mark: Intersection Mark
    toolbar_intersect_mark_tooltip: Mark the intersection section where a board's edge contacts a target board
    toolbar_intersect_mark_status: Select a source board — hover a contact, click to stamp the marker
    intersect_await_pick: Double-click a board whose edge touches a target
    intersect_hud_width_offset: Width+
    intersect_hud_extend: Extend
    intersect_hud_mark_all: Mark all
    intersect_settings_title: Intersection settings
    intersect_section_presets: Presets
    intersect_width_offset: Width offset (mm)
    intersect_extend: Extend (mm)
    intersect_tag: Tag / Layer
    intersect_preset_name: Preset name
    intersect_preset_save: Save preset
    intersect_preset_delete: Delete
    intersect_saved: Saved
    cam_settings_title: Cam Lock settings
    cam_settings_subtitle: Liên kết ngang — diameters, dowels, screw, layers
    cam_section_cam: Cam joint
    cam_section_dowel: Wood dowel
    cam_section_screw: Screw mark
    cam_lock_d: Lock Ø (mm)
    cam_pin_d: Pin Ø (mm)
    cam_lock_edge: Lock inset from edge (mm)
    cam_lock_layer: Lock layer
    cam_pin_layer: Pin layer
    cam_dowel_enabled: Add wood dowels
    cam_dowel_d: Dowel Ø (mm)
    cam_dowel_spacing: Spacing from pin (mm)
    cam_dowel_layer: Dowel layer
    cam_screw_d: Screw Ø (mm)
    cam_cap_d: Cap Ø (mm)
    cam_screw_layer: Screw layer
    cam_cap_layer: Cap layer
    cam_save: Save
    cam_saved: Saved
    menu_tenon_settings: Tenon helper settings
    toolbar_tenon_settings_tooltip: Patch width, depth, slot count, edge offset
    menu_fuzzy_finder: Fuzzy instance finder
    toolbar_fuzzy_finder_tooltip: Search and select groups/components by fuzzy name
    toolbar_fuzzy_finder_status: Open dialog — filter by instance or definition name
    menu_layer_manager: Layer manager
    toolbar_layer_manager_tooltip: Focus, highlight, color, and delete by layer/tag
    toolbar_layer_manager_status: Open layer manager for current selection or model
    menu_marking: CNC marking
    toolbar_marking_tooltip: Mark a cut line (ABF_LINE_CUT) or pocket area
      (ABF_POCKET) on a panel face for CNC machining
    toolbar_marking_status: Hover an edge — press Ctrl to toggle line/area, click
      to place the marking sub-group
    menu_edge_band: Edge banding
    toolbar_edge_band_tooltip: Mark edge-banded edges (dán cạnh) on a board's
      side faces
    toolbar_edge_band_status: Click a side edge to band it, or use the top
      buttons; gear = presets
    menu_clone_board: Clone board
    toolbar_clone_board_tooltip: Clone a board along the face normal — VCB accepts
      'N' (distance) or 'N/M' (divide evenly)
    toolbar_clone_board_status: Hover a face — click to lock, drag to set distance,
      click again to commit
    menu_face_offset: Face offset
    toolbar_face_offset_tooltip: Move a face along its normal inside a group or component
      — Tab flips direction, VCB accepts distance in mm
    toolbar_face_offset_status: Hover a face — click to lock, drag or type mm, click to commit
    board_trim_label: "Trim s-face:"
    board_trim_apply: Trim selection
    board_trim_some_failed: "%d selected object(s) could not be trimmed (not a board) — highlighted."
    toolbar_board_trim_tooltip: Trim a board's side faces inward by N mm (default 1 mm,
      HUD ± / VCB to change) — click a board, Shift+click one s-face, or Trim selection
    toolbar_board_trim_status: Click a board to trim all its s-faces · Shift+click one
      s-face · the Trim button trims every selected board · VCB/± changes the mm
    menu_move_vertices: Move vertices
    toolbar_move_vertices_tooltip: Box-select vertices and move them along a world
      axis (Tab cycles Z/X/Y, Ctrl frees the lock); snap, VCB or a 2nd point set
      the distance
    toolbar_move_vertices_status: Box-select vertices, click the arrow start, move
      (Tab/Ctrl), VCB or 2nd point, Enter to commit
    toolbar_align_tooltip: Align an object by snapping its nearest vertex to a target
      face / edge / midpoint — Tab rotates the preview 90° (Z/X/Y), Ctrl places a copy
    toolbar_align_status: Pick an object, hover a face/edge/midpoint to snap (cyan
      preview), Tab to rotate, click to commit (hold Ctrl to copy)
    menu_vertex_slide: Vertex slide
    toolbar_vertex_slide_tooltip: Slide vertices of a group or component along a bounding-box
      axis — pick an edge or face to orient, drag a handle or a mid face, snaps to geometry
    toolbar_vertex_slide_status: Hover a handle, mid face, or edge/face to orient — click to grab,
      drag or type mm, Ctrl slides both sides, click to commit
    vertex_slide_operation: Vertex Slide
    vertex_slide_select_objects: Select at least one group or component first.
    vertex_slide_select_groups: Select a group or component to slide its vertices.
    vertex_slide_ready_status: Hover a handle or mid face, or pick an edge/face to orient —
      click to grab
    vertex_slide_drag_status: Drag or type mm — Tab cycles measure, Ctrl slides both sides,
      snaps to point/midpoint/edge/face/guide — click to commit
    menu_board_seeding: Board seeding
    toolbar_board_seeding_tooltip: Seed a world-aligned board at the cursor — preview follows the
      mouse, click to create
    toolbar_board_seeding_status: Move to place the board, click to create — VCB sets thickness,
      Tab flips front/back, Up/Down rotate Z, Left/Right rotate Y
    board_seeding_operation: Board seeding
    board_seeding_status: Move to place the board, click to create — VCB=thickness, Tab=flip,
      Up/Down=rotate Z, Left/Right=rotate Y
    board_seeding_hud_thickness: Dày
    board_seeding_hud_height: Cao
    board_seeding_hud_length: Dài
    marking_hud_offset: Offset
    marking_hud_width: Width
    marking_hud_layer: Layer
    marking_hud_anchor_count: Anchors
    marking_hud_anchor_dialog_title: Number of anchors
    marking_settings_title: Marking settings
    marking_settings_subtitle: Edit parameters and save named presets for the HUD.
    marking_settings_mode_section: Mode
    marking_settings_params_section: Parameters
    marking_settings_profile_preview: Marker shape
    marking_settings_profile_preview_hint: Use Save shape in the marking tool HUD to capture a 2D boundary from the model.
    marking_settings_profile_width: Width (mm)
    marking_settings_profile_height: Height (mm)
    marking_settings_presets_section: Presets
    marking_settings_presets_hint: Click a preset to load it, edit values, then Save preset. HUD chips update the selected preset.
    marking_offset_from_line: Offset from line (mm)
    marking_profile_offset_locked_line: Inset from ends (mm)
    marking_preset_ring: Ring (closed loop on lock; uses offset from line)
    marking_hud_save_profile: Save shape
    marking_profile_preset_auto_name_prefix: Shape
    marking_hud_save_profile_prompt: Preset name
    marking_hud_save_profile_failed: Select edges or a face in the model, then try again.
    marking_preset_name: Preset name
    marking_save_preset: Save preset
    marking_new_preset: New preset
    marking_add_offset: Add offset
    marking_saved: Saved
    marking_save_failed: Save failed
    marking_preset_saved: Preset saved
    marking_delete_preset: Delete
    marking_preset_default: Default
    marking_preset_circle_d35: Circle D35
    marking_preset_hinge_cup_a: Hinge Cup(A)
    marking_preset_hinge_cup_b: Hinge Cup(B)
    marking_preset_hinge_cup_c: Hinge Cup(C)
    marking_preset_led: LED
    marking_preset_track_slots: Track slots
    marking_preset_flush_handle: Flush Handle
    marking_preset_flush_handle_l: Flush Handle L
    marking_preset_roller_socket: Roller Socket
    marking_preset_glazing_rabbet: Glazing rabbet
    marking_mark_back_face: Mark on back face
    marking_swap_axes: Swap width / height (rotate 90°)
    marking_reset_presets: Reset to defaults
    marking_reset_presets_confirm: Reset all presets to defaults? This deletes your custom presets and recreates the built-in ones.
    toolbar_khau_tooltip: Create cross halving join regions (tag ABF_KHAU) between
      selected boards for CNC
    toolbar_khau_status: Select two or more boards; hover a face to preview, click
      to place the cross halving join region
    khau_instruction: Hover a board face to preview the shift vector — click to place
      the cross halving join region (ABF_KHAU)
    khau_operation: GG Cabinet Tools — Cross halving join (ABF_KHAU)
    khau_error: |-
      GG Cabinet Tools cross halving join (ABF_KHAU) error:
      %s
    khau_error_need_two: Select at least two board groups or components before running
      cross halving join (ABF_KHAU).
    khau_error_not_board: Entity "%s" is not board-like (missing a pair of equal-area
      parallel faces).
    khau_error_not_axis: Board "%s" is not axis-aligned — its f_face normal must be
      parallel or perpendicular to world Z.
    khau_error_normals: Selected boards must have f_face normals that are pairwise
      parallel or perpendicular.
    khau_overlap_warning: 'Warning: cross halving join region (ABF_KHAU) overlaps
      existing group(s): %s'
    gcm_tab_toolpaths: Toolpaths
    gcm_tab_layers: Layers
    gcm_tab_tools: Tools
    gcm_header_toolpaths: Toolpaths
    gcm_tp_save_title: Save toolpath list
    gcm_aria_save_tp: Save toolpath list changes
    gcm_tp_save_editor_title: Save toolpath settings in editor
    gcm_aria_save_tp_editor: Save toolpath settings in editor
    gcm_tp_close_editor_title: Close toolpath editor without saving
    gcm_aria_close_tp_editor: Close toolpath editor without saving
    gcm_aria_add_tp_group: Add toolpath type
    gcm_tp_profile_title: Profile
    gcm_aria_add_profile: Add profile toolpath
    gcm_tp_pocket_title: Pocket
    gcm_aria_add_pocket: Add pocket toolpath
    gcm_tp_drill_title: Drill
    gcm_aria_add_drill: Add drill toolpath
    gcm_import_tp_title: Import toolpaths
    gcm_aria_import_tp: Import toolpaths
    gcm_export_tp_title: Export toolpaths
    gcm_aria_export_tp: Export toolpaths
    gcm_sample_tp_title: Append sample toolpaths
    gcm_aria_sample_tp: Append sample toolpaths
    gcm_dup_tp_title: Duplicate selected toolpath
    gcm_aria_dup_tp: Duplicate selected toolpath
    gcm_clear_tp_title: Clear all toolpaths
    gcm_aria_clear_tp: Clear all toolpaths
    gcm_aria_reorder_tp: Reorder selected toolpath
    gcm_move_up_title: Move up
    gcm_move_down_title: Move down
    gcm_header_layers_pane: Layers
    gcm_reset_layers: Reset
    gcm_header_tool_library: Tool Library
    gcm_add_tool_btn: "+ Add"
    gcm_output_folder_label: POST processor
    gcm_output_folder_ph: Click ··· to browse
    gcm_generate_btn: "▶ Generate G-code"
    gcm_right_tab_all: All Sheets
    gcm_right_tab_selected: Selected Sheet
    gcm_material_setup_btn: Material setup…
    gcm_import_post_btn: Import POST…
    gcm_load_nesting_btn: "⬇ Load Nesting from Model"
    gcm_load_nesting_title: Read __ABF_Nesting from the open model
    gcm_preview_hint_none: No nesting loaded — click <strong>⬇ Load Nesting from Model</strong>
    gcm_selected_hint_none: No sheet selected
    gcm_preview_tool_warn: Preview cannot be displayed until you select a tool.
    gcm_editor_toggle_title: Show / hide toolpath settings
    gcm_save_btn: Save
    gcm_label_name: Name
    gcm_name_ph: Pocket_6mm_EndMill_Z10mm
    gcm_label_start_depth: Start Depth (D)
    gcm_label_cut_depth: Cut Depth (C)
    gcm_ph_mm_zero: 0.0 mm
    gcm_label_tool: Tool
    gcm_no_tool_selected: No tool selected
    gcm_select_tool_btn: Select…
    gcm_remove_tool_title: Remove
    gcm_label_machine_vectors: Machine Vectors
    gcm_comp_outside: Outside
    gcm_comp_inside: Inside
    gcm_comp_on: 'On'
    gcm_label_direction: Direction
    gcm_dir_climb: Climb
    gcm_dir_conventional: Conventional
    gcm_label_starting_point: Starting Point
    gcm_label_clear_pocket: Clear Pocket
    gcm_pocket_offset: Offset
    gcm_pocket_raster: Raster
    gcm_label_tags: Tags
    gcm_select_tags_btn: Select…
    gcm_tag_dialog_title: Assign Tags
    gcm_tag_picker_title: Assign Tags to Toolpath
    gcm_tag_picker_empty: No tags found — load nesting from the model first.
    gcm_material_setup_title: Material Setup
    gcm_ms_thickness: Thickness (mm)
    gcm_ms_xy_datum: XY Datum
    gcm_ms_use_offset: Use offset
    gcm_ms_x_mm: X (mm)
    gcm_ms_y_mm: Y (mm)
    gcm_ms_summary_chk: Show detailed summary on toolpath tab
    gcm_ms_z_zero: Z-Zero
    gcm_ms_z_mat: Material surface
    gcm_ms_z_bed: Machine bed
    gcm_ms_model_pos: Model position in material
    gcm_ms_gap_above: Gap above model (mm)
    gcm_ms_gap_below: Gap below model (mm)
    gcm_ms_model_thick: Model thickness (mm)
    gcm_ms_model_plane_z: Modeling plane Z (mm)
    gcm_ms_set_stub: Set…
    gcm_ms_rapid_z: Rapid Z gaps above material
    gcm_ms_clearance_z: Clearance (Z1) (mm)
    gcm_ms_plunge_z: Plunge (Z2) (mm)
    gcm_ms_home_start: Home / start position
    gcm_ms_home_z_gap: Z gap above material (mm)
    gcm_ms_gcode_out: G-code output
    gcm_ms_fanuc_o: Fanuc-style program number (O0001)
    gcm_ms_tool_len: Tool length compensation (G43 H01)
    gcm_warn_title: Warning
    gcm_warn_orphan_p1: There are some operation layers that do not belong to any
      toolpath. Do you still want to generate G-code?
    gcm_result_title: G-code generated
    gcm_result_files: Files
    gcm_result_open_folder: Show in Folder
    gcm_tp_tool_picker_title: Select Tool
    gcm_unsaved_title: Unsaved changes
    gcm_unsaved_body: Save your G-code settings (toolpaths, tools, machine, layers)
      before continuing?
    gcm_unsaved_dont_save: Don't save
    gcm_invalid_value_title: Invalid value
    gcm_invalid_modal_ok: OK
    gcm_clear_all_tp_title: Clear all toolpaths
    gcm_clear_all_tp_body: Remove every toolpath from the list? This cannot be undone.
    gcm_clear_all_confirm: Clear all
    gcm_aria_close: Close
    gcm_common_cancel: Cancel
    gcm_common_apply: Apply
    gcm_common_continue: Continue
    gcm_type_profile_name: Profile
    gcm_type_pocket_name: Pocket
    gcm_type_drill_name: Drill
    gcm_toolpath_copy_suffix: _copy
    gcm_toolpath_fallback_name: Toolpath
    gcm_sample_end_mill_6: End Mill Ø6 mm
    gcm_sample_drill_2: Drill Ø2 mm
    gcm_start_pt_nw: Top-left
    gcm_start_pt_n: Top-center
    gcm_start_pt_ne: Top-right
    gcm_start_pt_w: Mid-left
    gcm_start_pt_e: Mid-right
    gcm_start_pt_sw: Bottom-left
    gcm_start_pt_s: Bottom-center
    gcm_start_pt_se: Bottom-right
    gcm_val_name_empty: Enter a name for this toolpath.
    gcm_val_name_charset: Toolpath name may only contain letters, digits, space, period,
      underscore, and hyphen.
    gcm_val_nonneg: Enter a valid non-negative number.
    gcm_val_number: Enter a valid number.
    gcm_val_below_min: Value is below the minimum.
    gcm_val_tool_num_used: That tool number is already in use.
    gcm_val_tool_name: Enter a name for this tool.
    gcm_list_tags_prefix: 'Tags:'
    gcm_list_no_name: No name
    gcm_list_tags_none: none
    gcm_row_delete_tp_title: Delete toolpath
    gcm_tp_row_title: Click to select; double-click to edit
    gcm_tp_type_profile: Profile
    gcm_tp_type_drill: Drill
    gcm_tp_type_pocket: Pocket
    gcm_layers_empty: No layers found — load nesting first
    gcm_tool_dup_warn: "⚠ T%s already used by another tool"
    gcm_tools_empty: No tools defined — click + Add
    gcm_tool_delete_title: Delete tool
    gcm_tool_num_label: Tool Number (T#)
    gcm_tool_name_label: Name
    gcm_tool_type_label: Type
    gcm_tool_type_end_mill: End Mill
    gcm_tool_type_ball: Ball Nose
    gcm_tool_type_vbit: V-Bit
    gcm_tool_type_drill: Drill Bit
    gcm_tool_notes_label: Notes
    gcm_tool_section_geometry: Geometry
    gcm_tool_diameter: Diameter Ø (mm)
    gcm_tool_pass_depth: Pass Depth (mm)
    gcm_tool_stepover: Stepover (mm)
    gcm_tool_section_feeds: Feeds & Speeds
    gcm_tool_spindle_rpm: Spindle (RPM)
    gcm_tool_xy_feed: XY Feed (mm/min)
    gcm_tool_plunge_feed: Plunge (mm/min)
    gcm_tool_no_pick_msg: No tools defined — add tools in the Tools tab first.
    gcm_tool_pick_pass_suffix: " pass"
    gcm_tags_none_hint: No tags assigned — use Select tags…
    gcm_error_import_not_array: Imported toolpaths must be an array.
    gcm_status_imported: Imported %s toolpath(s) from %s.
    gcm_status_exported: Exported toolpaths to %s.
    gcm_status_post_saved: POST saved (%s chars). If you are signed in, settings sync
      to your account.
    gcm_error_select_output_first: Select an output folder first.
    gcm_error_load_nesting_first: Load nesting from model first.
    gcm_progress_computing: Computing toolpaths…
    gcm_progress_emitting: Emitting G-code…
    gcm_progress_writing: Writing files…
    gcm_status_review_warning: Review warning in the dialog.
    gcm_btn_loading: "⏳ Loading…"
    gcm_progress_reading_model: Reading nesting from model…
    gcm_error_prefix: 'Error: '
    gcm_result_none_written: No files were written.
    gcm_alert_files_written: "%s file(s) written."
    gcm_alert_none_generated: No files generated.
    gcm_result_saved_to: "%s file(s) saved to %s"
    gcm_result_preview_stub: G-code was saved. Open the files on disk to view full
      programs.
    gcm_result_truncated: |2-

      … (truncated)
    gcm_status_saved: Saved
    gcm_nesting_refreshed: Nesting refreshed (%s sheet(s)).
    gcm_nesting_none_warning: No nesting sheets found. Export nesting from the model
      first.
    gcm_btn_refresh_nesting: "↻ Refresh Nesting"
    gcm_btn_load_nesting: "⬇ Load Nesting from Model"
    gcm_preview_hint_none_plain: No nesting loaded
    gcm_unsaved_confirm: Save changes to G-code settings before continuing?
    gcm_error_select_output_folder: Please select an output folder.
    gcm_error_no_abf_nesting: No __ABF_Nesting found. Click 'Load Nesting from Model'
      after running the nesting tool.
    gcm_progress_reading_nesting_data: Reading nesting data…
    gcm_progress_generating_gcode: Generating G-code…
    gcm_panel_import_post: Import machine POST file
    gcm_panel_export_toolpaths: Export toolpaths JSON
    gcm_val_no_name: no name
    gcm_val_cut_depth: cut depth must be > 0
    gcm_val_no_tags: no tags assigned
    gcm_val_no_tool: no tool selected
    gcm_tpengine_no_ops: 'no operations match tags: %s'
    gcm_tpengine_unsupported_type: 'unsupported toolpath type: %s'
    gcm_sheet_default_name: Sheet
    warehouse_js_confirm_remove: Remove "%s" from this computer?
    warehouse_js_remove_title: Remove
