---
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
    toolbar_update_tooltip: Kiểm tra cập nhật plugin hoặc quay lại phiên bản cũ
    toolbar_update_status: Mở Cập nhật / Khôi phục
    menu_dumb_scale: Scale theo trục
    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
    toolbar_instance_rename_tooltip: Đổi tên instance — thư viện tên fuzzy, prefix/suffix, Clear ID
    toolbar_instance_rename_status: Click chọn đối tượng (Shift thêm), gõ để tìm tên, Tab áp — Esc thoát
    rename_status: Gõ để tìm tên đã lưu · ↑/↓ chọn · Tab áp tên · Enter dùng nguyên văn · Esc thoát
    rename_op_apply: Đổi tên instance
    rename_op_clear_id: Xoá ID đầu tên
    rename_find_in_model_title: Chọn trong model các tấm đang chọn trong list
    rename_isolate_title: Cô lập các tấm đang chọn trong list
    rename_list_search_placeholder: Lọc danh sách…
    rename_hud_results: "%d gợi ý"
    rename_hud_selected: "%d đối tượng đang chọn"
    rename_hud_clear_id: Clear ID
    rename_mode_rename: Đổi tên
    rename_mode_prefix: Prefix
    rename_mode_suffix: Suffix
    menu_color: Màu
    menu_plugin_title: GG Cabinet Tools
    menu_settings: Cài đặt
    menu_warehouse: Kho
    menu_gcode: Tạo G-code
    menu_update: Cập nhật
    menu_sign_out: Đăng xuất
    menu_hot_reload: Tải lại nóng
    ctx_remove_material: Xóa vật liệu
    ctx_remove_material_op: GG Cabinet Tools — Xóa 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_pro_days_left: "Còn %d ngày Pro"
    settings_pro_lifetime: Pro vĩnh viễn
    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...
    update_confirm_now: 'Cập nhật lên phiên bản %s? Bản cập nhật sẽ tải ở chế độ nền — được áp dụng vào lần khởi động SketchUp sau, hoặc bạn có thể khởi động lại ngay khi tải xong. Tiếp tục?'
    update_restart_prompt: 'Đã cập nhật lên v%s! Khởi động lại SketchUp ngay để dùng phiên bản mới?'
    update_restart_reminder: Vui lòng đóng và mở lại SketchUp để hoàn tất cập nhật.
    update_launcher_menu: 'GG Cabinet Tools: Cập nhật / Khôi phục'
    update_launcher_title: GG Cabinet Tools — Cập nhật
    update_launcher_current: 'Phiên bản hiện tại:'
    update_launcher_latest: 'Mới nhất:'
    update_launcher_revert_to: 'Khôi phục về:'
    update_launcher_download_latest: Tải bản cập nhật
    update_launcher_download_revert: Tải bản khôi phục
    update_launcher_apply_now: Cập nhật ngay
    update_launcher_confirm_switch: 'Chuyển sang phiên bản %s? Bản này sẽ được tải và cài đặt — bạn phải KHỞI ĐỘNG LẠI SketchUp sau đó để áp dụng.'
    update_launcher_downloading: Đang tải bản %s… vui lòng đợi.
    update_launcher_ready: 'Đã tải xong bản %s. Bạn có muốn cập nhật ngay?'
    update_launcher_failed: Tải thất bại — thử lại.
    update_launcher_no_version: Không có phiên bản phù hợp.
    update_launcher_ready_box: 'Đã tải xong bản %s. Mở lại menu để cập nhật.'
    update_launcher_download_failed: Tải bản cập nhật thất bại.
    update_launcher_nothing: Chưa có bản nào được tải.
    update_launcher_applied: Đã cài bản %s. Hãy KHỞI ĐỘNG LẠI SketchUp để áp dụng.
    update_launcher_apply_failed: Áp dụng bản cập nhật thất bại.
    update_launcher_locked_retry: Một số tệp đang được sử dụng nên bản cập nhật chưa hoàn tất. Hãy KHỞI ĐỘNG LẠI SketchUp rồi chạy cập nhật lại.
    update_launcher_version_mismatch: Gói tải về không khớp với phiên bản đã chọn. Chưa có gì thay đổi — vui lòng thử lại.
    update_launcher_open_failed: 'Không mở được cửa sổ cập nhật: %s'
    update_launcher_col_version: Phiên bản
    update_launcher_col_changelog: Thay đổi
    update_launcher_col_created_at: Ngày tạo
    update_launcher_current_badge: Hiện tại
    update_launcher_download_btn: Tải
    update_launcher_switch_btn: Chuyển sang
    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
    trial_notice_title: Bạn đang dùng thử Pro
    trial_notice_body: Trải nghiệm đầy đủ tính năng Pro trong thời gian dùng thử miễn phí.
    trial_days_left: "Còn %d ngày dùng thử Pro"
    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.
    nesting_find_no_board: Hãy chọn board gốc (đã có board-index) trước khi tìm part.
    nesting_find_no_root: Không tìm thấy nesting (__ABF_Nesting) trong model.
    nesting_find_none: Không tìm thấy part nesting nào cho board đã chọn.
    nesting_find_done: Đã chọn %d part nesting (top + bottom).
    menu_component_stats: Thống kê cấu kiện
    component_stats_saved: Đã lưu thống kê vào model.
    component_stats_export: Xuất thống kê ra Excel — chọn nơi lưu
    component_stats_exported: 'Đã xuất Excel: %s'
    component_stats_select_object: Hãy chọn đối tượng trong model trước khi tạo đối tượng thống kê.
    component_stats_regen: Tạo lại thống kê mới theo nesting hiện tại? (Chọn No để giữ thống kê đã lưu)
    component_stats_save_on_close: Bạn có muốn lưu thống kê vào model trước khi đóng không?
    component_stats_refresh_title: Cập nhật lại thống kê theo nesting hiện tại
    component_stats_lock_title: Khoá thống kê
    component_stats_unlock_title: Mở khoá (nhập mật khẩu)
    component_stats_unlock_prompt: Nhập mật khẩu tài khoản để mở khoá
    component_stats_locked_badge: Đã khoá
    component_stats_locked_msg: Thống kê đang bị khoá. Mở khoá trước khi lưu/cập nhật.
    component_stats_lock_needs_save: Phải lưu thống kê vào model trước khi khoá.
    component_stats_unlock_bad_pw: Sai mật khẩu tài khoản.
    component_stats_create_op: Tạo đối tượng thống kê
    component_stats_create_error: 'Tạo đối tượng thống kê lỗi: %s'
    component_stats_export_error: 'Xuất Excel lỗi: %s'
    component_stats_default_filename: thong_ke
    component_stats_missing_html: Thiếu component_stats/index.html
    component_stats_tab_accessories: Phụ kiện
    component_stats_tab_parts: Cấu kiện
    component_stats_create_stat: Tạo đối tượng thống kê
    component_stats_save_model: Lưu vào model
    component_stats_export_btn: Xuất ra Excel
    component_stats_stat_name_label: Tên đối tượng
    component_stats_stat_name_placeholder: Tên đối tượng
    component_stats_stat_mode_label: Kiểu thống kê
    component_stats_mode_count: Theo số lượng
    component_stats_mode_length: Theo chiều dài
    component_stats_stat_unit_label: Đơn vị tính
    component_stats_unit_placeholder: cái / m
    component_stats_stat_price_label: Đơn giá
    component_stats_stat_coef_label: Hệ số
    component_stats_col_stt: STT
    component_stats_col_type: Loại
    component_stats_col_desc: Mô tả chi tiết
    component_stats_col_qty: Số lượng
    component_stats_col_unit: Đơn vị
    component_stats_col_price: Đơn giá
    component_stats_col_coef: Hệ số
    component_stats_col_amount: Thành tiền
    component_stats_col_total: Tổng
    component_stats_remove_row: Xoá dòng
    component_stats_add_row: Thêm dòng
    component_stats_grand_total: TỔNG CHI PHÍ
    component_stats_group_accessories: Phụ kiện liên kết
    component_stats_group_stats: Đối tượng thống kê
    component_stats_group_edge_band: Chỉ dán cạnh
    component_stats_group_boards: Tấm
    component_stats_group_other: Chi phí khác
    component_stats_by_length: Theo chiều dài
    component_stats_by_count: Theo số lượng
    component_stats_unit_piece: cái
    component_stats_unit_sheet: Tấm
    component_stats_unit_meter: m
    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) — giữ Shift để đổi lồi/lõm — 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_outeroff: Offset Xương Ngoài (±)
    unfold_hud_inneroff: Offset Xương Trong (±)
    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
    unfold_settings_reset: Khôi phục mặc định
    unfold_settings_save: Lưu cài đặt
    settings_tab_user_info: Tài khoản
    settings_tab_versions: Phiên bản
    settings_tab_nesting: Nesting
    settings_tab_toolbar: Thanh công cụ
    toolbar_settings_title: Icon thanh công cụ
    toolbar_settings_subtitle: Kéo để sắp xếp. Bỏ chọn để ẩn icon. Thay đổi áp dụng
      sau khi khởi động lại SketchUp.
    toolbar_visible_label: Hiện
    toolbar_save_btn: Lưu
    toolbar_reset_btn: Khôi phục mặc định
    toolbar_saved: Đã lưu — khởi động lại SketchUp để áp dụng.
    toolbar_reset_done: Đã khôi phục mặc định — khởi động lại SketchUp để áp dụng.
    toolbar_copy_name: Copy tên (để gán phím nóng trong Shortcuts của SketchUp)
    toolbar_copy_help: "Đã copy \"%{name}\".\n\nĐể gán phím nóng: mở Window › Preferences\
      \ › Shortcuts, dán (Ctrl+V) vào ô Filter, chọn tool rồi bấm phím bạn muốn."
    toolbar_shortcut_set: Gán phím tắt
    toolbar_shortcut_press: Bấm tổ hợp phím…
    toolbar_shortcut_menu_root: Extensions › GG Cabinet Tools
    toolbar_shortcut_howto: Mở Window › Preferences › Shortcuts trong SketchUp, tìm
      mục menu bên dưới và gán phím. Sau đó bấm tổ hợp phím tại đây để hiển thị lên
      nút.
    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_allow_rotate_label: Cho phép xoay 90° để vừa khít
    nesting_allow_rotate_hint: Khi một tấm không vừa ở góc hiện tại, thử xoay 90°
      khi xếp. Giữ hướng gốc nếu tấm đã vừa.
    nesting_origin_label: Hướng nesting
    nesting_origin_hint: Vị trí bắt đầu xếp trên mỗi tấm — từ góc x0,y0 (mặc định)
      hoặc từ góc xmax,ymax.
    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).
    # ABF Extra Label — lý do vì sao một khối không gắn được nhãn (hiện khi không
    # có khối nào dạng tấm sau khi explode).
    abf_label_none_labelable: "Không gắn được nhãn cho khối nào — lý do từng đối tượng:"
    abf_label_reject_too_few_faces: có ít hơn 2 mặt phẳng — không phải một khối đặc.
    abf_label_reject_not_slab_pair: hai mặt lớn nhất không phải cặp song song cùng
      diện tích (không phải dạng tấm phẳng).
    abf_label_reject_not_congruent: hai mặt lớn nhất khác biên dạng (tấm vát/hình
      thang) — mặt trên và mặt dưới phải cùng hình dạng.
    abf_label_reject_no_side_faces: không có mặt cạnh nào nối với mặt trên/dưới.
    abf_label_reject_non_rect_sides: "có %s mặt cạnh không phải hình chữ nhật (thường
      do biên/lỗ cong bị gộp vách); mỗi mặt cạnh của tấm phải là chữ nhật đơn."
    abf_label_reject_non_rect_sides_loc: "ví dụ gần (%s, %s) mm."
    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_CrossHalvingJoin)
    khau_settings_subtitle: Tag CNC ABF_CrossHalvingJoin, 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: Khấu chữ thập
    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_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: Tạo 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: Cắt tấm
    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: Hàn tấm
    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_skipped_complex: Đã bỏ qua tấm có biên dạng quá phức tạp
    intersect_hud_width_offset: Rộng+
    intersect_hud_extend: Kéo dãn
    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_preset_add: Thêm preset
    intersect_preset_cancel: Hủy
    intersect_form_new: Tạo preset mới
    intersect_form_edit: Sửa preset
    intersect_reset: Khôi phục mặc định
    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_tab_cam: Cam lock
    cam_tab_screw: Vít
    cam_tab_screw_cap: Vít + nắp
    cam_hud_name: Tên trên HUD
    cam_hud_visible: Hiện trên HUD
    cam_screw_face: Mặt bắt vít
    cam_face_front: Trước
    cam_face_back: Sau
    cam_section_layout: Bố trí slot
    cam_slots: Số slot
    cam_edge_offset: Slot cách mép (mm)
    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_length: Độ dài thân vít (mm)
    cam_screw_offset: Thân vít cách mép (mm)
    cam_screw_layer: Layer vít
    cam_cap_layer: Layer nắp
    cam_save: Lưu
    cam_reset: Khôi phục mặc định
    cam_lock_hud_edit: Sửa
    cam_lock_hud_sel_all: Chọn tất cả
    cam_lock_hud_del: Xoá
    cam_lock_hud_del_all: Xoá tất cả
    cam_lock_hud_flip_leg_all: Đảo chân tất cả
    cam_lock_hud_eraser: Cục tẩy
    cam_lock_hud_settings: Cài đặt
    cam_lock_hud_slots: Slot
    cam_lock_hud_offset: Offset
    cam_lock_hud_flip_pin: Đảo chân
    cam_lock_hud_edit_on: BẬT
    cam_lock_hud_edit_off: tắt
    cam_lock_hud_pin_back: Sau
    cam_lock_hud_pin_front: Trước
    cam_saved: Đã lưu
    hud_on: BẬT
    hud_off: tắt
    tenon_hud_slots: Mộng
    tenon_hud_length: Dài
    tenon_hud_depth: Sâu
    tenon_hud_offset: Offset
    tenon_hud_tag: Tag
    tenon_hud_extend: Kéo dãn
    tenon_hud_width_plus: Rộng+
    tenon_hud_bit_dia: Dao ⌀
    tenon_hud_moc_cau: Móc câu
    tenon_hud_moc_cau_offset: Dịch móc
    tenon_hud_moc_cau_tag: Tên móc
    tenon_hud_ngam_protrude: Dịch ra
    tenon_hud_ngam_tag: Tên ngàm
    tenon_hud_ngam_pocket: Tên khoét
    tenon_hud_ngam_hook: Tên móc ngàm
    tenon_hud_joint_square: Mộng vuông
    tenon_hud_joint_dogbone: Mộng xương chó
    tenon_hud_joint_moccau: Mộng móc câu
    tenon_hud_joint_ngam: Mộng ngàm
    tenon_hud_mortise: Mộng âm
    tenon_hud_awaiting_pick: Nhấp đúp một tấm để chọn
    tenon_hud_prompt_title: Tenon Helper
    board_trim_hud_offset: Offset
    board_trim_hud_settings: Preset
    board_trim_hud_prompt_mm: Offset (mm)
    board_trim_hud_prompt_title: Trim s-face — Offset
    board_trim_status: "Chuột phải / click để trim · bấm để đổi 1 cạnh / tất cả · gõ số = offset · bánh răng = preset"
    board_trim_mode_label: Mặt
    board_trim_mode_all: Tất cả mặt
    board_trim_mode_single: 1 mặt
    board_trim_settings_title: Preset trim
    board_trim_settings_heading: Preset trim s-face
    board_trim_settings_save: Lưu
    board_trim_settings_reset: Mặc định
    board_trim_settings_add: Thêm preset
    board_trim_settings_col_name: Tên
    board_trim_settings_col_offset: Offset (mm)
    board_trim_settings_col_mode: Số mặt
    intersect_hud_mode: Dạng
    intersect_hud_line: Line
    intersect_hud_area: Area
    cnc_relief_hud_outer: OUTER
    cnc_relief_hud_inner: INNER
    cnc_relief_hud_preview: Preview
    cnc_relief_hud_circle: Circle
    cnc_relief_hud_tag: Tag
    cnc_relief_hud_notice_on: Thông báo BẬT
    cnc_relief_hud_notice_off: Thông báo tắt
    cross_cut_hud_width: Width
    cross_cut_hud_anchor_near: Gần (mm)
    cross_cut_hud_anchor_far: Xa (mm)
    cross_cut_hud_anchor_center: Giữa (mm)
    cross_cut_hud_prompt_title: Cắt ngang
    dumb_scale_hud_width: Width
    dumb_scale_hud_depth: Depth
    dumb_scale_hud_height: Height
    marking_hud_line: Line
    marking_hud_area: Area
    marking_hud_dim: Dim
    marking_hud_save_profile_hint: "Lưu cạnh/face đang chọn thành preset biên dạng tùy chỉnh."
    marking_hud_settings_hint: "Mở cài đặt Marking (offset, layer, preset)."
    marking_hud_dim_hint: "Bật/tắt nhãn kích thước trên preview marking."
    marking_hud_anchor_hint: "Đặt số điểm neo (/N) dọc theo cạnh."
    cam_lock_hud_mode_cam: Cam
    cam_lock_hud_mode_screw: Vít
    cam_lock_hud_mode_screw_cap: Vít+nắp
    cam_lock_hud_edit_toggle_hint: "Bật/tắt chế độ sửa liên kết cam-lock."
    cam_lock_hud_settings_hint: "Mở cài đặt Cam Lock (tên, hiển thị, mặc định)."
    cam_lock_hud_slots_hint: "Số lượng cam-lock dọc theo cạnh đã chọn."
    cam_lock_hud_offset_hint: "Offset mép khi đặt cam-lock (mm)."
    cam_lock_hud_flip_pin_hint: "Đảo hướng chân vít (trước/sau)."
    cam_lock_hud_del_all_hint: "Xoá mọi liên kết cam-lock trong model."
    cam_lock_hud_flip_leg_hint: "Đảo chân trên mọi liên kết."
    cam_lock_hud_eraser_hint: "Chế độ tẩy: click một liên kết để xoá."
    cam_lock_hud_mode_hint: "Chế độ đặt: %s"
    cam_lock_hud_awaiting_pick: Nhấp đúp vào tấm khóa cam để bắt đầu
    tenon_hud_slots_hint: "Số mộng dọc theo cạnh."
    tenon_hud_length_hint: "Chiều dài mộng dọc cạnh (mm). 0 = tự động."
    tenon_hud_depth_hint: "Độ sâu đẩy mộng (mm)."
    tenon_hud_offset_hint: "Offset mép cho mảnh mộng (mm)."
    tenon_hud_tag_hint: "Tên layer/tag gán cho lỗ mộng."
    tenon_hud_extend_hint: "Kéo dài lỗ mộng thêm so với mộng (mm)."
    tenon_hud_width_plus_hint: "Nới rộng lỗ mộng thêm (mm)."
    tenon_hud_bit_dia_hint: "Đường kính dao (mm); bán kính khử xương chó bằng một nửa."
    tenon_hud_moc_cau_hint: "Chiều dài móc câu (mm): lỗ mộng lùi lại đúng đoạn này theo hướng móc câu."
    tenon_hud_moc_cau_offset_hint: "Dịch marker móc câu theo chiều thò (protrude) của mộng (mm)."
    tenon_hud_moc_cau_tag_hint: "Tên group của marker móc câu (mặc định ABF_mocCau)."
    tenon_hud_ngam_protrude_hint: "Dịch đường ABF_NGAM ra ngoài theo chiều protrude của tenon (mm, mặc định 3)."
    tenon_hud_ngam_tag_hint: "Tag/layer của đường ABF_NGAM trên tấm tenon và các cạnh marker (mặc định ABF_NGAM)."
    tenon_hud_ngam_pocket_hint: "Tên group/tag của đường khoét ngàm trên tấm mortise (mặc định ABF_KHOET_LO)."
    tenon_hud_ngam_hook_hint: "Tên group của đường móc ngàm trên tấm mortise (mặc định ABF_MOC_NGAM)."
    tenon_hud_joint_square_hint: "Mộng vuông: kéo dãn lỗ mộng để bù bán kính dao."
    tenon_hud_joint_dogbone_hint: "Mộng xương chó: khoét lẹm góc lỗ mộng thay vì kéo dãn."
    tenon_hud_joint_moccau_hint: "Mộng móc câu: đóng marker ABF_mocCau hướng về con trỏ và cho lỗ mộng lùi lại bằng chiều dài móc câu. Đánh nhiều mộng một lúc thì mọi móc câu quay cùng một hướng."
    tenon_hud_joint_ngam_hint: "Mộng ngàm: tạo tenon vuông rồi đóng đường ABF_NGAM lên tấm và đường khoét (2×tenon) + móc ngàm lên tấm mortise, đầu to quay về camera. Không cắt lỗ mộng."
    tenon_hud_mortise_hint: "Bật/tắt tạo lỗ mộng tự động."
    cnc_relief_hud_loop_hint: "Chế độ vòng relief: %s"
    cnc_relief_hud_notice_hint: "Bật/tắt thông báo trên màn hình khi đặt vòng relief."
    cnc_relief_hud_preview_hint: "Đường kính vòng preview (mm)."
    cnc_relief_hud_circle_hint: "Đường kính vòng relief cuối (mm)."
    cnc_relief_hud_tag_hint: "Tên layer/tag cho vòng relief."
    edge_band_hud_gear_hint: "Mở cài đặt preset dán cạnh."
    edge_band_hud_noncontact_hint: "Đánh dấu mọi cạnh hở trên các tấm đã chọn."
    edge_band_hud_clear_hint: "Xoá đánh dấu dán cạnh trên các tấm đã chọn."
    edge_band_hud_all_hint: "Đánh dấu mọi cạnh bên trên các tấm đã chọn."
    board_trim_hud_settings_hint: "Mở preset / cài đặt Trim."
    board_trim_hud_offset_hint: "Khoảng trim từ mặt s-face (mm)."
    board_trim_hud_mode_hint: "Chọn trim 1 mặt hoặc tất cả mặt."
    board_trim_hud_trim_btn_hint: "Trim selection với offset đang chọn."
    cross_cut_hud_width_hint: "Độ rộng / kerf đường cắt (mm)."
    khau_hud_tag_hint: "Tên group kết quả khớp chữ thập."
    khau_hud_offset_hint: "Offset rãnh từ cạnh (mm)."
    khau_hud_stretch_hint: "Kéo dài thêm hai đầu rãnh (mm)."
    intersect_hud_settings_hint: "Mở cài đặt Intersect Mark."
    intersect_hud_width_offset_hint: "Nới rộng dấu giao thêm (mm)."
    intersect_hud_extend_hint: "Kéo dài dấu vượt quá giao (mm)."
    intersect_hud_mark_all_hint: "Đánh dấu mọi giao trong selection hiện tại."
    deep_push_hud_xray_hint: "Bật/tắt X-ray tự động khi Deep Push đang chạy."
    unfold_hud_mode_hint: "Chế độ unfold: %s"
    unfold_hud_settings_hint: "Mở cài đặt Unfold (offset, tag, kích thước xương)."
    unfold_hud_outer_hint: "Bật/tắt đường xương ngoài."
    unfold_hud_inner_hint: "Bật/tắt đường xương trong."
    unfold_hud_mid_hint: "Bật/tắt đường xương giữa."
    unfold_hud_union_hint: "Bật/tắt hợp vùng xương."
    dumb_scale_hud_width_hint: "Đặt chiều rộng chung (mm world) cho selection."
    dumb_scale_hud_depth_hint: "Đặt chiều sâu chung (mm world) cho selection."
    dumb_scale_hud_height_hint: "Đặt chiều cao chung (mm world) cho selection."
    edge_band_hud_no_boards: Không tìm thấy tấm nào trong model
    edge_band_dialog_title: Preset dán cạnh
    edge_band_dialog_heading: Preset chỉ dán cạnh
    edge_band_btn_save: Lưu
    edge_band_btn_defaults: Mặc định
    edge_band_btn_add: "+ Thêm preset"
    edge_band_col_name: Tên
    edge_band_col_thickness: Dày (mm)
    edge_band_col_coef: Hệ số
    edge_band_col_coef_title: Hệ số nhân số mét khi thống kê chỉ dán cạnh
    edge_band_col_color: Màu
    edge_band_preset_default_name: Cạnh
    edge_band_op_unmark: "Dán cạnh: bỏ đánh dấu"
    edge_band_op_mark: "Dán cạnh: đánh dấu"
    edge_band_op_bulk: "Dán cạnh: %s"
    edge_band_op_noncontact: cạnh hở
    edge_band_op_clear: xoá hết
    edge_band_op_all: tất cả cạnh
    deep_push_hud_xray_on: X-ray
    deep_push_hud_xray_off: X-ray Off
    toolbar_explode_to_groups_tooltip: Explode dynamic component và chuyển tất cả component trong selection thành group
    toolbar_explode_to_groups_status: "Xác nhận tùy chọn rồi explode/chuyển — abf_autocombine gộp group con bằng outershell, abf_layer gán layer"
    toolbar_nesting_editor_tooltip: Nesting Editor
    toolbar_nesting_editor_status: Di chuyển các tấm đã nest trên sheet trên; tấm
      dưới đi theo dạng đối xứng.
    toolbar_rotate_label_tooltip: Xoay nhãn
    toolbar_rotate_label_status: Xoay nhãn 90° trên (các) tấm đã chọn rồi vẽ lại.
    toolbar_flip_label_tooltip: Đảo nhãn mặt trước/sau
    toolbar_flip_label_status: Chuyển nhãn sang mặt đối diện của (các) tấm đã chọn
      rồi vẽ lại.
    toolbar_abf_extra_label_tooltip: ABF Extra Label
    toolbar_abf_extra_label_status: Đóng mũi tên hướng gia công + số thứ tự lên
      mặt f_face của các tấm đã chọn.
    toolbar_abf_extra_nesting_tooltip: ABF Extra Nesting
    toolbar_abf_extra_nesting_status: Thêm các tấm đã chọn vào __ABF_Nesting
      (tự xếp + tràn sang sheet mới).
    toolbar_nesting_dxf_tooltip: Xuất Nesting DXF
    toolbar_nesting_dxf_status: Xuất mỗi sheet nesting (trên và dưới) ra một file
      DXF riêng.
    toolbar_label_print_tooltip: In nhãn
    toolbar_label_print_status: In nhãn cho các tấm trong __ABF_Nesting.
    explode_confirm_title: Explode → Groups
    explode_confirm_hidden: Xóa đối tượng ẩn
    explode_confirm_attrs: Xóa thuộc tính dynamic
    explode_confirm_clear_id: Xóa prefix ID
    explode_confirm_ok: OK
    explode_confirm_cancel: Hủy
    explode_yes: "Có"
    explode_no: Không
    explode_op: Explode → Groups
    explode_select_first: Hãy chọn một hoặc nhiều group/component trước.
    clone_board_hud_thickness: thickness
    bend_hud_radius: "R=%smm"
    nesting_editor_hud_block: Block
    nesting_editor_hud_pack_hint: "Quét chọn các tấm sau đó nhấn nút pack thì các tấm vừa chọn sẽ được ưu tiên nest vào sheet trước"
    nesting_editor_hud_infill_hint: "Chèn các part đã chọn vào các slot trống trên các sheet cùng vật liệu (sheet 1 → cuối); chỉ tạo sheet mới khi không còn chỗ."
    nesting_editor_infill_select_first: "Hãy chọn part trước khi chèn vào slot trống."
    nesting_editor_hud_cutsettings_hint: "Mở cài đặt Nesting Editor / thứ tự cắt."
    nesting_editor_hud_cutmode_hint: "Bật/tắt chế độ layer thứ tự cắt (gán thứ tự gia công lên part)."
    nesting_editor_hud_outline_hint: "Bật/tắt chế độ đường cắt ngoài (outline lệch theo cạnh part)."
    nesting_editor_hud_block_hint: "Bật/tắt chặn chồng khi kéo part trên sheet."
    nesting_editor_hud_gap_hint: "Sửa khoảng cách va chạm giữa các part (mm)."
    nesting_editor_hud_border_hint: "Sửa khoảng cách giữa part và biên sheet (mm)."
    nesting_editor_hud_sheet_back_hint: "Đưa sheet đang active lên trước trong thứ tự sheet."
    nesting_editor_hud_sheet_fwd_hint: "Đưa sheet đang active xuống sau trong thứ tự sheet."
    nesting_editor_hud_flip_hint: "Lật tem sang mặt kia trên các part đã chọn."
    nesting_editor_hud_find_hint: "Tìm và chọn board 3D nguồn của các part đã chọn."
    nesting_editor_hud_rotate_label_hint: "Xoay tem 90° trên các part đã chọn."
    nesting_editor_hud_draw_line_hint: "Vẽ thêm đường thẳng trên sheet."
    nesting_editor_hud_draw_rect_hint: "Vẽ thêm hình chữ nhật trên sheet."
    nesting_editor_hud_draw_circle_hint: "Vẽ thêm hình tròn trên sheet."
    nesting_editor_hud_draw_erase_hint: "Xóa các hình phụ đã vẽ trên sheet."
    nesting_editor_hud_edit_hint: "Sửa cạnh cắt — chọn cạnh rồi kéo hoặc gõ khoảng cách."
    nesting_editor_hud_intem_hint: "In tem cho các part đã chọn."
    nesting_editor_hud_cut_zigzag_hint: "Vẽ zigzag qua các part để gán layer thứ tự cắt."
    nesting_editor_hud_cut_auto_hint: "Tự gán layer thứ tự cắt cho các part trên sheet."
    nesting_editor_hud_cut_reset_all_hint: "Xóa / reset toàn bộ tag thứ tự cắt trên mọi sheet."
    nesting_editor_hud_outline_pick_hint: "Chọn cạnh để tạo đường cắt ngoài."
    nesting_editor_hud_outline_zigzag_hint: "Zigzag để đánh số đường cắt ngoài (R_On)."
    nesting_editor_hud_outline_create_hint: "Tạo đường cắt ngoài từ các cạnh đang chọn."
    nesting_editor_hud_outline_reset_all_hint: "Reset toàn bộ tag đường cắt ngoài."
    nesting_editor_hud_outline_erase_hint: "Xóa đường cắt ngoài (cục tẩy)."
    nesting_editor_hud_outline_delete_all_hint: "Xóa mọi đường cắt ngoài trên tất cả sheet."
    nesting_editor_hud_outline_offset_hint: "Sửa offset outline so với tâm cạnh (mm)."
    nesting_editor_hud_outline_extend_hint: "Sửa độ kéo dài hai đầu outline (mm)."
    nesting_editor_intem_select_first: "Hãy chọn part trước khi in tem."
    nesting_editor_edit_prompt: "Sửa cạnh: quét chọn hoặc shift-click các cạnh cắt, rồi kéo hoặc gõ khoảng cách (mm) để dịch theo X/Y"
    nesting_editor_hud_gap_mm: "Gap: %smm"
    nesting_editor_hud_border_mm: "Border: %smm"
    nesting_editor_hud_outline_offset_mm: "Offset: %smm"
    nesting_editor_hud_outline_extend_mm: "Extend: %smm"
    nesting_editor_hud_opacity: "Opacity: %s%%"
    nesting_editor_hud_two_sided_color: Màu 2 mặt  (click)
    menu_tenon_settings: Cài đặt mộng
    toolbar_tenon_settings_tooltip: Chiều dài, độ sâu, số slot, offset mép
    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
    layer_assign_op: Gán Tag
    layer_assign_delete_op: Xoá Tag
    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_deep_push: Push từ bên ngoài đối tượng
    toolbar_deep_push_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_deep_push_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
    board_trim_label: "Trim s-face:"
    board_trim_apply: Trim selection
    board_trim_some_failed: "%d đối tượng đã chọn không trim được (không phải board) — đã highlight."
    toolbar_board_trim_tooltip: Trim các mặt cạnh (s-face) của board vào trong N mm (mặc
      định 1 mm, đổi bằng ± trên HUD / VCB) — click board, Shift+click 1 s-face, hoặc Trim selection
    toolbar_board_trim_status: Click board để trim hết s-face · Shift+click 1 s-face · nút
      Trim trim mọi board đã chọn · VCB/± đổi mm
    menu_move_vertices: Dịch vertex
    menu_align: Căn đối tượng theo face hoặc edge
    menu_mirror: Đối xứng
    menu_rotate: Xoay đối tượng
    menu_board_trim: Trim cạnh biên tấm
    menu_nesting_editor: Trình xếp tấm
    menu_find_nest_parts: Tìm tấm trong nesting sheet
    toolbar_find_nest_parts_tooltip: Chọn các chi tiết nesting trong model khớp sheet hiện tại
    toolbar_find_nest_parts_status: Tìm và chọn chi tiết thuộc sheet nesting đang mở
    toolbar_component_stats_tooltip: Mở hộp thoại thống kê / inventory cấu kiện
    toolbar_component_stats_status: Thống kê chi tiết và phụ kiện từ nesting hiện tại
    menu_explode_to_groups: Explode DC → Groups
    menu_rotate_label: Xoay nhãn
    menu_flip_label: Lật nhãn
    menu_abf_extra_label: Nhãn ABF bổ sung
    menu_abf_extra_nesting: Nesting ABF bổ sung
    menu_nesting_dxf: Xuất Nesting DXF
    menu_label_print: In nhãn
    menu_instance_rename: Đổi tên instance
    menu_ctx_remove_material: Xóa màu đối tượng trên tất cả face và group
    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)
    align_snap_origin: Gốc tọa độ (0,0,0)
    align_snap_axis: Trên trục %s
    toolbar_mirror_tooltip: Mirror đối tượng đã chọn qua mặt phẳng của một face hoặc
      qua một điểm (vertex / trung điểm cạnh) — Ctrl bật/tắt giữ lại bản mirror
    toolbar_mirror_status: Rê tới một face (mirror qua mặt phẳng) hoặc một điểm/trung
      điểm (đối xứng tâm); bbox nét đứt là kết quả, hình vuông đánh dấu vị trí mirror.
      Ctrl bật/tắt nhân bản, click để mirror.
    toolbar_rotate_tooltip: Xoay đối tượng đã chọn 90° — hiện preview cho từng trục
      (đỏ X, xanh lá Y, xanh dương Z); click vào preview để xoay, hoặc dùng phím mũi tên
    toolbar_rotate_status: Click vào ghost màu để xoay đối tượng 90° quanh trục đó
      (đỏ=X, lá=Y, dương=Z); mũi tên ↑/↓ xoay quanh Z, ← quanh Y, → quanh X.
    menu_precise_scale: Scale chính xác
    toolbar_precise_scale_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_precise_scale_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
    precise_scale_operation: Precise Scale
    precise_scale_select_objects: Hãy chọn ít nhất một group hoặc component trước.
    precise_scale_select_groups: Hãy chọn một group hoặc component để trượt đỉnh.
    precise_scale_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ữ
    precise_scale_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/đường gióng/trục world — nhấp để xác nhận
    marking_hud_offset: Lùi đầu cạnh (mm)
    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_limits_section: Giới hạn preview
    marking_settings_limits_hint: Bỏ qua preview/đánh dấu cho biên quá phức tạp để tránh treo SketchUp.
    marking_settings_max_segments: Tối đa số đoạn (segments)
    marking_settings_max_sharp_corners: Tối đa góc nhọn
    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_rotate_ccw: Xoay marker sang trái (90°)
    marking_rotate_cw: Xoay marker sang phải (90°)
    marking_delete_preset: Xóa
    marking_reset_offline_warning: Không lấy được preset mới nhất từ server — đã khôi phục theo bản lưu cục bộ. Kiểm tra kết nối / đăng nhập rồi thử lại.
    marking_illustration: Ảnh minh họa
    marking_mark_back_face: Đánh mặt sau
    marking_swap_axes: Đảo rộng / cao (xoay 90°)
    marking_rotate_ccw: Xoay marker sang trái (90°)
    marking_rotate_cw: Xoay marker sang phải (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_CrossHalvingJoin) 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_CrossHalvingJoin)
    khau_operation: GG Cabinet Tools — Cross halving join (ABF_CrossHalvingJoin)
    khau_error: |-
      Lỗi GG Cabinet Tools cross halving join (ABF_CrossHalvingJoin):
      %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_CrossHalvingJoin).
    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_CrossHalvingJoin) 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_tp_fluting_title: Fluting (rãnh vát)
    gcm_aria_add_fluting: Thêm lối fluting
    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 JSON
    gcm_aria_import_tp: Nhập lối cắt JSON
    gcm_import_aspire_tp_title: Nhập mẫu Aspire
    gcm_aria_import_aspire_tp: Nhập mẫu toolpath Aspire
    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_tp_drag_reorder_title: Kéo để sắp xếp lại
    gcm_header_layers_pane: Layer
    gcm_reset_layers: Đặt lại
    gcm_header_tool_library: Thư viện cụ
    gcm_tool_save_title: Lưu thư viện cụ
    gcm_aria_save_tool: Lưu thay đổi 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_preview3d_btn: "3D"
    gcm_preview3d_title: Xem trước 3D đường chạy dao của tấm đang chọn (đúng G-code sẽ xuất)
    gcm_preview3d_no_sheet: Hãy tải nesting và chọn tấm trước
    gcm_preview3d_carve_btn: Phôi đã cắt
    gcm_preview3d_res: Độ mịn
    gcm_preview3d_res_hint: Độ phân giải 3D — kéo sang phải để thấy chi tiết cắt
      mịn hơn (tốn RAM hơn, carve chậm hơn)
    gcm_preview2d_btn: "2D"
    gcm_preview2d_title: Mô phỏng 2D đường chạy dao của tấm đang chọn nhìn từ trên (đúng G-code sẽ xuất)
    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ông 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_label_passes: Số lần cắt
    gcm_edit_passes_btn: Sửa…
    gcm_passes_title: Thiết lập độ sâu từng lần cắt
    gcm_passes_add: Thêm lần
    gcm_passes_apply: Áp dụng
    gcm_passes_pass: Lần
    gcm_ph_mm_zero: 0,0 mm
    gcm_label_tool: Cụ
    gcm_no_tool_selected: Chưa chọn công 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_sharpen_corners: Làm sắc góc (V-Bit)
    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_raster_angle: Góc Raster
    gcm_label_degrees: độ
    gcm_label_flute_type: Kiểu rãnh
    gcm_flute_full: Vát suốt chiều dài
    gcm_flute_start: Vát ở đầu
    gcm_flute_start_end: Vát ở đầu và cuối
    gcm_label_ramp_length: Chiều dài vát
    gcm_label_ramp_percent: Vát %
    gcm_label_ramp_type: Kiểu vát
    gcm_ramp_linear: Thẳng
    gcm_ramp_smooth: Cong mượt
    gcm_label_profile_pass: Đường biên
    gcm_profile_pass_none: Không
    gcm_profile_pass_first: Trước
    gcm_profile_pass_last: Sau
    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_error_title: Lỗi
    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_warn_bounds_p1: Kiểm tra lại các giới hạn G-code trước khi tiếp tục. Hãy
      xem lại cài đặt máy và lối cắt.
    gcm_warn_pocket_open_p1: Lối cắt pocket có vector hở. Pocket cần vòng kín —
      hãy kiểm tra lại và chỉ tiếp tục nếu bạn chủ ý.
    gcm_warn_pocket_open_item: Lối cắt "%s" · tấm "%s" · tag %s
    gcm_warn_safe_z_low: An toàn (Z1) là %s mm (tối thiểu khuyến nghị %s mm).
    gcm_warn_home_z_low: Home Z (%s mm) nhỏ hơn hoặc bằng độ dày vật liệu (%s mm).
    gcm_warn_xy_out: Tấm "%s" %s=%s mm nằm ngoài khoảng cho phép [%s … %s] mm.
    gcm_warn_z_below_bed: Tấm "%s" Z=%s mm thấp hơn giới hạn mặt bàn (%s mm).
    gcm_warn_z_above_bed: Tấm "%s" Z=%s mm cao hơn giới hạn rút dao so với mặt bàn
      (%s mm).
    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_type_fluting_name: Fluting
    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_row_duplicate_tp_title: Nhân bản lối cắt
    gcm_tp_row_title: Nhấn để chọn; nhấp đúp để chỉnh sửa
    gcm_tp_type_profile: Đường Cắt
    gcm_tp_type_drill: Khoan
    gcm_tp_type_pocket: Hạ Nền
    gcm_tp_type_fluting: Cắt Vát
    gcm_layers_empty: Chưa có layer — tải nesting trước
    gcm_layers_all: Tất cả layer
    gcm_layer_show: Hiện layer
    gcm_layer_hide: Ẩn layer
    gcm_layers_show_all: Hiện tất cả layer
    gcm_layers_hide_all: Ẩn tất cả layer
    gcm_preview_layers_btn: Layer
    gcm_preview_layers_title: Layer trên tấm đang chọn
    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ông cụ
    gcm_tool_num_label: Số công 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: Mũi Hình cầu
    gcm_tool_type_vbit: V-Bit
    gcm_tool_type_drill: Mũi khoan
    gcm_tool_type_custom: Tùy chỉnh
    gcm_tool_notes_label: Ghi chú
    gcm_tool_section_geometry: Hình học
    gcm_tool_section_profile: Biên dạng dao
    gcm_tool_capture_profile: Lấy biên dạng từ component
    gcm_tool_recapture_profile: Vẽ lại biên dạng từ component
    gcm_tool_clear_profile: Xoá biên dạng
    gcm_tool_capture_status: Click vào component biên dạng 2D trong SketchUp…
    gcm_tool_diameter: Đường kính Ø (mm)
    gcm_tool_pass_depth: Độ sâu lượt (mm)
    gcm_tool_tip_angle: Góc mũi dao V (°)
    gcm_tool_stepover: Bước chạy (mm)
    gcm_tool_section_feeds: Lượng cấp & tốc độ
    gcm_close_save_confirm: Lưu thay đổi cài đặt G-code trước khi đóng?
    gcm_err_no_toolpaths_export: Không có lối cắt để xuất.
    gcm_filter_post_txt_pp: "POST (*.txt, *.pp)"
    gcm_filter_vectric_pp: "Vectric (*.pp)"
    gcm_filter_text_txt: "Text (*.txt)"
    gcm_filter_all_files: "Tất cả tệp (*.*)"
    gcm_filter_json: "JSON (*.json)"
    gcm_filter_aspire_template: "Aspire Template (*.ToolpathTemplate)"
    gcm_aspire_btn_label: Aspire
    gcm_label_vcarve: Xử lý góc (V-carve)
    gcm_sharp_external_corners: Góc ngoài sắc
    gcm_sharp_internal_corners: Góc trong sắc (3D)
    gcm_allowance_cut_out_tool: Allowance cho dao cắt rời
    gcm_corner_allowance_title: "Mặc định (như Aspire) = chiều sâu × tan(nửa góc V-bit). Có thể sửa. Để trống để dùng lại giá trị mặc định. Nhập số này vào ô Allowance Offset khi tạo toolpath cắt rời bằng dao end mill."
    gcm_info_tool: Dao
    gcm_info_layer: Layer
    gcm_info_feed: Feed
    gcm_info_z: Z
    gcm_info_dir: Hướng
    gcm_preview3d_view_iso: "3D"
    gcm_preview3d_view_top: Trên
    gcm_preview3d_view_front: Trước
    gcm_preview3d_view_side: Bên
    gcm_preview3d_view_title: "Góc nhìn %s"
    gcm_preview2d_title_prefix: "2D · "
    gcm_preview2d_panel_gcode: G-code
    gcm_preview2d_panel_info: Thông tin
    gcm_preview2d_copy_title: Sao chép G-code vào clipboard
    gcm_preview2d_copied: Đã sao chép
    gcm_layer_color_title: "Nhấp để đổi màu %s"
    gcm_default_end_mill_n: "Dao phay %s"
    gcm_default_drill_diam: "Mũi khoan Ø%s mm"
    gcm_default_end_mill_diam: "Dao phay Ø%s mm"
    gcm_aria_remove_tag: "Xóa %s"
    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_post_modal_title: Bộ xử lý POST
    gcm_post_import_btn: Nhập tệp POST…
    gcm_post_empty_hint: Chưa có tệp POST — nhập file .pp hoặc .txt.
    gcm_post_name_label: Tên tệp xuất
    gcm_post_units_label: Đơn vị
    gcm_post_ext_label: Phần mở rộng
    gcm_post_line_num_label: Đánh số dòng (bắt đầu / bước)
    gcm_post_preview_label: Tệp POST
    gcm_post_source_file: 'Nguồn: %s'
    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_panel_import_toolpaths: Nhập lối cắt JSON
    gcm_panel_import_aspire_toolpaths: Nhập mẫu toolpath Aspire
    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_err_spindle_conflict: 'Trùng dao trên cùng vị trí trục (spindle): %s. Mỗi vị trí dao chỉ được gán 1 dao — hãy sửa trước khi lưu hoặc xuất G-code.'
    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
    nest_summary_line: '%s: đã xếp %d/%d board lên %d sheet'
    nest_missing_label_abort: "Một số board chưa có nhãn (label). Hãy gắn nhãn cho từng board trước khi nest:"
    nest_component_block_abort: "Chỉ nest được Group. Hãy explode hoặc chuyển các component này thành group trước khi nest:"
    nest_no_matching_sheet_section: 'Không có sheet phù hợp cho:'
    nest_unlabeled_section: 'Board chưa gắn nhãn:'
    nest_unnested_section: 'Board KHÔNG được nesting:'
    nest_nothing: Không có gì để nest.
    nest_preflight_stop_title: 'ĐÃ DỪNG NESTING — có đối tượng được chọn không nest được (chưa đặt board nào lên sheet). Hãy sửa rồi chạy lại:'
    nest_count_line: 'Số lượng board: chọn %d, nest được %d, lỗi %d.'
    nest_count_mismatch: '⚠ SỐ LƯỢNG BOARD KHÔNG KHỚP — đã chọn %d, chỉ nest được %d, thiếu %d:'
    nest_not_a_board_section: 'Không nhận diện được là board (bọc thêm group? geometry nằm trong nhóm con?):'
    nest_invalid_section: 'Hình học lỗi (không dựng được polygon cắt):'
    nest_inner_material_confirm: "Một số board có material trên mặt nguyên sinh bên trong. Xóa màu ngay? Nesting sẽ dừng và giữ chọn các board vừa xóa màu."
    nest_inner_material_section: 'Board có material bên trong — hãy đưa màu các đối tượng bên trong về mặc định trước khi nesting:'
    nest_failed_select_footer: Các board chưa lên sheet sẽ được tự động chọn sau khi đóng thông báo này.
    nest_reason_invalid_polygon: không dựng được polygon cắt (board không hợp lệ?)
    nest_reason_no_matching_sheet: không có sheet phù hợp (%s)
    nest_reason_too_big: không vừa cả sheet trống (part lớn hơn khổ sheet sau khi trừ lề?)
    nest_reason_no_sheet: không tạo được sheet overflow
    nest_reason_no_space: không đủ chỗ trên sheet
    topbot_blocked_title: VỊ TRÍ TẤM TOP/BOT KHÔNG KHỚP — đã chặn xuất.
    topbot_sheet_line: 'Sheet %s:'
    topbot_missing_top: 'Part #%s: có trên tấm BOT nhưng KHÔNG có trên tấm TOP'
    topbot_misaligned: 'Part #%s: lệch X %s mm, Y %s mm'
    topbot_fix_hint: Hãy sửa lại vị trí part (hoặc nest lại) rồi xuất.
    topbot_gcode_blocked: Vị trí tấm TOP/BOT không khớp — đã chặn xuất G-code.
    # ── tool messages / prompts / status (i18n sweep 2026-07-16) ──
    abf_label_select_first: Chọn một hoặc nhiều group/component trước.
    abf_label_error: "Lỗi ABF Extra Label: %s"
    abf_label_applied: Đã gắn nhãn cho %s tấm. Bỏ qua %s.
    abf_label_reindex_prompt: "Đánh số lại?\n\nYes = xoá tất cả label hiện có và đánh số lại từ 0\nNo  = đánh số tiếp từ số lớn nhất hiện tại"
    abf_label_operation: ABF Extra Label
    abf_rotate_operation: Xoay Tem
    abf_flip_operation: Lật Label
    abf_nesting_select_first: Chọn một hoặc nhiều group/component dạng tấm trước.
    abf_nesting_error_board: "Lỗi ABF Extra Nesting: %s\n\nTấm: %s\n(đã chọn — sửa hình học rồi chạy nesting lại)"
    abf_nesting_error: "Lỗi ABF Extra Nesting: %s"
    abf_nesting_margins_invalid: Lề phải là số và ≥ 0.
    abf_nesting_margin_parts_prompt: "Lề giữa các part (mm):"
    abf_nesting_margin_border_prompt: "Lề tới mép tấm (mm):"
    abf_nesting_margins_title: ABF Extra Nesting
    abf_nesting_recreate_root_prompt: "Tạo nesting root mới?\n\nYes  = xoá nesting root cũ và tạo mới\nNo   = nest vào nesting root cũ"
    abf_nesting_operation: ABF Extra Nesting
    abf_nesting_progress_analysing: "Đang phân tích %s tấm..."
    abf_nesting_progress_packing_group: "Đang xếp nhóm %s/%s (%s, %s tấm)..."
    abf_nesting_progress_packing_onto: "Đang xếp lên %s (%s/%s, đã đặt %s/%s)..."
    abf_nesting_progress_overflow: "Đang tạo tấm overflow %s (đã đặt %s/%s)..."
    abf_nesting_back_label: Mặt Sau
    abf_flip_select_labeled: Chọn board đã có tem (label) để lật mặt f/b.
    abf_flip_error: "Lật Label lỗi: %s"
    abf_rotate_select_labeled: Chọn board đã có tem (đã chạy ABF Extra Label) để xoay.
    abf_rotate_error: "Xoay Tem lỗi: %s"
    bend_error: "Lỗi GG Cabinet Tools Bend:\n%s"
    cnc_relief_placed: Đã đặt %s vòng tròn.
    cnc_relief_final_d: Đường kính thực đặt %s mm
    cnc_relief_preview_d: Đường kính xem trước đặt %s mm
    cnc_relief_vcb_hint: Nhập số thực w5 hoặc số xem trước (mm)
    cnc_relief_select_first: Chọn một hoặc nhiều Group/ComponentInstance rồi chạy tool.
    ecd_selection_empty: Chưa chọn gì. Hãy chọn một hoặc nhiều đối tượng rồi chạy lại.
    ecd_invalid_filename: Tên file không hợp lệ.
    ecd_exported: "Đã xuất:\n%s"
    ecd_export_failed: "Xuất thất bại:\n%s"
    ecd_exported_json: "Đã xuất JSON:\n%s"
    ecd_export_json_failed: "Xuất JSON thất bại:\n%s"
    ecd_dir_not_exist: "Thư mục không tồn tại:\n%s"
    ecd_menu_dump: "GG: Dump lựa chọn ra Console"
    ecd_menu_txt: "GG: Xuất lựa chọn ra TXT…"
    ecd_menu_json: "GG: Xuất lựa chọn ra JSON…"
    ecd_txt_title: GG Entity Console Dump — Xuất ra TXT
    ecd_json_title: GG Entity Console Dump — Xuất ra JSON
    ecd_filename_prompt: Tên file xuất (không đuôi)
    ecd_dir_prompt: Thư mục xuất (đường dẫn)
    explode_error: "Lỗi Explode → Groups: %s"
    gcode_profile_capture_hint: Nhấp vào component biên dạng 2-D để lấy biên dạng dao (Esc để hủy).
    gcode_profile_reason_not_component: Chọn một component/group 2D.
    gcode_profile_reason_not_closed_loop: Biên dạng phải là một đường bao kín (một vòng).
    gcode_profile_reason_not_flat: Biên dạng phải phẳng trên mặt X-Y (mọi điểm z = 0).
    gcode_profile_reason_failed: Không lấy được biên dạng.
    layer_manager_none_found: Không tìm thấy layer/tag nào (trong lựa chọn hoặc model).
    layer_manager_save_empty_name: Nhập tên tag vào ô tìm kiếm.
    layer_manager_save_exists: "Tag \"%s\" đã tồn tại."
    layer_manager_save_created: "Đã tạo tag \"%s\"."
    layer_manager_save_create_op: Tạo tag
    layer_manager_save_no_selection: Chọn đối tượng để gán tag.
    layer_manager_save_applied: "Đã lưu tag \"%s\" lên lựa chọn."
    layer_manager_save_confirm_title: Lưu tag
    layer_manager_save_confirm_hint: "Gán tag \"%s\" cho lựa chọn hiện tại?"
    layer_manager_save_confirm_recursive: Gán recursively (kể cả geometry lồng bên trong)
    layer_manager_save_confirm_rename: Đổi tên instance theo tên tag này (theo độ sâu ở trên)
    layer_manager_save_confirm_ok: Lưu
    layer_manager_save_confirm_cancel: Hủy
    move_vertices_cursor_vertex: Đỉnh
    nesting_dxf_no_sheets: Không tìm thấy sheet nesting nào (tên `…-sheet-N`).
    nesting_dxf_savepanel_title: Xuất DXF — chọn nơi lưu thư mục
    nesting_dxf_mkdir_failed: "Không tạo được thư mục xuất:\n%s"
    nesting_editor_status_ron_start: R_On bắt đầu từ %s (zigzag một outline)
    nesting_editor_status_cut_start: Số cắt bắt đầu từ %s (zigzag một part)
    nesting_editor_status_find_select: "Tìm board 3D: chọn part trước"
    nesting_editor_status_find_selected: "Tìm board 3D: đã chọn %s board"
    nesting_editor_vcb_start_index: Số bắt đầu
    nesting_editor_outline_title: Đường cắt outline
    nesting_editor_outline_offset_prompt: Offset từ tâm (mm)
    nesting_editor_outline_extend_prompt: Kéo dãn mỗi đầu (mm)
    nesting_editor_title: Nesting Editor
    nesting_editor_collision_gap_prompt: Khoảng hở va chạm (mm)
    nesting_editor_border_gap_prompt: Lề mép tấm (mm)
    tenon_hud_hint: Chỉnh thông số mộng từ HUD khi tool đang hoạt động.
    unsolid_shell_pick_next: Chọn khối tiếp theo để gộp (Esc để kết thúc).
    unsolid_shell_pick_first: Chọn khối đầu tiên.
    unsolid_trim_pick_target: Chọn TARGET (2).
    unsolid_trim_pick_cutter: Chọn CUTTER (1).
    plugin_name_version: GG Cabinet Tools (%s)
    main_label_print_unavailable: Module in nhãn không có trong bản cài này.
    main_settings_unavailable: Module cài đặt không có trong bản cài này.
    label_print_dialog_title: In Tem Nhãn
    label_print_hint: "( Bấm nút In Tem, chọn máy in và khổ giấy phù hợp với tỉ lệ tem đang cài đặt, luôn xuất kèm PDF tem )"
    label_print_btn_print: In Tem
    label_print_btn_pdf: PDF
    label_print_brand_label: Tên thương hiệu
    label_print_title_label: Tiêu đề
    label_print_settings_label: Cài đặt
    label_print_ratio_label: Tỉ lệ tem
    label_print_width_label: Rộng
    label_print_height_label: Cao
    label_print_qr_label: QR Code
    label_print_qr_id: ID tấm
    label_print_qr_name: Tên tấm
    label_print_btn_save: Lưu cài đặt
    label_print_saved: "✓ Đã lưu"
    label_print_note: Note
    label_print_model_fallback: Model
    label_print_untitled: Chưa đặt tên
    label_print_empty: Chưa có tem nào. Chạy ABF nesting rồi mở lại.
    label_print_parts_count_tpl: "%s tấm"
    label_print_sheet_fallback_tpl: "Tấm %s"
    label_print_qr_missing: Thiếu thư viện QR
    label_print_template_label: Mẫu tem
    label_print_template_option_3: ABF - Mẫu tem 3
    label_print_subtemplate_label: Mẫu phụ
    label_print_subtemplate_none: "— None —"
