{
  "_lang": "English",
  "gui.file_group.title": "Input 3MF Files",
  "gui.file_group.table.header.order": "Order",
  "gui.file_group.table.header.file": "3MF File",
  "gui.file_group.table.header.copies": "Copies",
  "gui.file_group.table.header.time": "Time",
  "gui.file_group.table.header.filament": "Filament",
  "gui.file_group.table.tooltip": "Drag .3mf files or folders here. Folders add all top-level .3mf files.",
  "gui.file_group.table.move_up": "Move up",
  "gui.file_group.table.move_down": "Move down",
  "gui.file_group.table.tooltip_base_plates": "Base plates: {count}",
  "gui.file_group.table.tooltip_base_time": "Base time: {time}",
  "gui.file_group.table.tooltip_base_filament": "Base filament: {filament}",
  "gui.file_group.total_summary": "Total: {plates} plate(s) | Time: {time} | Filament: {filament}",
  "gui.file_group.total_summary.empty": "Total: 0 plates | Time: 0s | Filament: 0.00 g",
  "gui.button.add_3mf": "Add 3MF",
  "gui.button.remove": "Remove",
  "gui.button.remove_all": "Remove All",
  "gui.button.apply_copies": "Apply Default Copies to Selected",
  "gui.button.build": "Build 3MF",
  "gui.preview.title": "Selected Thumbnail",
  "gui.preview.select_hint": "Select an input file",
  "gui.preview.no_image": "No preview image",
  "gui.preview.unavailable": "Preview unavailable",
  "gui.options.group.title": "Packing Options",
  "gui.options.swap_gcode.label": "Swap G-code",
  "gui.options.refresh": "Refresh",
  "gui.options.open_folder": "Open Folder",
  "gui.options.default_copies": "Default copies for new inputs",
  "gui.options.bed_cooldown": "Wait for bed cooldown",
  "gui.options.bed_cooldown.label": "Bed cooldown",
  "gui.options.bed_cooldown.suffix": "°C",
  "gui.options.eject_wait": "Wait after swap",
  "gui.options.eject_wait.label": "Wait after swap",
  "gui.options.wait_suffix": "sec",
  "gui.options.plate_number": "Show current plate in the hundreds digit of remaining time",
  "gui.options.plate_number.label": "Plate number",
  "gui.options.final_swap": "Run swap G-code after the last plate",
  "gui.options.final_swap.label": "Final swap",
  "gui.options.gcode_patches": "Apply editable G-code patches",
  "gui.options.gcode_patches.label": "G-code patches",
  "gui.options.gcode_patches.tooltip": "Uses gcode_patches.ini",
  "gui.options.open_config": "Open Config",
  "gui.options.metadata.label": "3MF metadata",
  "gui.options.metadata.source": "Keep source prediction and weight",
  "gui.options.metadata.sum": "Sum prediction and filament",
  "gui.options.zip_compression.label": "ZIP compression",
  "gui.options.zip_compression.level_format": "Level {level}",
  "gui.options.zip_compression.tooltip": "zlib-ng Deflate compression level for the output 3MF.",
  "gui.options.batch_mode": "Individual batch mode",
  "gui.options.batch_mode.label": "Batch mode",
  "gui.options.batch_mode.tooltip": "Build each input row as a separate output file, using that row's copy count.",
  "gui.options.clear_after_build": "Clear input list after successful build",
  "gui.options.clear_after_build.label": "After build",
  "gui.options.skip_duplicates": "Skip duplicate file paths when adding inputs",
  "gui.options.input_handling": "Input handling",
  "gui.options.language": "Language",
  "gui.output.group.title": "Output",
  "gui.output.dir.label": "Output directory",
  "gui.output.dir.placeholder": "Leave empty to write next to the input file",
  "gui.output.dir.browse": "Browse",
  "gui.output.filename_rule": "Output filename rule",
  "gui.output.filename_rule.placeholder": "Use tokens such as {source}, {sources}, {plates}, {copies}, {date}, {time}",
  "gui.output.filename_rule.help": "?",
  "gui.output.filename_rule.help.tooltip": "Show filename token help",
  "gui.output.preview": "Preview",
  "gui.output.batch_preview": "{first} | {count} output file(s)",
  "gui.dialog.individual_batch.title": "Individual Batch Mode",
  "gui.dialog.individual_batch.text": "Individual batch mode treats every input row as a separate build.\n\nExample: if you add 20 single-plate 3MF files and set copies to 5, Build 3MF will create 20 separate packed files. Each output contains only that source file repeated 5 times.\n\nThis is useful for quickly batch-converting many independent 3MF jobs into multi-copy SwapMod packs. It does not combine all input files into one 3MF.",
  "gui.dialog.filename_help.title": "Output Filename Rule",
  "gui.dialog.filename_help.text": "Available filename tokens:\n\n{source}  - First input file stem, without .3mf\n{sources} - Source name summary. For multiple different inputs, it becomes first_source_and_N_more\n{plates}  - Total plate count in the output\n{copies}  - Total copy count used for the output\n{date}    - Current date as YYYYMMDD\n{time}    - Current time as HHMMSS\n\nDefault rule:\n{plates}-Plates-{sources}.3mf\n\nIn individual batch mode, these tokens are calculated separately for each input row.",
  "gui.dialog.warning.title": "A1 Swap Mod Packer",
  "gui.dialog.no_files": "Please add at least one 3MF file.",
  "gui.dialog.no_swap_gcode": "Please put at least one swap G-code file in the swap_gcode folder and select it.",
  "gui.dialog.patch_config_not_found": "Patch config does not exist yet:\n{path}",
  "gui.dialog.batch_partial_success": "Built {success} file(s), but {failed} file(s) failed.\n\n",
  "gui.dialog.choose_output_dir": "Choose output directory",
  "gui.dialog.add_files_title": "Add 3MF files",
  "gui.dialog.file_filter.3mf": "3MF files (*.3mf)",
  "gui.dialog.file_filter.all": "All files (*)",
  "gui.toast.combined_success": "The packed 3MF file was created.",
  "gui.toast.batch_success": "Created {count} packed 3MF file(s).",
  "gui.log.added_files": "Added {added} input file(s). Skipped {skipped}.",
  "gui.log.skipped_file": "Skipped {path}: {reason}",
  "gui.log.no_swap_files": "No swap G-code files found in {dir}",
  "gui.log.building_individual": "Building {count} individual output(s) with {workers} worker(s).",
  "gui.log.output": "Output: {path}",
  "gui.log.plates": "Plates: {count}",
  "gui.log.time": "Estimated source time: {time}",
  "gui.log.filament": "Estimated source filament: {filament}",
  "gui.log.md5": "G-code MD5: {md5}",
  "gui.log.build_error": "Error building {path}: {error}",
  "format.unknown": "Unknown",
  "gui.button.close": "Close",
  "gui.dialog.view_gcode.title": "View Swap G-code",
  "gui.options.view_gcode": "View"
}