Some checks failed
CI / style (push) Has been cancelled
CI / build-client (push) Has been cancelled
CI / build-amd64 (push) Has been cancelled
CI / build-tester (push) Has been cancelled
CI / test (cockroachdb) (push) Has been cancelled
CI / test (mariadb) (push) Has been cancelled
CI / test (postgres) (push) Has been cancelled
CI / test (sqlite) (push) Has been cancelled
CI / build-arm64 (push) Has been cancelled
CI / build-armv7 (push) Has been cancelled
CI / publish-images (push) Has been cancelled
CI / publish-release (push) Has been cancelled
- Extra Weight Field (#14): Track DryPods, custom holders in spool weight calculations. New extra_weight field on spool with DB migration. - Price/Cost Tracking: Compute remaining_value based on remaining weight and price. Added column to spool list, inventory value on dashboard. - Print History: Show print job history on spool detail page with collapsible table showing filename, filament used, status, dates. - Usage Analytics: New dashboard component with time-series chart showing daily consumption, period selector (7/30/90 days), and material breakdown. New API endpoints for analytics data. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
654 lines
30 KiB
JSON
654 lines
30 KiB
JSON
{
|
|
"actions": {
|
|
"list": "List",
|
|
"create": "Create",
|
|
"edit": "Edit",
|
|
"show": "Show",
|
|
"clone": "Clone"
|
|
},
|
|
"buttons": {
|
|
"create": "Create",
|
|
"save": "Save",
|
|
"saveAndAdd": "Save and Add",
|
|
"logout": "Log out",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"cancel": "Cancel",
|
|
"confirm": "Are you sure?",
|
|
"continue": "Continue",
|
|
"filter": "Filter",
|
|
"clear": "Clear",
|
|
"refresh": "Refresh",
|
|
"show": "Show",
|
|
"undo": "Undo",
|
|
"import": "Import",
|
|
"clone": "Clone",
|
|
"archive": "Archive",
|
|
"unArchive": "Unarchive",
|
|
"hideArchived": "Hide Archived",
|
|
"showArchived": "Show Archived",
|
|
"prev": "Prev",
|
|
"next": "Next",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"notAccessTitle": "You don't have permission to access",
|
|
"hideColumns": "Hide Columns",
|
|
"clearFilters": "Clear Filters",
|
|
"viewAll": "View All"
|
|
},
|
|
"warnWhenUnsavedChanges": "Are you sure you want to leave? You have unsaved changes.",
|
|
"batch": {
|
|
"selected": "{{count}} selected",
|
|
"clear_selection": "Clear",
|
|
"archive_confirm": "Archive Spools",
|
|
"archive_confirm_content": "Are you sure you want to archive {{count}} spools?",
|
|
"unarchive_confirm": "Unarchive Spools",
|
|
"unarchive_confirm_content": "Are you sure you want to unarchive {{count}} spools?",
|
|
"delete_confirm": "Delete Spools",
|
|
"delete_confirm_content": "Are you sure you want to delete {{count}} spools? This action cannot be undone.",
|
|
"move": "Move",
|
|
"move_title": "Move Spools to Location",
|
|
"move_description": "Select a location for the {{count}} selected spools."
|
|
},
|
|
"notifications": {
|
|
"success": "Successful",
|
|
"error": "Error (status code: {{statusCode}})",
|
|
"undoable": "You have {{seconds}} seconds to undo.",
|
|
"createSuccess": "Successfully created {{resource}}",
|
|
"createError": "There was an error creating {{resource}} (status code: {{statusCode}})",
|
|
"deleteSuccess": "Successfully deleted {{resource}}",
|
|
"deleteError": "Error when deleting {{resource}} (status code: {{statusCode}})",
|
|
"editSuccess": "Successfully edited {{resource}}",
|
|
"editError": "Error when editing {{resource}} (status code: {{statusCode}})",
|
|
"importProgress": "Importing: {{processed}}/{{total}}",
|
|
"saveSuccessful": "Save successful!",
|
|
"validationError": "Validation error: {{error}}"
|
|
},
|
|
"kofi": "Tip me on Ko-fi",
|
|
"color": {
|
|
"click_to_copy": "Click to copy",
|
|
"copied": "Copied {{color}} to clipboard",
|
|
"copy_failed": "Failed to copy to clipboard"
|
|
},
|
|
"loading": "Loading",
|
|
"version": "Version",
|
|
"unknown": "Unknown",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"tags": {
|
|
"clone": "Clone"
|
|
},
|
|
"dashboard": {
|
|
"title": "Dashboard"
|
|
},
|
|
"printing": {
|
|
"generic": {
|
|
"title": "Printing",
|
|
"description": "Tune in the settings below to get the desired print layout. Keep in mind that printers and your OS may apply it's own margins and scaling, so you may need to perform some trial-and-error before it's all correct. Test it on a piece of regular paper before printing on the actual labels.",
|
|
"helpMargin": "Margins should be configured to match your label paper and printer, changing these will affect the size of the entire grid.",
|
|
"helpPrinterMargin": "Safe-Zone should be set to how close to the paper edge your printer can print, changing these will not affect the entire grid.",
|
|
"print": "Print",
|
|
"columns": "Columns",
|
|
"rows": "Rows",
|
|
"paperSize": "Paper Size",
|
|
"customSize": "Custom",
|
|
"dimensions": "Dimensions",
|
|
"showBorder": "Show Border",
|
|
"previewScale": "Preview Scale",
|
|
"skipItems": "Skip Items",
|
|
"itemCopies": "Item Copies",
|
|
"contentSettings": "Content Settings",
|
|
"layoutSettings": "Layout Settings",
|
|
"horizontalSpacing": "Horizontal Spacing",
|
|
"verticalSpacing": "Vertical Spacing",
|
|
"marginLeft": "Left Margin",
|
|
"marginRight": "Right Margin",
|
|
"marginTop": "Top Margin",
|
|
"marginBottom": "Bottom Margin",
|
|
"printerMarginLeft": "Safe-Zone Left",
|
|
"printerMarginRight": "Safe-Zone Right",
|
|
"printerMarginTop": "Safe-Zone Top",
|
|
"printerMarginBottom": "Safe-Zone Bottom",
|
|
"borders": {
|
|
"none": "None",
|
|
"border": "Border",
|
|
"grid": "Grid"
|
|
},
|
|
"settings": "Presets",
|
|
"defaultSettings": "Default",
|
|
"addSettings": "Add New Preset",
|
|
"newSetting": "New",
|
|
"duplicateSettings": "Duplicate",
|
|
"deleteSettings": "Delete Current Preset",
|
|
"deleteSettingsConfirm": "Are you sure you want to delete this preset?",
|
|
"settingsName": "Preset Name",
|
|
"saveSetting": "Save Presets",
|
|
"saveAsImage": "Save as Image"
|
|
},
|
|
"qrcode": {
|
|
"button": "Print Labels",
|
|
"title": "Label Printing",
|
|
"template": "Label Template",
|
|
"templateHelp": "Use {} to insert values of the spool object as text. For example, {id} will be replaced with the spool id, or {filament.material} will be replaced with the material of the spool. if a value is missing it will be replaced with \"?\". A second set of {} can be used to remove this. In addition, any text between the sets of {} will be removed if the value is missing. For example, {Lot Nr: {lot_nr}} will only show the label if the spool has a lot number. Enclose text with double asterix ** to make it bold. Click the button to view a list of all available tags.",
|
|
"textSize": "Label Text Size",
|
|
"showContent": "Print Label",
|
|
"useHTTPUrl": {
|
|
"label": "QR code link",
|
|
"tooltip": "Will use proprietary link that will work only if scanned from Spoolman's scanning feature (default). URL uses either the base URL specified in settings, or the current page URL if not set.",
|
|
"options": {
|
|
"default": "Default",
|
|
"url": "URL"
|
|
},
|
|
"preview": "Preview:"
|
|
},
|
|
"showQRCode": "Print QR Code",
|
|
"showQRCodeMode": {
|
|
"no": "No",
|
|
"simple": "Simple",
|
|
"withIcon": "With Icon"
|
|
},
|
|
"qrCodePadding": "QR Code Padding",
|
|
"qrCodePaddingTooltip": "White space around the QR code for better scanning reliability",
|
|
"qrCodeMaxWidth": "QR Code Max Width",
|
|
"qrCodeMaxWidthTooltip": "Maximum width of QR code as percentage of label. Set to 0 for automatic sizing.",
|
|
"qrCodeSize": "QR Code Size",
|
|
"qrCodeSizeTooltip": "Fixed size of QR code in millimeters. Set to 0 for automatic sizing based on label.",
|
|
"auto": "Auto"
|
|
},
|
|
"spoolSelect": {
|
|
"title": "Select Spools",
|
|
"description": "Select spools to print labels for.",
|
|
"showArchived": "Show Archived",
|
|
"noSpoolsSelected": "You have not selected any spools.",
|
|
"selectAll": "Select/Unselect All",
|
|
"selectedTotal_one": "{{count}} spool selected",
|
|
"selectedTotal_other": "{{count}} spools selected"
|
|
}
|
|
},
|
|
"scanner": {
|
|
"title": "QR Code Scanner",
|
|
"description": "Scan a Spoolman QR code to view details about the spool.",
|
|
"error": {
|
|
"notAllowed": "You have not allowed access to the camera.",
|
|
"insecureContext": "The page is not served over HTTPS.",
|
|
"streamApiNotSupported": "The browser does not support the MediaStream API.",
|
|
"notReadable": "The camera is not readable.",
|
|
"notFound": "No camera was found.",
|
|
"unknown": "An unknown error occurred. ({{error}})"
|
|
}
|
|
},
|
|
"spool": {
|
|
"spool": "Spools",
|
|
"fields": {
|
|
"id": "ID",
|
|
"filament_name": "Filament",
|
|
"filament": "Filament",
|
|
"filament_internal": "Internal",
|
|
"filament_external": "External",
|
|
"price": "Price",
|
|
"color": "Color",
|
|
"material": "Material",
|
|
"weight_to_use": "Weight",
|
|
"used_weight": "Used Weight",
|
|
"remaining_weight": "Remaining Weight",
|
|
"remaining_value": "Remaining Value",
|
|
"measured_weight": "Measured Weight",
|
|
"used_length": "Used Length",
|
|
"remaining_length": "Remaining Length",
|
|
"initial_weight": "Initial Weight",
|
|
"spool_weight": "Empty Weight",
|
|
"extra_weight": "Extra Weight",
|
|
"location": "Location",
|
|
"lot_nr": "Lot Nr",
|
|
"first_used": "First Used",
|
|
"last_used": "Last Used",
|
|
"registered": "Registered",
|
|
"comment": "Comment",
|
|
"archived": "Archived",
|
|
"adjustment_history": "Adjustment History",
|
|
"show_history": "Show History",
|
|
"print_history": "Print History",
|
|
"show_print_history": "Show Print History",
|
|
"adjustment_timestamp": "Date/Time",
|
|
"adjustment_type": "Type",
|
|
"adjustment_type_weight": "Weight",
|
|
"adjustment_type_length": "Length",
|
|
"adjustment_value": "Amount",
|
|
"adjustment_comment": "Comment"
|
|
},
|
|
"fields_help": {
|
|
"price": "Price of a full spool. If not set, the price of the filament will be assumed instead.",
|
|
"weight_to_use": "Select what weight value to enter. Measured weight is only available if the spool weight is set for the selected filament.",
|
|
"used_weight": "How much filament has been used from the spool. A new spool should have 0g used.",
|
|
"remaining_weight": "How much filament is left on the spool. For a new spool this should match the spool weight.",
|
|
"measured_weight": "How much the filament and spool weigh.",
|
|
"initial_weight": "The initial weight of filament on the spool (net weight). Will use the weight from the filament object if not set.",
|
|
"spool_weight": "The weight of the spool when it is empty. Leave empty to use the value from the filament or the manufacturer.",
|
|
"extra_weight": "Additional weight to account for when measuring, such as DryPods, custom spool holders, or other accessories.",
|
|
"location": "Where the spool is located if you have multiple locations where you store your spools.",
|
|
"lot_nr": "Manufacturer's lot number. Can be used to ensure a print has consistent color if multiple spools are used.",
|
|
"external_filament": "You have selected a filament from the external database. A filament object (and possibly a manufacturer object) will be created automatically when you create this spool. This can create duplicate filament objects if you have already created a filament object for this filament."
|
|
},
|
|
"titles": {
|
|
"create": "Create Spool",
|
|
"clone": "Clone Spool",
|
|
"edit": "Edit Spool",
|
|
"list": "Spools",
|
|
"show": "Show Spool",
|
|
"show_title": "[Spool #{{id}}] {{name}}",
|
|
"archive": "Archive Spool",
|
|
"adjust": "Adjust Spool Filament"
|
|
},
|
|
"form": {
|
|
"measurement_type": {
|
|
"length": "Length",
|
|
"weight": "Weight"
|
|
},
|
|
"measurement_type_label": "Measurement Type",
|
|
"adjust_filament_help": "Here you can directly add or subtract filament from the spool. A positive value will consume filament, a negative value will add it.",
|
|
"adjust_filament_value": "Consume Amount",
|
|
"new_location_prompt": "Enter a new location",
|
|
"spool_updated": "This spool has been updated by someone/something else since you opened this page. Saving will overwrite those changes!"
|
|
},
|
|
"messages": {
|
|
"archive": "Are you sure you want to archive this spool?"
|
|
},
|
|
"formats": {
|
|
"last_used": "Last used {{date}}"
|
|
}
|
|
},
|
|
"location": {
|
|
"location": "Location",
|
|
"locations": "Locations",
|
|
"create": "Create Location",
|
|
"titles": {
|
|
"create": "Create Location",
|
|
"edit": "Edit Location",
|
|
"list": "Locations"
|
|
},
|
|
"fields": {
|
|
"name": "Name",
|
|
"name_required": "Location name is required",
|
|
"name_placeholder": "e.g., Shelf A",
|
|
"parent": "Parent Location",
|
|
"parent_placeholder": "Select parent (optional)",
|
|
"location_type": "Type",
|
|
"location_type_placeholder": "Select type (optional)",
|
|
"description": "Description",
|
|
"spool_count": "Spools",
|
|
"full_path": "Full Path"
|
|
},
|
|
"types": {
|
|
"room": "Room",
|
|
"shelf": "Shelf",
|
|
"bin": "Bin",
|
|
"drawer": "Drawer",
|
|
"box": "Box",
|
|
"other": "Other"
|
|
},
|
|
"messages": {
|
|
"delete_confirm": "Are you sure you want to delete this location?",
|
|
"has_children": "This location has child locations"
|
|
}
|
|
},
|
|
"filament": {
|
|
"filament": "Filaments",
|
|
"fields": {
|
|
"id": "ID",
|
|
"vendor_name": "Manufacturer",
|
|
"vendor": "Manufacturer",
|
|
"name": "Name",
|
|
"material": "Material",
|
|
"price": "Price",
|
|
"density": "Density",
|
|
"diameter": "Diameter",
|
|
"weight": "Weight",
|
|
"spool_weight": "Spool Weight",
|
|
"article_number": "Article Number",
|
|
"registered": "Registered",
|
|
"comment": "Comment",
|
|
"settings_extruder_temp": "Extruder Temp",
|
|
"settings_bed_temp": "Bed Temp",
|
|
"temp_min": "Min",
|
|
"temp_max": "Max",
|
|
"color_hex": "Color",
|
|
"single_color": "Single",
|
|
"multi_color": "Multi",
|
|
"coaxial": "Coextruded",
|
|
"longitudinal": "Longitudinal",
|
|
"external_id": "External ID",
|
|
"spools": "Show Spools",
|
|
"not_set": "Not Set",
|
|
"spool_count": "Spools",
|
|
"total_remaining_weight": "Total Remaining"
|
|
},
|
|
"fields_help": {
|
|
"name": "Filament name, to distinguish this filament type among others from the same manufacturer. Should contain the color for example.",
|
|
"material": "E.g. PLA, ABS, PETG, etc.",
|
|
"price": "Price of a full spool.",
|
|
"density": "Auto-filled based on material. Standard: PLA 1.24, ABS 1.04, PETG 1.27 g/cm³.",
|
|
"weight": "The filament weight of a full spool (net weight). This should not include the weight of the spool itself, only the filament. It is what is usually written on the packaging.",
|
|
"spool_weight": "The weight of an empty spool. Used to determine measured weight of a spool.",
|
|
"article_number": "E.g. EAN, UPC, etc.",
|
|
"multi_color_direction": "Filaments can have multiple colors in two ways: either through coextrusion, like dual-color filaments with consistent multi-colors, or through longitudinal color changes, like gradient filaments that shift colors along the spool."
|
|
},
|
|
"titles": {
|
|
"create": "Create Filament",
|
|
"clone": "Clone Filament",
|
|
"edit": "Edit Filament",
|
|
"list": "Filaments",
|
|
"show": "Show Filament",
|
|
"show_title": "[Filament #{{id}}] {{name}}"
|
|
},
|
|
"form": {
|
|
"filament_updated": "This filament has been updated by someone/something else since you opened this page. Saving will overwrite those changes!",
|
|
"import_external": "Import from External",
|
|
"import_external_description": "Select a filament in the list to automatically populate its details in the filament creation form. This will overwrite any data you have entered in the form.<br><br>A Manufacturer object will be created automatically when you click Ok, if necessary.",
|
|
"all_sources": "All Sources",
|
|
"select_filament": "Select a filament...",
|
|
"created_success": "Created filament \"{{name}}\"",
|
|
"vendor_placeholder": "Select a manufacturer",
|
|
"name_placeholder": "E.g. Matte Black",
|
|
"material_placeholder": "PLA, PETG, ABS, etc."
|
|
},
|
|
"buttons": {
|
|
"add_spool": "Add Spool"
|
|
}
|
|
},
|
|
"vendor": {
|
|
"vendor": "Manufacturers",
|
|
"fields": {
|
|
"id": "ID",
|
|
"name": "Name",
|
|
"empty_spool_weight": "Empty Spool Weight",
|
|
"external_id": "External ID",
|
|
"registered": "Registered",
|
|
"comment": "Comment"
|
|
},
|
|
"fields_help": {
|
|
"empty_spool_weight": "The weight of an empty spool from this manufacturer."
|
|
},
|
|
"titles": {
|
|
"create": "Create Manufacturer",
|
|
"clone": "Clone Manufacturer",
|
|
"edit": "Edit Manufacturer",
|
|
"list": "Manufacturers",
|
|
"show": "Show Manufacturer",
|
|
"show_title": "[Manufacturer #{{id}}] {{name}}"
|
|
},
|
|
"form": {
|
|
"vendor_updated": "This manufacturer has been updated by someone/something else since you opened this page. Saving will overwrite those changes!",
|
|
"created_success": "Created manufacturer \"{{name}}\"",
|
|
"name_required": "Name is required"
|
|
}
|
|
},
|
|
"print_job": {
|
|
"fields": {
|
|
"created": "Created",
|
|
"filename": "Filename",
|
|
"filament_used": "Filament Used",
|
|
"status": "Status",
|
|
"finished": "Finished"
|
|
},
|
|
"status": {
|
|
"pending": "Pending",
|
|
"completed": "Completed",
|
|
"cancelled": "Cancelled"
|
|
}
|
|
},
|
|
"home": {
|
|
"home": "Home",
|
|
"welcome": "Welcome to your Spoolman instance!",
|
|
"description": "It looks like you haven't added any spools yet. See the <helpPageLink>Help page</helpPageLink> for help getting started.",
|
|
"all_spools": "All Spools",
|
|
"low_stock_alert": "{{count}} spools below {{threshold}}g",
|
|
"low_stock_warning": "Low stock",
|
|
"alerts": {
|
|
"low_stock": "Low Stock",
|
|
"pending_jobs": "Pending Jobs",
|
|
"needs_weighing": "Needs Weighing"
|
|
},
|
|
"charts": {
|
|
"material_distribution": "Material Distribution"
|
|
},
|
|
"quick_stats": {
|
|
"total_spools": "Total Spools",
|
|
"total_filaments": "Filament Types",
|
|
"total_vendors": "Vendors",
|
|
"total_weight": "Total Remaining",
|
|
"total_value": "Inventory Value"
|
|
},
|
|
"analytics": {
|
|
"title": "Usage Analytics",
|
|
"7_days": "7 Days",
|
|
"30_days": "30 Days",
|
|
"90_days": "90 Days",
|
|
"total_used": "Total used: {{weight}} kg",
|
|
"used": "Used",
|
|
"by_material": "Usage by Material"
|
|
}
|
|
},
|
|
"help": {
|
|
"help": "Help",
|
|
"resources": {
|
|
"filament": "Brands of filament. They have properties such as name, material, color, diameter, and more.",
|
|
"spool": "Individual physical spools of a specific filament.",
|
|
"vendor": "The companies that make the filament."
|
|
},
|
|
"description": "<title>Help</title><p>Here are some tips to get you started.</p><p>Spoolman holds 3 different types of data:</p><itemsHelp/><p>To add a new spool to the database, start by creating a <filamentCreateLink>Filament</filamentCreateLink> object. Once that's done, proceed to create a <spoolCreateLink>Spool</spoolCreateLink> object for that specific spool. If you acquire additional spools of the same filament later on, simply generate additional Spool objects and reuse the same Filament object.</p><p>Optionally, you can also generate a <vendorCreateLink>Manufacturer</vendorCreateLink> object for the company manufacturing the filament if you wish to track that information.</p><p>You have the option to link other 3D printer services to Spoolman, like Moonraker, which can automatically monitor filament usage and update the Spool objects for you. Refer to the <readmeLink>Spoolman README</readmeLink> for guidance on how to set that up.</p>"
|
|
},
|
|
"table": {
|
|
"actions": "Actions"
|
|
},
|
|
"settings": {
|
|
"settings": "Settings",
|
|
"header": "Settings",
|
|
"general": {
|
|
"tab": "General",
|
|
"currency": {
|
|
"label": "Currency"
|
|
},
|
|
"base_url": {
|
|
"label": "Base URL",
|
|
"tooltip": "The base URL to use when generating features such as QR codes."
|
|
},
|
|
"round_prices": {
|
|
"label": "Round prices",
|
|
"tooltip": "Round prices to the nearest whole number."
|
|
},
|
|
"theme_color": {
|
|
"label": "Theme Color",
|
|
"orange": "Orange",
|
|
"teal": "Teal",
|
|
"red": "Red",
|
|
"green": "Green",
|
|
"blue": "Blue"
|
|
}
|
|
},
|
|
"backup": {
|
|
"title": "Backup & Restore",
|
|
"description": "Export all your data for backup or migrate to a different database.",
|
|
"export_title": "Export Data",
|
|
"export_button": "Download Backup",
|
|
"export_success": "Backup downloaded successfully",
|
|
"export_error": "Failed to export data",
|
|
"import_title": "Import Data",
|
|
"select_file": "Select backup file",
|
|
"import_merge": "Import (Merge)",
|
|
"import_replace": "Import (Replace All)",
|
|
"import_success": "Data imported successfully",
|
|
"import_error": "Failed to import data",
|
|
"replace_warning_title": "Replace all data?",
|
|
"replace_warning": "This will DELETE all existing data and replace it with the backup. This cannot be undone!"
|
|
},
|
|
"auth": {
|
|
"title": "Authentication",
|
|
"description": "Require users to log in to access Spoolman. Once enabled, you'll be redirected to the login page.",
|
|
"status_enabled": "Authentication is enabled",
|
|
"status_disabled": "Authentication is disabled",
|
|
"setup_title": "Enable Authentication",
|
|
"setup_description": "Create an admin account to enable authentication. This user will have full access to manage Spoolman.",
|
|
"enable_button": "Create Admin & Enable",
|
|
"disable_title": "Disable Authentication",
|
|
"disable_description": "Enter an admin password to confirm disabling authentication. Anyone will be able to access Spoolman without logging in.",
|
|
"disable_button": "Disable Authentication",
|
|
"admin_password": "Admin Password",
|
|
"password_required": "Password is required",
|
|
"enabled_success": "Authentication enabled",
|
|
"disabled_success": "Authentication disabled"
|
|
},
|
|
"extra_fields": {
|
|
"tab": "Extra Fields",
|
|
"description": "<p>Here you can add extra custom fields to your entities.</p><p>Once a field is added, you can not change its key or type, and for choice type fields you can not remove choices or change the multi choice state. If you remove a field, the associated data for all entities will be deleted.</p><p>The key is what other programs read/write the data as, so if your custom field is supposed to integrate with a third-party program, make sure to set it correctly. Default value is only applied to new items.</p><p>Extra fields can not be sorted or filtered in the table views.</p>",
|
|
"params": {
|
|
"key": "Key",
|
|
"name": "Name",
|
|
"field_type": "Type",
|
|
"unit": "Unit",
|
|
"order": "Order",
|
|
"default_value": "Default Value",
|
|
"choices": "Choices",
|
|
"multi_choice": "Multi Choice"
|
|
},
|
|
"field_type": {
|
|
"text": "Text",
|
|
"integer": "Integer",
|
|
"integer_range": "Integer Range",
|
|
"float": "Float",
|
|
"float_range": "Float Range",
|
|
"datetime": "Datetime",
|
|
"boolean": "Boolean",
|
|
"choice": "Choice"
|
|
},
|
|
"boolean_true": "Yes",
|
|
"boolean_false": "No",
|
|
"choices_missing_error": "You cannot remove choices. The following choices are missing: {{choices}}",
|
|
"non_unique_key_error": "The key must be unique.",
|
|
"key_not_changed": "Please change the key to something else.",
|
|
"delete_confirm": "Delete field {{name}}?",
|
|
"delete_confirm_description": "This will delete the field and all associated data for all entities."
|
|
},
|
|
"users": {
|
|
"tab": "Users",
|
|
"title": "User Management",
|
|
"add": "Add User",
|
|
"edit": "Edit User",
|
|
"username": "Username",
|
|
"password": "Password",
|
|
"role": "Role",
|
|
"status": "Status",
|
|
"actions": "Actions",
|
|
"active": "Active",
|
|
"inactive": "Inactive",
|
|
"you": "You",
|
|
"created": "User created successfully",
|
|
"updated": "User updated successfully",
|
|
"deleted": "User deleted successfully",
|
|
"delete_confirm": "Are you sure you want to delete this user?",
|
|
"username_required": "Username is required",
|
|
"username_min": "Username must be at least 3 characters",
|
|
"password_required": "Password is required",
|
|
"password_min": "Password must be at least 6 characters",
|
|
"password_change_hint": "Leave blank to keep current password",
|
|
"leave_blank": "Leave blank to keep current",
|
|
"role_viewer": "Viewer - Can only view data",
|
|
"role_operator": "Operator - Can view and record usage",
|
|
"role_editor": "Editor - Can view, use, create, and edit",
|
|
"role_admin": "Admin - Full access including user management",
|
|
"auth_disabled": "Authentication is not enabled",
|
|
"auth_disabled_hint": "Enable authentication in Settings > General to manage users",
|
|
"admin_required": "Admin Access Required",
|
|
"admin_required_hint": "Only administrators can manage users",
|
|
"logout": "Log Out"
|
|
}
|
|
},
|
|
"documentTitle": {
|
|
"default": "Spoolman",
|
|
"suffix": " | Spoolman",
|
|
"home": {
|
|
"list": "Home | Spoolman"
|
|
},
|
|
"help": {
|
|
"list": "Help | Spoolman"
|
|
},
|
|
"locations": {
|
|
"list": "Locations | Spoolman"
|
|
},
|
|
"filament": {
|
|
"list": "Filaments | Spoolman",
|
|
"show": "#{{id}} Show Filament | Spoolman",
|
|
"edit": "#{{id}} Edit Filament | Spoolman",
|
|
"create": "Create Filament | Spoolman",
|
|
"clone": "#{{id}} Clone Filament | Spoolman"
|
|
},
|
|
"spool": {
|
|
"list": "Spools | Spoolman",
|
|
"show": "#{{id}} Show Spool | Spoolman",
|
|
"edit": "#{{id}} Edit Spool | Spoolman",
|
|
"create": "Create Spool | Spoolman",
|
|
"clone": "#{{id}} Clone Spool | Spoolman"
|
|
},
|
|
"vendor": {
|
|
"list": "Manufacturers | Spoolman",
|
|
"show": "#{{id}} Show Manufacturer | Spoolman",
|
|
"edit": "#{{id}} Edit Manufacturer | Spoolman",
|
|
"create": "Create Manufacturer | Spoolman",
|
|
"clone": "#{{id}} Clone Manufacturer | Spoolman"
|
|
}
|
|
},
|
|
"locations": {
|
|
"locations": "Locations",
|
|
"new_location": "New Location",
|
|
"no_location": "No Location",
|
|
"no_locations_help": "This page lets you organize your spools in locations, add some spools to get started!"
|
|
},
|
|
"print-queue": {
|
|
"print-queue": "Print Queue"
|
|
},
|
|
"print_queue": {
|
|
"title": "Print Queue",
|
|
"pending_jobs": "Pending Jobs",
|
|
"needs_weighing": "Spools Needing Weigh-In",
|
|
"recent_history": "Recent History",
|
|
"no_pending_jobs": "No pending print jobs",
|
|
"no_history": "No completed or cancelled jobs yet",
|
|
"fields": {
|
|
"filename": "Filename",
|
|
"spool": "Spool",
|
|
"filament_used": "Filament Used",
|
|
"created": "Created",
|
|
"finished": "Finished",
|
|
"status": "Status"
|
|
},
|
|
"status": {
|
|
"pending": "Pending",
|
|
"completed": "Completed",
|
|
"cancelled": "Cancelled"
|
|
},
|
|
"stats": {
|
|
"pending": "Pending",
|
|
"needs_weighing": "Need Weigh-In",
|
|
"completed_today": "Completed Today",
|
|
"total_jobs": "Total Jobs"
|
|
},
|
|
"complete": "Complete",
|
|
"cancel": "Cancel",
|
|
"cancel_job": "Cancel Job",
|
|
"weigh_in": "Weigh In",
|
|
"clear_flag": "Clear Flag",
|
|
"clear_flag_tooltip": "Mark as weighed without updating weight",
|
|
"confirm_complete": "Complete Print Job?",
|
|
"confirm_complete_description": "This will deduct {{grams}}g from the spool.",
|
|
"confirm_cancel": "Cancel Print Job?",
|
|
"confirm_cancel_description": "The spool will be flagged for manual weigh-in since filament usage is unknown.",
|
|
"confirm_delete": "Delete Print Job?",
|
|
"confirm_delete_description": "This will permanently remove this job from history.",
|
|
"job_completed": "Print job completed",
|
|
"job_complete_error": "Failed to complete print job",
|
|
"job_cancelled": "Print job cancelled - spool flagged for weigh-in",
|
|
"job_cancel_error": "Failed to cancel print job",
|
|
"job_deleted": "Print job deleted",
|
|
"weighing_cleared": "Weigh-in flag cleared"
|
|
}
|
|
}
|