---
vi:
  gg_cabinet_tools:
    toolbar_scale_tooltip: Chia tỷ lệ nhóm/component theo chiều rộng/cao/sâu
    toolbar_scale_status: Chạy Dumb Scale trên lựa chọn hiện tại
    toolbar_color_tooltip: Chọn component để chọn tất cả cùng vật liệu
    toolbar_color_status: Chọn theo màu vật liệu
    toolbar_remove_color_tooltip: Xó vật liệu khỏi lựa chọn hiện tại
    toolbar_remove_color_status: Xó vật liệu trên đối tượng đã chọn
    menu_remove_color: Xó màu
    toolbar_warehouse_tooltip: 'Kho: duyệt mô hình SketchUp trên máy'
    toolbar_warehouse_status: Mở kho GG Cabinet Tools
    toolbar_settings_tooltip: Cài đặt plugin & Quản lý phiên bản
    toolbar_settings_status: Nâng cấp hoặc hạ cấp phiên bản plugin
    toolbar_gcode_tooltip: Quản lý G-code — định nghĩa toolpath và tạo G-code
    toolbar_gcode_status: Mở Quản lý G-code
    menu_dumb_scale: Dumb Scale
    menu_hover_dimensions: Kích thước khi rê chuột
    toolbar_hover_dimensions_tooltip: Hiện rộng, sâu, cao khi rê chuột lên nhóm/component
    toolbar_hover_dimensions_status: Rê chuột lên nhóm hoặc component — Esc để thoát
    menu_color: Màu
    menu_settings: Cài đặt
    menu_warehouse: Kho
    menu_gcode: Tạo G-code
    menu_sign_out: Đăng xuất
    menu_hot_reload: Tải lại nóng
    ctx_remove_material: Xó vật liệu
    ctx_remove_material_op: GG Cabinet Tools — Xó vật liệu
    auth_dialog_title: Đăng nhập — GG Cabinet Tools
    auth_signin_tab: Đăng nhập
    auth_signup_tab: Đăng ký
    auth_subtitle: Đăng nhập hoặc tạo tài khoản để sử dụng plugin.
    auth_email_label: Email
    auth_password_label: Mật khẩu
    auth_password_confirm_label: Xác nhận mật khẩu
    auth_email_placeholder: ban@example.com
    auth_password_placeholder: "••••••••"
    auth_signin_btn: Đăng nhập
    auth_signup_btn: Đăng ký
    auth_signing_in: Đang đăng nhập...
    auth_creating_account: Đang tạo tài khoản...
    auth_create_account_link: Tạo tài khoản
    auth_already_have_account: Đã có tài khoản?
    auth_account_created_title: Tài khoản đã tạo!
    auth_account_created_body: Vui lòng kiểm tra email và xác minh tài khoản trước
      khi đăng nhập.
    auth_redirect_countdown: Chuyển sang đăng nhập
    auth_verify_banner: Tài khoản đã tạo! Vui lòng xác minh email trước khi đăng nhập.
    auth_online_required: "Không có kết nối mạng. Vui lòng kết nối internet và thử lại."
    auth_forgot_password_link: Quên mật khẩu?
    auth_forgot_password_title: Đặt lại mật khẩu
    auth_forgot_password_subtitle: Nhập email và chúng tôi sẽ gửi hướng dẫn đặt lại mật khẩu.
    auth_forgot_password_btn: Gửi link đặt lại
    auth_forgot_password_sending: Đang gửi...
    auth_forgot_password_success_title: Kiểm tra email của bạn
    auth_forgot_password_success_body: Hướng dẫn đặt lại mật khẩu đã được gửi. Mở link trong trình duyệt để đặt mật khẩu mới.
    auth_forgot_password_error: "Gửi email thất bại. Vui lòng thử lại."
    auth_back_to_signin: Quay lại đăng nhập
    session_superseded_msg: |-
      Phiên của bạn đã bị kết thúc vì tài khoản đã đăng nhập trên máy khác.

      Vui lòng đăng nhập lại.
    settings_dialog_title: GG Cabinet Tools — Cài đặt
    settings_title: Cài đặt
    settings_subtitle: GG Cabinet Tools — phiên bản
    settings_sign_out: Đăng xuất
    settings_current_version: Phiên bản hiện tại
    settings_promo_placeholder: Mã khuyến mãi
    settings_promo_redeem: Áp dụng
    settings_promo_enter_code: Nhập mã trước.
    settings_promo_applying: Đang áp dụng…
    settings_downloading: Đang tải...
    settings_switched_note: "✓ Đã chuyển. Khởi động lại SketchUp để áp dụng."
    settings_col_version: Phiên bản
    settings_col_changelog: Thay đổi
    settings_col_created_at: Ngày tạo
    settings_current_badge: Hiện tại
    settings_switch_btn: Chuyển
    settings_go_pro: Nâng Pro
    settings_language: Ngôn ngữ
    settings_loading: Đang tải phiên bản...
    version_updated: |-
      Đã cập nhật lên v%s!

      Khởi động lại SketchUp để sử dụng phiên bản mới.
    version_update_failed: Không thể tải hoặc giải nén phiên bản %s.
    version_switched: |-
      Đã chuyển sang v%s.

      Khởi động lại SketchUp để áp dụng.
    version_switch_failed: Không thể tải hoặc giải nén phiên bản %s.
    version_no_version: Không có phiên bản được chỉ định.
    versions_none_available: |-
      Không có phiên bản từ máy chủ.
      Kiểm tra kết nối đến %s
    versions_load_failed: |-
      Không thể tải phiên bản từ máy chủ (status %s).
      Kiểm tra kết nối đến %s
    update_dialog_title: GG Cabinet Tools — Có bản cập nhật
    update_title: Có bản cập nhật
    update_subtitle: Phiên bản mới của GG Cabinet Tools đã có sẵn
    update_current_label: Hiện tại
    update_latest_label: Mới nhất
    update_whats_new: 'Có gì mới:'
    update_later: Để sau
    update_now: Cập nhật ngay
    update_downloading: Đang tải cập nhật...
    upgrade_dialog_title: Nâng cấp Pro — GG Cabinet Tools
    upgrade_title: Nâng cấp Pro
    upgrade_subtitle: Truy cập Pro 6 tháng
    upgrade_bank_tab: Chuyển khoản
    upgrade_stripe_tab: Stripe / Thẻ
    upgrade_bank_hint: Quét QR — tài khoản được nâng cấp tự động sau khi xác nhận
      thanh toán
    upgrade_transfer_no_qr: Chuyển khoản không dùng QR
    upgrade_transfer_step: 'Chuyển %s VND đến:'
    upgrade_bank_label: 'Ngân hàng:'
    upgrade_account_label: 'Số tài khoản:'
    upgrade_account_name_label: 'Tên tài khoản:'
    upgrade_branch_label: 'Chi nhánh:'
    upgrade_transfer_msg: 'Nội dung chuyển khoản — chỉ nhập <strong>mã này</strong>:'
    upgrade_stripe_hint: Thanh toán bằng thẻ qua <span class="stripe-logo">Stripe</span>
      — quét QR để mở trang thanh toán
    upgrade_gen_qr_btn: Tạo mã QR thanh toán
    upgrade_stripe_step1: Nhấn “Tạo mã QR thanh toán” bên trên
    upgrade_stripe_step2: Quét mã QR bằng điện thoại
    upgrade_stripe_step3: Hoàn tất thanh toán thẻ trên trang Stripe
    upgrade_stripe_step4: Tài khoản được nâng cấp tự động 6 tháng
    upgrade_failed: 'Nâng cấp Pro thất bại: %s'
    upgrade_stripe_failed: Không thể tạo phiên Stripe.
    upgrade_qr_valid: Quét để mở trang thanh toán Stripe — liên kết hợp lệ trong 24
      giờ
    upgrade_qr_click_hint: Nhấn nút bên dưới để tạo mã QR
    upgrade_generating: Đang tạo…
    promo_activated_until: Pro đã kích hoạt đến %s!
    promo_lifetime: Pro trọn đời đã kích hoạt!
    promo_failed: Không thể áp dụng mã.
    promo_dialog_title: Khuyến mãi tháng 6/2026
    promo_amount_label: Giá Pro trọn đời
    promo_bank_hint: Quét mã QR để chuyển khoản qua SePay. Ghi mã kích hoạt vào nội dung chuyển khoản.
    promo_bank_step2: Sau khi thanh toán được xác nhận, tài khoản được nâng cấp Pro vĩnh viễn tự động.
    promo_gumroad_hint: Hoặc mua Pro trọn đời qua Gumroad — quét QR hoặc mở liên kết cửa hàng.
    promo_gumroad_step1: Quét mã QR hoặc nhấn “Mở cửa hàng Gumroad”
    promo_gumroad_step2: Hoàn tất mua trên Gumroad để nhận quyền Pro trọn đời
    promo_close: Đóng
    promo_sepay_qr_alt: QR thanh toán - Ngân hàng TMCP Quân Đội - 0777444222
    scale_select_objects: Vui lòng chọn một hoặc nhiều đối tượng.
    scale_select_groups: Vui lòng chọn một hoặc nhiều nhóm hoặc component.
    scale_error: |-
      Lỗi GG Cabinet Tools Dumb Scale:
      %s
    color_selected: Đã chọn %d đối tượng có cùng vật liệu.
    color_applied: Đã áp dụng vật liệu cho %d đối tượng.
    color_remove_failed: 'Xó màu thất bại: %s'
    color_apply_failed: 'Áp dụng vật liệu thất bại: %s'
    color_remove_failed2: 'Xó vật liệu thất bại: %s'
    remove_color_empty_selection: Chọn ít nhất một đối tượng để xó vật liệu.
    remove_color_op: GG Cabinet Tools — Xó màu
    remove_color_done: Đã xó vật liệu trên %d đối tượng.
    warehouse_search_placeholder: Tìm kiếm mô hình trong kho…
    warehouse_search_title: Tìm kiếm
    warehouse_refresh_title: Làm mới danh sách
    warehouse_change_dir_title: Đổi thư mục mô hình
    warehouse_loading: Đang tải…
    warehouse_no_models: Không tìm thấy mô hình.
    warehouse_folder_label: 'Thư mục:'
    warehouse_remove: Xóa
    warehouse_dialog_title: GG Cabinet Tools — Kho
    warehouse_select_dir_title: Chọn thư mục kho mô hình
    gcode_manager_dialog_title: GG Cabinet Tools — Quản lý G-code
    gcode_select_output_folder: Chọn thư mục xuất G-code
    upgrade_gumroad_tab: Mã khuyến mãi
    upgrade_gumroad_hint: Mua mã khuyến mãi 6 tháng từ cửa hàng Gumroad — quét QR
      hoặc nhấn nút bên dưới.
    upgrade_gumroad_scan: Quét để mở cửa hàng Gumroad
    upgrade_gumroad_step1: Quét mã QR hoặc nhấn “Mở cửa hàng Gumroad”
    upgrade_gumroad_step2: Mua mã khuyến mãi (hiệu lực 6 tháng)
    upgrade_gumroad_step3: Vào Cài đặt → nhập mã vào “Mã khuyến mãi” → nhấn Áp dụng
    upgrade_gumroad_open_btn: Mở cửa hàng Gumroad
    menu_bend: Uốn cong
    toolbar_bend_tooltip: Uốn cong nhóm ván thành hình cung
    toolbar_bend_status: Di chuột lên mặt phẳng; nhập R,đoạn trong VCB; nhấp để uốn
    bend_instruction: 'Di chuột lên mặt phẳng để xem trước — nhập bán kính,đoạn (vd:
      200,24) — nhấp để uốn'
    bend_vcb_label: R(mm), Đoạn
    bend_error: |-
      Lỗi GG Cabinet Tools Bend:
      %s
    menu_unfold: Trải phẳng
    toolbar_unfold_tooltip: Trải mặt cong (các face liền kề) thành tấm 2D để cắt rãnh
      CNC
    toolbar_unfold_status: Di chuột lên mặt; nhấp để trải strip và tạo nhóm rãnh +
      giữ
    unfold_instruction: Di chuột lên một mặt — các face liền kề trong ngưỡng góc sẽ
      được trải khi nhấp
    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: đường kính dao
    unfold_hud_meat: Meat
    unfold_hud_kerf: ZigZag Line Offset
    unfold_hud_hold: Đường Bảo vệ Offset
    unfold_hud_thick: Độ Dày Ván
    unfold_hud_bonew: Độ Rộng Xương
    unfold_hud_midoff: Offset Xương Giữa
    unfold_hud_midtrim: Cắt Đầu/Đuôi Xương Giữa
    unfold_hud_curvt: Độ Dày Tấm Lót
    unfold_hud_fillertrim: Cắt Lùi Tấm Lót
    unfold_hud_pathtag: ZigZag Tag
    unfold_hud_holdtag: Đường Bảo Vệ Tag
    unfold_hud_fleshtag: Vùng Hạ Nền Tag
    unfold_operation: GG Cabinet Tools — Trải phẳng
    unfold_error: |-
      Lỗi GG Cabinet Tools Unfold:
      %s
    unfold_settings_title: Trải phẳng / Unfold
    unfold_settings_subtitle: Tham số cho công cụ trải phẳng gia công
    unfold_settings_gear_tooltip: Cài đặt Unfold
    unfold_settings_mode_section: Chế độ
    unfold_settings_bones_section: Xương
    unfold_settings_params_section: Tham số
    unfold_settings_tags_section: Tên group
    unfold_strip_angle_label: Ngưỡng góc strip (°)
    unfold_hold_offset_label: Offset đường giữ (mm)
    unfold_tool_diameter_label: Đường kính dao (mm)
    unfold_meat_clearance_label: Chừa thịt (mm)
    unfold_kerf_extend_label: Kéo dài đường xẻ rãnh (mm)
    unfold_board_thickness_label: Độ dày ván (mm)
    unfold_boustrophedon_path_group_name_label: Tên group boustrophedon path (ABF_BOUSTROPHEDON_PATH)
    unfold_hold_group_name_label: Tên group giữ phôi
    unfold_fleshing_settings_title: Fleshing (dải phẳng)
    unfold_fleshing_settings_subtitle: Trải phẳng chính bình thường, ABF_POCKET nằm trong đó (chỉ dài đoạn cong); ABF_CURVED tách riêng có kerf/hold.
    unfold_fleshing_enabled_label: Fleshing chỉ trên đoạn cong (không kerf/hold trên trải phẳng chính)
    unfold_fleshing_group_name_label: Tên group vùng hạ nền (ABF_POCKET)
    unfold_curved_segment_enabled_label: Tạo group đoạn cong riêng (ABF_CURVED_1, …) có kerf/hold
    unfold_curved_segment_thickness_label: Độ dày đoạn cong (mm)
    unfold_backbone_enabled_label: Xương sống (2 group trước/sau)
    unfold_backbone_width_label: Chiều sâu xương (mm)
    unfold_bone_outer_enabled_label: Xương ngoài
    unfold_bone_middle_enabled_label: Xương giữa (chỉ đoạn cong)
    unfold_bone_inner_enabled_label: Xương trong
    unfold_bone_union_enabled_label: Tự động union xương trong + giữa
    unfold_bone_middle_offset_label: Offset xương giữa vào trong (mm)
    unfold_bone_middle_trim_label: Trim ngắn 2 đầu xương giữa (mm)
    unfold_saved: Đã lưu
    unfold_save_failed: Lưu thất bại
    settings_tab_user_info: Tài khoản
    settings_tab_versions: Phiên bản
    settings_tab_nesting: Nesting
    nesting_settings_title: Nesting (ABF Extra Nesting)
    nesting_settings_subtitle: Lề mặc định dùng khi xếp các part lên tấm.
    nesting_parts_margin_label: Lề giữa các part (mm)
    nesting_parts_margin_hint: Khoảng cách giữa hai part bất kỳ khi xếp BLF.
      Dùng dấu chấm cho thập phân (vd 7.5).
    nesting_sheet_border_margin_label: Lề viền tấm (mm)
    nesting_sheet_border_margin_hint: Khoảng cách giữa mỗi part và viền tấm.
      Dùng dấu chấm cho thập phân (vd 4.0).
    nesting_refine_step_label: Bước tinh chỉnh (mm)
    nesting_refine_step_hint: Dung sai snap khi xếp khít — nhỏ hơn thì khít hơn
      nhưng chậm hơn (mặc định 3).
    nesting_sheet_size_label: Khổ tấm mặc định (mm)
    nesting_sheet_size_hint: Kích thước tấm khi tạo mới (mặc định 1220 × 2440).
    nesting_sheet_w_label: Rộng
    nesting_sheet_h_label: Cao
    nesting_in_holes_label: Xếp tấm vào lỗ
    nesting_in_holes_hint: Khi một tấm nhỏ vừa với lỗ của tấm lớn, xếp tấm đó vào
      trong lỗ (dùng lề giữa các part làm khoảng hở).
    nesting_auto_cut_label: Tự set layer cắt sau khi nesting
    nesting_auto_cut_hint: Sau khi nesting, gán cho mỗi part layer thứ tự cắt
      (vùng T/B/L/R).
    nesting_save_btn: Lưu
    nesting_saved: Đã lưu
    nesting_save_error_empty: Phải nhập đủ hai ô.
    nesting_save_error_not_a_number: Nhập số hợp lệ (dùng dấu chấm thập phân).
    nesting_save_error_negative: Lề phải ≥ 0.
    settings_tab_unfold: Trải phẳng
    settings_tab_khau: Cross halving join
    khau_settings_title: Cross halving join (ABF_KHAU)
    khau_settings_subtitle: Tag CNC ABF_KHAU, offset và kéo dãn đầu cho vùng cross
      halving join.
    khau_group_name_label: Tên group / tag
    khau_offset_label: Offset (mm)
    khau_end_stretch_label: Kéo dãn 2 đầu (mm)
    khau_hud_tag: Tag
    khau_hud_offset: Offset
    khau_hud_stretch: Dãn Khử Dao
    khau_saved: Đã lưu
    khau_save_failed: Lưu thất bại
    menu_khau: Cross halving join
    menu_cross_cut: Cắt ngang
    toolbar_cross_cut_tooltip: Cắt object thành 2 phần theo đường vuông góc cạnh được chọn
    toolbar_cross_cut_status: Di chuột lên cạnh — nhập chiều rộng cắt, nhấp để cắt
    menu_isolate: Cô lập đối tượng
    toolbar_isolate_tooltip: Ẩn mọi thứ trừ đối tượng đang chọn
    toolbar_isolate_status: Đã ẩn đối tượng không chọn — Ctrl+Z để hoàn tác
    isolate_error_empty: Chọn ít nhất một đối tượng để cô lập.
    isolate_operation: GG Cabinet Tools — Cô lập lựa chọn
    isolate_restore_operation: GG Cabinet Tools — Khôi phục sau cô lập
    isolate_failed: "Cô lập thất bại: %s"
    menu_abf_selector: Chọn ABF
    toolbar_abf_selector_tooltip: Tìm tấm nesting ABF và đối tượng liên quan từ lựa chọn
    toolbar_abf_selector_status: Chuột phải — tìm tấm / liên quan; HUD độ mờ overlay
    menu_entity_dump: Dump ra Ruby Console
    toolbar_entity_dump_tooltip: In thông tin lựa chọn ra Ruby Console
    toolbar_entity_dump_status: Chọn đối tượng rồi chạy để xem class, bounds, thuộc tính
    menu_entity_dump_txt: Xuất lựa chọn ra TXT
    toolbar_entity_dump_txt_tooltip: Xuất dump lựa chọn ra file văn bản
    toolbar_entity_dump_txt_status: Chọn thư mục và tên file TXT
    menu_entity_dump_json: Xuất lựa chọn ra JSON
    toolbar_entity_dump_json_tooltip: Xuất đệ quy lựa chọn ra JSON
    toolbar_entity_dump_json_status: Chọn thư mục và tên file JSON
    menu_cnc_relief: Vòng tròn khu đạo CNC
    toolbar_cnc_relief_tooltip: Đặt vòng tròn khu đạo tại góc lõm trên tấm đã chọn
    toolbar_cnc_relief_status: Chọn group/component — nhấp góc; Shift cho cùng mặt phẳng
    menu_cnc_relief_settings: Cài đặt khu đạo
    toolbar_cnc_relief_settings_tooltip: Đường kính preview/final, tag, chế độ loop
    menu_tenon_helper: Trợ giúp mộng
    toolbar_tenon_helper_tooltip: Tạo mộng trên mặt bên bằng mũi tên
    toolbar_tenon_helper_status: Chọn tấm — nhấp mũi tên; Shift đối diện, Ctrl tất cả slot
    menu_cam_lock: Liên kết cam
    toolbar_cam_lock_tooltip: Đánh dấu liên kết ốc cam (D15 khóa + D10 chân) trên 2 tấm tiếp xúc
    toolbar_cam_lock_status: Chọn tấm khóa cam — nhấp anchor; Shift đối diện, Ctrl tất cả slot
    menu_unsolid_trim: Unsolid Trim
    toolbar_unsolid_trim_tooltip: 'Trim tấm đích bằng tấm cắt (kiểu Eneroth): chọn 1 = Cutter, 2 = Target'
    toolbar_unsolid_trim_status: Chọn CUTTER trước, rồi TARGET — giữ lại cutter trong selection
    menu_unsolid_outer_shell: Unsolid Outer Shell
    toolbar_unsolid_outer_shell_tooltip: 'Outer shell tấm đích với tấm cắt: chọn 1 = Cutter, 2 = Target'
    toolbar_unsolid_outer_shell_status: Chọn CUTTER trước, rồi TARGET — outer shell vào target, xóa cutter
    menu_intersect_mark: Đánh dấu giao nhau
    toolbar_intersect_mark_tooltip: Đánh dấu tiết diện giao nhau nơi cạnh tấm tiếp xúc tấm đích
    toolbar_intersect_mark_status: Chọn tấm nguồn — rê tới chỗ tiếp xúc, nhấp để đặt dấu
    intersect_await_pick: Nhấp đúp một tấm có cạnh chạm tấm đích
    intersect_hud_width_offset: Rộng+
    intersect_hud_extend: Kéo
    intersect_hud_mark_all: Đánh hết
    intersect_settings_title: Cài đặt giao nhau
    intersect_section_presets: Preset
    intersect_width_offset: Nới rộng (mm)
    intersect_extend: Kéo dài (mm)
    intersect_tag: Tag / Layer
    intersect_preset_name: Tên preset
    intersect_preset_save: Lưu preset
    intersect_preset_delete: Xóa
    intersect_saved: Đã lưu
    cam_settings_title: Cài đặt liên kết ngang
    cam_settings_subtitle: Liên kết ngang — đường kính, chốt gỗ, vít, layer
    cam_section_cam: Mối cam
    cam_section_dowel: Chốt gỗ
    cam_section_screw: Đánh dấu vít
    cam_lock_d: Ø khóa cam (mm)
    cam_pin_d: Ø chân cam (mm)
    cam_lock_edge: Khóa cam cách mép (mm)
    cam_lock_layer: Layer khóa
    cam_pin_layer: Layer chân
    cam_dowel_enabled: Thêm chốt gỗ
    cam_dowel_d: Ø chốt gỗ (mm)
    cam_dowel_spacing: Cách chân cam (mm)
    cam_dowel_layer: Layer chốt
    cam_screw_d: Ø vít (mm)
    cam_cap_d: Ø nắp che (mm)
    cam_screw_layer: Layer vít
    cam_cap_layer: Layer nắp
    cam_save: Lưu
    cam_saved: Đã lưu
    menu_tenon_settings: Cài đặt mộng
    toolbar_tenon_settings_tooltip: Chiều dài, độ sâu, số slot, offset mép
    menu_fuzzy_finder: Tìm instance mờ
    toolbar_fuzzy_finder_tooltip: Tìm và chọn group/component theo tên fuzzy
    toolbar_fuzzy_finder_status: Mở hộp thoại — lọc theo tên instance hoặc definition
    menu_layer_manager: Quản lý layer
    toolbar_layer_manager_tooltip: Focus, highlight, màu và xóa theo layer/tag
    toolbar_layer_manager_status: Mở quản lý layer cho lựa chọn hoặc cả model
    menu_marking: Đánh dấu CNC
    toolbar_marking_tooltip: Đánh dấu đường line (ABF_LINE_CUT) hoặc vùng pocket
      (ABF_POCKET) trên mặt tấm cho gia công CNC
    toolbar_marking_status: Di chuột lên cạnh tấm — Ctrl để chuyển line/area, nhấp
      để tạo nhóm con
    menu_edge_band: Dán cạnh
    toolbar_edge_band_tooltip: Đánh dấu cạnh dán (dán cạnh) trên các mặt cạnh của tấm
    toolbar_edge_band_status: Click cạnh để đánh dấu, hoặc dùng 3 nút trên cùng;
      bánh răng = preset
    menu_clone_board: Nhân bản tấm
    toolbar_clone_board_tooltip: Nhân bản tấm ván theo hướng pháp tuyến — VCB hỗ trợ
      'N' (khoảng cách) hoặc 'N/M' (chia đều)
    toolbar_clone_board_status: Di chuột lên một mặt — nhấp để khóa, kéo để chọn khoảng
      cách, nhấp lần 2 để tạo
    menu_face_offset: Dịch mặt
    toolbar_face_offset_tooltip: Dịch một mặt theo pháp tuyến trong group/component —
      Tab đảo chiều, VCB nhập khoảng cách mm
    toolbar_face_offset_status: Di chuột lên mặt — nhấp khóa, kéo hoặc nhập mm, nhấp để xác nhận
    menu_move_vertices: Dịch vertex
    toolbar_move_vertices_tooltip: Quét chọn vertex và dịch theo trục world (Tab xoay
      Z/X/Y, Ctrl bỏ khóa); snap, VCB hoặc điểm thứ 2 để định khoảng cách
    toolbar_move_vertices_status: Quét chọn vertex, click điểm đầu mũi tên, di chuyển
      (Tab/Ctrl), VCB hoặc điểm 2, Enter để xác nhận
    toolbar_align_tooltip: Align đối tượng bằng cách snap vertex gần nhất vào face /
      edge / midpoint mục tiêu — Tab xoay preview 90° (Z/X/Y), Ctrl để nhân bản
    toolbar_align_status: Chọn đối tượng, rê tới face/edge/midpoint để snap (preview
      cyan), Tab để xoay, click để commit (giữ Ctrl để nhân bản)
    menu_vertex_slide: Trượt đỉnh
    toolbar_vertex_slide_tooltip: Trượt các đỉnh của group/component theo trục bounding-box —
      chọn một cạnh hoặc mặt để định hướng, kéo handle hoặc mặt giữa, bắt dính vào hình học
    toolbar_vertex_slide_status: Di chuột lên handle, mặt giữa, hoặc cạnh/mặt để định hướng —
      nhấp để giữ, kéo hoặc nhập mm, Ctrl trượt hai bên, nhấp để xác nhận
    vertex_slide_operation: Trượt đỉnh
    vertex_slide_select_objects: Hãy chọn ít nhất một group hoặc component trước.
    vertex_slide_select_groups: Hãy chọn một group hoặc component để trượt đỉnh.
    vertex_slide_ready_status: Di chuột lên handle hoặc mặt giữa, hoặc chọn cạnh/mặt để định
      hướng — nhấp để giữ
    vertex_slide_drag_status: Kéo hoặc nhập mm — Tab đổi tham chiếu đo, Ctrl trượt hai bên, bắt
      dính vào điểm/trung điểm/cạnh/mặt/đường gióng — nhấp để xác nhận
    menu_board_seeding: Đặt khối ván
    toolbar_board_seeding_tooltip: Đặt một khối ván thẳng trục thế giới tại con trỏ — preview bám
      theo chuột, nhấp để tạo
    toolbar_board_seeding_status: Di chuột để đặt khối, nhấp để tạo — VCB đổi độ dày, Tab đảo
      trước/sau, Lên/Xuống xoay Z, Trái/Phải xoay Y
    board_seeding_operation: Đặt khối ván
    board_seeding_status: Di chuột để đặt khối, nhấp để tạo — VCB=độ dày, Tab=đảo mặt,
      Lên/Xuống=xoay Z, Trái/Phải=xoay 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: Dày
    marking_hud_layer: Layer
    marking_hud_anchor_count: Điểm neo
    marking_hud_anchor_dialog_title: Số điểm neo
    marking_settings_title: Cài đặt Marking
    marking_settings_subtitle: Chỉnh tham số và lưu preset — mỗi preset là một nút radio trên HUD.
    marking_settings_mode_section: Chế độ
    marking_settings_params_section: Tham số
    marking_settings_profile_preview: Hình marker
    marking_settings_profile_preview_hint: Dùng Lưu hình trên HUD marking tool để lấy biên dạng 2D từ model.
    marking_settings_profile_width: Rộng (mm)
    marking_settings_profile_height: Cao (mm)
    marking_settings_presets_section: Preset
    marking_settings_presets_hint: Nhấp preset để nạp, sửa tham số, rồi Lưu preset. Chip HUD cập nhật preset đang chọn.
    marking_offset_from_line: Offset từ cạnh (mm)
    marking_profile_offset_locked_line: Inset from ends (mm)
    marking_preset_ring: Ring (khép kín khi khóa; dùng offset từ cạnh)
    marking_hud_save_profile: Lưu hình
    marking_profile_preset_auto_name_prefix: Hình
    marking_hud_save_profile_prompt: Tên preset
    marking_hud_save_profile_failed: Chọn edge hoặc face trong model rồi thử lại.
    marking_preset_name: Tên preset
    marking_save_preset: Lưu preset
    marking_new_preset: Tạo mới
    marking_add_offset: Thêm offset
    marking_saved: Đã lưu
    marking_save_failed: Lưu thất bại
    marking_preset_saved: Đã lưu preset
    marking_delete_preset: Xóa
    marking_preset_default: Default
    marking_preset_circle_d35: Tròn 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: Hèm kính
    marking_mark_back_face: Đánh mặt sau
    marking_swap_axes: Đảo rộng / cao (xoay 90°)
    marking_reset_presets: Khôi phục mặc định
    marking_reset_presets_confirm: Khôi phục tất cả preset về mặc định? Thao tác này xóa các preset bạn tự tạo và tạo lại các preset có sẵn.
    toolbar_khau_tooltip: Tạo vùng cross halving join (tag ABF_KHAU) giữa các tấm
      ván được chọn cho CNC
    toolbar_khau_status: Chọn ít nhất hai tấm; di chuột lên mặt để xem trước, nhấp
      để tạo vùng cross halving join
    khau_instruction: Di chuột lên mặt tấm ván để xem vector dịch chuyển — nhấp để
      tạo vùng cross halving join (ABF_KHAU)
    khau_operation: GG Cabinet Tools — Cross halving join (ABF_KHAU)
    khau_error: |-
      Lỗi GG Cabinet Tools cross halving join (ABF_KHAU):
      %s
    khau_error_need_two: Chọn ít nhất hai nhóm/component ván trước khi chạy cross
      halving join (ABF_KHAU).
    khau_error_not_board: Đối tượng "%s" không phải dạng tấm ván (thiếu cặp mặt song
      song, cùng diện tích).
    khau_error_not_axis: Tấm ván "%s" không căn theo trục — pháp tuyến f_face phải
      song song hoặc vuông góc với trục Z.
    khau_error_normals: Các tấm ván được chọn phải có pháp tuyến f_face song song
      hoặc vuông góc với nhau từng cặp.
    khau_overlap_warning: 'Cảnh báo: vùng cross halving join (ABF_KHAU) chồng lấn
      lên group: %s'
    gcm_tab_toolpaths: Lối cắt
    gcm_tab_layers: Layer
    gcm_tab_tools: Cụ cắt
    gcm_header_toolpaths: Lối cắt
    gcm_tp_save_title: Lưu danh sách lối cắt
    gcm_aria_save_tp: Lưu thay đổi danh sách lối cắt
    gcm_tp_save_editor_title: Lưu thiết lập lối cắt trong trình sửa
    gcm_aria_save_tp_editor: Lưu thiết lập lối cắt trong trình sửa
    gcm_tp_close_editor_title: Đóng trình sửa lối cắt, không lưu
    gcm_aria_close_tp_editor: Đóng trình sửa lối cắt, không lưu
    gcm_aria_add_tp_group: Thêm loại lối cắt
    gcm_tp_profile_title: Profile
    gcm_aria_add_profile: Thêm lối profile
    gcm_tp_pocket_title: Pocket
    gcm_aria_add_pocket: Thêm lối pocket
    gcm_tp_drill_title: Khoan
    gcm_aria_add_drill: Thêm lối khoan
    gcm_import_tp_title: Nhập lối cắt
    gcm_aria_import_tp: Nhập lối cắt
    gcm_export_tp_title: Xuất lối cắt
    gcm_aria_export_tp: Xuất lối cắt
    gcm_sample_tp_title: Thêm mẫu lối cắt
    gcm_aria_sample_tp: Thêm mẫu lối cắt
    gcm_dup_tp_title: Nhân bản lối đang chọn
    gcm_aria_dup_tp: Nhân bản lối đang chọn
    gcm_clear_tp_title: Xóa hết lối cắt
    gcm_aria_clear_tp: Xóa hết lối cắt
    gcm_aria_reorder_tp: Sắp xếp lại lối đang chọn
    gcm_move_up_title: Lên trên
    gcm_move_down_title: Xuống dưới
    gcm_header_layers_pane: Layer
    gcm_reset_layers: Đặt lại
    gcm_header_tool_library: Thư viện cụ
    gcm_add_tool_btn: "+ Thêm"
    gcm_output_folder_label: Bộ xử lý POST
    gcm_output_folder_ph: Nhấn ··· để chọn
    gcm_generate_btn: "▶ Tạo G-code"
    gcm_right_tab_all: Tất cả tấm
    gcm_right_tab_selected: Tấm đang chọn
    gcm_material_setup_btn: Thiết lập vật liệu…
    gcm_import_post_btn: Nhập POST…
    gcm_load_nesting_btn: "⬇ Tải nesting từ model"
    gcm_load_nesting_title: Đọc __ABF_Nesting từ model đang mở
    gcm_preview_hint_none: Chưa có nesting — nhấn <strong>⬇ Tải nesting từ model</strong>
    gcm_selected_hint_none: Chưa chọn tấm
    gcm_preview_tool_warn: Chọn cụ trước để xem preview.
    gcm_editor_toggle_title: Hiện / ẩn cài đặt lối cắt
    gcm_save_btn: Lưu
    gcm_label_name: Tên
    gcm_name_ph: Pocket_6mm_EndMill_Z10mm
    gcm_label_start_depth: Độ sâu bắt đầu (D)
    gcm_label_cut_depth: Độ sâu cắt (C)
    gcm_ph_mm_zero: 0,0 mm
    gcm_label_tool: Cụ
    gcm_no_tool_selected: Chưa chọn cụ
    gcm_select_tool_btn: Chọn…
    gcm_remove_tool_title: Gỡ
    gcm_label_machine_vectors: Vector máy
    gcm_comp_outside: Ngoài
    gcm_comp_inside: Trong
    gcm_comp_on: Trên biên
    gcm_label_direction: Chiều phay
    gcm_dir_climb: Climb
    gcm_dir_conventional: Conventional
    gcm_label_starting_point: Điểm bắt đầu
    gcm_label_clear_pocket: Pocket sạch
    gcm_pocket_offset: Offset
    gcm_pocket_raster: Raster
    gcm_label_tags: Tag
    gcm_select_tags_btn: Chọn…
    gcm_tag_dialog_title: Gán tag
    gcm_tag_picker_title: Gán tag cho lối cắt
    gcm_tag_picker_empty: Chưa có tag — tải nesting từ model trước.
    gcm_material_setup_title: Thiết lập vật liệu
    gcm_ms_thickness: Dày (mm)
    gcm_ms_xy_datum: Gốc XY
    gcm_ms_use_offset: Dùng offset
    gcm_ms_x_mm: X (mm)
    gcm_ms_y_mm: Y (mm)
    gcm_ms_summary_chk: Hiện tóm tắt chi tiết ở tab lối cắt
    gcm_ms_z_zero: Z-Zero
    gcm_ms_z_mat: Mặt vật liệu
    gcm_ms_z_bed: Bàn máy
    gcm_ms_model_pos: Vị trí model trong vật liệu
    gcm_ms_gap_above: Khe phía trên model (mm)
    gcm_ms_gap_below: Khe phía dưới model (mm)
    gcm_ms_model_thick: Dày model (mm)
    gcm_ms_model_plane_z: Mặt phẳng model Z (mm)
    gcm_ms_set_stub: Đặt…
    gcm_ms_rapid_z: Khe Z nhanh phía trên vật liệu
    gcm_ms_clearance_z: An toàn (Z1) (mm)
    gcm_ms_plunge_z: Hạ dao (Z2) (mm)
    gcm_ms_home_start: Vị trí home / bắt đầu
    gcm_ms_home_z_gap: Khe Z trên vật liệu (mm)
    gcm_ms_gcode_out: Xuất G-code
    gcm_ms_fanuc_o: Số chương trình kiểu Fanuc (O0001)
    gcm_ms_tool_len: Bù chiều dài cụ (G43 H01)
    gcm_warn_title: Cảnh báo
    gcm_warn_orphan_p1: Có layer thao tác không thuộc lối cắt nào. Vẫn tạo G-code?
    gcm_result_title: Đã tạo G-code
    gcm_result_files: Tệp
    gcm_result_open_folder: Mở thư mục
    gcm_tp_tool_picker_title: Chọn cụ
    gcm_unsaved_title: Chưa lưu
    gcm_unsaved_body: Lưu cài đặt G-code (lối cắt, cụ, máy, layer) trước khi tiếp
      tục?
    gcm_unsaved_dont_save: Không lưu
    gcm_invalid_value_title: Giá trị không hợp lệ
    gcm_invalid_modal_ok: OK
    gcm_clear_all_tp_title: Xóa hết lối cắt
    gcm_clear_all_tp_body: Xóa toàn bộ lối cắt? Không hoàn tác.
    gcm_clear_all_confirm: Xóa hết
    gcm_aria_close: Đóng
    gcm_common_cancel: Hủy
    gcm_common_apply: Áp dụng
    gcm_common_continue: Tiếp tục
    gcm_type_profile_name: Profile
    gcm_type_pocket_name: Pocket
    gcm_type_drill_name: Khoan
    gcm_toolpath_copy_suffix: _ban
    gcm_toolpath_fallback_name: Toolpath
    gcm_sample_end_mill_6: Dao phay Ø6 mm
    gcm_sample_drill_2: Mũi khoan Ø2 mm
    gcm_start_pt_nw: Trái trên
    gcm_start_pt_n: Giữa trên
    gcm_start_pt_ne: Phải trên
    gcm_start_pt_w: Trái giữa
    gcm_start_pt_e: Phải giữa
    gcm_start_pt_sw: Trái dưới
    gcm_start_pt_s: Giữa dưới
    gcm_start_pt_se: Phải dưới
    gcm_val_name_empty: Nhập tên cho lối cắt.
    gcm_val_name_charset: Tên chỉ gồm chữ, số, khoảng trắng, dấu chấm, gạch dưới,
      gạch ngang.
    gcm_val_nonneg: Nhập số không âm hợp lệ.
    gcm_val_number: Nhập số hợp lệ.
    gcm_val_below_min: Giá trị nhỏ hơn tối thiểu.
    gcm_val_tool_num_used: Số cụ này đã dùng cho cụ khác.
    gcm_val_tool_name: Nhập tên cho cụ.
    gcm_list_tags_prefix: 'Tag:'
    gcm_list_no_name: Chưa tên
    gcm_list_tags_none: không
    gcm_row_delete_tp_title: Xóa lối cắt
    gcm_tp_row_title: Nhấn để chọn; nhấp đúp để chỉnh sửa
    gcm_tp_type_profile: Biên dạng
    gcm_tp_type_drill: Khoan
    gcm_tp_type_pocket: Hốc
    gcm_layers_empty: Chưa có layer — tải nesting trước
    gcm_tool_dup_warn: "⚠ T%s đã dùng cho cụ khác"
    gcm_tools_empty: Chưa có cụ — nhấn + Thêm
    gcm_tool_delete_title: Xóa cụ
    gcm_tool_num_label: Số cụ (T#)
    gcm_tool_name_label: Tên
    gcm_tool_type_label: Loại
    gcm_tool_type_end_mill: Dao phay
    gcm_tool_type_ball: Cầu
    gcm_tool_type_vbit: V-Bit
    gcm_tool_type_drill: Mũi khoan
    gcm_tool_notes_label: Ghi chú
    gcm_tool_section_geometry: Hình học
    gcm_tool_diameter: Đường kính Ø (mm)
    gcm_tool_pass_depth: Độ sâu lượt (mm)
    gcm_tool_stepover: Bước chạy (mm)
    gcm_tool_section_feeds: Lượng cấp & tốc độ
    gcm_tool_spindle_rpm: Spindle (RPM)
    gcm_tool_xy_feed: XY Feed (mm/ph)
    gcm_tool_plunge_feed: Hạ dao (mm/ph)
    gcm_tool_no_pick_msg: Chưa có cụ — thêm ở tab Cụ trước
    gcm_tool_pick_pass_suffix: " lượt"
    gcm_tags_none_hint: Chưa gán tag — dùng Chọn tag…
    gcm_error_import_not_array: Dữ liệu nhập phải là mảng lối cắt.
    gcm_status_imported: Đã nhập %s lối cắt từ %s.
    gcm_status_exported: Đã xuất lối cắt ra %s.
    gcm_status_post_saved: Đã lưu POST (%s ký tự). Đăng nhập thì đồng bộ lên tài khoản.
    gcm_error_select_output_first: Chọn thư mục xuất trước.
    gcm_error_load_nesting_first: Tải nesting từ model trước.
    gcm_progress_computing: Đang tính lối cắt…
    gcm_progress_emitting: Đang xuất G-code…
    gcm_progress_writing: Đang ghi tệp…
    gcm_status_review_warning: Xem cảnh báo trong hộp thoại.
    gcm_btn_loading: Đang tải…
    gcm_progress_reading_model: Đang đọc nesting từ model…
    gcm_error_prefix: 'Lỗi: '
    gcm_result_none_written: Không ghi tệp nào.
    gcm_alert_files_written: Đã ghi %s tệp.
    gcm_alert_none_generated: Không tạo được tệp.
    gcm_result_saved_to: Đã lưu %s tệp vào %s
    gcm_result_preview_stub: G-code đã lưu. Mở tệp trên đĩa để xem đầy đủ.
    gcm_result_truncated: |2-

      … (đã cắt)
    gcm_status_saved: Đã lưu
    gcm_nesting_refreshed: Đã làm mới nesting (%s tấm).
    gcm_nesting_none_warning: Không thấy tấm nesting. Xuất nesting từ model trước.
    gcm_btn_refresh_nesting: "↻ Làm mới nesting"
    gcm_btn_load_nesting: "⬇ Tải nesting từ model"
    gcm_preview_hint_none_plain: Chưa tải nesting
    gcm_unsaved_confirm: Lưu thay đổi cài đặt G-code trước khi tiếp tục?
    gcm_error_select_output_folder: Vui lòng chọn thư mục xuất.
    gcm_error_no_abf_nesting: Không tìm thấy __ABF_Nesting. Nhấn "Tải nesting từ model"
      sau khi chạy công cụ nesting.
    gcm_progress_reading_nesting_data: Đang đọc dữ liệu nesting…
    gcm_progress_generating_gcode: Đang tạo G-code…
    gcm_panel_import_post: Nhập tệp POST máy
    gcm_panel_export_toolpaths: Xuất JSON lối cắt
    gcm_val_no_name: chưa có tên
    gcm_val_cut_depth: độ sâu cắt phải > 0
    gcm_val_no_tags: chưa gán tag
    gcm_val_no_tool: chưa chọn cụ
    gcm_tpengine_no_ops: 'không có thao tác khớp tag: %s'
    gcm_tpengine_unsupported_type: 'loại lối cắt không hỗ trợ: %s'
    gcm_sheet_default_name: Tấm
    warehouse_js_confirm_remove: Xóa "%s" khỏi máy này?
    warehouse_js_remove_title: Xóa
