From 0db280ad7444e06c154706af70f5f6c4dd772bbb Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 14 Jul 2024 13:28:16 +1000 Subject: [PATCH 01/58] Add estonian language support (#7647) --- src/backend/InvenTree/InvenTree/locales.py | 1 + .../InvenTree/locale/et/LC_MESSAGES/django.po | 14942 ++++++++++++++++ src/frontend/.linguirc | 1 + src/frontend/src/contexts/LanguageContext.tsx | 1 + src/frontend/src/locales/et/messages.d.ts | 4 + src/frontend/src/locales/et/messages.po | 6069 +++++++ 6 files changed, 21018 insertions(+) create mode 100644 src/backend/InvenTree/locale/et/LC_MESSAGES/django.po create mode 100644 src/frontend/src/locales/et/messages.d.ts create mode 100644 src/frontend/src/locales/et/messages.po diff --git a/src/backend/InvenTree/InvenTree/locales.py b/src/backend/InvenTree/InvenTree/locales.py index 201a633e99..62e3a8bd9d 100644 --- a/src/backend/InvenTree/InvenTree/locales.py +++ b/src/backend/InvenTree/InvenTree/locales.py @@ -24,6 +24,7 @@ LOCALES = [ ('en', _('English')), ('es', _('Spanish')), ('es-mx', _('Spanish (Mexican)')), + ('et', _('Estonian')), ('fa', _('Farsi / Persian')), ('fi', _('Finnish')), ('fr', _('French')), diff --git a/src/backend/InvenTree/locale/et/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/et/LC_MESSAGES/django.po new file mode 100644 index 0000000000..4035a3af0c --- /dev/null +++ b/src/backend/InvenTree/locale/et/LC_MESSAGES/django.po @@ -0,0 +1,14942 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-07-14 02:54+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: InvenTree/api.py:272 +msgid "API endpoint not found" +msgstr "" + +#: InvenTree/api.py:505 +msgid "User does not have permission to view this model" +msgstr "" + +#: InvenTree/conversion.py:160 +#, python-brace-format +msgid "Invalid unit provided ({unit})" +msgstr "" + +#: InvenTree/conversion.py:177 +msgid "No value provided" +msgstr "" + +#: InvenTree/conversion.py:204 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" + +#: InvenTree/conversion.py:206 +msgid "Invalid quantity supplied" +msgstr "" + +#: InvenTree/conversion.py:220 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" + +#: InvenTree/exceptions.py:109 +msgid "Error details can be found in the admin panel" +msgstr "" + +#: InvenTree/fields.py:136 +msgid "Enter date" +msgstr "" + +#: InvenTree/fields.py:205 InvenTree/models.py:921 build/serializers.py:462 +#: build/serializers.py:540 build/templates/build/sidebar.html:25 +#: company/models.py:824 company/templates/company/sidebar.html:37 +#: order/models.py:1296 order/templates/order/po_sidebar.html:11 +#: order/templates/order/return_order_sidebar.html:9 +#: order/templates/order/so_sidebar.html:17 part/admin.py:59 +#: part/models.py:3259 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_report.html:172 +#: stock/admin.py:230 stock/models.py:2351 stock/models.py:2478 +#: stock/serializers.py:694 stock/serializers.py:852 stock/serializers.py:948 +#: stock/serializers.py:998 stock/serializers.py:1309 stock/serializers.py:1398 +#: stock/serializers.py:1563 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 +#: templates/js/translated/company.js:1684 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1086 +#: templates/js/translated/purchase_order.js:2200 +#: templates/js/translated/return_order.js:775 +#: templates/js/translated/sales_order.js:1103 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/stock.js:1536 templates/js/translated/stock.js:2428 +msgid "Notes" +msgstr "" + +#: InvenTree/format.py:164 +#, python-brace-format +msgid "Value '{name}' does not appear in pattern format" +msgstr "" + +#: InvenTree/format.py:175 +msgid "Provided value does not match required pattern: " +msgstr "" + +#: InvenTree/forms.py:128 +msgid "Enter password" +msgstr "" + +#: InvenTree/forms.py:129 +msgid "Enter new password" +msgstr "" + +#: InvenTree/forms.py:138 +msgid "Confirm password" +msgstr "" + +#: InvenTree/forms.py:139 +msgid "Confirm new password" +msgstr "" + +#: InvenTree/forms.py:143 +msgid "Old password" +msgstr "" + +#: InvenTree/forms.py:182 +msgid "Email (again)" +msgstr "" + +#: InvenTree/forms.py:186 +msgid "Email address confirmation" +msgstr "" + +#: InvenTree/forms.py:209 +msgid "You must type the same email each time." +msgstr "" + +#: InvenTree/forms.py:248 InvenTree/forms.py:256 +msgid "The provided primary email address is not valid." +msgstr "" + +#: InvenTree/forms.py:263 +msgid "The provided email domain is not approved." +msgstr "" + +#: InvenTree/forms.py:392 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:525 order/models.py:562 order/models.py:764 +msgid "Invalid quantity provided" +msgstr "" + +#: InvenTree/helpers.py:533 +msgid "Empty serial number string" +msgstr "" + +#: InvenTree/helpers.py:562 +msgid "Duplicate serial" +msgstr "" + +#: InvenTree/helpers.py:594 InvenTree/helpers.py:637 +#, python-brace-format +msgid "Invalid group range: {group}" +msgstr "" + +#: InvenTree/helpers.py:625 +#, python-brace-format +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:691 +msgid "No serial numbers found" +msgstr "" + +#: InvenTree/helpers.py:696 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:814 +msgid "Remove HTML tags from this value" +msgstr "" + +#: InvenTree/helpers_model.py:140 +msgid "Connection error" +msgstr "" + +#: InvenTree/helpers_model.py:145 InvenTree/helpers_model.py:152 +msgid "Server responded with invalid status code" +msgstr "" + +#: InvenTree/helpers_model.py:148 +msgid "Exception occurred" +msgstr "" + +#: InvenTree/helpers_model.py:158 +msgid "Server responded with invalid Content-Length value" +msgstr "" + +#: InvenTree/helpers_model.py:161 +msgid "Image size is too large" +msgstr "" + +#: InvenTree/helpers_model.py:173 +msgid "Image download exceeded maximum size" +msgstr "" + +#: InvenTree/helpers_model.py:178 +msgid "Remote server returned empty response" +msgstr "" + +#: InvenTree/helpers_model.py:186 +msgid "Supplied URL is not a valid image file" +msgstr "" + +#: InvenTree/locales.py:18 +msgid "Arabic" +msgstr "" + +#: InvenTree/locales.py:19 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/locales.py:20 +msgid "Czech" +msgstr "" + +#: InvenTree/locales.py:21 +msgid "Danish" +msgstr "" + +#: InvenTree/locales.py:22 +msgid "German" +msgstr "" + +#: InvenTree/locales.py:23 +msgid "Greek" +msgstr "" + +#: InvenTree/locales.py:24 +msgid "English" +msgstr "" + +#: InvenTree/locales.py:25 +msgid "Spanish" +msgstr "" + +#: InvenTree/locales.py:26 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/locales.py:27 +msgid "Estonian" +msgstr "" + +#: InvenTree/locales.py:28 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/locales.py:29 +msgid "Finnish" +msgstr "" + +#: InvenTree/locales.py:30 +msgid "French" +msgstr "" + +#: InvenTree/locales.py:31 +msgid "Hebrew" +msgstr "" + +#: InvenTree/locales.py:32 +msgid "Hindi" +msgstr "" + +#: InvenTree/locales.py:33 +msgid "Hungarian" +msgstr "" + +#: InvenTree/locales.py:34 +msgid "Italian" +msgstr "" + +#: InvenTree/locales.py:35 +msgid "Japanese" +msgstr "" + +#: InvenTree/locales.py:36 +msgid "Korean" +msgstr "" + +#: InvenTree/locales.py:37 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:38 +msgid "Dutch" +msgstr "" + +#: InvenTree/locales.py:39 +msgid "Norwegian" +msgstr "" + +#: InvenTree/locales.py:40 +msgid "Polish" +msgstr "" + +#: InvenTree/locales.py:41 +msgid "Portuguese" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Romanian" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Russian" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:48 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:49 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:50 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:51 +msgid "Ukrainian" +msgstr "" + +#: InvenTree/locales.py:52 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:53 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:54 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site_name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415 +#: company/models.py:136 company/templates/company/company_base.html:138 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:677 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:105 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:174 +msgid "Metadata must be a python dict object" +msgstr "" + +#: InvenTree/models.py:180 +msgid "Plugin Metadata" +msgstr "" + +#: InvenTree/models.py:181 +msgid "JSON metadata field, for use by external plugins" +msgstr "" + +#: InvenTree/models.py:411 +msgid "Improperly formatted pattern" +msgstr "" + +#: InvenTree/models.py:418 +msgid "Unknown format key specified" +msgstr "" + +#: InvenTree/models.py:424 +msgid "Missing required format key" +msgstr "" + +#: InvenTree/models.py:435 +msgid "Reference field cannot be empty" +msgstr "" + +#: InvenTree/models.py:443 +msgid "Reference must match required pattern" +msgstr "" + +#: InvenTree/models.py:474 +msgid "Reference number is too large" +msgstr "" + +#: InvenTree/models.py:722 +msgid "Duplicate names cannot exist under the same parent" +msgstr "" + +#: InvenTree/models.py:739 +msgid "Invalid choice" +msgstr "" + +#: InvenTree/models.py:769 common/models.py:2665 common/models.py:3095 +#: common/serializers.py:412 company/models.py:587 machine/models.py:24 +#: part/models.py:951 part/models.py:3726 plugin/models.py:51 +#: report/models.py:150 stock/models.py:74 +#: templates/InvenTree/settings/mixins/urls.html:13 +#: templates/InvenTree/settings/notifications.html:17 +#: templates/InvenTree/settings/plugin.html:83 +#: templates/InvenTree/settings/plugin_settings.html:22 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/js/translated/company.js:676 +#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:913 +#: templates/js/translated/company.js:1165 +#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1192 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1616 +#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2716 +msgid "Name" +msgstr "" + +#: InvenTree/models.py:775 build/models.py:242 +#: build/templates/build/detail.html:24 common/models.py:143 +#: company/models.py:515 company/models.py:815 +#: company/templates/company/company_base.html:77 +#: company/templates/company/manufacturer_part.html:75 +#: company/templates/company/supplier_part.html:107 order/models.py:289 +#: order/models.py:1329 part/admin.py:305 part/admin.py:408 part/models.py:974 +#: part/models.py:3741 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:156 +#: report/models.py:510 report/models.py:536 +#: report/templates/report/inventree_build_order_report.html:117 +#: stock/admin.py:54 stock/models.py:80 stock/templates/stock/location.html:125 +#: templates/InvenTree/settings/notifications.html:19 +#: templates/InvenTree/settings/plugin_settings.html:27 +#: templates/InvenTree/settings/settings_staff_js.html:170 +#: templates/InvenTree/settings/settings_staff_js.html:451 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2314 templates/js/translated/company.js:519 +#: templates/js/translated/company.js:1330 +#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1244 +#: templates/js/translated/part.js:1489 templates/js/translated/part.js:1627 +#: templates/js/translated/part.js:1964 templates/js/translated/part.js:2361 +#: templates/js/translated/part.js:2804 templates/js/translated/part.js:2916 +#: templates/js/translated/plugin.js:80 +#: templates/js/translated/purchase_order.js:1706 +#: templates/js/translated/purchase_order.js:1849 +#: templates/js/translated/purchase_order.js:2022 +#: templates/js/translated/return_order.js:313 +#: templates/js/translated/sales_order.js:838 +#: templates/js/translated/sales_order.js:1848 +#: templates/js/translated/stock.js:1515 templates/js/translated/stock.js:2058 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 +msgid "Description" +msgstr "" + +#: InvenTree/models.py:776 stock/models.py:81 +msgid "Description (optional)" +msgstr "" + +#: InvenTree/models.py:791 templates/js/translated/part.js:2813 +#: templates/js/translated/stock.js:2757 +msgid "Path" +msgstr "" + +#: InvenTree/models.py:921 +msgid "Markdown notes (optional)" +msgstr "" + +#: InvenTree/models.py:950 +msgid "Barcode Data" +msgstr "" + +#: InvenTree/models.py:951 +msgid "Third party barcode data" +msgstr "" + +#: InvenTree/models.py:957 +msgid "Barcode Hash" +msgstr "" + +#: InvenTree/models.py:958 +msgid "Unique hash of barcode data" +msgstr "" + +#: InvenTree/models.py:1011 +msgid "Existing barcode found" +msgstr "" + +#: InvenTree/models.py:1054 +msgid "Server Error" +msgstr "" + +#: InvenTree/models.py:1055 +msgid "An error has been logged by the server." +msgstr "" + +#: InvenTree/serializers.py:63 part/models.py:4349 +msgid "Must be a valid number" +msgstr "" + +#: InvenTree/serializers.py:100 company/models.py:186 +#: company/templates/company/company_base.html:112 part/models.py:3077 +#: templates/InvenTree/settings/settings_staff_js.html:44 +#: templates/currency_data.html:5 +msgid "Currency" +msgstr "" + +#: InvenTree/serializers.py:103 +msgid "Select currency from available options" +msgstr "" + +#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33 +msgid "Username" +msgstr "" + +#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37 +msgid "First Name" +msgstr "" + +#: InvenTree/serializers.py:409 +msgid "First name of the user" +msgstr "" + +#: InvenTree/serializers.py:412 templates/InvenTree/settings/user.html:41 +msgid "Last Name" +msgstr "" + +#: InvenTree/serializers.py:412 +msgid "Last name of the user" +msgstr "" + +#: InvenTree/serializers.py:415 +msgid "Email address of the user" +msgstr "" + +#: InvenTree/serializers.py:439 +msgid "Staff" +msgstr "" + +#: InvenTree/serializers.py:439 +msgid "Does this user have staff permissions" +msgstr "" + +#: InvenTree/serializers.py:442 +msgid "Superuser" +msgstr "" + +#: InvenTree/serializers.py:442 +msgid "Is this user a superuser" +msgstr "" + +#: InvenTree/serializers.py:445 common/models.py:2670 company/models.py:163 +#: company/models.py:789 machine/models.py:39 part/admin.py:88 +#: part/models.py:1151 plugin/models.py:66 +#: templates/js/translated/company.js:523 +#: templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:492 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:716 +#: templates/js/translated/table_filters.js:801 users/models.py:182 +msgid "Active" +msgstr "" + +#: InvenTree/serializers.py:445 +msgid "Is this user account active" +msgstr "" + +#: InvenTree/serializers.py:463 +msgid "You do not have permission to change this user role." +msgstr "" + +#: InvenTree/serializers.py:475 +msgid "Only superusers can create new users" +msgstr "" + +#: InvenTree/serializers.py:494 +msgid "Your account has been created." +msgstr "" + +#: InvenTree/serializers.py:496 +msgid "Please use the password reset function to login" +msgstr "" + +#: InvenTree/serializers.py:503 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:561 +msgid "Invalid value" +msgstr "" + +#: InvenTree/serializers.py:581 importer/models.py:60 +msgid "Data File" +msgstr "" + +#: InvenTree/serializers.py:582 +msgid "Select data file for upload" +msgstr "" + +#: InvenTree/serializers.py:599 +msgid "Unsupported file type" +msgstr "" + +#: InvenTree/serializers.py:605 +msgid "File is too large" +msgstr "" + +#: InvenTree/serializers.py:626 +msgid "No columns found in file" +msgstr "" + +#: InvenTree/serializers.py:629 +msgid "No data rows found in file" +msgstr "" + +#: InvenTree/serializers.py:742 +msgid "No data rows provided" +msgstr "" + +#: InvenTree/serializers.py:745 +msgid "No data columns supplied" +msgstr "" + +#: InvenTree/serializers.py:812 +#, python-brace-format +msgid "Missing required column: '{name}'" +msgstr "" + +#: InvenTree/serializers.py:821 +#, python-brace-format +msgid "Duplicate column: '{col}'" +msgstr "" + +#: InvenTree/serializers.py:861 +msgid "Remote Image" +msgstr "" + +#: InvenTree/serializers.py:862 +msgid "URL of remote image file" +msgstr "" + +#: InvenTree/serializers.py:880 +msgid "Downloading images from remote URL is not enabled" +msgstr "" + +#: InvenTree/status.py:66 part/serializers.py:1234 +msgid "Background worker check failed" +msgstr "" + +#: InvenTree/status.py:70 +msgid "Email backend not configured" +msgstr "" + +#: InvenTree/status.py:73 +msgid "InvenTree system health checks failed" +msgstr "" + +#: InvenTree/templatetags/inventree_extras.py:184 +msgid "Unknown database" +msgstr "" + +#: InvenTree/validators.py:32 InvenTree/validators.py:34 +msgid "Invalid physical unit" +msgstr "" + +#: InvenTree/validators.py:40 +msgid "Not a valid currency code" +msgstr "" + +#: InvenTree/validators.py:118 InvenTree/validators.py:134 +msgid "Overage value must not be negative" +msgstr "" + +#: InvenTree/validators.py:136 +msgid "Overage must not exceed 100%" +msgstr "" + +#: InvenTree/validators.py:142 +msgid "Invalid value for overage" +msgstr "" + +#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23 +msgid "Edit User Information" +msgstr "" + +#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20 +msgid "Set Password" +msgstr "" + +#: InvenTree/views.py:434 +msgid "Password fields must match" +msgstr "" + +#: InvenTree/views.py:442 +msgid "Wrong password provided" +msgstr "" + +#: InvenTree/views.py:650 templates/navbar.html:160 +msgid "System Information" +msgstr "" + +#: InvenTree/views.py:657 templates/navbar.html:171 +msgid "About InvenTree" +msgstr "" + +#: build/api.py:247 +msgid "Build must be cancelled before it can be deleted" +msgstr "" + +#: build/api.py:291 build/serializers.py:1227 part/models.py:4227 +#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037 +#: templates/js/translated/build.js:2705 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:583 +msgid "Consumable" +msgstr "" + +#: build/api.py:292 build/serializers.py:1228 part/models.py:4221 +#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001 +#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2696 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:587 +msgid "Optional" +msgstr "" + +#: build/api.py:293 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:579 +msgid "Tracked" +msgstr "" + +#: build/api.py:295 part/admin.py:144 templates/js/translated/build.js:1919 +#: templates/js/translated/build.js:2823 +#: templates/js/translated/sales_order.js:1965 +#: templates/js/translated/table_filters.js:571 +msgid "Allocated" +msgstr "" + +#: build/api.py:303 company/models.py:879 company/serializers.py:388 +#: company/templates/company/supplier_part.html:114 +#: templates/email/build_order_required_stock.html:19 +#: templates/email/low_stock_notification.html:17 +#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2755 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:234 +#: templates/js/translated/part.js:694 templates/js/translated/part.js:696 +#: templates/js/translated/part.js:701 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:575 +msgid "Available" +msgstr "" + +#: build/models.py:85 build/templates/build/build_base.html:9 +#: build/templates/build/build_base.html:27 +#: report/templates/report/inventree_build_order_report.html:105 +#: stock/serializers.py:84 templates/email/build_order_completed.html:16 +#: templates/email/overdue_build_order.html:15 +#: templates/js/translated/build.js:1147 templates/js/translated/stock.js:2892 +msgid "Build Order" +msgstr "" + +#: build/models.py:86 build/templates/build/build_base.html:13 +#: build/templates/build/index.html:8 build/templates/build/index.html:12 +#: order/templates/order/sales_order_detail.html:111 +#: order/templates/order/so_sidebar.html:13 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 +#: templates/InvenTree/search.html:141 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:207 +msgid "Build Orders" +msgstr "" + +#: build/models.py:127 +msgid "Assembly BOM has not been validated" +msgstr "" + +#: build/models.py:134 +msgid "Build order cannot be created for an inactive part" +msgstr "" + +#: build/models.py:141 +msgid "Build order cannot be created for an unlocked part" +msgstr "" + +#: build/models.py:155 +msgid "Invalid choice for parent build" +msgstr "" + +#: build/models.py:166 order/models.py:240 +msgid "Responsible user or group must be specified" +msgstr "" + +#: build/models.py:172 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:233 +msgid "Build Order Reference" +msgstr "" + +#: build/models.py:234 build/serializers.py:1226 order/models.py:463 +#: order/models.py:926 order/models.py:1289 order/models.py:2046 +#: part/admin.py:411 part/models.py:4242 part/templates/part/upload_bom.html:54 +#: report/templates/report/inventree_bill_of_materials_report.html:139 +#: report/templates/report/inventree_purchase_order_report.html:28 +#: report/templates/report/inventree_return_order_report.html:26 +#: report/templates/report/inventree_sales_order_report.html:28 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:1013 templates/js/translated/build.js:2688 +#: templates/js/translated/order.js:291 templates/js/translated/pricing.js:386 +#: templates/js/translated/purchase_order.js:2065 +#: templates/js/translated/return_order.js:728 +#: templates/js/translated/sales_order.js:1854 +msgid "Reference" +msgstr "" + +#: build/models.py:245 +msgid "Brief description of the build (optional)" +msgstr "" + +#: build/models.py:253 build/templates/build/build_base.html:183 +#: build/templates/build/detail.html:87 +msgid "Parent Build" +msgstr "" + +#: build/models.py:254 +msgid "BuildOrder to which this build is allocated" +msgstr "" + +#: build/models.py:259 build/serializers.py:1217 +#: build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1034 order/api.py:759 +#: order/models.py:1419 order/models.py:1574 order/models.py:1575 +#: part/api.py:1504 part/api.py:1800 part/models.py:397 part/models.py:3088 +#: part/models.py:3232 part/models.py:3380 part/models.py:3401 +#: part/models.py:3423 part/models.py:3559 part/models.py:3899 +#: part/models.py:4062 part/models.py:4193 part/models.py:4552 +#: part/serializers.py:1180 part/serializers.py:1808 +#: part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 +#: part/templates/part/upload_bom.html:52 +#: report/templates/report/inventree_bill_of_materials_report.html:110 +#: report/templates/report/inventree_bill_of_materials_report.html:137 +#: report/templates/report/inventree_build_order_report.html:109 +#: report/templates/report/inventree_purchase_order_report.html:27 +#: report/templates/report/inventree_return_order_report.html:24 +#: report/templates/report/inventree_sales_order_report.html:27 +#: report/templates/report/inventree_stock_location_report.html:102 +#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:445 +#: stock/serializers.py:882 templates/InvenTree/search.html:82 +#: templates/email/build_order_completed.html:17 +#: templates/email/build_order_required_stock.html:17 +#: templates/email/low_stock_notification.html:15 +#: templates/email/overdue_build_order.html:16 +#: templates/js/translated/barcode.js:577 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1004 templates/js/translated/build.js:1487 +#: templates/js/translated/build.js:1918 templates/js/translated/build.js:2337 +#: templates/js/translated/build.js:2510 templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1116 +#: templates/js/translated/company.js:1271 +#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1949 templates/js/translated/part.js:2021 +#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:751 +#: templates/js/translated/purchase_order.js:1304 +#: templates/js/translated/purchase_order.js:1848 +#: templates/js/translated/purchase_order.js:2007 +#: templates/js/translated/return_order.js:538 +#: templates/js/translated/return_order.js:709 +#: templates/js/translated/sales_order.js:300 +#: templates/js/translated/sales_order.js:1233 +#: templates/js/translated/sales_order.js:1634 +#: templates/js/translated/sales_order.js:1832 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1997 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 +msgid "Part" +msgstr "" + +#: build/models.py:267 +msgid "Select part to build" +msgstr "" + +#: build/models.py:272 +msgid "Sales Order Reference" +msgstr "" + +#: build/models.py:276 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:281 build/serializers.py:1009 +#: templates/js/translated/build.js:1906 +#: templates/js/translated/sales_order.js:1221 +msgid "Source Location" +msgstr "" + +#: build/models.py:285 +msgid "Select location to take stock from for this build (leave blank to take from any stock location)" +msgstr "" + +#: build/models.py:290 +msgid "Destination Location" +msgstr "" + +#: build/models.py:294 +msgid "Select location where the completed items will be stored" +msgstr "" + +#: build/models.py:298 +msgid "Build Quantity" +msgstr "" + +#: build/models.py:301 +msgid "Number of stock items to build" +msgstr "" + +#: build/models.py:305 +msgid "Completed items" +msgstr "" + +#: build/models.py:307 +msgid "Number of stock items which have been completed" +msgstr "" + +#: build/models.py:311 +msgid "Build Status" +msgstr "" + +#: build/models.py:315 +msgid "Build status code" +msgstr "" + +#: build/models.py:324 build/serializers.py:296 order/serializers.py:630 +#: stock/models.py:837 stock/serializers.py:76 stock/serializers.py:1528 +#: templates/js/translated/purchase_order.js:1129 +msgid "Batch Code" +msgstr "" + +#: build/models.py:328 build/serializers.py:297 +msgid "Batch code for this build output" +msgstr "" + +#: build/models.py:331 order/models.py:316 order/serializers.py:127 +#: part/models.py:1191 part/templates/part/part_base.html:319 +#: templates/js/translated/return_order.js:338 +#: templates/js/translated/sales_order.js:863 +msgid "Creation Date" +msgstr "" + +#: build/models.py:335 +msgid "Target completion date" +msgstr "" + +#: build/models.py:336 +msgid "Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:339 order/models.py:521 order/models.py:2091 +#: templates/js/translated/build.js:2422 +msgid "Completion Date" +msgstr "" + +#: build/models.py:345 +msgid "completed by" +msgstr "" + +#: build/models.py:353 templates/js/translated/build.js:2382 +msgid "Issued by" +msgstr "" + +#: build/models.py:354 +msgid "User who issued this build order" +msgstr "" + +#: build/models.py:362 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:152 +#: order/models.py:334 order/templates/order/order_base.html:217 +#: order/templates/order/return_order_base.html:188 +#: order/templates/order/sales_order_base.html:232 part/models.py:1208 +#: part/templates/part/part_base.html:399 +#: report/templates/report/inventree_build_order_report.html:158 +#: templates/InvenTree/settings/settings_staff_js.html:150 +#: templates/js/translated/build.js:2394 +#: templates/js/translated/purchase_order.js:1763 +#: templates/js/translated/return_order.js:358 +#: templates/js/translated/table_filters.js:531 +msgid "Responsible" +msgstr "" + +#: build/models.py:363 +msgid "User or group responsible for this build order" +msgstr "" + +#: build/models.py:368 build/templates/build/detail.html:108 +#: company/templates/company/manufacturer_part.html:107 +#: company/templates/company/supplier_part.html:194 +#: order/templates/order/order_base.html:167 +#: order/templates/order/return_order_base.html:145 +#: order/templates/order/sales_order_base.html:184 +#: part/templates/part/part_base.html:392 stock/models.py:833 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1019 +msgid "External Link" +msgstr "" + +#: build/models.py:369 common/models.py:3236 part/models.py:1026 +#: stock/models.py:833 +msgid "Link to external URL" +msgstr "" + +#: build/models.py:373 +msgid "Build Priority" +msgstr "" + +#: build/models.py:376 +msgid "Priority of this build order" +msgstr "" + +#: build/models.py:383 common/models.py:122 common/models.py:136 +#: order/admin.py:18 order/models.py:298 +#: templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2319 +#: templates/js/translated/purchase_order.js:1710 +#: templates/js/translated/return_order.js:317 +#: templates/js/translated/sales_order.js:842 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:384 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:617 build/models.py:682 +msgid "Failed to offload task to complete build allocations" +msgstr "" + +#: build/models.py:639 +#, python-brace-format +msgid "Build order {build} has been completed" +msgstr "" + +#: build/models.py:645 +msgid "A build order has been completed" +msgstr "" + +#: build/models.py:871 build/models.py:956 +msgid "No build output specified" +msgstr "" + +#: build/models.py:874 +msgid "Build output is already completed" +msgstr "" + +#: build/models.py:877 +msgid "Build output does not match Build Order" +msgstr "" + +#: build/models.py:960 build/serializers.py:229 build/serializers.py:278 +#: build/serializers.py:876 order/models.py:559 order/serializers.py:462 +#: order/serializers.py:625 part/serializers.py:1549 part/serializers.py:1971 +#: stock/models.py:678 stock/models.py:1498 stock/serializers.py:665 +msgid "Quantity must be greater than zero" +msgstr "" + +#: build/models.py:965 build/serializers.py:234 +msgid "Quantity cannot be greater than the output quantity" +msgstr "" + +#: build/models.py:1025 build/serializers.py:557 +#, python-brace-format +msgid "Build output {serial} has not passed all required tests" +msgstr "" + +#: build/models.py:1366 +msgid "Build Order Line Item" +msgstr "" + +#: build/models.py:1391 +msgid "Build object" +msgstr "" + +#: build/models.py:1405 build/models.py:1661 build/serializers.py:216 +#: build/serializers.py:263 build/serializers.py:1233 +#: build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2550 +#: order/models.py:1272 order/models.py:1957 order/serializers.py:1384 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:410 +#: part/forms.py:48 part/models.py:3246 part/models.py:4215 +#: part/templates/part/part_pricing.html:16 +#: part/templates/part/upload_bom.html:53 +#: report/templates/report/inventree_bill_of_materials_report.html:138 +#: report/templates/report/inventree_build_order_report.html:113 +#: report/templates/report/inventree_purchase_order_report.html:29 +#: report/templates/report/inventree_sales_order_report.html:29 +#: report/templates/report/inventree_stock_location_report.html:104 +#: report/templates/report/inventree_test_report.html:90 +#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159 +#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:656 +#: stock/templates/stock/item_base.html:287 +#: stock/templates/stock/item_base.html:295 +#: stock/templates/stock/item_base.html:342 +#: templates/email/build_order_completed.html:18 +#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522 +#: templates/js/translated/build.js:738 templates/js/translated/build.js:1544 +#: templates/js/translated/build.js:1921 templates/js/translated/build.js:2532 +#: templates/js/translated/company.js:1818 +#: templates/js/translated/model_renderers.js:236 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:967 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:3361 +#: templates/js/translated/pricing.js:381 +#: templates/js/translated/pricing.js:474 +#: templates/js/translated/pricing.js:522 +#: templates/js/translated/pricing.js:616 +#: templates/js/translated/purchase_order.js:754 +#: templates/js/translated/purchase_order.js:1852 +#: templates/js/translated/purchase_order.js:2071 +#: templates/js/translated/sales_order.js:317 +#: templates/js/translated/sales_order.js:1235 +#: templates/js/translated/sales_order.js:1554 +#: templates/js/translated/sales_order.js:1644 +#: templates/js/translated/sales_order.js:1734 +#: templates/js/translated/sales_order.js:1860 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 +msgid "Quantity" +msgstr "" + +#: build/models.py:1406 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1486 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1495 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1505 order/models.py:1908 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1511 order/models.py:1911 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1517 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1576 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1648 build/serializers.py:856 order/serializers.py:1228 +#: order/serializers.py:1249 stock/models.py:359 stock/serializers.py:93 +#: stock/serializers.py:759 stock/serializers.py:1247 stock/serializers.py:1359 +#: stock/templates/stock/item_base.html:10 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:194 +#: templates/js/translated/build.js:1920 +#: templates/js/translated/sales_order.js:301 +#: templates/js/translated/sales_order.js:1234 +#: templates/js/translated/sales_order.js:1535 +#: templates/js/translated/sales_order.js:1540 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1728 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2977 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1649 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1662 +msgid "Stock quantity to allocate to build" +msgstr "" + +#: build/models.py:1670 +msgid "Install into" +msgstr "" + +#: build/models.py:1671 +msgid "Destination stock item" +msgstr "" + +#: build/serializers.py:93 build/serializers.py:1138 build/serializers.py:1218 +#: part/admin.py:41 part/admin.py:405 part/models.py:4064 part/stocktake.py:220 +#: stock/admin.py:156 +msgid "Part Name" +msgstr "" + +#: build/serializers.py:105 +msgid "Project Code Label" +msgstr "" + +#: build/serializers.py:166 build/serializers.py:885 +#: templates/js/translated/build.js:1044 templates/js/translated/build.js:1497 +msgid "Build Output" +msgstr "" + +#: build/serializers.py:178 +msgid "Build output does not match the parent build" +msgstr "" + +#: build/serializers.py:182 +msgid "Output part does not match BuildOrder part" +msgstr "" + +#: build/serializers.py:186 +msgid "This build output has already been completed" +msgstr "" + +#: build/serializers.py:197 +msgid "This build output is not fully allocated" +msgstr "" + +#: build/serializers.py:217 build/serializers.py:264 +msgid "Enter quantity for build output" +msgstr "" + +#: build/serializers.py:285 +msgid "Integer quantity required for trackable parts" +msgstr "" + +#: build/serializers.py:288 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "" + +#: build/serializers.py:303 order/serializers.py:638 order/serializers.py:1388 +#: stock/serializers.py:676 templates/js/translated/purchase_order.js:1153 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 +msgid "Serial Numbers" +msgstr "" + +#: build/serializers.py:304 +msgid "Enter serial numbers for build outputs" +msgstr "" + +#: build/serializers.py:309 build/serializers.py:450 build/serializers.py:522 +#: order/serializers.py:614 order/serializers.py:722 order/serializers.py:1715 +#: part/serializers.py:1200 stock/serializers.py:102 stock/serializers.py:687 +#: stock/serializers.py:847 stock/serializers.py:943 stock/serializers.py:1391 +#: stock/serializers.py:1647 stock/templates/stock/item_base.html:394 +#: templates/js/translated/barcode.js:578 +#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1034 +#: templates/js/translated/build.js:1176 templates/js/translated/build.js:2547 +#: templates/js/translated/purchase_order.js:1178 +#: templates/js/translated/purchase_order.js:1268 +#: templates/js/translated/sales_order.js:1547 +#: templates/js/translated/sales_order.js:1655 +#: templates/js/translated/sales_order.js:1663 +#: templates/js/translated/sales_order.js:1742 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2201 +#: templates/js/translated/stock.js:2871 +msgid "Location" +msgstr "" + +#: build/serializers.py:310 +msgid "Stock location for build output" +msgstr "" + +#: build/serializers.py:324 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:325 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:340 +msgid "Serial numbers must be provided for trackable parts" +msgstr "" + +#: build/serializers.py:365 stock/api.py:1033 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:412 build/serializers.py:474 build/serializers.py:563 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:451 +msgid "Stock location for scrapped outputs" +msgstr "" + +#: build/serializers.py:457 +msgid "Discard Allocations" +msgstr "" + +#: build/serializers.py:458 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "" + +#: build/serializers.py:463 +msgid "Reason for scrapping build output(s)" +msgstr "" + +#: build/serializers.py:523 +msgid "Location for completed build outputs" +msgstr "" + +#: build/serializers.py:529 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:950 +#: order/models.py:2070 order/serializers.py:646 stock/admin.py:164 +#: stock/serializers.py:994 stock/serializers.py:1535 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366 +#: templates/js/translated/purchase_order.js:1308 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/return_order.js:330 +#: templates/js/translated/sales_order.js:855 +#: templates/js/translated/stock.js:2176 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 +msgid "Status" +msgstr "" + +#: build/serializers.py:535 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:536 +msgid "Complete outputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:621 +msgid "Consume Allocated Stock" +msgstr "" + +#: build/serializers.py:622 +msgid "Consume any stock which has already been allocated to this build" +msgstr "" + +#: build/serializers.py:628 +msgid "Remove Incomplete Outputs" +msgstr "" + +#: build/serializers.py:629 +msgid "Delete any build outputs which have not been completed" +msgstr "" + +#: build/serializers.py:656 +msgid "Not permitted" +msgstr "" + +#: build/serializers.py:657 +msgid "Accept as consumed by this build order" +msgstr "" + +#: build/serializers.py:658 +msgid "Deallocate before completing this build order" +msgstr "" + +#: build/serializers.py:688 +msgid "Overallocated Stock" +msgstr "" + +#: build/serializers.py:690 +msgid "How do you want to handle extra stock items assigned to the build order" +msgstr "" + +#: build/serializers.py:700 +msgid "Some stock items have been overallocated" +msgstr "" + +#: build/serializers.py:705 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:706 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:716 templates/js/translated/build.js:316 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:721 order/serializers.py:320 order/serializers.py:1291 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:722 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:732 templates/js/translated/build.js:320 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:741 templates/js/translated/build.js:304 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:779 +msgid "Build Line" +msgstr "" + +#: build/serializers.py:789 +msgid "Build output" +msgstr "" + +#: build/serializers.py:797 +msgid "Build output must point to the same build" +msgstr "" + +#: build/serializers.py:833 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:847 +msgid "bom_item.part must point to the same part as the build order" +msgstr "" + +#: build/serializers.py:862 stock/serializers.py:1260 +msgid "Item must be in stock" +msgstr "" + +#: build/serializers.py:910 order/serializers.py:1282 +#, python-brace-format +msgid "Available quantity ({q}) exceeded" +msgstr "" + +#: build/serializers.py:916 +msgid "Build output must be specified for allocation of tracked parts" +msgstr "" + +#: build/serializers.py:923 +msgid "Build output cannot be specified for allocation of untracked parts" +msgstr "" + +#: build/serializers.py:947 order/serializers.py:1534 +msgid "Allocation items must be provided" +msgstr "" + +#: build/serializers.py:1010 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" +msgstr "" + +#: build/serializers.py:1018 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:1019 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:1024 +msgid "Interchangeable Stock" +msgstr "" + +#: build/serializers.py:1025 +msgid "Stock items in multiple locations can be used interchangeably" +msgstr "" + +#: build/serializers.py:1030 +msgid "Substitute Stock" +msgstr "" + +#: build/serializers.py:1031 +msgid "Allow allocation of substitute parts" +msgstr "" + +#: build/serializers.py:1036 +msgid "Optional Items" +msgstr "" + +#: build/serializers.py:1037 +msgid "Allocate optional BOM items to build order" +msgstr "" + +#: build/serializers.py:1059 +msgid "Failed to start auto-allocation task" +msgstr "" + +#: build/serializers.py:1130 +msgid "Supplier Part Number" +msgstr "" + +#: build/serializers.py:1131 company/models.py:500 +msgid "Manufacturer Part Number" +msgstr "" + +#: build/serializers.py:1132 stock/admin.py:53 stock/admin.py:175 +#: stock/serializers.py:456 +msgid "Location Name" +msgstr "" + +#: build/serializers.py:1133 +msgid "Build Reference" +msgstr "" + +#: build/serializers.py:1134 +msgid "BOM Reference" +msgstr "" + +#: build/serializers.py:1137 part/admin.py:39 part/admin.py:398 +#: part/models.py:4063 part/stocktake.py:219 stock/admin.py:152 +msgid "Part ID" +msgstr "" + +#: build/serializers.py:1139 build/serializers.py:1219 part/admin.py:402 +#: part/models.py:4065 +msgid "Part IPN" +msgstr "" + +#: build/serializers.py:1152 stock/serializers.py:589 +#: templates/js/translated/build.js:1019 templates/js/translated/build.js:1166 +#: templates/js/translated/build.js:2519 +msgid "Allocated Quantity" +msgstr "" + +#: build/serializers.py:1153 stock/templates/stock/item_base.html:340 +msgid "Available Quantity" +msgstr "" + +#: build/serializers.py:1221 part/admin.py:45 part/stocktake.py:221 +msgid "Part Description" +msgstr "" + +#: build/serializers.py:1222 +msgid "Part Category ID" +msgstr "" + +#: build/serializers.py:1223 +msgid "Part Category Name" +msgstr "" + +#: build/serializers.py:1229 common/models.py:1494 part/admin.py:113 +#: part/models.py:1134 templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:776 +msgid "Trackable" +msgstr "" + +#: build/serializers.py:1230 +msgid "Inherited" +msgstr "" + +#: build/serializers.py:1231 part/models.py:4275 +#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046 +#: templates/js/translated/build.js:2714 +msgid "Allow Variants" +msgstr "" + +#: build/serializers.py:1235 part/models.py:4072 part/models.py:4544 +#: stock/api.py:796 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1244 build/templates/build/detail.html:236 +#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1249 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:887 part/serializers.py:1567 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2807 templates/js/translated/part.js:711 +#: templates/js/translated/part.js:2154 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1254 part/serializers.py:1569 +#: templates/js/translated/build.js:2811 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1259 part/bom.py:172 part/serializers.py:1594 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1929 +msgid "Available Stock" +msgstr "" + +#: build/serializers.py:1263 +msgid "Available Substitute Stock" +msgstr "" + +#: build/serializers.py:1264 +msgid "Available Variant Stock" +msgstr "" + +#: build/serializers.py:1265 +msgid "Total Available Stock" +msgstr "" + +#: build/serializers.py:1266 part/serializers.py:894 +msgid "External Stock" +msgstr "" + +#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12 +#: order/status_codes.py:37 order/status_codes.py:64 order/status_codes.py:82 +#: templates/js/translated/table_filters.js:598 +msgid "Pending" +msgstr "" + +#: build/status_codes.py:12 +msgid "Production" +msgstr "" + +#: build/status_codes.py:13 order/status_codes.py:15 order/status_codes.py:45 +#: order/status_codes.py:70 +msgid "Cancelled" +msgstr "" + +#: build/status_codes.py:14 generic/states/tests.py:19 importer/models.py:468 +#: importer/status_codes.py:19 order/status_codes.py:14 +#: order/status_codes.py:44 order/status_codes.py:69 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:165 report/models.py:444 +msgid "Complete" +msgstr "" + +#: build/tasks.py:184 +msgid "Stock required for build order" +msgstr "" + +#: build/tasks.py:201 +msgid "Overdue Build Order" +msgstr "" + +#: build/tasks.py:206 +#, python-brace-format +msgid "Build order {bo} is now overdue" +msgstr "" + +#: build/templates/build/build_base.html:18 +msgid "Part thumbnail" +msgstr "" + +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 +#: order/templates/order/order_base.html:29 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 +msgid "Barcode actions" +msgstr "" + +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 +#: order/templates/order/order_base.html:33 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 +msgid "Show QR Code" +msgstr "" + +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 +#: order/templates/order/order_base.html:36 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 +#: templates/js/translated/barcode.js:527 +#: templates/js/translated/barcode.js:532 +msgid "Unlink Barcode" +msgstr "" + +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 +#: order/templates/order/order_base.html:38 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 +msgid "Link Barcode" +msgstr "" + +#: build/templates/build/build_base.html:56 +#: order/templates/order/order_base.html:46 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 +msgid "Print actions" +msgstr "" + +#: build/templates/build/build_base.html:60 +msgid "Print build order report" +msgstr "" + +#: build/templates/build/build_base.html:67 +msgid "Build actions" +msgstr "" + +#: build/templates/build/build_base.html:71 +msgid "Edit Build" +msgstr "" + +#: build/templates/build/build_base.html:73 +msgid "Cancel Build" +msgstr "" + +#: build/templates/build/build_base.html:76 +msgid "Duplicate Build" +msgstr "" + +#: build/templates/build/build_base.html:79 +msgid "Delete Build" +msgstr "" + +#: build/templates/build/build_base.html:84 +#: build/templates/build/build_base.html:85 +msgid "Complete Build" +msgstr "" + +#: build/templates/build/build_base.html:107 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:117 +msgid "No build outputs have been created for this build order" +msgstr "" + +#: build/templates/build/build_base.html:124 +msgid "Build Order is ready to mark as completed" +msgstr "" + +#: build/templates/build/build_base.html:129 +msgid "Build Order cannot be completed as outstanding outputs remain" +msgstr "" + +#: build/templates/build/build_base.html:134 +msgid "Required build quantity has not yet been completed" +msgstr "" + +#: build/templates/build/build_base.html:139 +msgid "Stock has not been fully allocated to this Build Order" +msgstr "" + +#: build/templates/build/build_base.html:160 +#: build/templates/build/detail.html:138 order/models.py:309 +#: order/models.py:1307 order/serializers.py:175 +#: order/templates/order/order_base.html:186 +#: order/templates/order/return_order_base.html:164 +#: order/templates/order/sales_order_base.html:196 +#: report/templates/report/inventree_build_order_report.html:125 +#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1836 +#: templates/js/translated/purchase_order.js:1739 +#: templates/js/translated/purchase_order.js:2147 +#: templates/js/translated/return_order.js:346 +#: templates/js/translated/return_order.js:750 +#: templates/js/translated/sales_order.js:871 +#: templates/js/translated/sales_order.js:1903 +msgid "Target Date" +msgstr "" + +#: build/templates/build/build_base.html:165 +#, python-format +msgid "This build was due on %(target)s" +msgstr "" + +#: build/templates/build/build_base.html:165 +#: build/templates/build/build_base.html:222 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:126 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 +msgid "Overdue" +msgstr "" + +#: build/templates/build/build_base.html:177 +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" + +#: build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:101 order/api.py:1384 order/models.py:845 +#: order/models.py:1566 order/models.py:1681 order/models.py:1840 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:28 +#: report/templates/report/inventree_build_order_report.html:135 +#: report/templates/report/inventree_sales_order_report.html:14 +#: stock/templates/stock/item_base.html:369 +#: templates/email/overdue_sales_order.html:15 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:805 +#: templates/js/translated/sales_order.js:1028 +#: templates/js/translated/stock.js:2924 +msgid "Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:197 +#: build/templates/build/detail.html:115 +#: report/templates/report/inventree_build_order_report.html:152 +#: templates/js/translated/table_filters.js:24 +msgid "Issued By" +msgstr "" + +#: build/templates/build/build_base.html:211 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331 +msgid "Priority" +msgstr "" + +#: build/templates/build/build_base.html:269 +msgid "Delete Build Order" +msgstr "" + +#: build/templates/build/build_base.html:279 +msgid "Build Order QR Code" +msgstr "" + +#: build/templates/build/build_base.html:291 +msgid "Link Barcode to Build Order" +msgstr "" + +#: build/templates/build/detail.html:15 +msgid "Build Details" +msgstr "" + +#: build/templates/build/detail.html:38 +msgid "Stock Source" +msgstr "" + +#: build/templates/build/detail.html:43 +msgid "Stock can be taken from any available location." +msgstr "" + +#: build/templates/build/detail.html:49 order/models.py:1448 +#: templates/js/translated/purchase_order.js:2189 +msgid "Destination" +msgstr "" + +#: build/templates/build/detail.html:56 +msgid "Destination location not specified" +msgstr "" + +#: build/templates/build/detail.html:73 +msgid "Allocated Parts" +msgstr "" + +#: build/templates/build/detail.html:80 stock/admin.py:162 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1555 +#: templates/js/translated/model_renderers.js:241 +#: templates/js/translated/purchase_order.js:1274 +#: templates/js/translated/stock.js:1133 templates/js/translated/stock.js:2190 +#: templates/js/translated/stock.js:3127 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 +msgid "Batch" +msgstr "" + +#: build/templates/build/detail.html:133 +#: order/templates/order/order_base.html:173 +#: order/templates/order/return_order_base.html:151 +#: order/templates/order/sales_order_base.html:190 +#: templates/js/translated/build.js:2374 +msgid "Created" +msgstr "" + +#: build/templates/build/detail.html:144 +msgid "No target date set" +msgstr "" + +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:206 +#: templates/js/translated/table_filters.js:689 +msgid "Completed" +msgstr "" + +#: build/templates/build/detail.html:153 +msgid "Build not complete" +msgstr "" + +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:21 +msgid "Child Build Orders" +msgstr "" + +#: build/templates/build/detail.html:177 +msgid "Build Order Line Items" +msgstr "" + +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "" + +#: build/templates/build/detail.html:184 +msgid "Automatically allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:185 +msgid "Auto Allocate" +msgstr "" + +#: build/templates/build/detail.html:187 +msgid "Manually allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:188 +msgid "Allocate Stock" +msgstr "" + +#: build/templates/build/detail.html:191 +msgid "Order required parts" +msgstr "" + +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:795 +msgid "Order Parts" +msgstr "" + +#: build/templates/build/detail.html:205 +msgid "Available stock has been filtered based on specified source location for this build order" +msgstr "" + +#: build/templates/build/detail.html:215 +msgid "Incomplete Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:219 +msgid "Create new build output" +msgstr "" + +#: build/templates/build/detail.html:220 +msgid "New Build Output" +msgstr "" + +#: build/templates/build/detail.html:249 build/templates/build/sidebar.html:19 +msgid "Consumed Stock" +msgstr "" + +#: build/templates/build/detail.html:261 +msgid "Completed Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:273 build/templates/build/sidebar.html:23 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 +#: company/templates/company/manufacturer_part_sidebar.html:9 +#: company/templates/company/sidebar.html:39 +#: order/templates/order/po_sidebar.html:9 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 +#: order/templates/order/return_order_sidebar.html:7 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 +#: stock/templates/stock/stock_sidebar.html:23 +msgid "Attachments" +msgstr "" + +#: build/templates/build/detail.html:288 +msgid "Build Notes" +msgstr "" + +#: build/templates/build/detail.html:442 +msgid "Allocation Complete" +msgstr "" + +#: build/templates/build/detail.html:443 +msgid "All lines have been fully allocated" +msgstr "" + +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 +msgid "New Build Order" +msgstr "" + +#: build/templates/build/sidebar.html:5 +msgid "Build Order Details" +msgstr "" + +#: build/templates/build/sidebar.html:8 order/serializers.py:83 +#: order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_purchase_order_report.html:22 +#: report/templates/report/inventree_return_order_report.html:19 +#: report/templates/report/inventree_sales_order_report.html:22 +msgid "Line Items" +msgstr "" + +#: build/templates/build/sidebar.html:10 +msgid "Incomplete Outputs" +msgstr "" + +#: common/api.py:690 +msgid "Is Link" +msgstr "" + +#: common/api.py:698 +msgid "Is File" +msgstr "" + +#: common/api.py:740 +msgid "User does not have permission to delete this attachment" +msgstr "" + +#: common/currency.py:132 +msgid "Invalid currency code" +msgstr "" + +#: common/currency.py:134 +msgid "Duplicate currency code" +msgstr "" + +#: common/currency.py:139 +msgid "No valid currency codes provided" +msgstr "" + +#: common/currency.py:156 +msgid "No plugin" +msgstr "" + +#: common/files.py:63 +#, python-brace-format +msgid "Unsupported file format: {fmt}" +msgstr "" + +#: common/files.py:65 +msgid "Error reading file (invalid encoding)" +msgstr "" + +#: common/files.py:70 +msgid "Error reading file (invalid format)" +msgstr "" + +#: common/files.py:72 +msgid "Error reading file (incorrect dimension)" +msgstr "" + +#: common/files.py:74 +msgid "Error reading file (data could be corrupted)" +msgstr "" + +#: common/forms.py:12 +msgid "File" +msgstr "" + +#: common/forms.py:12 +msgid "Select file to upload" +msgstr "" + +#: common/forms.py:25 +msgid "{name.title()} File" +msgstr "" + +#: common/forms.py:26 +#, python-brace-format +msgid "Select {name} file to upload" +msgstr "" + +#: common/models.py:73 +msgid "Updated" +msgstr "" + +#: common/models.py:74 +msgid "Timestamp of last update" +msgstr "" + +#: common/models.py:107 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:137 +msgid "Unique project code" +msgstr "" + +#: common/models.py:144 +msgid "Project description" +msgstr "" + +#: common/models.py:153 +msgid "User or group responsible for this project" +msgstr "" + +#: common/models.py:770 +msgid "Settings key (must be unique - case insensitive)" +msgstr "" + +#: common/models.py:774 +msgid "Settings value" +msgstr "" + +#: common/models.py:826 +msgid "Chosen value is not a valid option" +msgstr "" + +#: common/models.py:842 +msgid "Value must be a boolean value" +msgstr "" + +#: common/models.py:850 +msgid "Value must be an integer value" +msgstr "" + +#: common/models.py:887 +msgid "Key string must be unique" +msgstr "" + +#: common/models.py:1119 +msgid "No group" +msgstr "" + +#: common/models.py:1218 +msgid "Restart required" +msgstr "" + +#: common/models.py:1220 +msgid "A setting has been changed which requires a server restart" +msgstr "" + +#: common/models.py:1227 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1228 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1233 +msgid "Server Instance Name" +msgstr "" + +#: common/models.py:1235 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:1239 +msgid "Use instance name" +msgstr "" + +#: common/models.py:1240 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:1245 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:1246 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:1251 company/models.py:111 company/models.py:112 +msgid "Company name" +msgstr "" + +#: common/models.py:1252 +msgid "Internal company name" +msgstr "" + +#: common/models.py:1256 +msgid "Base URL" +msgstr "" + +#: common/models.py:1257 +msgid "Base URL for server instance" +msgstr "" + +#: common/models.py:1263 +msgid "Default Currency" +msgstr "" + +#: common/models.py:1264 +msgid "Select base currency for pricing calculations" +msgstr "" + +#: common/models.py:1270 +msgid "Supported Currencies" +msgstr "" + +#: common/models.py:1271 +msgid "List of supported currency codes" +msgstr "" + +#: common/models.py:1277 +msgid "Currency Update Interval" +msgstr "" + +#: common/models.py:1279 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" + +#: common/models.py:1282 common/models.py:1338 common/models.py:1351 +#: common/models.py:1359 common/models.py:1368 common/models.py:1377 +#: common/models.py:1607 common/models.py:1629 common/models.py:1744 +#: common/models.py:2117 +msgid "days" +msgstr "" + +#: common/models.py:1286 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1287 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1292 +msgid "Download from URL" +msgstr "" + +#: common/models.py:1294 +msgid "Allow download of remote images and files from external URL" +msgstr "" + +#: common/models.py:1300 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1301 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1307 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1309 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "" + +#: common/models.py:1314 +msgid "Strict URL Validation" +msgstr "" + +#: common/models.py:1315 +msgid "Require schema specification when validating URLs" +msgstr "" + +#: common/models.py:1320 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1321 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1326 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1328 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1334 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1335 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1341 +msgid "Automatic Backup" +msgstr "" + +#: common/models.py:1342 +msgid "Enable automatic backup of database and media files" +msgstr "" + +#: common/models.py:1347 +msgid "Auto Backup Interval" +msgstr "" + +#: common/models.py:1348 +msgid "Specify number of days between automated backup events" +msgstr "" + +#: common/models.py:1354 +msgid "Task Deletion Interval" +msgstr "" + +#: common/models.py:1356 +msgid "Background task results will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1363 +msgid "Error Log Deletion Interval" +msgstr "" + +#: common/models.py:1365 +msgid "Error logs will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1372 +msgid "Notification Deletion Interval" +msgstr "" + +#: common/models.py:1374 +msgid "User notifications will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1381 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "" + +#: common/models.py:1382 +msgid "Enable barcode scanner support in the web interface" +msgstr "" + +#: common/models.py:1387 +msgid "Barcode Input Delay" +msgstr "" + +#: common/models.py:1388 +msgid "Barcode input processing delay time" +msgstr "" + +#: common/models.py:1394 +msgid "Barcode Webcam Support" +msgstr "" + +#: common/models.py:1395 +msgid "Allow barcode scanning via webcam in browser" +msgstr "" + +#: common/models.py:1400 +msgid "Barcode Show Data" +msgstr "" + +#: common/models.py:1401 +msgid "Display barcode data in browser as text" +msgstr "" + +#: common/models.py:1406 +msgid "Part Revisions" +msgstr "" + +#: common/models.py:1407 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1412 +msgid "Assembly Revision Only" +msgstr "" + +#: common/models.py:1413 +msgid "Only allow revisions for assembly parts" +msgstr "" + +#: common/models.py:1418 +msgid "Allow Deletion from Assembly" +msgstr "" + +#: common/models.py:1419 +msgid "Allow deletion of parts which are used in an assembly" +msgstr "" + +#: common/models.py:1424 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1425 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:1428 +msgid "Allow Duplicate IPN" +msgstr "" + +#: common/models.py:1429 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:1434 +msgid "Allow Editing IPN" +msgstr "" + +#: common/models.py:1435 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:1440 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1441 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1446 +msgid "Copy Part Parameter Data" +msgstr "" + +#: common/models.py:1447 +msgid "Copy parameter data by default when duplicating a part" +msgstr "" + +#: common/models.py:1452 +msgid "Copy Part Test Data" +msgstr "" + +#: common/models.py:1453 +msgid "Copy test data by default when duplicating a part" +msgstr "" + +#: common/models.py:1458 +msgid "Copy Category Parameter Templates" +msgstr "" + +#: common/models.py:1459 +msgid "Copy category parameter templates when creating a part" +msgstr "" + +#: common/models.py:1464 part/admin.py:108 part/models.py:3907 +#: report/models.py:294 report/models.py:361 report/serializers.py:90 +#: report/serializers.py:131 stock/serializers.py:232 +#: templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:772 +msgid "Template" +msgstr "" + +#: common/models.py:1465 +msgid "Parts are templates by default" +msgstr "" + +#: common/models.py:1470 part/admin.py:91 part/admin.py:425 part/models.py:1122 +#: templates/js/translated/bom.js:1639 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:726 +msgid "Assembly" +msgstr "" + +#: common/models.py:1471 +msgid "Parts can be assembled from other components by default" +msgstr "" + +#: common/models.py:1476 part/admin.py:95 part/models.py:1128 +#: templates/js/translated/table_filters.js:734 +msgid "Component" +msgstr "" + +#: common/models.py:1477 +msgid "Parts can be used as sub-components by default" +msgstr "" + +#: common/models.py:1482 part/admin.py:100 part/models.py:1140 +msgid "Purchaseable" +msgstr "" + +#: common/models.py:1483 +msgid "Parts are purchaseable by default" +msgstr "" + +#: common/models.py:1488 part/admin.py:104 part/models.py:1146 +#: templates/js/translated/table_filters.js:760 +msgid "Salable" +msgstr "" + +#: common/models.py:1489 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1495 +msgid "Parts are trackable by default" +msgstr "" + +#: common/models.py:1500 part/admin.py:117 part/models.py:1162 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:780 +msgid "Virtual" +msgstr "" + +#: common/models.py:1501 +msgid "Parts are virtual by default" +msgstr "" + +#: common/models.py:1506 +msgid "Show Import in Views" +msgstr "" + +#: common/models.py:1507 +msgid "Display the import wizard in some part views" +msgstr "" + +#: common/models.py:1512 +msgid "Show related parts" +msgstr "" + +#: common/models.py:1513 +msgid "Display related parts for a part" +msgstr "" + +#: common/models.py:1518 +msgid "Initial Stock Data" +msgstr "" + +#: common/models.py:1519 +msgid "Allow creation of initial stock when adding a new part" +msgstr "" + +#: common/models.py:1524 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "" + +#: common/models.py:1526 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "" + +#: common/models.py:1532 +msgid "Part Name Display Format" +msgstr "" + +#: common/models.py:1533 +msgid "Format to display the part name" +msgstr "" + +#: common/models.py:1539 +msgid "Part Category Default Icon" +msgstr "" + +#: common/models.py:1540 +msgid "Part category default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1544 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1546 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1552 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1554 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1565 +msgid "Maximum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1567 +msgid "Maximum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1578 +msgid "Use Supplier Pricing" +msgstr "" + +#: common/models.py:1580 +msgid "Include supplier price breaks in overall pricing calculations" +msgstr "" + +#: common/models.py:1586 +msgid "Purchase History Override" +msgstr "" + +#: common/models.py:1588 +msgid "Historical purchase order pricing overrides supplier price breaks" +msgstr "" + +#: common/models.py:1594 +msgid "Use Stock Item Pricing" +msgstr "" + +#: common/models.py:1596 +msgid "Use pricing from manually entered stock data for pricing calculations" +msgstr "" + +#: common/models.py:1602 +msgid "Stock Item Pricing Age" +msgstr "" + +#: common/models.py:1604 +msgid "Exclude stock items older than this number of days from pricing calculations" +msgstr "" + +#: common/models.py:1611 +msgid "Use Variant Pricing" +msgstr "" + +#: common/models.py:1612 +msgid "Include variant pricing in overall pricing calculations" +msgstr "" + +#: common/models.py:1617 +msgid "Active Variants Only" +msgstr "" + +#: common/models.py:1619 +msgid "Only use active variant parts for calculating variant pricing" +msgstr "" + +#: common/models.py:1625 +msgid "Pricing Rebuild Interval" +msgstr "" + +#: common/models.py:1627 +msgid "Number of days before part pricing is automatically updated" +msgstr "" + +#: common/models.py:1634 +msgid "Internal Prices" +msgstr "" + +#: common/models.py:1635 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:1640 +msgid "Internal Price Override" +msgstr "" + +#: common/models.py:1642 +msgid "If available, internal prices override price range calculations" +msgstr "" + +#: common/models.py:1648 +msgid "Enable label printing" +msgstr "" + +#: common/models.py:1649 +msgid "Enable label printing from the web interface" +msgstr "" + +#: common/models.py:1654 +msgid "Label Image DPI" +msgstr "" + +#: common/models.py:1656 +msgid "DPI resolution when generating image files to supply to label printing plugins" +msgstr "" + +#: common/models.py:1662 +msgid "Enable Reports" +msgstr "" + +#: common/models.py:1663 +msgid "Enable generation of reports" +msgstr "" + +#: common/models.py:1668 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:1669 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:1674 +msgid "Log Report Errors" +msgstr "" + +#: common/models.py:1675 +msgid "Log errors which occur when generating reports" +msgstr "" + +#: common/models.py:1680 plugin/builtin/labels/label_sheet.py:29 +#: report/models.py:302 +msgid "Page Size" +msgstr "" + +#: common/models.py:1681 +msgid "Default page size for PDF reports" +msgstr "" + +#: common/models.py:1686 +msgid "Enable Test Reports" +msgstr "" + +#: common/models.py:1687 +msgid "Enable generation of test reports" +msgstr "" + +#: common/models.py:1692 +msgid "Attach Test Reports" +msgstr "" + +#: common/models.py:1694 +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgstr "" + +#: common/models.py:1700 +msgid "Globally Unique Serials" +msgstr "" + +#: common/models.py:1701 +msgid "Serial numbers for stock items must be globally unique" +msgstr "" + +#: common/models.py:1706 +msgid "Autofill Serial Numbers" +msgstr "" + +#: common/models.py:1707 +msgid "Autofill serial numbers in forms" +msgstr "" + +#: common/models.py:1712 +msgid "Delete Depleted Stock" +msgstr "" + +#: common/models.py:1714 +msgid "Determines default behavior when a stock item is depleted" +msgstr "" + +#: common/models.py:1720 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:1722 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1727 +msgid "Stock Expiry" +msgstr "" + +#: common/models.py:1728 +msgid "Enable stock expiry functionality" +msgstr "" + +#: common/models.py:1733 +msgid "Sell Expired Stock" +msgstr "" + +#: common/models.py:1734 +msgid "Allow sale of expired stock" +msgstr "" + +#: common/models.py:1739 +msgid "Stock Stale Time" +msgstr "" + +#: common/models.py:1741 +msgid "Number of days stock items are considered stale before expiring" +msgstr "" + +#: common/models.py:1748 +msgid "Build Expired Stock" +msgstr "" + +#: common/models.py:1749 +msgid "Allow building with expired stock" +msgstr "" + +#: common/models.py:1754 +msgid "Stock Ownership Control" +msgstr "" + +#: common/models.py:1755 +msgid "Enable ownership control over stock locations and items" +msgstr "" + +#: common/models.py:1760 +msgid "Stock Location Default Icon" +msgstr "" + +#: common/models.py:1761 +msgid "Stock location default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1765 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1766 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1771 +msgid "Check BOM when installing items" +msgstr "" + +#: common/models.py:1773 +msgid "Installed stock items must exist in the BOM for the parent part" +msgstr "" + +#: common/models.py:1779 +msgid "Allow Out of Stock Transfer" +msgstr "" + +#: common/models.py:1781 +msgid "Allow stock items which are not in stock to be transferred between stock locations" +msgstr "" + +#: common/models.py:1787 +msgid "Build Order Reference Pattern" +msgstr "" + +#: common/models.py:1789 +msgid "Required pattern for generating Build Order reference field" +msgstr "" + +#: common/models.py:1795 common/models.py:1843 common/models.py:1865 +#: common/models.py:1901 +msgid "Require Responsible Owner" +msgstr "" + +#: common/models.py:1796 common/models.py:1844 common/models.py:1866 +#: common/models.py:1902 +msgid "A responsible owner must be assigned to each order" +msgstr "" + +#: common/models.py:1801 +msgid "Require Active Part" +msgstr "" + +#: common/models.py:1802 +msgid "Prevent build order creation for inactive parts" +msgstr "" + +#: common/models.py:1807 +msgid "Require Locked Part" +msgstr "" + +#: common/models.py:1808 +msgid "Prevent build order creation for unlocked parts" +msgstr "" + +#: common/models.py:1813 +msgid "Require Valid BOM" +msgstr "" + +#: common/models.py:1815 +msgid "Prevent build order creation unless BOM has been validated" +msgstr "" + +#: common/models.py:1821 +msgid "Block Until Tests Pass" +msgstr "" + +#: common/models.py:1823 +msgid "Prevent build outputs from being completed until all required tests pass" +msgstr "" + +#: common/models.py:1829 +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1830 +msgid "Enable return order functionality in the user interface" +msgstr "" + +#: common/models.py:1835 +msgid "Return Order Reference Pattern" +msgstr "" + +#: common/models.py:1837 +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1849 +msgid "Edit Completed Return Orders" +msgstr "" + +#: common/models.py:1851 +msgid "Allow editing of return orders after they have been completed" +msgstr "" + +#: common/models.py:1857 +msgid "Sales Order Reference Pattern" +msgstr "" + +#: common/models.py:1859 +msgid "Required pattern for generating Sales Order reference field" +msgstr "" + +#: common/models.py:1871 +msgid "Sales Order Default Shipment" +msgstr "" + +#: common/models.py:1872 +msgid "Enable creation of default shipment with sales orders" +msgstr "" + +#: common/models.py:1877 +msgid "Edit Completed Sales Orders" +msgstr "" + +#: common/models.py:1879 +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1885 +msgid "Mark Shipped Orders as Complete" +msgstr "" + +#: common/models.py:1887 +msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status" +msgstr "" + +#: common/models.py:1893 +msgid "Purchase Order Reference Pattern" +msgstr "" + +#: common/models.py:1895 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "" + +#: common/models.py:1907 +msgid "Edit Completed Purchase Orders" +msgstr "" + +#: common/models.py:1909 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1915 +msgid "Auto Complete Purchase Orders" +msgstr "" + +#: common/models.py:1917 +msgid "Automatically mark purchase orders as complete when all line items are received" +msgstr "" + +#: common/models.py:1924 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1925 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1930 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1931 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1936 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1937 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1942 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1944 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1950 +msgid "Enable SSO group sync" +msgstr "" + +#: common/models.py:1952 +msgid "Enable synchronizing InvenTree groups with groups provided by the IdP" +msgstr "" + +#: common/models.py:1958 +msgid "SSO group key" +msgstr "" + +#: common/models.py:1960 +msgid "The name of the groups claim attribute provided by the IdP" +msgstr "" + +#: common/models.py:1966 +msgid "SSO group map" +msgstr "" + +#: common/models.py:1968 +msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created." +msgstr "" + +#: common/models.py:1974 +msgid "Remove groups outside of SSO" +msgstr "" + +#: common/models.py:1976 +msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues" +msgstr "" + +#: common/models.py:1982 +msgid "Email required" +msgstr "" + +#: common/models.py:1983 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1988 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1990 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "" + +#: common/models.py:1996 +msgid "Mail twice" +msgstr "" + +#: common/models.py:1997 +msgid "On signup ask users twice for their mail" +msgstr "" + +#: common/models.py:2002 +msgid "Password twice" +msgstr "" + +#: common/models.py:2003 +msgid "On signup ask users twice for their password" +msgstr "" + +#: common/models.py:2008 +msgid "Allowed domains" +msgstr "" + +#: common/models.py:2010 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "" + +#: common/models.py:2016 +msgid "Group on signup" +msgstr "" + +#: common/models.py:2018 +msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP." +msgstr "" + +#: common/models.py:2024 +msgid "Enforce MFA" +msgstr "" + +#: common/models.py:2025 +msgid "Users must use multifactor security." +msgstr "" + +#: common/models.py:2030 +msgid "Check plugins on startup" +msgstr "" + +#: common/models.py:2032 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "" + +#: common/models.py:2040 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:2041 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:2047 +msgid "Enable URL integration" +msgstr "" + +#: common/models.py:2048 +msgid "Enable plugins to add URL routes" +msgstr "" + +#: common/models.py:2054 +msgid "Enable navigation integration" +msgstr "" + +#: common/models.py:2055 +msgid "Enable plugins to integrate into navigation" +msgstr "" + +#: common/models.py:2061 +msgid "Enable app integration" +msgstr "" + +#: common/models.py:2062 +msgid "Enable plugins to add apps" +msgstr "" + +#: common/models.py:2068 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:2069 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:2075 +msgid "Enable event integration" +msgstr "" + +#: common/models.py:2076 +msgid "Enable plugins to respond to internal events" +msgstr "" + +#: common/models.py:2082 +msgid "Enable project codes" +msgstr "" + +#: common/models.py:2083 +msgid "Enable project codes for tracking projects" +msgstr "" + +#: common/models.py:2088 +msgid "Stocktake Functionality" +msgstr "" + +#: common/models.py:2090 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "" + +#: common/models.py:2096 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:2098 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:2104 +msgid "Automatic Stocktake Period" +msgstr "" + +#: common/models.py:2106 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "" + +#: common/models.py:2112 +msgid "Report Deletion Interval" +msgstr "" + +#: common/models.py:2114 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "" + +#: common/models.py:2121 +msgid "Display Users full names" +msgstr "" + +#: common/models.py:2122 +msgid "Display Users full names instead of usernames" +msgstr "" + +#: common/models.py:2127 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2128 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2140 common/models.py:2520 +msgid "Settings key (must be unique - case insensitive" +msgstr "" + +#: common/models.py:2183 +msgid "Hide inactive parts" +msgstr "" + +#: common/models.py:2185 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" + +#: common/models.py:2191 +msgid "Show subscribed parts" +msgstr "" + +#: common/models.py:2192 +msgid "Show subscribed parts on the homepage" +msgstr "" + +#: common/models.py:2197 +msgid "Show subscribed categories" +msgstr "" + +#: common/models.py:2198 +msgid "Show subscribed part categories on the homepage" +msgstr "" + +#: common/models.py:2203 +msgid "Show latest parts" +msgstr "" + +#: common/models.py:2204 +msgid "Show latest parts on the homepage" +msgstr "" + +#: common/models.py:2209 +msgid "Show invalid BOMs" +msgstr "" + +#: common/models.py:2210 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:2215 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:2216 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:2221 +msgid "Show low stock" +msgstr "" + +#: common/models.py:2222 +msgid "Show low stock items on the homepage" +msgstr "" + +#: common/models.py:2227 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:2228 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:2233 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:2234 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:2239 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:2240 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:2245 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:2246 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:2251 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:2252 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:2257 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:2258 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:2263 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:2264 +msgid "Show outstanding POs on the homepage" +msgstr "" + +#: common/models.py:2269 +msgid "Show overdue POs" +msgstr "" + +#: common/models.py:2270 +msgid "Show overdue POs on the homepage" +msgstr "" + +#: common/models.py:2275 +msgid "Show outstanding SOs" +msgstr "" + +#: common/models.py:2276 +msgid "Show outstanding SOs on the homepage" +msgstr "" + +#: common/models.py:2281 +msgid "Show overdue SOs" +msgstr "" + +#: common/models.py:2282 +msgid "Show overdue SOs on the homepage" +msgstr "" + +#: common/models.py:2287 +msgid "Show pending SO shipments" +msgstr "" + +#: common/models.py:2288 +msgid "Show pending SO shipments on the homepage" +msgstr "" + +#: common/models.py:2293 +msgid "Show News" +msgstr "" + +#: common/models.py:2294 +msgid "Show news on the homepage" +msgstr "" + +#: common/models.py:2299 +msgid "Inline label display" +msgstr "" + +#: common/models.py:2301 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2307 +msgid "Default label printer" +msgstr "" + +#: common/models.py:2309 +msgid "Configure which label printer should be selected by default" +msgstr "" + +#: common/models.py:2315 +msgid "Inline report display" +msgstr "" + +#: common/models.py:2317 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2323 +msgid "Search Parts" +msgstr "" + +#: common/models.py:2324 +msgid "Display parts in search preview window" +msgstr "" + +#: common/models.py:2329 +msgid "Search Supplier Parts" +msgstr "" + +#: common/models.py:2330 +msgid "Display supplier parts in search preview window" +msgstr "" + +#: common/models.py:2335 +msgid "Search Manufacturer Parts" +msgstr "" + +#: common/models.py:2336 +msgid "Display manufacturer parts in search preview window" +msgstr "" + +#: common/models.py:2341 +msgid "Hide Inactive Parts" +msgstr "" + +#: common/models.py:2342 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2347 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2348 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2353 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2354 +msgid "Display stock items in search preview window" +msgstr "" + +#: common/models.py:2359 +msgid "Hide Unavailable Stock Items" +msgstr "" + +#: common/models.py:2361 +msgid "Exclude stock items which are not available from the search preview window" +msgstr "" + +#: common/models.py:2367 +msgid "Search Locations" +msgstr "" + +#: common/models.py:2368 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2373 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2374 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2379 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2380 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2385 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2386 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2391 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2393 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2399 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2400 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2405 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2407 +msgid "Exclude inactive sales orders from search preview window" +msgstr "" + +#: common/models.py:2413 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2414 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2419 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2421 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2427 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2429 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2435 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2436 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2441 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2442 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2447 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2448 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2453 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2454 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2459 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2460 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2465 +msgid "Date Format" +msgstr "" + +#: common/models.py:2466 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2479 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2480 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2485 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2487 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2493 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2495 +msgid "Maximum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2501 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2502 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2507 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2508 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2528 common/models.py:2529 common/models.py:2678 +#: common/models.py:2679 common/models.py:2924 common/models.py:2925 +#: common/models.py:3251 common/models.py:3252 importer/models.py:85 +#: part/models.py:3269 part/models.py:3356 part/models.py:3430 +#: part/models.py:3458 plugin/models.py:274 plugin/models.py:275 +#: report/templates/report/inventree_test_report.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:111 +msgid "User" +msgstr "" + +#: common/models.py:2551 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2558 company/serializers.py:506 order/admin.py:42 +#: order/models.py:1346 order/models.py:2292 +#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1891 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:740 +msgid "Price" +msgstr "" + +#: common/models.py:2559 +msgid "Unit price at specified quantity" +msgstr "" + +#: common/models.py:2655 common/models.py:2840 +msgid "Endpoint" +msgstr "" + +#: common/models.py:2656 +msgid "Endpoint at which this webhook is received" +msgstr "" + +#: common/models.py:2666 +msgid "Name for this webhook" +msgstr "" + +#: common/models.py:2670 +msgid "Is this webhook active" +msgstr "" + +#: common/models.py:2686 users/models.py:159 +msgid "Token" +msgstr "" + +#: common/models.py:2687 +msgid "Token for access" +msgstr "" + +#: common/models.py:2695 +msgid "Secret" +msgstr "" + +#: common/models.py:2696 +msgid "Shared secret for HMAC" +msgstr "" + +#: common/models.py:2804 +msgid "Message ID" +msgstr "" + +#: common/models.py:2805 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:2813 +msgid "Host" +msgstr "" + +#: common/models.py:2814 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:2822 +msgid "Header" +msgstr "" + +#: common/models.py:2823 +msgid "Header of this message" +msgstr "" + +#: common/models.py:2830 +msgid "Body" +msgstr "" + +#: common/models.py:2831 +msgid "Body of this message" +msgstr "" + +#: common/models.py:2841 +msgid "Endpoint on which this message was received" +msgstr "" + +#: common/models.py:2846 +msgid "Worked on" +msgstr "" + +#: common/models.py:2847 +msgid "Was the work on this message finished?" +msgstr "" + +#: common/models.py:2973 +msgid "Id" +msgstr "" + +#: common/models.py:2975 templates/js/translated/company.js:965 +#: templates/js/translated/news.js:44 +msgid "Title" +msgstr "" + +#: common/models.py:2977 common/models.py:3235 company/models.py:149 +#: company/models.py:446 company/models.py:506 company/models.py:806 +#: order/models.py:303 order/models.py:1301 order/models.py:1733 +#: part/admin.py:55 part/models.py:1025 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_report.html:164 +#: stock/admin.py:229 templates/js/translated/company.js:1319 +#: templates/js/translated/company.js:1673 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2475 +#: templates/js/translated/purchase_order.js:2040 +#: templates/js/translated/purchase_order.js:2204 +#: templates/js/translated/return_order.js:779 +#: templates/js/translated/sales_order.js:1092 +#: templates/js/translated/sales_order.js:2023 +msgid "Link" +msgstr "" + +#: common/models.py:2979 templates/js/translated/news.js:60 +msgid "Published" +msgstr "" + +#: common/models.py:2981 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 +msgid "Author" +msgstr "" + +#: common/models.py:2983 templates/js/translated/news.js:52 +msgid "Summary" +msgstr "" + +#: common/models.py:2986 +msgid "Read" +msgstr "" + +#: common/models.py:2986 +msgid "Was this news item read?" +msgstr "" + +#: common/models.py:3003 company/models.py:159 part/models.py:1035 +#: report/templates/report/inventree_bill_of_materials_report.html:126 +#: report/templates/report/inventree_bill_of_materials_report.html:148 +#: report/templates/report/inventree_return_order_report.html:35 +#: stock/templates/stock/item_base.html:133 templates/503.html:31 +#: templates/hover_image.html:7 templates/hover_image.html:9 +#: templates/modals.html:6 +msgid "Image" +msgstr "" + +#: common/models.py:3003 +msgid "Image file" +msgstr "" + +#: common/models.py:3015 common/models.py:3219 +msgid "Target model type for this image" +msgstr "" + +#: common/models.py:3019 +msgid "Target model ID for this image" +msgstr "" + +#: common/models.py:3041 +msgid "Custom Unit" +msgstr "" + +#: common/models.py:3062 +msgid "Unit symbol must be unique" +msgstr "" + +#: common/models.py:3077 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:3096 +msgid "Unit name" +msgstr "" + +#: common/models.py:3103 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:3104 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:3110 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:3111 +msgid "Unit definition" +msgstr "" + +#: common/models.py:3169 common/models.py:3226 stock/models.py:2473 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:345 +msgid "Attachment" +msgstr "" + +#: common/models.py:3181 +msgid "Missing file" +msgstr "" + +#: common/models.py:3182 +msgid "Missing external link" +msgstr "" + +#: common/models.py:3227 +msgid "Select file to attach" +msgstr "" + +#: common/models.py:3242 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:360 +msgid "Comment" +msgstr "" + +#: common/models.py:3243 +msgid "Attachment comment" +msgstr "" + +#: common/models.py:3259 +msgid "Upload date" +msgstr "" + +#: common/models.py:3260 +msgid "Date the file was uploaded" +msgstr "" + +#: common/models.py:3264 +msgid "File size" +msgstr "" + +#: common/models.py:3264 +msgid "File size in bytes" +msgstr "" + +#: common/models.py:3302 common/serializers.py:557 +msgid "Invalid model type specified for attachment" +msgstr "" + +#: common/notifications.py:314 +#, python-brace-format +msgid "New {verbose_name}" +msgstr "" + +#: common/notifications.py:316 +msgid "A new order has been created and assigned to you" +msgstr "" + +#: common/notifications.py:322 +#, python-brace-format +msgid "{verbose_name} canceled" +msgstr "" + +#: common/notifications.py:324 +msgid "A order that is assigned to you was canceled" +msgstr "" + +#: common/notifications.py:330 common/notifications.py:337 order/api.py:454 +msgid "Items Received" +msgstr "" + +#: common/notifications.py:332 +msgid "Items have been received against a purchase order" +msgstr "" + +#: common/notifications.py:339 +msgid "Items have been received against a return order" +msgstr "" + +#: common/notifications.py:457 +msgid "Error raised by plugin" +msgstr "" + +#: common/serializers.py:375 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:381 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:387 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:393 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:408 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:408 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:410 +msgid "Lock" +msgstr "" + +#: common/serializers.py:410 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:412 +msgid "Task name" +msgstr "" + +#: common/serializers.py:414 +msgid "Function" +msgstr "" + +#: common/serializers.py:414 +msgid "Function name" +msgstr "" + +#: common/serializers.py:416 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:416 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:419 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:419 +msgid "Task keyword arguments" +msgstr "" + +#: common/serializers.py:529 +msgid "Filename" +msgstr "" + +#: common/serializers.py:536 report/api.py:100 report/serializers.py:53 +msgid "Model Type" +msgstr "" + +#: common/serializers.py:563 +msgid "User does not have permission to create or edit attachments for this model" +msgstr "" + +#: common/validators.py:33 +msgid "No attachment model type provided" +msgstr "" + +#: common/validators.py:39 +msgid "Invalid attachment model type" +msgstr "" + +#: common/validators.py:80 +msgid "Minimum places cannot be greater than maximum places" +msgstr "" + +#: common/validators.py:92 +msgid "Maximum places cannot be less than minimum places" +msgstr "" + +#: common/validators.py:103 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/validators.py:105 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "" + +#: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 +#: order/templates/order/purchase_order_detail.html:24 order/views.py:118 +#: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 +#: templates/patterns/wizard/upload.html:37 +msgid "Upload File" +msgstr "" + +#: common/views.py:84 order/templates/order/order_wizard/match_fields.html:52 +#: order/views.py:119 +#: part/templates/part/import_wizard/ajax_match_fields.html:45 +#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:110 +#: templates/patterns/wizard/match_fields.html:51 +msgid "Match Fields" +msgstr "" + +#: common/views.py:84 +msgid "Match Items" +msgstr "" + +#: common/views.py:401 +msgid "Fields matching failed" +msgstr "" + +#: common/views.py:464 +msgid "Parts imported" +msgstr "" + +#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27 +#: order/templates/order/order_wizard/match_parts.html:19 +#: order/templates/order/order_wizard/po_upload.html:49 +#: part/templates/part/import_wizard/match_fields.html:27 +#: part/templates/part/import_wizard/match_references.html:19 +#: part/templates/part/import_wizard/part_upload.html:56 +#: templates/patterns/wizard/match_fields.html:26 +#: templates/patterns/wizard/upload.html:35 +msgid "Previous Step" +msgstr "" + +#: company/api.py:141 +msgid "Part is Active" +msgstr "" + +#: company/api.py:145 +msgid "Manufacturer is Active" +msgstr "" + +#: company/api.py:278 +msgid "Supplier Part is Active" +msgstr "" + +#: company/api.py:282 +msgid "Internal Part is Active" +msgstr "" + +#: company/api.py:286 +msgid "Supplier is Active" +msgstr "" + +#: company/models.py:100 company/models.py:371 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:814 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496 +msgid "Company" +msgstr "" + +#: company/models.py:101 company/views.py:51 +#: templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/models.py:117 +msgid "Company description" +msgstr "" + +#: company/models.py:118 +msgid "Description of the company" +msgstr "" + +#: company/models.py:123 company/templates/company/company_base.html:106 +#: templates/InvenTree/settings/plugin_settings.html:54 +#: templates/js/translated/company.js:532 +msgid "Website" +msgstr "" + +#: company/models.py:123 +msgid "Company website URL" +msgstr "" + +#: company/models.py:128 +msgid "Phone number" +msgstr "" + +#: company/models.py:130 +msgid "Contact phone number" +msgstr "" + +#: company/models.py:137 +msgid "Contact email address" +msgstr "" + +#: company/models.py:142 company/models.py:275 +#: company/templates/company/company_base.html:145 order/models.py:343 +#: order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:218 +msgid "Contact" +msgstr "" + +#: company/models.py:144 +msgid "Point of contact" +msgstr "" + +#: company/models.py:150 +msgid "Link to external company information" +msgstr "" + +#: company/models.py:163 +msgid "Is this company active?" +msgstr "" + +#: company/models.py:168 +msgid "Is customer" +msgstr "" + +#: company/models.py:169 +msgid "Do you sell items to this company?" +msgstr "" + +#: company/models.py:174 +msgid "Is supplier" +msgstr "" + +#: company/models.py:175 +msgid "Do you purchase items from this company?" +msgstr "" + +#: company/models.py:180 +msgid "Is manufacturer" +msgstr "" + +#: company/models.py:181 +msgid "Does this company manufacture parts?" +msgstr "" + +#: company/models.py:189 +msgid "Default currency used for this company" +msgstr "" + +#: company/models.py:314 company/templates/company/company_base.html:124 +#: order/models.py:353 order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:225 +msgid "Address" +msgstr "" + +#: company/models.py:315 company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + +#: company/models.py:372 +msgid "Select company" +msgstr "" + +#: company/models.py:377 +msgid "Address title" +msgstr "" + +#: company/models.py:378 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:384 +msgid "Primary address" +msgstr "" + +#: company/models.py:385 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:390 templates/js/translated/company.js:914 +#: templates/js/translated/company.js:971 +msgid "Line 1" +msgstr "" + +#: company/models.py:391 +msgid "Address line 1" +msgstr "" + +#: company/models.py:397 templates/js/translated/company.js:915 +#: templates/js/translated/company.js:977 +msgid "Line 2" +msgstr "" + +#: company/models.py:398 +msgid "Address line 2" +msgstr "" + +#: company/models.py:404 company/models.py:405 +#: templates/js/translated/company.js:983 +msgid "Postal code" +msgstr "" + +#: company/models.py:411 +msgid "City/Region" +msgstr "" + +#: company/models.py:412 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:418 +msgid "State/Province" +msgstr "" + +#: company/models.py:419 +msgid "State or province" +msgstr "" + +#: company/models.py:425 templates/js/translated/company.js:1001 +msgid "Country" +msgstr "" + +#: company/models.py:426 +msgid "Address country" +msgstr "" + +#: company/models.py:432 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:433 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:439 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:440 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:447 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:469 company/models.py:581 company/models.py:799 +#: company/templates/company/manufacturer_part.html:7 +#: company/templates/company/manufacturer_part.html:24 +#: stock/templates/stock/item_base.html:217 +msgid "Manufacturer Part" +msgstr "" + +#: company/models.py:481 company/models.py:767 stock/models.py:765 +#: stock/serializers.py:444 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 +msgid "Base Part" +msgstr "" + +#: company/models.py:483 company/models.py:769 +msgid "Select part" +msgstr "" + +#: company/models.py:492 company/templates/company/company_base.html:82 +#: company/templates/company/manufacturer_part.html:90 +#: company/templates/company/supplier_part.html:145 part/serializers.py:543 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:507 +#: templates/js/translated/company.js:1118 +#: templates/js/translated/company.js:1296 +#: templates/js/translated/company.js:1611 +#: templates/js/translated/table_filters.js:805 +msgid "Manufacturer" +msgstr "" + +#: company/models.py:493 +msgid "Select manufacturer" +msgstr "" + +#: company/models.py:499 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 order/serializers.py:519 +#: part/serializers.py:553 templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1117 +#: templates/js/translated/company.js:1312 +#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1806 +#: templates/js/translated/purchase_order.js:1851 +#: templates/js/translated/purchase_order.js:2053 +msgid "MPN" +msgstr "" + +#: company/models.py:507 +msgid "URL for external manufacturer part link" +msgstr "" + +#: company/models.py:516 +msgid "Manufacturer part description" +msgstr "" + +#: company/models.py:569 +msgid "Manufacturer Part Parameter" +msgstr "" + +#: company/models.py:588 +msgid "Parameter name" +msgstr "" + +#: company/models.py:594 report/templates/report/inventree_test_report.html:104 +#: stock/models.py:2465 templates/js/translated/company.js:1166 +#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1498 +#: templates/js/translated/stock.js:1522 +msgid "Value" +msgstr "" + +#: company/models.py:595 +msgid "Parameter value" +msgstr "" + +#: company/models.py:602 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1115 part/models.py:3733 +#: part/templates/part/part_base.html:293 +#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1517 +#: templates/js/translated/part.js:1621 templates/js/translated/part.js:2376 +msgid "Units" +msgstr "" + +#: company/models.py:603 +msgid "Parameter units" +msgstr "" + +#: company/models.py:655 company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 order/api.py:434 +#: stock/models.py:776 stock/templates/stock/item_base.html:233 +#: templates/js/translated/build.js:1054 +#: templates/js/translated/company.js:1600 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2280 +msgid "Supplier Part" +msgstr "" + +#: company/models.py:707 +msgid "Pack units must be compatible with the base part units" +msgstr "" + +#: company/models.py:714 +msgid "Pack units must be greater than zero" +msgstr "" + +#: company/models.py:728 +msgid "Linked manufacturer part must reference the same base part" +msgstr "" + +#: company/models.py:777 company/templates/company/company_base.html:87 +#: company/templates/company/supplier_part.html:129 order/models.py:486 +#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 +#: part/serializers.py:527 plugin/builtin/suppliers/digikey.py:25 +#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 +#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224 +#: templates/email/overdue_purchase_order.html:16 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:511 +#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1774 +#: templates/js/translated/pricing.js:498 +#: templates/js/translated/purchase_order.js:1689 +#: templates/js/translated/table_filters.js:809 +msgid "Supplier" +msgstr "" + +#: company/models.py:778 +msgid "Select supplier" +msgstr "" + +#: company/models.py:784 part/serializers.py:538 +msgid "Supplier stock keeping unit" +msgstr "" + +#: company/models.py:790 +msgid "Is this supplier part active?" +msgstr "" + +#: company/models.py:800 +msgid "Select manufacturer part" +msgstr "" + +#: company/models.py:807 +msgid "URL for external supplier part link" +msgstr "" + +#: company/models.py:816 +msgid "Supplier part description" +msgstr "" + +#: company/models.py:823 company/templates/company/supplier_part.html:187 +#: part/admin.py:412 part/models.py:4250 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_bill_of_materials_report.html:140 +#: report/templates/report/inventree_purchase_order_report.html:32 +#: report/templates/report/inventree_return_order_report.html:27 +#: report/templates/report/inventree_sales_order_report.html:32 +#: report/templates/report/inventree_stock_location_report.html:105 +#: stock/serializers.py:772 +msgid "Note" +msgstr "" + +#: company/models.py:832 part/models.py:2079 +msgid "base cost" +msgstr "" + +#: company/models.py:833 part/models.py:2080 +msgid "Minimum charge (e.g. stocking fee)" +msgstr "" + +#: company/models.py:840 company/templates/company/supplier_part.html:160 +#: stock/admin.py:228 stock/models.py:796 stock/serializers.py:1545 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1646 +#: templates/js/translated/stock.js:2424 +msgid "Packaging" +msgstr "" + +#: company/models.py:841 +msgid "Part packaging" +msgstr "" + +#: company/models.py:846 templates/js/translated/company.js:1651 +#: templates/js/translated/part.js:1827 templates/js/translated/part.js:1883 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:841 +#: templates/js/translated/purchase_order.js:1103 +#: templates/js/translated/purchase_order.js:2084 +#: templates/js/translated/purchase_order.js:2101 +msgid "Pack Quantity" +msgstr "" + +#: company/models.py:848 +msgid "Total quantity supplied in a single pack. Leave empty for single items." +msgstr "" + +#: company/models.py:867 part/models.py:2086 +msgid "multiple" +msgstr "" + +#: company/models.py:868 +msgid "Order multiple" +msgstr "" + +#: company/models.py:880 +msgid "Quantity available from supplier" +msgstr "" + +#: company/models.py:886 +msgid "Availability Updated" +msgstr "" + +#: company/models.py:887 +msgid "Date of last update of availability data" +msgstr "" + +#: company/models.py:1015 +msgid "Supplier Price Break" +msgstr "" + +#: company/serializers.py:174 +msgid "Default currency used for this supplier" +msgstr "" + +#: company/serializers.py:210 +msgid "Company Name" +msgstr "" + +#: company/serializers.py:386 part/admin.py:126 part/serializers.py:886 +#: part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1689 +#: templates/js/translated/table_filters.js:355 +msgid "In Stock" +msgstr "" + +#: company/templates/company/company_base.html:16 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1287 +#: templates/js/translated/company.js:1575 +#: templates/js/translated/model_renderers.js:312 +#: templates/js/translated/part.js:816 templates/js/translated/part.js:1224 +msgid "Inactive" +msgstr "" + +#: company/templates/company/company_base.html:27 +#: templates/js/translated/purchase_order.js:242 +msgid "Create Purchase Order" +msgstr "" + +#: company/templates/company/company_base.html:33 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:38 +msgid "Edit company information" +msgstr "" + +#: company/templates/company/company_base.html:39 +#: templates/js/translated/company.js:445 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:43 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:44 +#: company/templates/company/company_base.html:168 +msgid "Delete Company" +msgstr "" + +#: company/templates/company/company_base.html:53 +#: company/templates/company/manufacturer_part.html:51 +#: company/templates/company/supplier_part.html:83 +#: part/templates/part/part_thumb.html:20 +#: report/templates/report/inventree_build_order_report.html:98 +#: report/templates/report/inventree_purchase_order_report.html:40 +#: report/templates/report/inventree_sales_order_report.html:40 +#: report/templates/report/inventree_test_report.html:84 +#: report/templates/report/inventree_test_report.html:162 +msgid "Part image" +msgstr "" + +#: company/templates/company/company_base.html:61 +#: part/templates/part/part_thumb.html:12 +msgid "Upload new image" +msgstr "" + +#: company/templates/company/company_base.html:64 +#: part/templates/part/part_thumb.html:14 +msgid "Download image from URL" +msgstr "" + +#: company/templates/company/company_base.html:66 +#: part/templates/part/part_thumb.html:16 +msgid "Delete image" +msgstr "" + +#: company/templates/company/company_base.html:92 order/models.py:938 +#: order/models.py:2058 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:148 stock/models.py:818 +#: stock/models.py:819 stock/serializers.py:1295 +#: stock/templates/stock/item_base.html:405 +#: templates/email/overdue_sales_order.html:16 +#: templates/js/translated/company.js:503 +#: templates/js/translated/return_order.js:295 +#: templates/js/translated/sales_order.js:820 +#: templates/js/translated/stock.js:2959 +#: templates/js/translated/table_filters.js:813 +msgid "Customer" +msgstr "" + +#: company/templates/company/company_base.html:117 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:131 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:211 +#: part/templates/part/part_base.html:536 +msgid "Remove Image" +msgstr "" + +#: company/templates/company/company_base.html:212 +msgid "Remove associated image from this company" +msgstr "" + +#: company/templates/company/company_base.html:214 +#: part/templates/part/part_base.html:539 +#: templates/InvenTree/settings/user.html:88 +#: templates/InvenTree/settings/user_sso.html:43 +msgid "Remove" +msgstr "" + +#: company/templates/company/company_base.html:243 +#: part/templates/part/part_base.html:568 +msgid "Upload Image" +msgstr "" + +#: company/templates/company/company_base.html:258 +#: part/templates/part/part_base.html:622 +msgid "Download Image" +msgstr "" + +#: company/templates/company/detail.html:15 +#: company/templates/company/manufacturer_part_sidebar.html:7 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 +msgid "Supplier Parts" +msgstr "" + +#: company/templates/company/detail.html:19 +msgid "Create new supplier part" +msgstr "" + +#: company/templates/company/detail.html:20 +#: company/templates/company/manufacturer_part.html:123 +#: part/templates/part/detail.html:356 +msgid "New Supplier Part" +msgstr "" + +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 +msgid "Manufacturer Parts" +msgstr "" + +#: company/templates/company/detail.html:45 +msgid "Create new manufacturer part" +msgstr "" + +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 +msgid "New Manufacturer Part" +msgstr "" + +#: company/templates/company/detail.html:65 +msgid "Supplier Stock" +msgstr "" + +#: company/templates/company/detail.html:75 +#: company/templates/company/sidebar.html:12 +#: company/templates/company/supplier_part_sidebar.html:7 +#: order/templates/order/order_base.html:13 +#: order/templates/order/purchase_orders.html:8 +#: order/templates/order/purchase_orders.html:12 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:208 +msgid "Purchase Orders" +msgstr "" + +#: company/templates/company/detail.html:79 +#: order/templates/order/purchase_orders.html:17 +msgid "Create new purchase order" +msgstr "" + +#: company/templates/company/detail.html:80 +#: order/templates/order/purchase_orders.html:18 +msgid "New Purchase Order" +msgstr "" + +#: company/templates/company/detail.html:101 +#: company/templates/company/sidebar.html:21 +#: order/templates/order/sales_order_base.html:13 +#: order/templates/order/sales_orders.html:8 +#: order/templates/order/sales_orders.html:15 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:209 +msgid "Sales Orders" +msgstr "" + +#: company/templates/company/detail.html:105 +#: order/templates/order/sales_orders.html:20 +msgid "Create new sales order" +msgstr "" + +#: company/templates/company/detail.html:106 +#: order/templates/order/sales_orders.html:21 +msgid "New Sales Order" +msgstr "" + +#: company/templates/company/detail.html:126 +msgid "Assigned Stock" +msgstr "" + +#: company/templates/company/detail.html:142 +#: company/templates/company/sidebar.html:29 +#: order/templates/order/return_order_base.html:13 +#: order/templates/order/return_orders.html:8 +#: order/templates/order/return_orders.html:15 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:210 +msgid "Return Orders" +msgstr "" + +#: company/templates/company/detail.html:146 +#: order/templates/order/return_orders.html:20 +msgid "Create new return order" +msgstr "" + +#: company/templates/company/detail.html:147 +#: order/templates/order/return_orders.html:21 +msgid "New Return Order" +msgstr "" + +#: company/templates/company/detail.html:168 +msgid "Company Notes" +msgstr "" + +#: company/templates/company/detail.html:183 +msgid "Company Contacts" +msgstr "" + +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 +msgid "Add Contact" +msgstr "" + +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" + +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 +#: templates/InvenTree/search.html:180 templates/navbar.html:49 +msgid "Manufacturers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 +msgid "Order part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:39 +#: templates/js/translated/company.js:1343 +msgid "Edit manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:43 +#: templates/js/translated/company.js:1344 +msgid "Delete manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:65 +#: company/templates/company/supplier_part.html:97 order/api.py:440 +#: order/serializers.py:527 +msgid "Internal Part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:95 +msgid "No manufacturer information available" +msgstr "" + +#: company/templates/company/manufacturer_part.html:119 +#: company/templates/company/supplier_part.html:15 company/views.py:31 +#: part/admin.py:122 part/serializers.py:892 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 +msgid "Suppliers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:156 +#: company/templates/company/manufacturer_part_sidebar.html:5 +#: part/templates/part/category_sidebar.html:20 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 +#: templates/InvenTree/settings/category.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part.html:196 +#: templates/js/translated/part.js:1428 +msgid "Add Parameter" +msgstr "" + +#: company/templates/company/sidebar.html:6 +msgid "Manufactured Parts" +msgstr "" + +#: company/templates/company/sidebar.html:10 +msgid "Supplied Parts" +msgstr "" + +#: company/templates/company/sidebar.html:16 +msgid "Supplied Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:25 +msgid "Assigned Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:33 +msgid "Contacts" +msgstr "" + +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1526 +msgid "Supplier part actions" +msgstr "" + +#: company/templates/company/supplier_part.html:55 +#: company/templates/company/supplier_part.html:56 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 +msgid "Order Part" +msgstr "" + +#: company/templates/company/supplier_part.html:60 +#: company/templates/company/supplier_part.html:61 +msgid "Update Availability" +msgstr "" + +#: company/templates/company/supplier_part.html:63 +#: company/templates/company/supplier_part.html:64 +#: templates/js/translated/company.js:294 +msgid "Edit Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:68 +#: company/templates/company/supplier_part.html:69 +#: templates/js/translated/company.js:269 +msgid "Duplicate Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:73 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:74 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:133 +msgid "No supplier information available" +msgstr "" + +#: company/templates/company/supplier_part.html:139 order/serializers.py:516 +#: part/bom.py:279 part/bom.py:311 part/serializers.py:537 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1792 +#: templates/js/translated/pricing.js:510 +#: templates/js/translated/purchase_order.js:1850 +#: templates/js/translated/purchase_order.js:2028 +msgid "SKU" +msgstr "" + +#: company/templates/company/supplier_part.html:206 +msgid "Supplier Part Stock" +msgstr "" + +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:207 +msgid "Create new stock item" +msgstr "" + +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:208 +#: templates/js/translated/stock.js:537 +msgid "New Stock Item" +msgstr "" + +#: company/templates/company/supplier_part.html:223 +msgid "Supplier Part Orders" +msgstr "" + +#: company/templates/company/supplier_part.html:246 +msgid "Pricing Information" +msgstr "" + +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 +#: templates/js/translated/pricing.js:684 +msgid "Add Price Break" +msgstr "" + +#: company/templates/company/supplier_part.html:276 +msgid "Supplier Part QR Code" +msgstr "" + +#: company/templates/company/supplier_part.html:287 +msgid "Link Barcode to Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:359 +msgid "Update Part Availability" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:890 part/stocktake.py:224 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:68 +#: stock/serializers.py:980 stock/serializers.py:1158 +#: stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:191 +#: stock/templates/stock/location.html:203 +#: stock/templates/stock/location_sidebar.html:7 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1066 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 +#: users/models.py:206 +msgid "Stock Items" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:9 +msgid "Supplier Part Pricing" +msgstr "" + +#: company/views.py:32 +msgid "New Supplier" +msgstr "" + +#: company/views.py:38 +msgid "New Manufacturer" +msgstr "" + +#: company/views.py:43 templates/InvenTree/search.html:210 +#: templates/navbar.html:60 +msgid "Customers" +msgstr "" + +#: company/views.py:44 +msgid "New Customer" +msgstr "" + +#: company/views.py:52 +msgid "New Company" +msgstr "" + +#: generic/states/tests.py:18 order/status_codes.py:13 +msgid "Placed" +msgstr "" + +#: importer/mixins.py:263 +msgid "Invalid export format" +msgstr "" + +#: importer/models.py:56 +msgid "Timestamp" +msgstr "" + +#: importer/models.py:61 +msgid "Data file to import" +msgstr "" + +#: importer/models.py:70 templates/js/translated/tables.js:558 +msgid "Columns" +msgstr "" + +#: importer/models.py:81 +msgid "Import status" +msgstr "" + +#: importer/models.py:91 +msgid "Field Defaults" +msgstr "" + +#: importer/models.py:201 +msgid "Some required fields have not been mapped" +msgstr "" + +#: importer/models.py:346 +msgid "Column is already mapped to a database field" +msgstr "" + +#: importer/models.py:351 +msgid "Field is already mapped to a data column" +msgstr "" + +#: importer/models.py:360 +msgid "Column mapping must be linked to a valid import session" +msgstr "" + +#: importer/models.py:365 +msgid "Column does not exist in the data file" +msgstr "" + +#: importer/models.py:372 +msgid "Field does not exist in the target model" +msgstr "" + +#: importer/models.py:376 +msgid "Selected field is read-only" +msgstr "" + +#: importer/models.py:381 importer/models.py:452 +msgid "Import Session" +msgstr "" + +#: importer/models.py:385 +msgid "Field" +msgstr "" + +#: importer/models.py:387 +msgid "Column" +msgstr "" + +#: importer/models.py:456 +msgid "Row Index" +msgstr "" + +#: importer/models.py:459 +msgid "Original row data" +msgstr "" + +#: importer/models.py:462 part/models.py:3913 +msgid "Data" +msgstr "" + +#: importer/models.py:464 machine/models.py:110 +msgid "Errors" +msgstr "" + +#: importer/models.py:466 part/api.py:874 +msgid "Valid" +msgstr "" + +#: importer/operations.py:28 importer/operations.py:49 +msgid "Unsupported data file format" +msgstr "" + +#: importer/operations.py:40 +msgid "Failed to open data file" +msgstr "" + +#: importer/operations.py:51 +msgid "Invalid data file dimensions" +msgstr "" + +#: importer/serializers.py:135 +msgid "Rows" +msgstr "" + +#: importer/serializers.py:136 +msgid "List of row IDs to accept" +msgstr "" + +#: importer/serializers.py:149 +msgid "No rows provided" +msgstr "" + +#: importer/serializers.py:153 +msgid "Row does not belong to this session" +msgstr "" + +#: importer/serializers.py:156 +msgid "Row contains invalid data" +msgstr "" + +#: importer/serializers.py:159 +msgid "Row has already been completed" +msgstr "" + +#: importer/status_codes.py:11 +msgid "Initializing" +msgstr "" + +#: importer/status_codes.py:12 +msgid "Mapping Columns" +msgstr "" + +#: importer/status_codes.py:13 +msgid "Importing Data" +msgstr "" + +#: importer/status_codes.py:16 +msgid "Processing Data" +msgstr "" + +#: importer/validators.py:21 +msgid "Data file exceeds maximum size limit" +msgstr "" + +#: importer/validators.py:26 +msgid "Data file contains no headers" +msgstr "" + +#: importer/validators.py:29 +msgid "Data file contains too many columns" +msgstr "" + +#: importer/validators.py:32 +msgid "Data file contains too many rows" +msgstr "" + +#: importer/validators.py:49 +msgid "Value must be a valid dictionary object" +msgstr "" + +#: machine/machine_types/label_printer.py:215 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:216 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:231 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:232 order/api.py:1388 +#: templates/js/translated/sales_order.js:1078 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:234 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:235 +msgid "Paper jam" +msgstr "" + +#: machine/machine_types/label_printer.py:236 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:243 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:244 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:250 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:251 +msgid "Scope the printer to a specific location" +msgstr "" + +#: machine/models.py:25 +msgid "Name of machine" +msgstr "" + +#: machine/models.py:29 +msgid "Machine Type" +msgstr "" + +#: machine/models.py:29 +msgid "Type of machine" +msgstr "" + +#: machine/models.py:34 machine/models.py:146 +msgid "Driver" +msgstr "" + +#: machine/models.py:35 +msgid "Driver used for the machine" +msgstr "" + +#: machine/models.py:39 +msgid "Machines can be disabled" +msgstr "" + +#: machine/models.py:95 +msgid "Driver available" +msgstr "" + +#: machine/models.py:100 +msgid "No errors" +msgstr "" + +#: machine/models.py:105 +msgid "Initialized" +msgstr "" + +#: machine/models.py:117 +msgid "Machine status" +msgstr "" + +#: machine/models.py:145 +msgid "Machine" +msgstr "" + +#: machine/models.py:151 +msgid "Machine Config" +msgstr "" + +#: machine/models.py:156 +msgid "Config type" +msgstr "" + +#: order/admin.py:30 order/models.py:90 +#: report/templates/report/inventree_purchase_order_report.html:31 +#: report/templates/report/inventree_sales_order_report.html:31 +#: templates/js/translated/order.js:327 +#: templates/js/translated/purchase_order.js:2125 +#: templates/js/translated/sales_order.js:1883 +msgid "Total Price" +msgstr "" + +#: order/api.py:149 order/serializers.py:94 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:122 +msgid "Order Status" +msgstr "" + +#: order/api.py:153 templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:784 +msgid "Has Pricing" +msgstr "" + +#: order/api.py:228 +msgid "No matching purchase order found" +msgstr "" + +#: order/api.py:417 order/api.py:755 order/models.py:1400 order/models.py:1514 +#: order/models.py:1565 order/models.py:1680 order/models.py:1839 +#: order/models.py:2258 order/models.py:2314 +#: templates/js/translated/sales_order.js:1524 +msgid "Order" +msgstr "" + +#: order/api.py:421 order/api.py:776 +msgid "Order Complete" +msgstr "" + +#: order/api.py:444 +msgid "Order Pending" +msgstr "" + +#: order/api.py:1382 order/models.py:380 order/models.py:1401 +#: order/models.py:1515 order/templates/order/order_base.html:9 +#: order/templates/order/order_base.html:18 +#: report/templates/report/inventree_purchase_order_report.html:14 +#: stock/serializers.py:120 stock/templates/stock/item_base.html:176 +#: templates/email/overdue_purchase_order.html:15 +#: templates/js/translated/part.js:1751 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:168 +#: templates/js/translated/purchase_order.js:753 +#: templates/js/translated/purchase_order.js:1673 +#: templates/js/translated/stock.js:2260 templates/js/translated/stock.js:2907 +msgid "Purchase Order" +msgstr "" + +#: order/api.py:1386 order/models.py:2007 order/models.py:2259 +#: order/models.py:2315 order/templates/order/return_order_base.html:9 +#: order/templates/order/return_order_base.html:28 +#: report/templates/report/inventree_return_order_report.html:13 +#: templates/js/translated/return_order.js:280 +#: templates/js/translated/stock.js:2941 +msgid "Return Order" +msgstr "" + +#: order/models.py:91 +msgid "Total price for this order" +msgstr "" + +#: order/models.py:96 order/serializers.py:72 +msgid "Order Currency" +msgstr "" + +#: order/models.py:99 order/serializers.py:73 +msgid "Currency for this order (leave blank to use company default)" +msgstr "" + +#: order/models.py:247 +msgid "Contact does not match selected company" +msgstr "" + +#: order/models.py:290 +msgid "Order description (optional)" +msgstr "" + +#: order/models.py:299 +msgid "Select project code for this order" +msgstr "" + +#: order/models.py:303 order/models.py:1301 order/models.py:1733 +msgid "Link to external page" +msgstr "" + +#: order/models.py:311 +msgid "Expected date for order delivery. Order will be overdue after this date." +msgstr "" + +#: order/models.py:325 +msgid "Created By" +msgstr "" + +#: order/models.py:333 +msgid "User or group responsible for this order" +msgstr "" + +#: order/models.py:344 +msgid "Point of contact for this order" +msgstr "" + +#: order/models.py:354 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:464 order/models.py:927 +msgid "Order reference" +msgstr "" + +#: order/models.py:472 order/models.py:951 +msgid "Purchase order status" +msgstr "" + +#: order/models.py:487 +msgid "Company from which the items are being ordered" +msgstr "" + +#: order/models.py:498 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1702 +msgid "Supplier Reference" +msgstr "" + +#: order/models.py:499 +msgid "Supplier order reference code" +msgstr "" + +#: order/models.py:508 +msgid "received by" +msgstr "" + +#: order/models.py:514 order/models.py:2084 +msgid "Issue Date" +msgstr "" + +#: order/models.py:515 order/models.py:2085 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:522 order/models.py:2092 +msgid "Date order was completed" +msgstr "" + +#: order/models.py:566 +msgid "Part supplier must match PO supplier" +msgstr "" + +#: order/models.py:760 +msgid "Quantity must be a positive number" +msgstr "" + +#: order/models.py:939 +msgid "Company to which the items are being sold" +msgstr "" + +#: order/models.py:962 order/models.py:2077 +msgid "Customer Reference " +msgstr "" + +#: order/models.py:963 order/models.py:2078 +msgid "Customer order reference code" +msgstr "" + +#: order/models.py:967 order/models.py:1687 +#: templates/js/translated/sales_order.js:879 +#: templates/js/translated/sales_order.js:1060 +msgid "Shipment Date" +msgstr "" + +#: order/models.py:976 +msgid "shipped by" +msgstr "" + +#: order/models.py:1025 +msgid "Order is already complete" +msgstr "" + +#: order/models.py:1028 +msgid "Order is already cancelled" +msgstr "" + +#: order/models.py:1032 +msgid "Only an open order can be marked as complete" +msgstr "" + +#: order/models.py:1036 +msgid "Order cannot be completed as there are incomplete shipments" +msgstr "" + +#: order/models.py:1041 +msgid "Order cannot be completed as there are incomplete line items" +msgstr "" + +#: order/models.py:1273 +msgid "Item quantity" +msgstr "" + +#: order/models.py:1290 +msgid "Line item reference" +msgstr "" + +#: order/models.py:1297 +msgid "Line item notes" +msgstr "" + +#: order/models.py:1309 +msgid "Target date for this line item (leave blank to use the target date from the order)" +msgstr "" + +#: order/models.py:1330 +msgid "Line item description (optional)" +msgstr "" + +#: order/models.py:1336 +msgid "Context" +msgstr "" + +#: order/models.py:1337 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:1347 +msgid "Unit price" +msgstr "" + +#: order/models.py:1361 +msgid "Purchase Order Line Item" +msgstr "" + +#: order/models.py:1385 +msgid "Supplier part must match supplier" +msgstr "" + +#: order/models.py:1392 +msgid "deleted" +msgstr "" + +#: order/models.py:1420 +msgid "Supplier part" +msgstr "" + +#: order/models.py:1427 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1875 templates/js/translated/part.js:1907 +#: templates/js/translated/purchase_order.js:1306 +#: templates/js/translated/purchase_order.js:2169 +#: templates/js/translated/return_order.js:763 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:602 +msgid "Received" +msgstr "" + +#: order/models.py:1428 +msgid "Number of items received" +msgstr "" + +#: order/models.py:1436 stock/models.py:937 stock/serializers.py:606 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2311 +msgid "Purchase Price" +msgstr "" + +#: order/models.py:1437 +msgid "Unit purchase price" +msgstr "" + +#: order/models.py:1452 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:1503 +msgid "Purchase Order Extra Line" +msgstr "" + +#: order/models.py:1532 +msgid "Sales Order Line Item" +msgstr "" + +#: order/models.py:1553 +msgid "Virtual part cannot be assigned to a sales order" +msgstr "" + +#: order/models.py:1558 +msgid "Only salable parts can be assigned to a sales order" +msgstr "" + +#: order/models.py:1584 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 +msgid "Sale Price" +msgstr "" + +#: order/models.py:1585 +msgid "Unit sale price" +msgstr "" + +#: order/models.py:1594 order/status_codes.py:43 +#: templates/js/translated/sales_order.js:1559 +#: templates/js/translated/sales_order.js:1680 +#: templates/js/translated/sales_order.js:1993 +msgid "Shipped" +msgstr "" + +#: order/models.py:1595 +msgid "Shipped quantity" +msgstr "" + +#: order/models.py:1667 +msgid "Sales Order Shipment" +msgstr "" + +#: order/models.py:1688 +msgid "Date of shipment" +msgstr "" + +#: order/models.py:1694 templates/js/translated/sales_order.js:1072 +msgid "Delivery Date" +msgstr "" + +#: order/models.py:1695 +msgid "Date of delivery of shipment" +msgstr "" + +#: order/models.py:1703 +msgid "Checked By" +msgstr "" + +#: order/models.py:1704 +msgid "User who checked this shipment" +msgstr "" + +#: order/models.py:1711 order/models.py:1934 order/serializers.py:1399 +#: order/serializers.py:1509 templates/js/translated/model_renderers.js:454 +msgid "Shipment" +msgstr "" + +#: order/models.py:1712 +msgid "Shipment number" +msgstr "" + +#: order/models.py:1720 +msgid "Tracking Number" +msgstr "" + +#: order/models.py:1721 +msgid "Shipment tracking information" +msgstr "" + +#: order/models.py:1728 +msgid "Invoice Number" +msgstr "" + +#: order/models.py:1729 +msgid "Reference number for associated invoice" +msgstr "" + +#: order/models.py:1749 +msgid "Shipment has already been sent" +msgstr "" + +#: order/models.py:1752 +msgid "Shipment has no allocated stock items" +msgstr "" + +#: order/models.py:1828 +msgid "Sales Order Extra Line" +msgstr "" + +#: order/models.py:1857 +msgid "Sales Order Allocation" +msgstr "" + +#: order/models.py:1880 order/models.py:1882 +msgid "Stock item has not been assigned" +msgstr "" + +#: order/models.py:1889 +msgid "Cannot allocate stock item to a line with a different part" +msgstr "" + +#: order/models.py:1892 +msgid "Cannot allocate stock to a line without a part" +msgstr "" + +#: order/models.py:1895 +msgid "Allocation quantity cannot exceed stock quantity" +msgstr "" + +#: order/models.py:1914 order/serializers.py:1276 +msgid "Quantity must be 1 for serialized stock item" +msgstr "" + +#: order/models.py:1917 +msgid "Sales order does not match shipment" +msgstr "" + +#: order/models.py:1918 plugin/base/barcodes/api.py:481 +msgid "Shipment does not match sales order" +msgstr "" + +#: order/models.py:1926 +msgid "Line" +msgstr "" + +#: order/models.py:1935 +msgid "Sales order shipment reference" +msgstr "" + +#: order/models.py:1948 order/models.py:2266 +#: templates/js/translated/return_order.js:721 +msgid "Item" +msgstr "" + +#: order/models.py:1949 +msgid "Select stock item to allocate" +msgstr "" + +#: order/models.py:1958 +msgid "Enter stock allocation quantity" +msgstr "" + +#: order/models.py:2047 +msgid "Return Order reference" +msgstr "" + +#: order/models.py:2059 +msgid "Company from which items are being returned" +msgstr "" + +#: order/models.py:2071 +msgid "Return order status" +msgstr "" + +#: order/models.py:2237 +msgid "Return Order Line Item" +msgstr "" + +#: order/models.py:2251 +msgid "Only serialized items can be assigned to a Return Order" +msgstr "" + +#: order/models.py:2267 +msgid "Select item to return from customer" +msgstr "" + +#: order/models.py:2273 +msgid "Received Date" +msgstr "" + +#: order/models.py:2274 +msgid "The date this this return item was received" +msgstr "" + +#: order/models.py:2285 templates/js/translated/return_order.js:732 +#: templates/js/translated/table_filters.js:123 +msgid "Outcome" +msgstr "" + +#: order/models.py:2286 +msgid "Outcome for this line item" +msgstr "" + +#: order/models.py:2293 +msgid "Cost associated with return or repair for this line item" +msgstr "" + +#: order/models.py:2303 +msgid "Return Order Extra Line" +msgstr "" + +#: order/serializers.py:87 +msgid "Completed Lines" +msgstr "" + +#: order/serializers.py:306 +msgid "Order cannot be cancelled" +msgstr "" + +#: order/serializers.py:321 order/serializers.py:1292 +msgid "Allow order to be closed with incomplete line items" +msgstr "" + +#: order/serializers.py:331 order/serializers.py:1302 +msgid "Order has incomplete line items" +msgstr "" + +#: order/serializers.py:469 +msgid "Order is not open" +msgstr "" + +#: order/serializers.py:490 +msgid "Auto Pricing" +msgstr "" + +#: order/serializers.py:492 +msgid "Automatically calculate purchase price based on supplier part data" +msgstr "" + +#: order/serializers.py:502 +msgid "Purchase price currency" +msgstr "" + +#: order/serializers.py:508 +msgid "Merge Items" +msgstr "" + +#: order/serializers.py:510 +msgid "Merge items with the same part, destination and target date into one line item" +msgstr "" + +#: order/serializers.py:523 part/models.py:1001 +msgid "Internal Part Number" +msgstr "" + +#: order/serializers.py:531 +msgid "Internal Part Name" +msgstr "" + +#: order/serializers.py:547 +msgid "Supplier part must be specified" +msgstr "" + +#: order/serializers.py:550 +msgid "Purchase order must be specified" +msgstr "" + +#: order/serializers.py:558 +msgid "Supplier must match purchase order" +msgstr "" + +#: order/serializers.py:559 +msgid "Purchase order must match supplier" +msgstr "" + +#: order/serializers.py:599 order/serializers.py:1370 +msgid "Line Item" +msgstr "" + +#: order/serializers.py:605 +msgid "Line item does not match purchase order" +msgstr "" + +#: order/serializers.py:615 order/serializers.py:723 order/serializers.py:1716 +msgid "Select destination location for received items" +msgstr "" + +#: order/serializers.py:631 templates/js/translated/purchase_order.js:1130 +msgid "Enter batch code for incoming stock items" +msgstr "" + +#: order/serializers.py:639 templates/js/translated/purchase_order.js:1154 +msgid "Enter serial numbers for incoming stock items" +msgstr "" + +#: order/serializers.py:650 templates/js/translated/barcode.js:52 +msgid "Barcode" +msgstr "" + +#: order/serializers.py:651 +msgid "Scanned barcode" +msgstr "" + +#: order/serializers.py:667 +msgid "Barcode is already in use" +msgstr "" + +#: order/serializers.py:691 +msgid "An integer quantity must be provided for trackable parts" +msgstr "" + +#: order/serializers.py:739 order/serializers.py:1732 +msgid "Line items must be provided" +msgstr "" + +#: order/serializers.py:755 +msgid "Destination location must be specified" +msgstr "" + +#: order/serializers.py:766 +msgid "Supplied barcode values must be unique" +msgstr "" + +#: order/serializers.py:1118 +msgid "Sale price currency" +msgstr "" + +#: order/serializers.py:1179 +msgid "No shipment details provided" +msgstr "" + +#: order/serializers.py:1240 order/serializers.py:1379 +msgid "Line item is not associated with this order" +msgstr "" + +#: order/serializers.py:1259 +msgid "Quantity must be positive" +msgstr "" + +#: order/serializers.py:1389 +msgid "Enter serial numbers to allocate" +msgstr "" + +#: order/serializers.py:1411 order/serializers.py:1517 +msgid "Shipment has already been shipped" +msgstr "" + +#: order/serializers.py:1414 order/serializers.py:1520 +msgid "Shipment is not associated with this order" +msgstr "" + +#: order/serializers.py:1461 +msgid "No match found for the following serial numbers" +msgstr "" + +#: order/serializers.py:1468 +msgid "The following serial numbers are already allocated" +msgstr "" + +#: order/serializers.py:1686 +msgid "Return order line item" +msgstr "" + +#: order/serializers.py:1692 +msgid "Line item does not match return order" +msgstr "" + +#: order/serializers.py:1695 +msgid "Line item has already been received" +msgstr "" + +#: order/serializers.py:1724 +msgid "Items can only be received against orders which are in progress" +msgstr "" + +#: order/serializers.py:1807 +msgid "Line price currency" +msgstr "" + +#: order/status_codes.py:16 order/status_codes.py:46 stock/status_codes.py:16 +msgid "Lost" +msgstr "" + +#: order/status_codes.py:17 order/status_codes.py:47 stock/status_codes.py:22 +msgid "Returned" +msgstr "" + +#: order/status_codes.py:40 order/status_codes.py:67 +msgid "In Progress" +msgstr "" + +#: order/status_codes.py:85 +msgid "Return" +msgstr "" + +#: order/status_codes.py:88 +msgid "Repair" +msgstr "" + +#: order/status_codes.py:91 +msgid "Replace" +msgstr "" + +#: order/status_codes.py:94 +msgid "Refund" +msgstr "" + +#: order/status_codes.py:97 +msgid "Reject" +msgstr "" + +#: order/tasks.py:25 +msgid "Overdue Purchase Order" +msgstr "" + +#: order/tasks.py:30 +#, python-brace-format +msgid "Purchase order {po} is now overdue" +msgstr "" + +#: order/tasks.py:75 +msgid "Overdue Sales Order" +msgstr "" + +#: order/tasks.py:80 +#, python-brace-format +msgid "Sales order {so} is now overdue" +msgstr "" + +#: order/templates/order/order_base.html:51 +msgid "Print purchase order report" +msgstr "" + +#: order/templates/order/order_base.html:53 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 +msgid "Export order to file" +msgstr "" + +#: order/templates/order/order_base.html:59 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 +msgid "Order actions" +msgstr "" + +#: order/templates/order/order_base.html:64 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 +msgid "Edit order" +msgstr "" + +#: order/templates/order/order_base.html:68 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 +msgid "Cancel order" +msgstr "" + +#: order/templates/order/order_base.html:73 +msgid "Duplicate order" +msgstr "" + +#: order/templates/order/order_base.html:79 +#: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 +#: order/templates/order/return_order_base.html:83 +#: order/templates/order/sales_order_base.html:83 +#: order/templates/order/sales_order_base.html:84 +msgid "Issue Order" +msgstr "" + +#: order/templates/order/order_base.html:83 +#: order/templates/order/return_order_base.html:86 +msgid "Mark order as complete" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:97 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:91 +msgid "Supplier part thumbnail" +msgstr "" + +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:110 +msgid "Order Reference" +msgstr "" + +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:115 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:141 +msgid "No suppplier information available" +msgstr "" + +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:161 +msgid "Completed Line Items" +msgstr "" + +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:167 +#: order/templates/order/sales_order_base.html:177 +msgid "Incomplete" +msgstr "" + +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 +#: report/templates/report/inventree_build_order_report.html:121 +msgid "Issued" +msgstr "" + +#: order/templates/order/order_base.html:224 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:243 +msgid "Total cost could not be calculated" +msgstr "" + +#: order/templates/order/order_base.html:314 +msgid "Purchase Order QR Code" +msgstr "" + +#: order/templates/order/order_base.html:326 +msgid "Link Barcode to Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:9 +#: part/templates/part/import_wizard/ajax_match_fields.html:9 +#: part/templates/part/import_wizard/match_fields.html:9 +#: templates/patterns/wizard/match_fields.html:8 +msgid "Missing selections for the following required columns" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:20 +#: part/templates/part/import_wizard/ajax_match_fields.html:20 +#: part/templates/part/import_wizard/match_fields.html:20 +#: templates/patterns/wizard/match_fields.html:19 +msgid "Duplicate selections found, see below. Fix them then retry submitting." +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:29 +#: order/templates/order/order_wizard/match_parts.html:21 +#: part/templates/part/import_wizard/match_fields.html:29 +#: part/templates/part/import_wizard/match_references.html:21 +#: templates/patterns/wizard/match_fields.html:28 +msgid "Submit Selections" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:35 +#: part/templates/part/import_wizard/ajax_match_fields.html:28 +#: part/templates/part/import_wizard/match_fields.html:35 +#: templates/patterns/wizard/match_fields.html:34 +msgid "File Fields" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:42 +#: part/templates/part/import_wizard/ajax_match_fields.html:35 +#: part/templates/part/import_wizard/match_fields.html:42 +#: templates/patterns/wizard/match_fields.html:41 +msgid "Remove column" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:60 +#: part/templates/part/import_wizard/ajax_match_fields.html:53 +#: part/templates/part/import_wizard/match_fields.html:60 +#: templates/patterns/wizard/match_fields.html:59 +msgid "Duplicate selection" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:71 +#: order/templates/order/order_wizard/match_parts.html:52 +#: part/templates/part/import_wizard/ajax_match_fields.html:64 +#: part/templates/part/import_wizard/ajax_match_references.html:42 +#: part/templates/part/import_wizard/match_fields.html:71 +#: part/templates/part/import_wizard/match_references.html:49 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530 +#: templates/js/translated/build.js:1804 +#: templates/js/translated/purchase_order.js:696 +#: templates/js/translated/purchase_order.js:1236 +#: templates/js/translated/return_order.js:505 +#: templates/js/translated/sales_order.js:1145 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 +#: templates/patterns/wizard/match_fields.html:70 +msgid "Remove row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:12 +#: part/templates/part/import_wizard/ajax_match_references.html:12 +#: part/templates/part/import_wizard/match_references.html:12 +msgid "Errors exist in the submitted data" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:28 +#: part/templates/part/import_wizard/ajax_match_references.html:21 +#: part/templates/part/import_wizard/match_references.html:28 +msgid "Row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:29 +msgid "Select Supplier Part" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:8 +msgid "Return to Orders" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:13 +msgid "Upload File for Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:14 +msgid "Order is already processed. Files cannot be uploaded." +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:27 +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: part/templates/part/import_wizard/part_upload.html:26 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + +#: order/templates/order/po_sidebar.html:7 +msgid "Received Stock" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:18 +msgid "Purchase Order Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:27 +#: order/templates/order/return_order_detail.html:24 +#: order/templates/order/sales_order_detail.html:24 +#: templates/js/translated/purchase_order.js:414 +#: templates/js/translated/return_order.js:458 +#: templates/js/translated/sales_order.js:237 +msgid "Add Line Item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:31 +#: order/templates/order/purchase_order_detail.html:32 +#: order/templates/order/return_order_detail.html:28 +#: order/templates/order/return_order_detail.html:29 +msgid "Receive Line Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:50 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:74 +msgid "Received Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 +msgid "Order Notes" +msgstr "" + +#: order/templates/order/return_order_base.html:18 +#: order/templates/order/sales_order_base.html:18 +msgid "Customer logo thumbnail" +msgstr "" + +#: order/templates/order/return_order_base.html:60 +msgid "Print return order report" +msgstr "" + +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 +msgid "Print packing list" +msgstr "" + +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:155 +#: templates/js/translated/return_order.js:308 +#: templates/js/translated/sales_order.js:833 +msgid "Customer Reference" +msgstr "" + +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:239 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:99 +#: part/templates/part/part_pricing.html:114 +#: templates/js/translated/part.js:1078 +#: templates/js/translated/purchase_order.js:1752 +#: templates/js/translated/return_order.js:380 +#: templates/js/translated/sales_order.js:891 +msgid "Total Cost" +msgstr "" + +#: order/templates/order/return_order_base.html:259 +msgid "Return Order QR Code" +msgstr "" + +#: order/templates/order/return_order_base.html:271 +msgid "Link Barcode to Return Order" +msgstr "" + +#: order/templates/order/return_order_sidebar.html:5 +msgid "Order Details" +msgstr "" + +#: order/templates/order/sales_order_base.html:60 +msgid "Print sales order report" +msgstr "" + +#: order/templates/order/sales_order_base.html:88 +#: order/templates/order/sales_order_base.html:89 +msgid "Ship Items" +msgstr "" + +#: order/templates/order/sales_order_base.html:92 +#: order/templates/order/sales_order_base.html:93 +msgid "Mark As Shipped" +msgstr "" + +#: order/templates/order/sales_order_base.html:96 +#: templates/js/translated/sales_order.js:536 +msgid "Complete Sales Order" +msgstr "" + +#: order/templates/order/sales_order_base.html:135 +msgid "This Sales Order has not been fully allocated" +msgstr "" + +#: order/templates/order/sales_order_base.html:173 +#: order/templates/order/sales_order_detail.html:99 +#: order/templates/order/so_sidebar.html:11 +msgid "Completed Shipments" +msgstr "" + +#: order/templates/order/sales_order_base.html:321 +msgid "Sales Order QR Code" +msgstr "" + +#: order/templates/order/sales_order_base.html:333 +msgid "Link Barcode to Sales Order" +msgstr "" + +#: order/templates/order/sales_order_detail.html:18 +msgid "Sales Order Items" +msgstr "" + +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 +msgid "Pending Shipments" +msgstr "" + +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1065 +#: templates/js/translated/filters.js:296 +msgid "Actions" +msgstr "" + +#: order/templates/order/sales_order_detail.html:80 +msgid "New Shipment" +msgstr "" + +#: order/views.py:120 +msgid "Match Supplier Parts" +msgstr "" + +#: order/views.py:406 +msgid "Sales order not found" +msgstr "" + +#: order/views.py:412 +msgid "Price not found" +msgstr "" + +#: order/views.py:415 +#, python-brace-format +msgid "Updated {part} unit-price to {price}" +msgstr "" + +#: order/views.py:421 +#, python-brace-format +msgid "Updated {part} unit-price to {price} and quantity to {qty}" +msgstr "" + +#: part/admin.py:48 part/models.py:1000 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_stock_location_report.html:103 +#: templates/js/translated/part.js:1232 templates/js/translated/part.js:2347 +#: templates/js/translated/stock.js:2036 +msgid "IPN" +msgstr "" + +#: part/admin.py:50 part/models.py:1009 part/templates/part/part_base.html:286 +#: report/models.py:162 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:2353 +msgid "Revision" +msgstr "" + +#: part/admin.py:53 part/admin.py:319 part/models.py:982 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:307 +msgid "Keywords" +msgstr "" + +#: part/admin.py:60 +msgid "Part Image" +msgstr "" + +#: part/admin.py:63 part/admin.py:302 part/stocktake.py:222 +msgid "Category ID" +msgstr "" + +#: part/admin.py:67 part/admin.py:304 part/serializers.py:868 +#: part/stocktake.py:223 +msgid "Category Name" +msgstr "" + +#: part/admin.py:71 part/admin.py:316 +msgid "Default Location ID" +msgstr "" + +#: part/admin.py:76 +msgid "Default Supplier ID" +msgstr "" + +#: part/admin.py:81 part/models.py:968 part/templates/part/part_base.html:177 +msgid "Variant Of" +msgstr "" + +#: part/admin.py:84 part/models.py:1106 part/templates/part/part_base.html:203 +msgid "Minimum Stock" +msgstr "" + +#: part/admin.py:138 part/templates/part/part_sidebar.html:27 +msgid "Used In" +msgstr "" + +#: part/admin.py:150 part/serializers.py:885 +#: part/templates/part/part_base.html:241 stock/admin.py:235 +#: templates/js/translated/part.js:716 templates/js/translated/part.js:2158 +msgid "Building" +msgstr "" + +#: part/admin.py:155 part/models.py:3164 part/models.py:3178 +#: templates/js/translated/part.js:975 +msgid "Minimum Cost" +msgstr "" + +#: part/admin.py:158 part/models.py:3171 part/models.py:3185 +#: templates/js/translated/part.js:985 +msgid "Maximum Cost" +msgstr "" + +#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215 +msgid "Parent ID" +msgstr "" + +#: part/admin.py:312 part/admin.py:394 stock/admin.py:61 +msgid "Parent Name" +msgstr "" + +#: part/admin.py:320 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 +msgid "Category Path" +msgstr "" + +#: part/admin.py:325 part/models.py:398 part/serializers.py:130 +#: part/serializers.py:282 part/serializers.py:404 +#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 +#: part/templates/part/category.html:141 part/templates/part/category.html:161 +#: part/templates/part/category_sidebar.html:9 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2823 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:203 +msgid "Parts" +msgstr "" + +#: part/admin.py:378 +msgid "BOM Level" +msgstr "" + +#: part/admin.py:381 +msgid "BOM Item ID" +msgstr "" + +#: part/admin.py:391 +msgid "Parent IPN" +msgstr "" + +#: part/admin.py:415 part/serializers.py:1334 +#: templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 +msgid "Minimum Price" +msgstr "" + +#: part/admin.py:420 part/serializers.py:1349 +#: templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 +msgid "Maximum Price" +msgstr "" + +#: part/api.py:105 +msgid "Starred" +msgstr "" + +#: part/api.py:107 +msgid "Filter by starred categories" +msgstr "" + +#: part/api.py:124 stock/api.py:312 +msgid "Depth" +msgstr "" + +#: part/api.py:124 +msgid "Filter by category depth" +msgstr "" + +#: part/api.py:142 stock/api.py:330 +msgid "Top Level" +msgstr "" + +#: part/api.py:144 +msgid "Filter by top-level categories" +msgstr "" + +#: part/api.py:157 stock/api.py:345 +msgid "Cascade" +msgstr "" + +#: part/api.py:159 +msgid "Include sub-categories in filtered results" +msgstr "" + +#: part/api.py:180 templates/js/translated/part.js:309 +msgid "Parent" +msgstr "" + +#: part/api.py:182 +msgid "Filter by parent category" +msgstr "" + +#: part/api.py:215 +msgid "Exclude Tree" +msgstr "" + +#: part/api.py:217 +msgid "Exclude sub-categories under the specified category" +msgstr "" + +#: part/api.py:442 +msgid "Has Results" +msgstr "" + +#: part/api.py:609 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:627 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:643 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:727 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:875 +msgid "Validate entire Bill of Materials" +msgstr "" + +#: part/api.py:881 +msgid "This option must be selected" +msgstr "" + +#: part/api.py:917 +msgid "Is Revision" +msgstr "" + +#: part/api.py:927 +msgid "Has Revisions" +msgstr "" + +#: part/api.py:1118 +msgid "BOM Valid" +msgstr "" + +#: part/api.py:1518 part/models.py:992 part/models.py:3451 part/models.py:4008 +#: part/serializers.py:419 part/serializers.py:1190 +#: part/templates/part/part_base.html:260 stock/api.py:783 +#: templates/InvenTree/settings/settings_staff_js.html:300 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2383 +msgid "Category" +msgstr "" + +#: part/api.py:1808 +msgid "Uses" +msgstr "" + +#: part/bom.py:170 part/models.py:105 part/models.py:1045 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:376 +#: templates/js/translated/part.js:2397 +msgid "Default Location" +msgstr "" + +#: part/bom.py:171 part/serializers.py:893 +#: templates/email/low_stock_notification.html:16 +msgid "Total Stock" +msgstr "" + +#: part/forms.py:49 +msgid "Input quantity for price calculation" +msgstr "" + +#: part/models.py:86 part/models.py:4009 part/templates/part/category.html:16 +#: part/templates/part/part_app_base.html:10 +msgid "Part Category" +msgstr "" + +#: part/models.py:87 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:202 +msgid "Part Categories" +msgstr "" + +#: part/models.py:106 +msgid "Default location for parts in this category" +msgstr "" + +#: part/models.py:111 stock/models.py:175 templates/js/translated/part.js:2829 +#: templates/js/translated/stock.js:2772 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 +msgid "Structural" +msgstr "" + +#: part/models.py:113 +msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." +msgstr "" + +#: part/models.py:122 +msgid "Default keywords" +msgstr "" + +#: part/models.py:123 +msgid "Default keywords for parts in this category" +msgstr "" + +#: part/models.py:129 stock/models.py:87 stock/models.py:158 +#: templates/InvenTree/settings/settings_staff_js.html:456 +msgid "Icon" +msgstr "" + +#: part/models.py:130 stock/models.py:159 +msgid "Icon (optional)" +msgstr "" + +#: part/models.py:152 +msgid "You cannot make this part category structural because some parts are already assigned to it!" +msgstr "" + +#: part/models.py:487 +msgid "Cannot delete this part as it is locked" +msgstr "" + +#: part/models.py:490 +msgid "Cannot delete this part as it is still active" +msgstr "" + +#: part/models.py:495 +msgid "Cannot delete this part as it is used in an assembly" +msgstr "" + +#: part/models.py:533 +msgid "Invalid choice for parent part" +msgstr "" + +#: part/models.py:581 part/models.py:588 +#, python-brace-format +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" + +#: part/models.py:600 +#, python-brace-format +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" + +#: part/models.py:663 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:671 +msgid "Part cannot be a revision of itself" +msgstr "" + +#: part/models.py:678 +msgid "Cannot make a revision of a part which is already a revision" +msgstr "" + +#: part/models.py:685 +msgid "Revision code must be specified" +msgstr "" + +#: part/models.py:692 +msgid "Revisions are only allowed for assembly parts" +msgstr "" + +#: part/models.py:699 +msgid "Cannot make a revision of a template part" +msgstr "" + +#: part/models.py:705 +msgid "Parent part must point to the same template" +msgstr "" + +#: part/models.py:784 +msgid "Stock item with this serial number already exists" +msgstr "" + +#: part/models.py:885 +msgid "Duplicate IPN not allowed in part settings" +msgstr "" + +#: part/models.py:894 +msgid "Duplicate part revision already exists." +msgstr "" + +#: part/models.py:904 +msgid "Part with this Name, IPN and Revision already exists." +msgstr "" + +#: part/models.py:919 +msgid "Parts cannot be assigned to structural part categories!" +msgstr "" + +#: part/models.py:951 part/models.py:4064 +msgid "Part name" +msgstr "" + +#: part/models.py:956 +msgid "Is Template" +msgstr "" + +#: part/models.py:957 +msgid "Is this part a template part?" +msgstr "" + +#: part/models.py:967 +msgid "Is this part a variant of another part?" +msgstr "" + +#: part/models.py:975 +msgid "Part description (optional)" +msgstr "" + +#: part/models.py:983 +msgid "Part keywords to improve visibility in search results" +msgstr "" + +#: part/models.py:993 +msgid "Part category" +msgstr "" + +#: part/models.py:1008 +msgid "Part revision or version number" +msgstr "" + +#: part/models.py:1018 +msgid "Is this part a revision of another part?" +msgstr "" + +#: part/models.py:1019 part/templates/part/part_base.html:277 +msgid "Revision Of" +msgstr "" + +#: part/models.py:1043 +msgid "Where is this item normally stored?" +msgstr "" + +#: part/models.py:1089 part/templates/part/part_base.html:385 +msgid "Default Supplier" +msgstr "" + +#: part/models.py:1090 +msgid "Default supplier part" +msgstr "" + +#: part/models.py:1097 +msgid "Default Expiry" +msgstr "" + +#: part/models.py:1098 +msgid "Expiry time (in days) for stock items of this part" +msgstr "" + +#: part/models.py:1107 +msgid "Minimum allowed stock level" +msgstr "" + +#: part/models.py:1116 +msgid "Units of measure for this part" +msgstr "" + +#: part/models.py:1123 +msgid "Can this part be built from other parts?" +msgstr "" + +#: part/models.py:1129 +msgid "Can this part be used to build other parts?" +msgstr "" + +#: part/models.py:1135 +msgid "Does this part have tracking for unique items?" +msgstr "" + +#: part/models.py:1141 +msgid "Can this part be purchased from external suppliers?" +msgstr "" + +#: part/models.py:1147 +msgid "Can this part be sold to customers?" +msgstr "" + +#: part/models.py:1151 +msgid "Is this part active?" +msgstr "" + +#: part/models.py:1156 templates/js/translated/part.js:820 +#: templates/js/translated/table_filters.js:721 +msgid "Locked" +msgstr "" + +#: part/models.py:1157 +msgid "Locked parts cannot be edited" +msgstr "" + +#: part/models.py:1163 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:1169 +msgid "BOM checksum" +msgstr "" + +#: part/models.py:1170 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1178 +msgid "BOM checked by" +msgstr "" + +#: part/models.py:1183 +msgid "BOM checked date" +msgstr "" + +#: part/models.py:1199 +msgid "Creation User" +msgstr "" + +#: part/models.py:1209 +msgid "Owner responsible for this part" +msgstr "" + +#: part/models.py:1214 part/templates/part/part_base.html:348 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2490 +msgid "Last Stocktake" +msgstr "" + +#: part/models.py:2087 +msgid "Sell multiple" +msgstr "" + +#: part/models.py:3078 +msgid "Currency used to cache pricing calculations" +msgstr "" + +#: part/models.py:3094 +msgid "Minimum BOM Cost" +msgstr "" + +#: part/models.py:3095 +msgid "Minimum cost of component parts" +msgstr "" + +#: part/models.py:3101 +msgid "Maximum BOM Cost" +msgstr "" + +#: part/models.py:3102 +msgid "Maximum cost of component parts" +msgstr "" + +#: part/models.py:3108 +msgid "Minimum Purchase Cost" +msgstr "" + +#: part/models.py:3109 +msgid "Minimum historical purchase cost" +msgstr "" + +#: part/models.py:3115 +msgid "Maximum Purchase Cost" +msgstr "" + +#: part/models.py:3116 +msgid "Maximum historical purchase cost" +msgstr "" + +#: part/models.py:3122 +msgid "Minimum Internal Price" +msgstr "" + +#: part/models.py:3123 +msgid "Minimum cost based on internal price breaks" +msgstr "" + +#: part/models.py:3129 +msgid "Maximum Internal Price" +msgstr "" + +#: part/models.py:3130 +msgid "Maximum cost based on internal price breaks" +msgstr "" + +#: part/models.py:3136 +msgid "Minimum Supplier Price" +msgstr "" + +#: part/models.py:3137 +msgid "Minimum price of part from external suppliers" +msgstr "" + +#: part/models.py:3143 +msgid "Maximum Supplier Price" +msgstr "" + +#: part/models.py:3144 +msgid "Maximum price of part from external suppliers" +msgstr "" + +#: part/models.py:3150 +msgid "Minimum Variant Cost" +msgstr "" + +#: part/models.py:3151 +msgid "Calculated minimum cost of variant parts" +msgstr "" + +#: part/models.py:3157 +msgid "Maximum Variant Cost" +msgstr "" + +#: part/models.py:3158 +msgid "Calculated maximum cost of variant parts" +msgstr "" + +#: part/models.py:3165 +msgid "Override minimum cost" +msgstr "" + +#: part/models.py:3172 +msgid "Override maximum cost" +msgstr "" + +#: part/models.py:3179 +msgid "Calculated overall minimum cost" +msgstr "" + +#: part/models.py:3186 +msgid "Calculated overall maximum cost" +msgstr "" + +#: part/models.py:3192 +msgid "Minimum Sale Price" +msgstr "" + +#: part/models.py:3193 +msgid "Minimum sale price based on price breaks" +msgstr "" + +#: part/models.py:3199 +msgid "Maximum Sale Price" +msgstr "" + +#: part/models.py:3200 +msgid "Maximum sale price based on price breaks" +msgstr "" + +#: part/models.py:3206 +msgid "Minimum Sale Cost" +msgstr "" + +#: part/models.py:3207 +msgid "Minimum historical sale price" +msgstr "" + +#: part/models.py:3213 +msgid "Maximum Sale Cost" +msgstr "" + +#: part/models.py:3214 +msgid "Maximum historical sale price" +msgstr "" + +#: part/models.py:3233 +msgid "Part for stocktake" +msgstr "" + +#: part/models.py:3238 +msgid "Item Count" +msgstr "" + +#: part/models.py:3239 +msgid "Number of individual stock entries at time of stocktake" +msgstr "" + +#: part/models.py:3247 +msgid "Total available stock at time of stocktake" +msgstr "" + +#: part/models.py:3251 part/models.py:3334 +#: part/templates/part/part_scheduling.html:13 +#: report/templates/report/inventree_test_report.html:106 +#: templates/InvenTree/settings/plugin_settings.html:37 +#: templates/InvenTree/settings/settings_staff_js.html:540 +#: templates/js/translated/part.js:1091 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1731 +#: templates/js/translated/stock.js:2821 +msgid "Date" +msgstr "" + +#: part/models.py:3252 +msgid "Date stocktake was performed" +msgstr "" + +#: part/models.py:3260 +msgid "Additional notes" +msgstr "" + +#: part/models.py:3270 +msgid "User who performed this stocktake" +msgstr "" + +#: part/models.py:3276 +msgid "Minimum Stock Cost" +msgstr "" + +#: part/models.py:3277 +msgid "Estimated minimum cost of stock on hand" +msgstr "" + +#: part/models.py:3283 +msgid "Maximum Stock Cost" +msgstr "" + +#: part/models.py:3284 +msgid "Estimated maximum cost of stock on hand" +msgstr "" + +#: part/models.py:3340 templates/InvenTree/settings/settings_staff_js.html:529 +msgid "Report" +msgstr "" + +#: part/models.py:3341 +msgid "Stocktake report file (generated internally)" +msgstr "" + +#: part/models.py:3346 templates/InvenTree/settings/settings_staff_js.html:536 +msgid "Part Count" +msgstr "" + +#: part/models.py:3347 +msgid "Number of parts covered by stocktake" +msgstr "" + +#: part/models.py:3357 +msgid "User who requested this stocktake report" +msgstr "" + +#: part/models.py:3367 +msgid "Part Sale Price Break" +msgstr "" + +#: part/models.py:3479 +msgid "Part Test Template" +msgstr "" + +#: part/models.py:3505 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3526 part/models.py:3695 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3537 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:3548 +msgid "Test template with the same key already exists for part" +msgstr "" + +#: part/models.py:3565 templates/js/translated/part.js:2899 +msgid "Test Name" +msgstr "" + +#: part/models.py:3566 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:3572 +msgid "Test Key" +msgstr "" + +#: part/models.py:3573 +msgid "Simplified key for the test" +msgstr "" + +#: part/models.py:3580 +msgid "Test Description" +msgstr "" + +#: part/models.py:3581 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:3585 report/models.py:209 +#: templates/js/translated/part.js:2920 +#: templates/js/translated/table_filters.js:481 +msgid "Enabled" +msgstr "" + +#: part/models.py:3585 +msgid "Is this test enabled?" +msgstr "" + +#: part/models.py:3590 templates/js/translated/part.js:2928 +#: templates/js/translated/table_filters.js:477 +msgid "Required" +msgstr "" + +#: part/models.py:3591 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:3596 templates/js/translated/part.js:2936 +msgid "Requires Value" +msgstr "" + +#: part/models.py:3597 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:3602 templates/js/translated/part.js:2943 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:3604 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:3610 part/models.py:3754 templates/js/translated/part.js:1642 +msgid "Choices" +msgstr "" + +#: part/models.py:3611 +msgid "Valid choices for this test (comma-separated)" +msgstr "" + +#: part/models.py:3643 +msgid "Part Parameter Template" +msgstr "" + +#: part/models.py:3670 +msgid "Checkbox parameters cannot have units" +msgstr "" + +#: part/models.py:3675 +msgid "Checkbox parameters cannot have choices" +msgstr "" + +#: part/models.py:3712 +msgid "Parameter template name must be unique" +msgstr "" + +#: part/models.py:3727 +msgid "Parameter Name" +msgstr "" + +#: part/models.py:3734 +msgid "Physical units for this parameter" +msgstr "" + +#: part/models.py:3742 +msgid "Parameter description" +msgstr "" + +#: part/models.py:3748 templates/js/translated/part.js:1633 +#: templates/js/translated/table_filters.js:830 +msgid "Checkbox" +msgstr "" + +#: part/models.py:3749 +msgid "Is this parameter a checkbox?" +msgstr "" + +#: part/models.py:3755 +msgid "Valid choices for this parameter (comma-separated)" +msgstr "" + +#: part/models.py:3789 +msgid "Part Parameter" +msgstr "" + +#: part/models.py:3815 +msgid "Parameter cannot be modified - part is locked" +msgstr "" + +#: part/models.py:3851 +msgid "Invalid choice for parameter value" +msgstr "" + +#: part/models.py:3900 +msgid "Parent Part" +msgstr "" + +#: part/models.py:3908 part/models.py:4016 part/models.py:4017 +#: templates/InvenTree/settings/settings_staff_js.html:295 +msgid "Parameter Template" +msgstr "" + +#: part/models.py:3914 +msgid "Parameter Value" +msgstr "" + +#: part/models.py:3964 +msgid "Part Category Parameter Template" +msgstr "" + +#: part/models.py:4023 templates/InvenTree/settings/settings_staff_js.html:304 +msgid "Default Value" +msgstr "" + +#: part/models.py:4024 +msgid "Default Parameter Value" +msgstr "" + +#: part/models.py:4062 +msgid "Part ID or part name" +msgstr "" + +#: part/models.py:4063 +msgid "Unique part ID value" +msgstr "" + +#: part/models.py:4065 +msgid "Part IPN value" +msgstr "" + +#: part/models.py:4066 +msgid "Level" +msgstr "" + +#: part/models.py:4066 +msgid "BOM level" +msgstr "" + +#: part/models.py:4177 +msgid "BOM item cannot be modified - assembly is locked" +msgstr "" + +#: part/models.py:4184 +msgid "BOM item cannot be modified - variant assembly is locked" +msgstr "" + +#: part/models.py:4194 +msgid "Select parent part" +msgstr "" + +#: part/models.py:4204 +msgid "Sub part" +msgstr "" + +#: part/models.py:4205 +msgid "Select part to be used in BOM" +msgstr "" + +#: part/models.py:4216 +msgid "BOM quantity for this BOM item" +msgstr "" + +#: part/models.py:4222 +msgid "This BOM item is optional" +msgstr "" + +#: part/models.py:4228 +msgid "This BOM item is consumable (it is not tracked in build orders)" +msgstr "" + +#: part/models.py:4235 part/templates/part/upload_bom.html:55 +msgid "Overage" +msgstr "" + +#: part/models.py:4236 +msgid "Estimated build wastage quantity (absolute or percentage)" +msgstr "" + +#: part/models.py:4243 +msgid "BOM item reference" +msgstr "" + +#: part/models.py:4251 +msgid "BOM item notes" +msgstr "" + +#: part/models.py:4257 +msgid "Checksum" +msgstr "" + +#: part/models.py:4258 +msgid "BOM line checksum" +msgstr "" + +#: part/models.py:4263 templates/js/translated/table_filters.js:174 +msgid "Validated" +msgstr "" + +#: part/models.py:4264 +msgid "This BOM item has been validated" +msgstr "" + +#: part/models.py:4269 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:1054 +#: templates/js/translated/table_filters.js:178 +#: templates/js/translated/table_filters.js:211 +msgid "Gets inherited" +msgstr "" + +#: part/models.py:4270 +msgid "This BOM item is inherited by BOMs for variant parts" +msgstr "" + +#: part/models.py:4276 +msgid "Stock items for variant parts can be used for this BOM item" +msgstr "" + +#: part/models.py:4361 stock/models.py:663 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:4371 part/models.py:4373 +msgid "Sub part must be specified" +msgstr "" + +#: part/models.py:4511 +msgid "BOM Item Substitute" +msgstr "" + +#: part/models.py:4532 +msgid "Substitute part cannot be the same as the master part" +msgstr "" + +#: part/models.py:4545 +msgid "Parent BOM item" +msgstr "" + +#: part/models.py:4553 +msgid "Substitute part" +msgstr "" + +#: part/models.py:4569 +msgid "Part 1" +msgstr "" + +#: part/models.py:4577 +msgid "Part 2" +msgstr "" + +#: part/models.py:4578 +msgid "Select Related Part" +msgstr "" + +#: part/models.py:4597 +msgid "Part relationship cannot be created between a part and itself" +msgstr "" + +#: part/models.py:4602 +msgid "Duplicate relationship already exists" +msgstr "" + +#: part/serializers.py:124 +msgid "Parent Category" +msgstr "" + +#: part/serializers.py:125 templates/js/translated/part.js:310 +msgid "Parent part category" +msgstr "" + +#: part/serializers.py:132 part/serializers.py:154 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 +#: part/templates/part/category_sidebar.html:7 +msgid "Subcategories" +msgstr "" + +#: part/serializers.py:189 +msgid "Results" +msgstr "" + +#: part/serializers.py:190 +msgid "Number of results recorded against this template" +msgstr "" + +#: part/serializers.py:217 part/serializers.py:235 stock/serializers.py:612 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:283 +msgid "Number of parts using this template" +msgstr "" + +#: part/serializers.py:410 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:420 +msgid "Select category" +msgstr "" + +#: part/serializers.py:455 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:456 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:461 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:462 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:468 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:469 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:475 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:476 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:482 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:483 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:501 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:503 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:510 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:511 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:528 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:544 +msgid "Select manufacturer (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:554 +msgid "Manufacturer part number" +msgstr "" + +#: part/serializers.py:561 +msgid "Selected company is not a valid supplier" +msgstr "" + +#: part/serializers.py:570 +msgid "Selected company is not a valid manufacturer" +msgstr "" + +#: part/serializers.py:581 +msgid "Manufacturer part matching this MPN already exists" +msgstr "" + +#: part/serializers.py:588 +msgid "Supplier part matching this SKU already exists" +msgstr "" + +#: part/serializers.py:891 +msgid "Revisions" +msgstr "" + +#: part/serializers.py:896 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:899 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:929 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:473 +msgid "Duplicate Part" +msgstr "" + +#: part/serializers.py:930 +msgid "Copy initial data from another Part" +msgstr "" + +#: part/serializers.py:936 templates/js/translated/part.js:102 +msgid "Initial Stock" +msgstr "" + +#: part/serializers.py:937 +msgid "Create Part with initial stock quantity" +msgstr "" + +#: part/serializers.py:943 +msgid "Supplier Information" +msgstr "" + +#: part/serializers.py:944 +msgid "Add initial supplier information for this part" +msgstr "" + +#: part/serializers.py:952 +msgid "Copy Category Parameters" +msgstr "" + +#: part/serializers.py:953 +msgid "Copy parameter templates from selected part category" +msgstr "" + +#: part/serializers.py:958 +msgid "Existing Image" +msgstr "" + +#: part/serializers.py:959 +msgid "Filename of an existing part image" +msgstr "" + +#: part/serializers.py:976 +msgid "Image file does not exist" +msgstr "" + +#: part/serializers.py:1182 +msgid "Limit stocktake report to a particular part, and any variant parts" +msgstr "" + +#: part/serializers.py:1192 +msgid "Limit stocktake report to a particular part category, and any child categories" +msgstr "" + +#: part/serializers.py:1202 +msgid "Limit stocktake report to a particular stock location, and any child locations" +msgstr "" + +#: part/serializers.py:1208 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:1209 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:1214 +msgid "Generate Report" +msgstr "" + +#: part/serializers.py:1215 +msgid "Generate report file containing calculated stocktake data" +msgstr "" + +#: part/serializers.py:1220 +msgid "Update Parts" +msgstr "" + +#: part/serializers.py:1221 +msgid "Update specified parts with calculated stocktake data" +msgstr "" + +#: part/serializers.py:1229 +msgid "Stocktake functionality is not enabled" +msgstr "" + +#: part/serializers.py:1335 +msgid "Override calculated value for minimum price" +msgstr "" + +#: part/serializers.py:1342 +msgid "Minimum price currency" +msgstr "" + +#: part/serializers.py:1350 +msgid "Override calculated value for maximum price" +msgstr "" + +#: part/serializers.py:1357 +msgid "Maximum price currency" +msgstr "" + +#: part/serializers.py:1386 +msgid "Update" +msgstr "" + +#: part/serializers.py:1387 +msgid "Update pricing for this part" +msgstr "" + +#: part/serializers.py:1410 +#, python-brace-format +msgid "Could not convert from provided currencies to {default_currency}" +msgstr "" + +#: part/serializers.py:1417 +msgid "Minimum price must not be greater than maximum price" +msgstr "" + +#: part/serializers.py:1420 +msgid "Maximum price must not be less than minimum price" +msgstr "" + +#: part/serializers.py:1571 part/templates/part/part_base.html:235 +#: templates/js/translated/bom.js:1219 +msgid "Can Build" +msgstr "" + +#: part/serializers.py:1809 +msgid "Select part to copy BOM from" +msgstr "" + +#: part/serializers.py:1817 +msgid "Remove Existing Data" +msgstr "" + +#: part/serializers.py:1818 +msgid "Remove existing BOM items before copying" +msgstr "" + +#: part/serializers.py:1823 +msgid "Include Inherited" +msgstr "" + +#: part/serializers.py:1824 +msgid "Include BOM items which are inherited from templated parts" +msgstr "" + +#: part/serializers.py:1829 +msgid "Skip Invalid Rows" +msgstr "" + +#: part/serializers.py:1830 +msgid "Enable this option to skip invalid rows" +msgstr "" + +#: part/serializers.py:1835 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:1836 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:1873 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:1874 +msgid "Delete existing BOM items before uploading" +msgstr "" + +#: part/serializers.py:1906 +msgid "No part column specified" +msgstr "" + +#: part/serializers.py:1950 +msgid "Multiple matching parts found" +msgstr "" + +#: part/serializers.py:1953 +msgid "No matching part found" +msgstr "" + +#: part/serializers.py:1956 +msgid "Part is not designated as a component" +msgstr "" + +#: part/serializers.py:1965 +msgid "Quantity not provided" +msgstr "" + +#: part/serializers.py:1973 +msgid "Invalid quantity" +msgstr "" + +#: part/serializers.py:1996 +msgid "At least one BOM item is required" +msgstr "" + +#: part/stocktake.py:225 templates/js/translated/part.js:1072 +#: templates/js/translated/part.js:1827 templates/js/translated/part.js:1883 +#: templates/js/translated/purchase_order.js:2084 +msgid "Total Quantity" +msgstr "" + +#: part/stocktake.py:226 +msgid "Total Cost Min" +msgstr "" + +#: part/stocktake.py:227 +msgid "Total Cost Max" +msgstr "" + +#: part/stocktake.py:285 +msgid "Stocktake Report Available" +msgstr "" + +#: part/stocktake.py:286 +msgid "A new stocktake report is available for download" +msgstr "" + +#: part/tasks.py:37 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:39 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + +#: part/templates/part/bom.html:6 +msgid "You do not have permission to edit the BOM." +msgstr "" + +#: part/templates/part/bom.html:15 +msgid "The BOM this part has been changed, and must be validated" +msgstr "" + +#: part/templates/part/bom.html:17 +#, python-format +msgid "This BOM was last checked by %(checker)s on %(check_date)s" +msgstr "" + +#: part/templates/part/bom.html:21 +msgid "This BOM has not been validated." +msgstr "" + +#: part/templates/part/category.html:35 +msgid "Perform stocktake for this part category" +msgstr "" + +#: part/templates/part/category.html:41 part/templates/part/category.html:45 +msgid "You are subscribed to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:49 +msgid "Subscribe to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:55 +msgid "Category Actions" +msgstr "" + +#: part/templates/part/category.html:60 +msgid "Edit category" +msgstr "" + +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "" + +#: part/templates/part/category.html:65 +msgid "Delete category" +msgstr "" + +#: part/templates/part/category.html:66 +msgid "Delete Category" +msgstr "" + +#: part/templates/part/category.html:102 +msgid "Top level part category" +msgstr "" + +#: part/templates/part/category.html:127 +msgid "Parts (Including subcategories)" +msgstr "" + +#: part/templates/part/category.html:165 +msgid "Create new part" +msgstr "" + +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 +msgid "New Part" +msgstr "" + +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 +msgid "Part Parameters" +msgstr "" + +#: part/templates/part/category.html:211 +msgid "Create new part category" +msgstr "" + +#: part/templates/part/category.html:212 +msgid "New Category" +msgstr "" + +#: part/templates/part/category_sidebar.html:13 +msgid "Import Parts" +msgstr "" + +#: part/templates/part/copy_part.html:10 +#, python-format +msgid "Make a copy of part '%(full_name)s'." +msgstr "" + +#: part/templates/part/copy_part.html:14 +#: part/templates/part/create_part.html:11 +msgid "Possible Matching Parts" +msgstr "" + +#: part/templates/part/copy_part.html:15 +#: part/templates/part/create_part.html:12 +msgid "The new part may be a duplicate of these existing parts" +msgstr "" + +#: part/templates/part/create_part.html:17 +#, python-format +msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" +msgstr "" + +#: part/templates/part/detail.html:20 +msgid "Part Stock" +msgstr "" + +#: part/templates/part/detail.html:44 +msgid "Refresh scheduling data" +msgstr "" + +#: part/templates/part/detail.html:45 part/templates/part/prices.html:15 +#: templates/js/translated/tables.js:552 +msgid "Refresh" +msgstr "" + +#: part/templates/part/detail.html:66 +msgid "Add stocktake information" +msgstr "" + +#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 +#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2216 users/models.py:204 +msgid "Stocktake" +msgstr "" + +#: part/templates/part/detail.html:83 +msgid "Part Test Templates" +msgstr "" + +#: part/templates/part/detail.html:88 +msgid "Add Test Template" +msgstr "" + +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 +msgid "Sales Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:156 +msgid "Part Notes" +msgstr "" + +#: part/templates/part/detail.html:171 +msgid "Part Variants" +msgstr "" + +#: part/templates/part/detail.html:175 +msgid "Create new variant" +msgstr "" + +#: part/templates/part/detail.html:176 +msgid "New Variant" +msgstr "" + +#: part/templates/part/detail.html:199 +msgid "Add new parameter" +msgstr "" + +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 +msgid "Related Parts" +msgstr "" + +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +msgid "Add Related" +msgstr "" + +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 +#: report/templates/report/inventree_bill_of_materials_report.html:100 +msgid "Bill of Materials" +msgstr "" + +#: part/templates/part/detail.html:260 +msgid "Export actions" +msgstr "" + +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 +msgid "Export BOM" +msgstr "" + +#: part/templates/part/detail.html:266 +msgid "Print BOM Report" +msgstr "" + +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 +msgid "Upload BOM" +msgstr "" + +#: part/templates/part/detail.html:278 +msgid "Validate BOM" +msgstr "" + +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 +msgid "Add BOM Item" +msgstr "" + +#: part/templates/part/detail.html:297 +msgid "Assemblies" +msgstr "" + +#: part/templates/part/detail.html:313 +msgid "Part Builds" +msgstr "" + +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:352 +msgid "Part Suppliers" +msgstr "" + +#: part/templates/part/detail.html:372 +msgid "Part Manufacturers" +msgstr "" + +#: part/templates/part/detail.html:657 +msgid "Related Part" +msgstr "" + +#: part/templates/part/detail.html:665 +msgid "Add Related Part" +msgstr "" + +#: part/templates/part/detail.html:750 +msgid "Add Test Result Template" +msgstr "" + +#: part/templates/part/import_wizard/ajax_part_upload.html:29 +#: part/templates/part/import_wizard/part_upload.html:14 +msgid "Insufficient privileges." +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:8 +msgid "Return to Parts" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:13 +msgid "Import Parts from File" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:31 +msgid "Requirements for part import" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "The part import file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:89 +msgid "Download Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:92 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 +msgid "Format" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:93 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 +#: templates/js/translated/order.js:130 +msgid "Select file format" +msgstr "" + +#: part/templates/part/part_app_base.html:12 +msgid "Part List" +msgstr "" + +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 +msgid "You are subscribed to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:33 +msgid "Subscribe to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 templates/js/translated/label.js:136 +msgid "Print Label" +msgstr "" + +#: part/templates/part/part_base.html:58 +msgid "Show pricing information" +msgstr "" + +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 +msgid "Stock actions" +msgstr "" + +#: part/templates/part/part_base.html:70 +msgid "Count part stock" +msgstr "" + +#: part/templates/part/part_base.html:76 +msgid "Transfer part stock" +msgstr "" + +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299 +msgid "Part actions" +msgstr "" + +#: part/templates/part/part_base.html:94 +msgid "Duplicate part" +msgstr "" + +#: part/templates/part/part_base.html:97 +msgid "Edit part" +msgstr "" + +#: part/templates/part/part_base.html:100 +msgid "Delete part" +msgstr "" + +#: part/templates/part/part_base.html:119 +msgid "Part is a template part (variants can be made from this part)" +msgstr "" + +#: part/templates/part/part_base.html:123 +msgid "Part can be assembled from other parts" +msgstr "" + +#: part/templates/part/part_base.html:127 +msgid "Part can be used in assemblies" +msgstr "" + +#: part/templates/part/part_base.html:131 +msgid "Part stock is tracked by serial number" +msgstr "" + +#: part/templates/part/part_base.html:135 +msgid "Part can be purchased from external suppliers" +msgstr "" + +#: part/templates/part/part_base.html:139 +msgid "Part can be sold to customers" +msgstr "" + +#: part/templates/part/part_base.html:145 +msgid "Part is not active" +msgstr "" + +#: part/templates/part/part_base.html:153 +msgid "Part is virtual (not a physical part)" +msgstr "" + +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:690 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 +msgid "Allocated to Build Orders" +msgstr "" + +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 +msgid "Allocated to Sales Orders" +msgstr "" + +#: part/templates/part/part_base.html:300 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1270 templates/js/translated/part.js:2463 +#: templates/js/translated/pricing.js:391 +#: templates/js/translated/pricing.js:1054 +msgid "Price Range" +msgstr "" + +#: part/templates/part/part_base.html:361 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:365 +#: stock/templates/stock/item_base.html:322 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:453 +msgid "Part QR Code" +msgstr "" + +#: part/templates/part/part_base.html:470 +msgid "Link Barcode to Part" +msgstr "" + +#: part/templates/part/part_base.html:520 +msgid "Calculate" +msgstr "" + +#: part/templates/part/part_base.html:537 +msgid "Remove associated image from this part" +msgstr "" + +#: part/templates/part/part_base.html:588 +msgid "No matching images found" +msgstr "" + +#: part/templates/part/part_base.html:684 +msgid "Hide Part Details" +msgstr "" + +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 +#: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 +msgid "Supplier Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:95 +#: part/templates/part/part_pricing.html:110 +msgid "Unit Cost" +msgstr "" + +#: part/templates/part/part_pricing.html:40 +msgid "No supplier pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:90 +#: part/templates/part/prices.html:250 +msgid "BOM Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:66 +msgid "Unit Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:72 +msgid "Total Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:83 +msgid "No BOM pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:92 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/part_pricing.html:123 +msgid "No pricing information is available for this part." +msgstr "" + +#: part/templates/part/part_scheduling.html:14 +msgid "Scheduled Quantity" +msgstr "" + +#: part/templates/part/part_sidebar.html:11 +msgid "Variants" +msgstr "" + +#: part/templates/part/part_sidebar.html:14 +#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 +#: stock/templates/stock/stock_app_base.html:10 +#: templates/InvenTree/search.html:153 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1248 templates/js/translated/part.js:2151 +#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2070 templates/navbar.html:31 +msgid "Stock" +msgstr "" + +#: part/templates/part/part_sidebar.html:30 +#: templates/InvenTree/settings/sidebar.html:39 +msgid "Pricing" +msgstr "" + +#: part/templates/part/part_sidebar.html:44 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:54 +msgid "Test Templates" +msgstr "" + +#: part/templates/part/part_thumb.html:11 +msgid "Select from existing images" +msgstr "" + +#: part/templates/part/prices.html:11 +msgid "Pricing Overview" +msgstr "" + +#: part/templates/part/prices.html:14 +msgid "Refresh Part Pricing" +msgstr "" + +#: part/templates/part/prices.html:17 +msgid "Override Part Pricing" +msgstr "" + +#: part/templates/part/prices.html:18 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "" + +#: part/templates/part/prices.html:28 stock/admin.py:251 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/company.js:1713 +#: templates/js/translated/stock.js:2246 +msgid "Last Updated" +msgstr "" + +#: part/templates/part/prices.html:37 part/templates/part/prices.html:127 +msgid "Price Category" +msgstr "" + +#: part/templates/part/prices.html:38 part/templates/part/prices.html:128 +msgid "Minimum" +msgstr "" + +#: part/templates/part/prices.html:39 part/templates/part/prices.html:129 +msgid "Maximum" +msgstr "" + +#: part/templates/part/prices.html:51 part/templates/part/prices.html:174 +msgid "Internal Pricing" +msgstr "" + +#: part/templates/part/prices.html:64 part/templates/part/prices.html:206 +msgid "Purchase History" +msgstr "" + +#: part/templates/part/prices.html:98 part/templates/part/prices.html:274 +msgid "Variant Pricing" +msgstr "" + +#: part/templates/part/prices.html:106 +msgid "Pricing Overrides" +msgstr "" + +#: part/templates/part/prices.html:113 +msgid "Overall Pricing" +msgstr "" + +#: part/templates/part/prices.html:149 part/templates/part/prices.html:326 +msgid "Sale History" +msgstr "" + +#: part/templates/part/prices.html:157 +msgid "Sale price data is not available for this part" +msgstr "" + +#: part/templates/part/prices.html:164 +msgid "Price range data is not available for this part." +msgstr "" + +#: part/templates/part/prices.html:175 part/templates/part/prices.html:207 +#: part/templates/part/prices.html:228 part/templates/part/prices.html:251 +#: part/templates/part/prices.html:275 part/templates/part/prices.html:298 +#: part/templates/part/prices.html:327 +msgid "Jump to overview" +msgstr "" + +#: part/templates/part/prices.html:180 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/prices.html:297 +msgid "Sale Pricing" +msgstr "" + +#: part/templates/part/prices.html:303 +msgid "Add Sell Price Break" +msgstr "" + +#: part/templates/part/pricing_javascript.html:24 +msgid "Update Pricing" +msgstr "" + +#: part/templates/part/stock_count.html:7 +#: templates/js/translated/model_renderers.js:227 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2146 +#: templates/js/translated/part.js:2148 +msgid "No Stock" +msgstr "" + +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 +msgid "Low Stock" +msgstr "" + +#: part/templates/part/upload_bom.html:8 +msgid "Return to BOM" +msgstr "" + +#: part/templates/part/upload_bom.html:13 +msgid "Upload Bill of Materials" +msgstr "" + +#: part/templates/part/upload_bom.html:19 +msgid "BOM upload requirements" +msgstr "" + +#: part/templates/part/upload_bom.html:23 +#: part/templates/part/upload_bom.html:90 +msgid "Upload BOM File" +msgstr "" + +#: part/templates/part/upload_bom.html:29 +msgid "Submit BOM Data" +msgstr "" + +#: part/templates/part/upload_bom.html:37 +msgid "Requirements for BOM upload" +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "The BOM file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "BOM Upload Template" +msgstr "" + +#: part/templates/part/upload_bom.html:40 +msgid "Each part must already exist in the database" +msgstr "" + +#: part/templates/part/variant_part.html:9 +msgid "Create new part variant" +msgstr "" + +#: part/templates/part/variant_part.html:10 +msgid "Create a new variant part from this template" +msgstr "" + +#: part/views.py:111 +msgid "Match References" +msgstr "" + +#: part/views.py:275 +#, python-brace-format +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "" + +#: part/views.py:425 +msgid "Select Part Image" +msgstr "" + +#: part/views.py:448 +msgid "Updated part image" +msgstr "" + +#: part/views.py:451 +msgid "Part image not found" +msgstr "" + +#: part/views.py:545 +msgid "Part Pricing" +msgstr "" + +#: plugin/api.py:170 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 +msgid "No action specified" +msgstr "" + +#: plugin/base/action/api.py:41 +msgid "No matching action found" +msgstr "" + +#: plugin/base/barcodes/api.py:124 plugin/base/barcodes/api.py:328 +#: plugin/base/barcodes/api.py:503 +msgid "No match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:128 +msgid "Match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:154 +#: templates/js/translated/purchase_order.js:1406 +msgid "Barcode matches existing item" +msgstr "" + +#: plugin/base/barcodes/api.py:293 +msgid "No matching part data found" +msgstr "" + +#: plugin/base/barcodes/api.py:310 +msgid "No matching supplier parts found" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Multiple matching supplier parts found" +msgstr "" + +#: plugin/base/barcodes/api.py:338 +msgid "Matched supplier part" +msgstr "" + +#: plugin/base/barcodes/api.py:387 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:424 +msgid "No match for supplier barcode" +msgstr "" + +#: plugin/base/barcodes/api.py:467 +msgid "Multiple matching line items found" +msgstr "" + +#: plugin/base/barcodes/api.py:470 +msgid "No matching line item found" +msgstr "" + +#: plugin/base/barcodes/api.py:508 plugin/base/barcodes/api.py:515 +msgid "Barcode does not match an existing stock item" +msgstr "" + +#: plugin/base/barcodes/api.py:526 +msgid "Stock item does not match line item" +msgstr "" + +#: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2783 +#: templates/js/translated/sales_order.js:1953 +msgid "Insufficient stock available" +msgstr "" + +#: plugin/base/barcodes/api.py:559 +msgid "Stock item allocated to sales order" +msgstr "" + +#: plugin/base/barcodes/api.py:563 +msgid "Not enough information" +msgstr "" + +#: plugin/base/barcodes/mixins.py:147 plugin/base/barcodes/mixins.py:179 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:197 +#, python-brace-format +msgid "Found multiple purchase orders matching '{order}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:201 +#, python-brace-format +msgid "No matching purchase order for '{order}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:206 +msgid "Purchase order does not match supplier" +msgstr "" + +#: plugin/base/barcodes/mixins.py:440 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:471 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:479 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/serializers.py:21 +msgid "Scanned barcode data" +msgstr "" + +#: plugin/base/barcodes/serializers.py:81 +msgid "Purchase Order to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:87 +msgid "Purchase order is not pending" +msgstr "" + +#: plugin/base/barcodes/serializers.py:105 +msgid "PurchaseOrder to receive items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:111 +msgid "Purchase order has not been placed" +msgstr "" + +#: plugin/base/barcodes/serializers.py:119 +msgid "Location to receive items into" +msgstr "" + +#: plugin/base/barcodes/serializers.py:125 +msgid "Cannot select a structural location" +msgstr "" + +#: plugin/base/barcodes/serializers.py:139 +msgid "Sales Order to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:145 +msgid "Sales order is not pending" +msgstr "" + +#: plugin/base/barcodes/serializers.py:153 +msgid "Sales order line item to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:160 +msgid "Sales order shipment to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:166 +msgid "Shipment has already been delivered" +msgstr "" + +#: plugin/base/barcodes/serializers.py:171 +msgid "Quantity to allocate" +msgstr "" + +#: plugin/base/label/label.py:39 templates/js/translated/label.js:148 +msgid "Label printing failed" +msgstr "" + +#: plugin/base/label/mixins.py:56 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:70 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:151 +msgid "No items provided to print" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:25 +msgid "InvenTree Barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:26 +msgid "Provides native support for barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:28 +#: plugin/builtin/integration/core_notifications.py:35 +#: plugin/builtin/integration/currency_exchange.py:21 +#: plugin/builtin/labels/inventree_label.py:22 +#: plugin/builtin/labels/inventree_machine.py:64 +#: plugin/builtin/labels/label_sheet.py:64 +#: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 +#: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 +msgid "InvenTree contributors" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:34 +msgid "InvenTree Notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:36 +msgid "Integrated outgoing notification methods" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:41 +#: plugin/builtin/integration/core_notifications.py:80 +msgid "Enable email notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:42 +#: plugin/builtin/integration/core_notifications.py:81 +msgid "Allow sending of emails for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:47 +msgid "Enable slack notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:49 +msgid "Allow sending of slack channel messages for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:55 +msgid "Slack incoming webhook url" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:56 +msgid "URL that is used to send messages to a slack channel" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:164 +msgid "Open link" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:22 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:19 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:28 +#: plugin/builtin/labels/label_sheet.py:70 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +#: plugin/builtin/labels/label_sheet.py:71 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:149 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:166 +msgid "Options" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:30 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Skip Labels" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:36 +msgid "Skip this number of labels when printing label sheets" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:42 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:43 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:48 report/models.py:308 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:49 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:61 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:62 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:107 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:141 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:16 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:17 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:26 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:18 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:19 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:27 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:16 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:17 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:25 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:18 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:19 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:27 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:194 plugin/installer.py:282 +msgid "Only staff users can administer plugins" +msgstr "" + +#: plugin/installer.py:197 +msgid "Plugin installation is disabled" +msgstr "" + +#: plugin/installer.py:248 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:254 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:273 +msgid "Plugin was not found in registry" +msgstr "" + +#: plugin/installer.py:276 +msgid "Plugin is not a packaged plugin" +msgstr "" + +#: plugin/installer.py:279 +msgid "Plugin package name not found" +msgstr "" + +#: plugin/installer.py:299 +msgid "Plugin uninstalling is disabled" +msgstr "" + +#: plugin/installer.py:303 +msgid "Plugin cannot be uninstalled as it is currently active" +msgstr "" + +#: plugin/installer.py:316 +msgid "Uninstalled plugin successfully" +msgstr "" + +#: plugin/models.py:36 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:37 +msgid "Plugin Configurations" +msgstr "" + +#: plugin/models.py:43 users/models.py:100 +msgid "Key" +msgstr "" + +#: plugin/models.py:44 +msgid "Key of plugin" +msgstr "" + +#: plugin/models.py:52 +msgid "PluginName of the plugin" +msgstr "" + +#: plugin/models.py:59 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:61 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:66 +msgid "Is the plugin active" +msgstr "" + +#: plugin/models.py:157 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:504 +msgid "Installed" +msgstr "" + +#: plugin/models.py:166 +msgid "Sample plugin" +msgstr "" + +#: plugin/models.py:174 +msgid "Builtin Plugin" +msgstr "" + +#: plugin/models.py:182 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:220 report/models.py:475 +#: templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:51 +msgid "Plugin" +msgstr "" + +#: plugin/models.py:267 +msgid "Method" +msgstr "" + +#: plugin/plugin.py:270 +msgid "No author found" +msgstr "" + +#: plugin/registry.py:534 +#, python-brace-format +msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" +msgstr "" + +#: plugin/registry.py:537 +#, python-brace-format +msgid "Plugin requires at least version {v}" +msgstr "" + +#: plugin/registry.py:539 +#, python-brace-format +msgid "Plugin requires at most version {v}" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Enable PO" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "Enable PO functionality in InvenTree interface" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:63 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:64 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:69 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:70 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:81 +msgid "Source URL" +msgstr "" + +#: plugin/serializers.py:83 +msgid "Source for the package - this can be a custom registry or a VCS path" +msgstr "" + +#: plugin/serializers.py:92 +msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "" + +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 +msgid "Confirm plugin installation" +msgstr "" + +#: plugin/serializers.py:108 +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." +msgstr "" + +#: plugin/serializers.py:121 +msgid "Installation not confirmed" +msgstr "" + +#: plugin/serializers.py:123 +msgid "Either packagename of URL must be provided" +msgstr "" + +#: plugin/serializers.py:161 +msgid "Full reload" +msgstr "" + +#: plugin/serializers.py:162 +msgid "Perform a full reload of the plugin registry" +msgstr "" + +#: plugin/serializers.py:168 +msgid "Force reload" +msgstr "" + +#: plugin/serializers.py:170 +msgid "Force a reload of the plugin registry, even if it is already loaded" +msgstr "" + +#: plugin/serializers.py:177 +msgid "Collect plugins" +msgstr "" + +#: plugin/serializers.py:178 +msgid "Collect plugins and add them to the registry" +msgstr "" + +#: plugin/serializers.py:205 +msgid "Activate Plugin" +msgstr "" + +#: plugin/serializers.py:206 +msgid "Activate this plugin" +msgstr "" + +#: plugin/serializers.py:226 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:227 +msgid "Delete the plugin configuration from the database" +msgstr "" + +#: report/api.py:88 +msgid "No valid objects provided to template" +msgstr "" + +#: report/api.py:103 report/models.py:439 report/serializers.py:98 +#: report/serializers.py:148 templates/js/translated/purchase_order.js:1747 +#: templates/js/translated/return_order.js:353 +#: templates/js/translated/sales_order.js:887 +#: templates/js/translated/sales_order.js:1047 +msgid "Items" +msgstr "" + +#: report/api.py:180 +msgid "Plugin not found" +msgstr "" + +#: report/api.py:182 +msgid "Plugin is not active" +msgstr "" + +#: report/api.py:184 +msgid "Plugin does not support label printing" +msgstr "" + +#: report/api.py:233 +msgid "Invalid label dimensions" +msgstr "" + +#: report/api.py:248 report/api.py:329 +msgid "No valid items provided to template" +msgstr "" + +#: report/api.py:283 +msgid "Error printing label" +msgstr "" + +#: report/api.py:375 report/api.py:411 +#, python-brace-format +msgid "Template file '{template}' is missing or does not exist" +msgstr "" + +#: report/helpers.py:43 +msgid "A4" +msgstr "" + +#: report/helpers.py:44 +msgid "A3" +msgstr "" + +#: report/helpers.py:45 +msgid "Legal" +msgstr "" + +#: report/helpers.py:46 +msgid "Letter" +msgstr "" + +#: report/models.py:119 +msgid "Template file with this name already exists" +msgstr "" + +#: report/models.py:151 +msgid "Template name" +msgstr "" + +#: report/models.py:157 +msgid "Template description" +msgstr "" + +#: report/models.py:163 +msgid "Revision number (auto-increments)" +msgstr "" + +#: report/models.py:203 +msgid "Filename Pattern" +msgstr "" + +#: report/models.py:204 +msgid "Pattern for generating filenames" +msgstr "" + +#: report/models.py:209 +msgid "Template is enabled" +msgstr "" + +#: report/models.py:215 +msgid "Target model type for template" +msgstr "" + +#: report/models.py:235 +msgid "Filters" +msgstr "" + +#: report/models.py:236 +msgid "Template query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:295 report/models.py:362 +msgid "Template file" +msgstr "" + +#: report/models.py:303 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:309 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:368 +msgid "Width [mm]" +msgstr "" + +#: report/models.py:369 +msgid "Label width, specified in mm" +msgstr "" + +#: report/models.py:375 +msgid "Height [mm]" +msgstr "" + +#: report/models.py:376 +msgid "Label height, specified in mm" +msgstr "" + +#: report/models.py:439 +msgid "Number of items to process" +msgstr "" + +#: report/models.py:445 +msgid "Report generation is complete" +msgstr "" + +#: report/models.py:449 templates/js/translated/build.js:2352 +msgid "Progress" +msgstr "" + +#: report/models.py:449 +msgid "Report generation progress" +msgstr "" + +#: report/models.py:457 +msgid "Report Template" +msgstr "" + +#: report/models.py:464 report/models.py:487 +msgid "Output File" +msgstr "" + +#: report/models.py:465 report/models.py:488 +msgid "Generated output file" +msgstr "" + +#: report/models.py:476 +msgid "Label output plugin" +msgstr "" + +#: report/models.py:480 +msgid "Label Template" +msgstr "" + +#: report/models.py:503 +msgid "Snippet" +msgstr "" + +#: report/models.py:504 +msgid "Report snippet file" +msgstr "" + +#: report/models.py:511 +msgid "Snippet file description" +msgstr "" + +#: report/models.py:529 +msgid "Asset" +msgstr "" + +#: report/models.py:530 +msgid "Report asset file" +msgstr "" + +#: report/models.py:537 +msgid "Asset file description" +msgstr "" + +#: report/serializers.py:91 +msgid "Select report template" +msgstr "" + +#: report/serializers.py:99 report/serializers.py:149 +msgid "List of item primary keys to include in the report" +msgstr "" + +#: report/serializers.py:132 +msgid "Select label template" +msgstr "" + +#: report/serializers.py:140 +msgid "Printing Plugin" +msgstr "" + +#: report/serializers.py:141 +msgid "Select plugin to use for label printing" +msgstr "" + +#: report/templates/label/part_label.html:31 +#: report/templates/label/stockitem_qr.html:21 +#: report/templates/label/stocklocation_qr.html:20 +#: templates/allauth_2fa/setup.html:18 +msgid "QR Code" +msgstr "" + +#: report/templates/label/part_label_code128.html:31 +#: report/templates/label/stocklocation_qr_and_text.html:31 +#: templates/qr_code.html:7 +msgid "QR code" +msgstr "" + +#: report/templates/report/inventree_bill_of_materials_report.html:133 +msgid "Materials needed" +msgstr "" + +#: report/templates/report/inventree_build_order_report.html:146 +msgid "Required For" +msgstr "" + +#: report/templates/report/inventree_purchase_order_report.html:15 +msgid "Supplier was deleted" +msgstr "" + +#: report/templates/report/inventree_purchase_order_report.html:30 +#: report/templates/report/inventree_sales_order_report.html:30 +#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 +#: templates/js/translated/pricing.js:596 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2115 +#: templates/js/translated/sales_order.js:1873 +msgid "Unit Price" +msgstr "" + +#: report/templates/report/inventree_purchase_order_report.html:55 +#: report/templates/report/inventree_return_order_report.html:48 +#: report/templates/report/inventree_sales_order_report.html:55 +msgid "Extra Line Items" +msgstr "" + +#: report/templates/report/inventree_purchase_order_report.html:72 +#: report/templates/report/inventree_sales_order_report.html:72 +#: templates/js/translated/purchase_order.js:2017 +#: templates/js/translated/sales_order.js:1842 +msgid "Total" +msgstr "" + +#: report/templates/report/inventree_return_order_report.html:25 +#: report/templates/report/inventree_test_report.html:88 stock/models.py:823 +#: stock/serializers.py:151 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:520 templates/js/translated/build.js:1542 +#: templates/js/translated/build.js:2530 +#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/return_order.js:539 +#: templates/js/translated/return_order.js:723 +#: templates/js/translated/sales_order.js:315 +#: templates/js/translated/sales_order.js:1647 +#: templates/js/translated/sales_order.js:1732 +#: templates/js/translated/stock.js:596 +msgid "Serial Number" +msgstr "" + +#: report/templates/report/inventree_stock_location_report.html:97 +msgid "Stock location items" +msgstr "" + +#: report/templates/report/inventree_test_report.html:21 +msgid "Stock Item Test Report" +msgstr "" + +#: report/templates/report/inventree_test_report.html:97 +msgid "Test Results" +msgstr "" + +#: report/templates/report/inventree_test_report.html:102 +#: templates/js/translated/stock.js:1495 +msgid "Test" +msgstr "" + +#: report/templates/report/inventree_test_report.html:103 stock/models.py:2459 +msgid "Result" +msgstr "" + +#: report/templates/report/inventree_test_report.html:129 +msgid "Pass" +msgstr "" + +#: report/templates/report/inventree_test_report.html:131 +msgid "Fail" +msgstr "" + +#: report/templates/report/inventree_test_report.html:138 +msgid "No result (required)" +msgstr "" + +#: report/templates/report/inventree_test_report.html:140 +msgid "No result" +msgstr "" + +#: report/templates/report/inventree_test_report.html:153 +#: stock/serializers.py:595 stock/templates/stock/stock_sidebar.html:16 +msgid "Installed Items" +msgstr "" + +#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161 +#: templates/js/translated/stock.js:700 templates/js/translated/stock.js:871 +#: templates/js/translated/stock.js:3110 +msgid "Serial" +msgstr "" + +#: report/templatetags/report.py:96 +msgid "Asset file does not exist" +msgstr "" + +#: report/templatetags/report.py:152 report/templatetags/report.py:217 +msgid "Image file not found" +msgstr "" + +#: report/templatetags/report.py:242 +msgid "part_image tag requires a Part instance" +msgstr "" + +#: report/templatetags/report.py:283 +msgid "company_image tag requires a Company instance" +msgstr "" + +#: stock/admin.py:51 stock/admin.py:171 +msgid "Location ID" +msgstr "" + +#: stock/admin.py:63 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 +msgid "Location Path" +msgstr "" + +#: stock/admin.py:148 +msgid "Stock Item ID" +msgstr "" + +#: stock/admin.py:167 +msgid "Status Code" +msgstr "" + +#: stock/admin.py:179 +msgid "Supplier Part ID" +msgstr "" + +#: stock/admin.py:184 +msgid "Supplier Part SKU" +msgstr "" + +#: stock/admin.py:189 +msgid "Supplier ID" +msgstr "" + +#: stock/admin.py:195 +msgid "Supplier Name" +msgstr "" + +#: stock/admin.py:200 +msgid "Customer ID" +msgstr "" + +#: stock/admin.py:205 stock/models.py:803 +#: stock/templates/stock/item_base.html:354 +msgid "Installed In" +msgstr "" + +#: stock/admin.py:210 +msgid "Build ID" +msgstr "" + +#: stock/admin.py:220 +msgid "Sales Order ID" +msgstr "" + +#: stock/admin.py:225 +msgid "Purchase Order ID" +msgstr "" + +#: stock/admin.py:240 +msgid "Review Needed" +msgstr "" + +#: stock/admin.py:245 +msgid "Delete on Deplete" +msgstr "" + +#: stock/admin.py:260 stock/models.py:897 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2230 users/models.py:124 +msgid "Expiry Date" +msgstr "" + +#: stock/api.py:312 +msgid "Filter by location depth" +msgstr "" + +#: stock/api.py:332 +msgid "Filter by top-level locations" +msgstr "" + +#: stock/api.py:347 +msgid "Include sub-locations in filtered results" +msgstr "" + +#: stock/api.py:369 stock/serializers.py:1152 +msgid "Parent Location" +msgstr "" + +#: stock/api.py:370 +msgid "Filter by parent location" +msgstr "" + +#: stock/api.py:617 templates/js/translated/table_filters.js:427 +msgid "External Location" +msgstr "" + +#: stock/api.py:805 +msgid "Part Tree" +msgstr "" + +#: stock/api.py:835 +msgid "Expiry date before" +msgstr "" + +#: stock/api.py:839 +msgid "Expiry date after" +msgstr "" + +#: stock/api.py:842 stock/serializers.py:600 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 +msgid "Stale" +msgstr "" + +#: stock/api.py:929 +msgid "Quantity is required" +msgstr "" + +#: stock/api.py:935 +msgid "Valid part must be supplied" +msgstr "" + +#: stock/api.py:966 +msgid "The given supplier part does not exist" +msgstr "" + +#: stock/api.py:976 +msgid "The supplier part has a pack size defined, but flag use_pack_size not set" +msgstr "" + +#: stock/api.py:1007 +msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "" + +#: stock/models.py:61 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:62 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:88 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:125 stock/models.py:785 +#: stock/templates/stock/location.html:17 +#: stock/templates/stock/stock_app_base.html:8 +msgid "Stock Location" +msgstr "" + +#: stock/models.py:126 stock/templates/stock/location.html:186 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:205 +msgid "Stock Locations" +msgstr "" + +#: stock/models.py:168 stock/models.py:946 +#: stock/templates/stock/item_base.html:247 +msgid "Owner" +msgstr "" + +#: stock/models.py:169 stock/models.py:947 +msgid "Select Owner" +msgstr "" + +#: stock/models.py:177 +msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." +msgstr "" + +#: stock/models.py:184 templates/js/translated/stock.js:2781 +#: templates/js/translated/table_filters.js:243 +msgid "External" +msgstr "" + +#: stock/models.py:185 +msgid "This is an external stock location" +msgstr "" + +#: stock/models.py:191 templates/js/translated/stock.js:2790 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:195 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:262 +msgid "You cannot make this stock location structural because some stock items are already located into it!" +msgstr "" + +#: stock/models.py:642 +msgid "Stock items cannot be located into structural stock locations!" +msgstr "" + +#: stock/models.py:669 stock/serializers.py:479 +msgid "Stock item cannot be created for virtual parts" +msgstr "" + +#: stock/models.py:686 +#, python-brace-format +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" + +#: stock/models.py:696 stock/models.py:709 +msgid "Quantity must be 1 for item with a serial number" +msgstr "" + +#: stock/models.py:699 +msgid "Serial number cannot be set if quantity greater than 1" +msgstr "" + +#: stock/models.py:721 +msgid "Item cannot belong to itself" +msgstr "" + +#: stock/models.py:726 +msgid "Item must have a build reference if is_building=True" +msgstr "" + +#: stock/models.py:739 +msgid "Build reference does not point to the same part object" +msgstr "" + +#: stock/models.py:755 +msgid "Parent Stock Item" +msgstr "" + +#: stock/models.py:767 +msgid "Base part" +msgstr "" + +#: stock/models.py:777 +msgid "Select a matching supplier part for this stock item" +msgstr "" + +#: stock/models.py:789 +msgid "Where is this stock item located?" +msgstr "" + +#: stock/models.py:797 stock/serializers.py:1546 +msgid "Packaging this stock item is stored in" +msgstr "" + +#: stock/models.py:808 +msgid "Is this item installed in another item?" +msgstr "" + +#: stock/models.py:827 +msgid "Serial number for this item" +msgstr "" + +#: stock/models.py:841 stock/serializers.py:1529 +msgid "Batch code for this stock item" +msgstr "" + +#: stock/models.py:846 +msgid "Stock Quantity" +msgstr "" + +#: stock/models.py:856 +msgid "Source Build" +msgstr "" + +#: stock/models.py:859 +msgid "Build for this stock item" +msgstr "" + +#: stock/models.py:866 stock/templates/stock/item_base.html:363 +msgid "Consumed By" +msgstr "" + +#: stock/models.py:869 +msgid "Build order which consumed this stock item" +msgstr "" + +#: stock/models.py:878 +msgid "Source Purchase Order" +msgstr "" + +#: stock/models.py:882 +msgid "Purchase order for this stock item" +msgstr "" + +#: stock/models.py:888 +msgid "Destination Sales Order" +msgstr "" + +#: stock/models.py:899 +msgid "Expiry date for stock item. Stock will be considered expired after this date" +msgstr "" + +#: stock/models.py:917 +msgid "Delete on deplete" +msgstr "" + +#: stock/models.py:918 +msgid "Delete this Stock Item when stock is depleted" +msgstr "" + +#: stock/models.py:938 +msgid "Single unit purchase price at time of purchase" +msgstr "" + +#: stock/models.py:969 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1489 +msgid "Part is not set as trackable" +msgstr "" + +#: stock/models.py:1495 +msgid "Quantity must be integer" +msgstr "" + +#: stock/models.py:1503 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" + +#: stock/models.py:1509 +msgid "Serial numbers must be a list of integers" +msgstr "" + +#: stock/models.py:1514 +msgid "Quantity does not match serial numbers" +msgstr "" + +#: stock/models.py:1522 stock/serializers.py:722 +msgid "Serial numbers already exist" +msgstr "" + +#: stock/models.py:1619 +msgid "Test template does not exist" +msgstr "" + +#: stock/models.py:1637 +msgid "Stock item has been assigned to a sales order" +msgstr "" + +#: stock/models.py:1641 +msgid "Stock item is installed in another item" +msgstr "" + +#: stock/models.py:1644 +msgid "Stock item contains other items" +msgstr "" + +#: stock/models.py:1647 +msgid "Stock item has been assigned to a customer" +msgstr "" + +#: stock/models.py:1650 +msgid "Stock item is currently in production" +msgstr "" + +#: stock/models.py:1653 +msgid "Serialized stock cannot be merged" +msgstr "" + +#: stock/models.py:1660 stock/serializers.py:1435 +msgid "Duplicate stock items" +msgstr "" + +#: stock/models.py:1664 +msgid "Stock items must refer to the same part" +msgstr "" + +#: stock/models.py:1672 +msgid "Stock items must refer to the same supplier part" +msgstr "" + +#: stock/models.py:1677 +msgid "Stock status codes must match" +msgstr "" + +#: stock/models.py:1938 +msgid "StockItem cannot be moved as it is not in stock" +msgstr "" + +#: stock/models.py:2319 +msgid "Stock Item Tracking" +msgstr "" + +#: stock/models.py:2352 +msgid "Entry notes" +msgstr "" + +#: stock/models.py:2392 +msgid "Stock Item Test Result" +msgstr "" + +#: stock/models.py:2425 +msgid "Value must be provided for this test" +msgstr "" + +#: stock/models.py:2430 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:2435 +msgid "Invalid value for this test" +msgstr "" + +#: stock/models.py:2459 +msgid "Test result" +msgstr "" + +#: stock/models.py:2466 +msgid "Test output value" +msgstr "" + +#: stock/models.py:2474 +msgid "Test result attachment" +msgstr "" + +#: stock/models.py:2478 +msgid "Test notes" +msgstr "" + +#: stock/models.py:2486 templates/js/translated/stock.js:1548 +msgid "Test station" +msgstr "" + +#: stock/models.py:2487 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2493 +msgid "Started" +msgstr "" + +#: stock/models.py:2494 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2500 +msgid "Finished" +msgstr "" + +#: stock/models.py:2501 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:76 +msgid "Generated batch code" +msgstr "" + +#: stock/serializers.py:85 +msgid "Select build order" +msgstr "" + +#: stock/serializers.py:94 +msgid "Select stock item to generate batch code for" +msgstr "" + +#: stock/serializers.py:103 +msgid "Select location to generate batch code for" +msgstr "" + +#: stock/serializers.py:112 +msgid "Select part to generate batch code for" +msgstr "" + +#: stock/serializers.py:121 +msgid "Select purchase order" +msgstr "" + +#: stock/serializers.py:128 +msgid "Enter quantity for batch code" +msgstr "" + +#: stock/serializers.py:151 +msgid "Generated serial number" +msgstr "" + +#: stock/serializers.py:160 +msgid "Select part to generate serial number for" +msgstr "" + +#: stock/serializers.py:168 +msgid "Quantity of serial numbers to generate" +msgstr "" + +#: stock/serializers.py:233 +msgid "Test template for this result" +msgstr "" + +#: stock/serializers.py:254 +msgid "Template ID or test name must be provided" +msgstr "" + +#: stock/serializers.py:286 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:322 +msgid "Serial number is too large" +msgstr "" + +#: stock/serializers.py:451 stock/templates/stock/item_base.html:193 +msgid "Parent Item" +msgstr "" + +#: stock/serializers.py:452 +msgid "Parent stock item" +msgstr "" + +#: stock/serializers.py:471 +msgid "Use pack size when adding: the quantity defined is the number of packs" +msgstr "" + +#: stock/serializers.py:592 stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:174 +msgid "Expired" +msgstr "" + +#: stock/serializers.py:598 stock/templates/stock/stock_sidebar.html:20 +msgid "Child Items" +msgstr "" + +#: stock/serializers.py:602 +msgid "Tracking Items" +msgstr "" + +#: stock/serializers.py:608 +msgid "Purchase price of this stock item, per unit or pack" +msgstr "" + +#: stock/serializers.py:627 +msgid "Minimum Pricing" +msgstr "" + +#: stock/serializers.py:633 +msgid "Maximum Pricing" +msgstr "" + +#: stock/serializers.py:657 +msgid "Enter number of stock items to serialize" +msgstr "" + +#: stock/serializers.py:670 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({q})" +msgstr "" + +#: stock/serializers.py:677 +msgid "Enter serial numbers for new items" +msgstr "" + +#: stock/serializers.py:688 stock/serializers.py:1392 stock/serializers.py:1648 +msgid "Destination stock location" +msgstr "" + +#: stock/serializers.py:695 +msgid "Optional note field" +msgstr "" + +#: stock/serializers.py:705 +msgid "Serial numbers cannot be assigned to this part" +msgstr "" + +#: stock/serializers.py:760 +msgid "Select stock item to install" +msgstr "" + +#: stock/serializers.py:767 +msgid "Quantity to Install" +msgstr "" + +#: stock/serializers.py:768 +msgid "Enter the quantity of items to install" +msgstr "" + +#: stock/serializers.py:773 stock/serializers.py:853 stock/serializers.py:949 +#: stock/serializers.py:999 +msgid "Add transaction note (optional)" +msgstr "" + +#: stock/serializers.py:781 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:789 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:800 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:813 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:848 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:883 +msgid "Select part to convert stock item into" +msgstr "" + +#: stock/serializers.py:896 +msgid "Selected part is not a valid option for conversion" +msgstr "" + +#: stock/serializers.py:913 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:944 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:981 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:987 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1083 stock/serializers.py:1160 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:222 +#: stock/templates/stock/location_sidebar.html:5 +msgid "Sublocations" +msgstr "" + +#: stock/serializers.py:1153 templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: stock/serializers.py:1264 +msgid "Part must be salable" +msgstr "" + +#: stock/serializers.py:1268 +msgid "Item is allocated to a sales order" +msgstr "" + +#: stock/serializers.py:1272 +msgid "Item is allocated to a build order" +msgstr "" + +#: stock/serializers.py:1296 +msgid "Customer to assign stock items" +msgstr "" + +#: stock/serializers.py:1302 +msgid "Selected company is not a customer" +msgstr "" + +#: stock/serializers.py:1310 +msgid "Stock assignment notes" +msgstr "" + +#: stock/serializers.py:1320 stock/serializers.py:1574 +msgid "A list of stock items must be provided" +msgstr "" + +#: stock/serializers.py:1399 +msgid "Stock merging notes" +msgstr "" + +#: stock/serializers.py:1404 +msgid "Allow mismatched suppliers" +msgstr "" + +#: stock/serializers.py:1405 +msgid "Allow stock items with different supplier parts to be merged" +msgstr "" + +#: stock/serializers.py:1410 +msgid "Allow mismatched status" +msgstr "" + +#: stock/serializers.py:1411 +msgid "Allow stock items with different status codes to be merged" +msgstr "" + +#: stock/serializers.py:1421 +msgid "At least two stock items must be provided" +msgstr "" + +#: stock/serializers.py:1488 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1517 +msgid "StockItem primary key value" +msgstr "" + +#: stock/serializers.py:1536 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1564 +msgid "Stock transaction notes" +msgstr "" + +#: stock/status_codes.py:11 +msgid "OK" +msgstr "" + +#: stock/status_codes.py:12 +msgid "Attention needed" +msgstr "" + +#: stock/status_codes.py:13 +msgid "Damaged" +msgstr "" + +#: stock/status_codes.py:14 +msgid "Destroyed" +msgstr "" + +#: stock/status_codes.py:15 +msgid "Rejected" +msgstr "" + +#: stock/status_codes.py:19 +msgid "Quarantined" +msgstr "" + +#: stock/status_codes.py:40 +msgid "Legacy stock tracking entry" +msgstr "" + +#: stock/status_codes.py:42 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "" + +#: stock/status_codes.py:45 +msgid "Edited stock item" +msgstr "" + +#: stock/status_codes.py:46 +msgid "Assigned serial number" +msgstr "" + +#: stock/status_codes.py:49 +msgid "Stock counted" +msgstr "" + +#: stock/status_codes.py:50 +msgid "Stock manually added" +msgstr "" + +#: stock/status_codes.py:51 +msgid "Stock manually removed" +msgstr "" + +#: stock/status_codes.py:54 +msgid "Location changed" +msgstr "" + +#: stock/status_codes.py:55 +msgid "Stock updated" +msgstr "" + +#: stock/status_codes.py:58 +msgid "Installed into assembly" +msgstr "" + +#: stock/status_codes.py:59 +msgid "Removed from assembly" +msgstr "" + +#: stock/status_codes.py:61 +msgid "Installed component item" +msgstr "" + +#: stock/status_codes.py:62 +msgid "Removed component item" +msgstr "" + +#: stock/status_codes.py:65 +msgid "Split from parent item" +msgstr "" + +#: stock/status_codes.py:66 +msgid "Split child item" +msgstr "" + +#: stock/status_codes.py:69 templates/js/translated/stock.js:1858 +msgid "Merged stock items" +msgstr "" + +#: stock/status_codes.py:72 +msgid "Converted to variant" +msgstr "" + +#: stock/status_codes.py:75 +msgid "Build order output created" +msgstr "" + +#: stock/status_codes.py:76 +msgid "Build order output completed" +msgstr "" + +#: stock/status_codes.py:77 +msgid "Build order output rejected" +msgstr "" + +#: stock/status_codes.py:78 templates/js/translated/stock.js:1764 +msgid "Consumed by build order" +msgstr "" + +#: stock/status_codes.py:81 +msgid "Shipped against Sales Order" +msgstr "" + +#: stock/status_codes.py:84 +msgid "Received against Purchase Order" +msgstr "" + +#: stock/status_codes.py:87 +msgid "Returned against Return Order" +msgstr "" + +#: stock/status_codes.py:90 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "" + +#: stock/status_codes.py:91 +msgid "Returned from customer" +msgstr "" + +#: stock/templates/stock/item.html:17 +msgid "Stock Tracking Information" +msgstr "" + +#: stock/templates/stock/item.html:63 +msgid "Child Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:72 +msgid "This stock item does not have any child items" +msgstr "" + +#: stock/templates/stock/item.html:81 +#: stock/templates/stock/stock_sidebar.html:12 +msgid "Test Data" +msgstr "" + +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 +msgid "Test Report" +msgstr "" + +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276 +msgid "Delete Test Data" +msgstr "" + +#: stock/templates/stock/item.html:93 +msgid "Add Test Data" +msgstr "" + +#: stock/templates/stock/item.html:125 +msgid "Stock Item Notes" +msgstr "" + +#: stock/templates/stock/item.html:140 +msgid "Installed Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 +msgid "Install Stock Item" +msgstr "" + +#: stock/templates/stock/item.html:264 +msgid "Delete all test results for this stock item" +msgstr "" + +#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1701 +msgid "Add Test Result" +msgstr "" + +#: stock/templates/stock/item_base.html:33 +msgid "Locate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:51 +msgid "Scan to Location" +msgstr "" + +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 +msgid "Printing actions" +msgstr "" + +#: stock/templates/stock/item_base.html:75 +msgid "Stock adjustment actions" +msgstr "" + +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1824 +msgid "Count stock" +msgstr "" + +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1806 +msgid "Add stock" +msgstr "" + +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1815 +msgid "Remove stock" +msgstr "" + +#: stock/templates/stock/item_base.html:85 +msgid "Serialize stock" +msgstr "" + +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1833 +msgid "Transfer stock" +msgstr "" + +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1887 +msgid "Assign to customer" +msgstr "" + +#: stock/templates/stock/item_base.html:94 +msgid "Return to stock" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install" +msgstr "" + +#: stock/templates/stock/item_base.html:115 +msgid "Convert to variant" +msgstr "" + +#: stock/templates/stock/item_base.html:118 +msgid "Duplicate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:120 +msgid "Edit stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:123 +msgid "Delete stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2298 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:211 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:251 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 +msgid "Read only" +msgstr "" + +#: stock/templates/stock/item_base.html:265 +msgid "This stock item is unavailable" +msgstr "" + +#: stock/templates/stock/item_base.html:271 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:272 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:287 +msgid "This stock item is allocated to Sales Order" +msgstr "" + +#: stock/templates/stock/item_base.html:295 +msgid "This stock item is allocated to Build Order" +msgstr "" + +#: stock/templates/stock/item_base.html:311 +msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" +msgstr "" + +#: stock/templates/stock/item_base.html:317 +msgid "previous page" +msgstr "" + +#: stock/templates/stock/item_base.html:317 +msgid "Navigate to previous serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "next page" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "Navigate to next serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2555 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:413 +msgid "Tests" +msgstr "" + +#: stock/templates/stock/item_base.html:419 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#, python-format +msgid "This StockItem expired on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:439 +#, python-format +msgid "This StockItem expires on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:455 +msgid "No stocktake performed" +msgstr "" + +#: stock/templates/stock/item_base.html:504 +#: templates/js/translated/stock.js:1952 +msgid "stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:527 +msgid "Edit Stock Status" +msgstr "" + +#: stock/templates/stock/item_base.html:536 +msgid "Stock Item QR Code" +msgstr "" + +#: stock/templates/stock/item_base.html:547 +msgid "Link Barcode to Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:611 +msgid "Select one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/item_base.html:614 +msgid "Warning" +msgstr "" + +#: stock/templates/stock/item_base.html:615 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/item_base.html:623 +msgid "Convert Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:657 +msgid "Return to Stock" +msgstr "" + +#: stock/templates/stock/item_serialize.html:5 +msgid "Create serialized items from this stock item." +msgstr "" + +#: stock/templates/stock/item_serialize.html:7 +msgid "Select quantity to serialize, and unique serial numbers." +msgstr "" + +#: stock/templates/stock/location.html:38 +msgid "Perform stocktake for this stock location" +msgstr "" + +#: stock/templates/stock/location.html:45 +msgid "Locate stock location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan stock items into this location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan In Stock Items" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan In Container" +msgstr "" + +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 +msgid "Location actions" +msgstr "" + +#: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 +msgid "Delete location" +msgstr "" + +#: stock/templates/stock/location.html:138 +msgid "Top level stock location" +msgstr "" + +#: stock/templates/stock/location.html:144 +msgid "Location Owner" +msgstr "" + +#: stock/templates/stock/location.html:148 +msgid "You are not in the list of owners of this location. This stock location cannot be edited." +msgstr "" + +#: stock/templates/stock/location.html:176 +msgid "Location Type" +msgstr "" + +#: stock/templates/stock/location.html:226 +msgid "Create new stock location" +msgstr "" + +#: stock/templates/stock/location.html:227 +msgid "New Location" +msgstr "" + +#: stock/templates/stock/location.html:299 +#: templates/js/translated/stock.js:2572 +msgid "stock location" +msgstr "" + +#: stock/templates/stock/location.html:321 +msgid "Scanned stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:394 +msgid "Stock Location QR Code" +msgstr "" + +#: stock/templates/stock/location.html:405 +msgid "Link Barcode to Stock Location" +msgstr "" + +#: stock/templates/stock/stock_app_base.html:16 +msgid "Loading..." +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:5 +msgid "Stock Tracking" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:8 +msgid "Allocations" +msgstr "" + +#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 +msgid "Permission Denied" +msgstr "" + +#: templates/403.html:15 +msgid "You do not have permission to view this page." +msgstr "" + +#: templates/403_csrf.html:11 +msgid "Authentication Failure" +msgstr "" + +#: templates/403_csrf.html:14 +msgid "You have been logged out from InvenTree." +msgstr "" + +#: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 +#: templates/navbar.html:150 +msgid "Login" +msgstr "" + +#: templates/404.html:6 templates/404.html:12 +msgid "Page Not Found" +msgstr "" + +#: templates/404.html:15 +msgid "The requested page does not exist" +msgstr "" + +#: templates/500.html:6 templates/500.html:12 +msgid "Internal Server Error" +msgstr "" + +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" +msgstr "" + +#: templates/500.html:16 +msgid "Refer to the error log in the admin interface for further details" +msgstr "" + +#: templates/503.html:11 templates/503.html:33 +msgid "Site is in Maintenance" +msgstr "" + +#: templates/503.html:39 +msgid "The site is currently in maintenance and should be up again soon!" +msgstr "" + +#: templates/InvenTree/index.html:7 +msgid "Index" +msgstr "" + +#: templates/InvenTree/index.html:39 +msgid "Subscribed Parts" +msgstr "" + +#: templates/InvenTree/index.html:52 +msgid "Subscribed Categories" +msgstr "" + +#: templates/InvenTree/index.html:62 +msgid "Latest Parts" +msgstr "" + +#: templates/InvenTree/index.html:77 +msgid "BOM Waiting Validation" +msgstr "" + +#: templates/InvenTree/index.html:106 +msgid "Recently Updated" +msgstr "" + +#: templates/InvenTree/index.html:134 +msgid "Depleted Stock" +msgstr "" + +#: templates/InvenTree/index.html:148 +msgid "Required for Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:156 +msgid "Expired Stock" +msgstr "" + +#: templates/InvenTree/index.html:172 +msgid "Stale Stock" +msgstr "" + +#: templates/InvenTree/index.html:199 +msgid "Build Orders In Progress" +msgstr "" + +#: templates/InvenTree/index.html:210 +msgid "Overdue Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:230 +msgid "Outstanding Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:241 +msgid "Overdue Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:262 +msgid "Outstanding Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:273 +msgid "Overdue Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:299 +msgid "InvenTree News" +msgstr "" + +#: templates/InvenTree/index.html:301 +msgid "Current News" +msgstr "" + +#: templates/InvenTree/notifications/history.html:9 +msgid "Notification History" +msgstr "" + +#: templates/InvenTree/notifications/history.html:13 +#: templates/InvenTree/notifications/history.html:14 +#: templates/InvenTree/notifications/notifications.html:75 +msgid "Delete Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:9 +msgid "Pending Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:13 +#: templates/InvenTree/notifications/inbox.html:14 +msgid "Mark all as read" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:10 +#: templates/InvenTree/notifications/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:17 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 +msgid "Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:38 +msgid "No unread notifications found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:58 +msgid "No notification history found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:65 +msgid "Delete all read notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:89 +#: templates/js/translated/notification.js:85 +msgid "Delete Notification" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:8 +msgid "Inbox" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:10 +msgid "History" +msgstr "" + +#: templates/InvenTree/search.html:8 +msgid "Search Results" +msgstr "" + +#: templates/InvenTree/settings/barcode.html:8 +msgid "Barcode Settings" +msgstr "" + +#: templates/InvenTree/settings/build.html:8 +msgid "Build Order Settings" +msgstr "" + +#: templates/InvenTree/settings/category.html:7 +msgid "Category Settings" +msgstr "" + +#: templates/InvenTree/settings/global.html:8 +msgid "Server Settings" +msgstr "" + +#: templates/InvenTree/settings/label.html:8 +#: templates/InvenTree/settings/user_labels.html:9 +msgid "Label Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:8 +msgid "Login Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:15 +msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" +msgstr "" + +#: templates/InvenTree/settings/login.html:27 templates/account/signup.html:5 +#: templates/socialaccount/signup.html:5 +msgid "Signup" +msgstr "" + +#: templates/InvenTree/settings/login.html:36 +msgid "Single Sign On" +msgstr "" + +#: templates/InvenTree/settings/mixins/settings.html:5 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 +msgid "Settings" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:5 +msgid "URLs" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:8 +#, python-format +msgid "The Base-URL for this plugin is %(base)s." +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:14 +msgid "URL" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:23 +msgid "Open in new tab" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:9 +#: templates/InvenTree/settings/user_notifications.html:9 +msgid "Notification Settings" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:18 +msgid "Slug" +msgstr "" + +#: templates/InvenTree/settings/part.html:7 +msgid "Part Settings" +msgstr "" + +#: templates/InvenTree/settings/part.html:44 +msgid "Part Import" +msgstr "" + +#: templates/InvenTree/settings/part.html:48 +msgid "Import Part" +msgstr "" + +#: templates/InvenTree/settings/part_parameters.html:20 +msgid "Part Parameter Templates" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:7 +msgid "Stocktake Settings" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:25 +msgid "Stocktake Reports" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:9 +#: templates/InvenTree/settings/sidebar.html:64 +msgid "Plugin Settings" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:15 +msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." +msgstr "" + +#: templates/InvenTree/settings/plugin.html:38 +#: templates/InvenTree/settings/sidebar.html:66 +msgid "Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:44 +#: templates/InvenTree/settings/plugin.html:45 +#: templates/js/translated/plugin.js:151 +msgid "Install Plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:47 +#: templates/InvenTree/settings/plugin.html:48 +#: templates/js/translated/plugin.js:224 +msgid "Reload Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:58 +msgid "External plugins are not enabled for this InvenTree installation" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:73 +msgid "Plugin Error Stack" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:82 +msgid "Stage" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:84 +#: templates/js/translated/notification.js:76 +msgid "Message" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:16 +msgid "Plugin information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:47 +msgid "no version information supplied" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:61 +msgid "License" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:70 +msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:76 +msgid "Package information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:82 +msgid "Installation method" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:85 +msgid "This plugin was installed as a package" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:87 +msgid "This plugin was found in a local server path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:93 +msgid "Installation path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:100 +#: templates/js/translated/plugin.js:68 +#: templates/js/translated/table_filters.js:496 +msgid "Builtin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:101 +msgid "This is a builtin plugin which cannot be disabled" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:72 +#: templates/js/translated/table_filters.js:500 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 +msgid "Commit Author" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:117 +#: templates/about.html:36 +msgid "Commit Date" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:121 +#: templates/about.html:29 +msgid "Commit Hash" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:125 +msgid "Commit Message" +msgstr "" + +#: templates/InvenTree/settings/po.html:7 +msgid "Purchase Order Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:7 +msgid "Pricing Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:35 +msgid "Exchange Rates" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:39 +msgid "Update Now" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:47 +#: templates/InvenTree/settings/pricing.html:51 +msgid "Last Update" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:51 +msgid "Never" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:8 +msgid "Project Code Settings" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:21 +#: templates/InvenTree/settings/sidebar.html:33 +msgid "Project Codes" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:25 +#: templates/InvenTree/settings/settings_staff_js.html:216 +msgid "New Project Code" +msgstr "" + +#: templates/InvenTree/settings/report.html:8 +#: templates/InvenTree/settings/user_reporting.html:9 +msgid "Report Settings" +msgstr "" + +#: templates/InvenTree/settings/returns.html:7 +msgid "Return Order Settings" +msgstr "" + +#: templates/InvenTree/settings/setting.html:31 +msgid "No value set" +msgstr "" + +#: templates/InvenTree/settings/setting.html:46 +msgid "Edit setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:58 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:60 +msgid "Edit Notification Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:63 +msgid "Edit Global Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:65 +msgid "Edit User Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:49 +msgid "Rate" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:394 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:406 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:158 +#: templates/js/translated/build.js:2403 +msgid "group" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:175 +#: templates/InvenTree/settings/settings_staff_js.html:189 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:176 +#: templates/InvenTree/settings/settings_staff_js.html:203 +msgid "Delete Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:285 +msgid "No category parameter templates found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:308 +#: templates/js/translated/part.js:1651 +msgid "Edit Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:309 +#: templates/js/translated/part.js:1652 +msgid "Delete Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:326 +msgid "Edit Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:353 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:388 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:418 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:440 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:461 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:466 +#: templates/InvenTree/settings/settings_staff_js.html:480 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:467 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:490 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:500 +#: templates/InvenTree/settings/stock.html:38 +msgid "New Location Type" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:6 +#: templates/InvenTree/settings/user_settings.html:9 +msgid "User Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:9 +msgid "Account" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:11 +msgid "Display" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:13 +msgid "Home Page" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:15 +#: templates/js/translated/forms.js:2167 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 +msgid "Search" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:19 +#: templates/InvenTree/settings/sidebar.html:43 +msgid "Reporting" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:24 +msgid "Global Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 +msgid "Server" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:41 +msgid "Labels" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:45 +msgid "Categories" +msgstr "" + +#: templates/InvenTree/settings/so.html:7 +msgid "Sales Order Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:7 +msgid "Stock Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:34 +msgid "Stock Location Types" +msgstr "" + +#: templates/InvenTree/settings/user.html:13 +msgid "Account Settings" +msgstr "" + +#: templates/InvenTree/settings/user.html:19 +#: templates/account/password_reset_from_key.html:4 +#: templates/account/password_reset_from_key.html:7 +msgid "Change Password" +msgstr "" + +#: templates/InvenTree/settings/user.html:55 +msgid "The following email addresses are associated with your account:" +msgstr "" + +#: templates/InvenTree/settings/user.html:76 +msgid "Verified" +msgstr "" + +#: templates/InvenTree/settings/user.html:78 +msgid "Unverified" +msgstr "" + +#: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:957 +msgid "Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:86 +msgid "Make Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:87 +msgid "Re-send Verification" +msgstr "" + +#: templates/InvenTree/settings/user.html:96 +msgid "Warning:" +msgstr "" + +#: templates/InvenTree/settings/user.html:97 +msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." +msgstr "" + +#: templates/InvenTree/settings/user.html:105 +msgid "Add Email Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:110 +msgid "Add Email" +msgstr "" + +#: templates/InvenTree/settings/user.html:120 +msgid "Multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:125 +msgid "You have these factors available:" +msgstr "" + +#: templates/InvenTree/settings/user.html:135 +msgid "TOTP" +msgstr "" + +#: templates/InvenTree/settings/user.html:141 +msgid "Static" +msgstr "" + +#: templates/InvenTree/settings/user.html:150 +msgid "Multifactor authentication is not configured for your account" +msgstr "" + +#: templates/InvenTree/settings/user.html:157 +msgid "Change factors" +msgstr "" + +#: templates/InvenTree/settings/user.html:158 +msgid "Setup multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:160 +msgid "Remove multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:171 +msgid "Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:177 +msgid "Log out active sessions (except this one)" +msgstr "" + +#: templates/InvenTree/settings/user.html:178 +msgid "Log Out Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:187 +msgid "unknown on unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:188 +msgid "unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:192 +msgid "IP Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:193 +msgid "Device" +msgstr "" + +#: templates/InvenTree/settings/user.html:194 +msgid "Last Activity" +msgstr "" + +#: templates/InvenTree/settings/user.html:207 +#, python-format +msgid "%(time)s ago (this session)" +msgstr "" + +#: templates/InvenTree/settings/user.html:209 +#, python-format +msgid "%(time)s ago" +msgstr "" + +#: templates/InvenTree/settings/user.html:223 +msgid "Do you really want to remove the selected email address?" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:9 +msgid "Display Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:29 +msgid "Theme Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:39 +msgid "Select theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:50 +msgid "Set Theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:58 +msgid "Language Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:67 +msgid "Select language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:83 +#, python-format +msgid "%(lang_translated)s%% translated" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:85 +msgid "No translations available" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:92 +msgid "Set Language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:95 +msgid "Some languages are not complete" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:97 +msgid "Show only sufficient" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "and hidden." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "Show them too" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:106 +msgid "Help the translation efforts!" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:107 +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:108 +msgid "InvenTree Translation Project" +msgstr "" + +#: templates/InvenTree/settings/user_homepage.html:9 +msgid "Home Page Settings" +msgstr "" + +#: templates/InvenTree/settings/user_search.html:9 +msgid "Search Settings" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:9 +msgid "Single Sign On Accounts" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:16 +msgid "You can sign in to your account using any of the following third party accounts:" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:52 +msgid "There are no social network accounts connected to this account." +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:58 +msgid "Add SSO Account" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:67 +msgid "Single Sign On is not enabled for this server" +msgstr "" + +#: templates/about.html:9 +msgid "InvenTree Version" +msgstr "" + +#: templates/about.html:14 +msgid "Development Version" +msgstr "" + +#: templates/about.html:17 +msgid "Up to Date" +msgstr "" + +#: templates/about.html:19 +msgid "Update Available" +msgstr "" + +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 +msgid "InvenTree Documentation" +msgstr "" + +#: templates/about.html:54 +msgid "API Version" +msgstr "" + +#: templates/about.html:59 +msgid "Python Version" +msgstr "" + +#: templates/about.html:64 +msgid "Django Version" +msgstr "" + +#: templates/about.html:69 +msgid "View Code on GitHub" +msgstr "" + +#: templates/about.html:74 +msgid "Credits" +msgstr "" + +#: templates/about.html:79 +msgid "Mobile App" +msgstr "" + +#: templates/about.html:84 +msgid "Submit Bug Report" +msgstr "" + +#: templates/about.html:91 templates/clip.html:4 +#: templates/js/translated/helpers.js:589 +msgid "copy to clipboard" +msgstr "" + +#: templates/about.html:91 +msgid "copy version information" +msgstr "" + +#: templates/account/base.html:66 templates/navbar.html:17 +msgid "InvenTree logo" +msgstr "" + +#: templates/account/email_confirm.html:6 +#: templates/account/email_confirm.html:9 +msgid "Confirm Email Address" +msgstr "" + +#: templates/account/email_confirm.html:15 +#, python-format +msgid "Please confirm that %(email)s is an email address for user %(user_display)s." +msgstr "" + +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774 +msgid "Confirm" +msgstr "" + +#: templates/account/email_confirm.html:29 +#, python-format +msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." +msgstr "" + +#: templates/account/login.html:6 templates/account/login.html:19 +#: templates/account/login.html:40 templates/socialaccount/login.html:5 +msgid "Sign In" +msgstr "" + +#: templates/account/login.html:23 +msgid "Not a member?" +msgstr "" + +#: templates/account/login.html:25 templates/account/signup.html:11 +#: templates/account/signup.html:22 templates/socialaccount/signup.html:8 +#: templates/socialaccount/signup.html:23 +msgid "Sign Up" +msgstr "" + +#: templates/account/login.html:47 +msgid "Forgot Password?" +msgstr "" + +#: templates/account/login.html:55 +msgid "or log in with" +msgstr "" + +#: templates/account/logout.html:5 templates/account/logout.html:8 +#: templates/account/logout.html:20 +msgid "Sign Out" +msgstr "" + +#: templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "" + +#: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45 +msgid "Return to Site" +msgstr "" + +#: templates/account/password_reset.html:5 +#: templates/account/password_reset.html:12 +msgid "Password Reset" +msgstr "" + +#: templates/account/password_reset.html:18 +msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." +msgstr "" + +#: templates/account/password_reset.html:23 +msgid "Reset My Password" +msgstr "" + +#: templates/account/password_reset.html:27 templates/account/signup.html:37 +msgid "This function is currently disabled. Please contact an administrator." +msgstr "" + +#: templates/account/password_reset_from_key.html:7 +msgid "Bad Token" +msgstr "" + +#: templates/account/password_reset_from_key.html:11 +#, python-format +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "" + +#: templates/account/password_reset_from_key.html:18 +msgid "Change password" +msgstr "" + +#: templates/account/password_reset_from_key.html:22 +msgid "Your password is now changed." +msgstr "" + +#: templates/account/signup.html:13 +#, python-format +msgid "Already have an account? Then please sign in." +msgstr "" + +#: templates/account/signup.html:28 +msgid "Use a SSO-provider for signup" +msgstr "" + +#: templates/account/signup_closed.html:5 +#: templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "" + +#: templates/account/signup_closed.html:10 +msgid "Sign up is currently closed." +msgstr "" + +#: templates/account/signup_closed.html:15 +#: templates/socialaccount/authentication_error.html:19 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:30 +msgid "Return to login page" +msgstr "" + +#: templates/admin_button.html:8 +msgid "View in administration panel" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:5 +msgid "Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:13 +msgid "Authenticate" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:6 +msgid "Two-Factor Authentication Backup Tokens" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:17 +msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:20 +msgid "No backup tokens are available. Press the button below to generate some." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:28 +msgid "Generate Tokens" +msgstr "" + +#: templates/allauth_2fa/remove.html:6 +msgid "Disable Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/remove.html:9 +msgid "Are you sure?" +msgstr "" + +#: templates/allauth_2fa/remove.html:17 +msgid "Disable 2FA" +msgstr "" + +#: templates/allauth_2fa/setup.html:6 +msgid "Setup Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/setup.html:10 +msgid "Step 1" +msgstr "" + +#: templates/allauth_2fa/setup.html:14 +msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." +msgstr "" + +#: templates/allauth_2fa/setup.html:20 +msgid "Secret: " +msgstr "" + +#: templates/allauth_2fa/setup.html:24 +msgid "Step 2" +msgstr "" + +#: templates/allauth_2fa/setup.html:28 +msgid "Input a token generated by the app:" +msgstr "" + +#: templates/allauth_2fa/setup.html:38 +msgid "Verify" +msgstr "" + +#: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 +msgid "Add Link" +msgstr "" + +#: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 +msgid "Add Attachment" +msgstr "" + +#: templates/barcode_data.html:5 +msgid "Barcode Identifier" +msgstr "" + +#: templates/base.html:103 +msgid "Server Restart Required" +msgstr "" + +#: templates/base.html:106 +msgid "A configuration option has been changed which requires a server restart" +msgstr "" + +#: templates/base.html:106 templates/base.html:116 +msgid "Contact your system administrator for further information" +msgstr "" + +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + +#: templates/email/build_order_completed.html:9 +#: templates/email/canceled_order_assigned.html:9 +#: templates/email/new_order_assigned.html:9 +#: templates/email/overdue_build_order.html:9 +#: templates/email/overdue_purchase_order.html:9 +#: templates/email/overdue_sales_order.html:9 +#: templates/email/purchase_order_received.html:9 +#: templates/email/return_order_received.html:9 +msgid "Click on the following link to view this order" +msgstr "" + +#: templates/email/build_order_required_stock.html:7 +msgid "Stock is required for the following build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:8 +#, python-format +msgid "Build order %(build)s - building %(quantity)s x %(part)s" +msgstr "" + +#: templates/email/build_order_required_stock.html:10 +msgid "Click on the following link to view this build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:14 +msgid "The following parts are low on required stock" +msgstr "" + +#: templates/email/build_order_required_stock.html:18 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2750 +msgid "Required Quantity" +msgstr "" + +#: templates/email/build_order_required_stock.html:38 +#: templates/email/low_stock_notification.html:30 +msgid "You are receiving this email because you are subscribed to notifications for this part " +msgstr "" + +#: templates/email/low_stock_notification.html:9 +msgid "Click on the following link to view this part" +msgstr "" + +#: templates/email/low_stock_notification.html:18 +#: templates/js/translated/part.js:3238 +msgid "Minimum Quantity" +msgstr "" + +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1135 +msgid "No Response" +msgstr "" + +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1136 +msgid "No response from the InvenTree server" +msgstr "" + +#: templates/js/translated/api.js:232 +msgid "Error 400: Bad request" +msgstr "" + +#: templates/js/translated/api.js:233 +msgid "API request returned error code 400" +msgstr "" + +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1145 +msgid "Error 401: Not Authenticated" +msgstr "" + +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1146 +msgid "Authentication credentials not supplied" +msgstr "" + +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1150 +msgid "Error 403: Permission Denied" +msgstr "" + +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1151 +msgid "You do not have the required permissions to access this function" +msgstr "" + +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1155 +msgid "Error 404: Resource Not Found" +msgstr "" + +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1156 +msgid "The requested resource could not be located on the server" +msgstr "" + +#: templates/js/translated/api.js:252 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:253 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1160 +msgid "Error 408: Timeout" +msgstr "" + +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1161 +msgid "Connection timeout while requesting data from server" +msgstr "" + +#: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 +msgid "Error code" +msgstr "" + +#: templates/js/translated/attachment.js:114 +msgid "All selected attachments will be deleted" +msgstr "" + +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:260 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:294 +msgid "No attachments found" +msgstr "" + +#: templates/js/translated/attachment.js:334 +msgid "Edit Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:365 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:385 +msgid "Edit attachment" +msgstr "" + +#: templates/js/translated/attachment.js:393 +msgid "Delete attachment" +msgstr "" + +#: templates/js/translated/barcode.js:43 +msgid "Scan barcode data here using barcode scanner" +msgstr "" + +#: templates/js/translated/barcode.js:45 +msgid "Enter barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:59 +msgid "Scan barcode using connected webcam" +msgstr "" + +#: templates/js/translated/barcode.js:138 +msgid "Enter optional notes for stock transfer" +msgstr "" + +#: templates/js/translated/barcode.js:139 +msgid "Enter notes" +msgstr "" + +#: templates/js/translated/barcode.js:188 +msgid "Server error" +msgstr "" + +#: templates/js/translated/barcode.js:217 +msgid "Unknown response from server" +msgstr "" + +#: templates/js/translated/barcode.js:252 +#: templates/js/translated/modals.js:1125 +msgid "Invalid server response" +msgstr "" + +#: templates/js/translated/barcode.js:403 +msgid "Scan barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:451 templates/navbar.html:114 +msgid "Scan Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:489 +msgid "No URL in response" +msgstr "" + +#: templates/js/translated/barcode.js:529 +msgid "This will remove the link to the associated barcode" +msgstr "" + +#: templates/js/translated/barcode.js:535 +msgid "Unlink" +msgstr "" + +#: templates/js/translated/barcode.js:598 templates/js/translated/stock.js:1158 +msgid "Remove stock item" +msgstr "" + +#: templates/js/translated/barcode.js:641 +msgid "Scan Stock Items Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:643 +msgid "Scan stock item barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:646 +#: templates/js/translated/barcode.js:843 +msgid "Check In" +msgstr "" + +#: templates/js/translated/barcode.js:678 +msgid "No barcode provided" +msgstr "" + +#: templates/js/translated/barcode.js:718 +msgid "Stock Item already scanned" +msgstr "" + +#: templates/js/translated/barcode.js:722 +msgid "Stock Item already in this location" +msgstr "" + +#: templates/js/translated/barcode.js:729 +msgid "Added stock item" +msgstr "" + +#: templates/js/translated/barcode.js:738 +msgid "Barcode does not match valid stock item" +msgstr "" + +#: templates/js/translated/barcode.js:757 +msgid "Scan Stock Container Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:759 +msgid "Scan stock container barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:793 +msgid "Barcode does not match valid stock location" +msgstr "" + +#: templates/js/translated/barcode.js:837 +msgid "Check Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:906 +#: templates/js/translated/barcode.js:915 +msgid "Barcode does not match a valid location" +msgstr "" + +#: templates/js/translated/bom.js:78 +msgid "Create BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:132 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:188 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629 +#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065 +#: templates/js/translated/purchase_order.js:797 templates/modals.html:15 +#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 +msgid "Close" +msgstr "" + +#: templates/js/translated/bom.js:306 +msgid "Download BOM Template" +msgstr "" + +#: templates/js/translated/bom.js:351 +msgid "Multi Level BOM" +msgstr "" + +#: templates/js/translated/bom.js:352 +msgid "Include BOM data for subassemblies" +msgstr "" + +#: templates/js/translated/bom.js:357 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:358 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "" + +#: templates/js/translated/bom.js:365 +msgid "Include Alternative Parts" +msgstr "" + +#: templates/js/translated/bom.js:366 +msgid "Include alternative parts in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:371 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:372 +msgid "Include part parameter data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:377 +msgid "Include Stock Data" +msgstr "" + +#: templates/js/translated/bom.js:378 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:383 +msgid "Include Manufacturer Data" +msgstr "" + +#: templates/js/translated/bom.js:384 +msgid "Include part manufacturer data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:389 +msgid "Include Supplier Data" +msgstr "" + +#: templates/js/translated/bom.js:390 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:395 +msgid "Include Pricing Data" +msgstr "" + +#: templates/js/translated/bom.js:396 +msgid "Include part pricing data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:591 +msgid "Remove substitute part" +msgstr "" + +#: templates/js/translated/bom.js:645 +msgid "Select and add a new substitute part using the input below" +msgstr "" + +#: templates/js/translated/bom.js:656 +msgid "Are you sure you wish to remove this substitute part link?" +msgstr "" + +#: templates/js/translated/bom.js:662 +msgid "Remove Substitute Part" +msgstr "" + +#: templates/js/translated/bom.js:701 +msgid "Add Substitute" +msgstr "" + +#: templates/js/translated/bom.js:702 +msgid "Edit BOM Item Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:764 +msgid "All selected BOM items will be deleted" +msgstr "" + +#: templates/js/translated/bom.js:780 +msgid "Delete selected BOM items?" +msgstr "" + +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:946 +msgid "Substitutes Available" +msgstr "" + +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2676 +msgid "Variant stock allowed" +msgstr "" + +#: templates/js/translated/bom.js:1014 +msgid "Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:1139 +msgid "BOM pricing is complete" +msgstr "" + +#: templates/js/translated/bom.js:1144 +msgid "BOM pricing is incomplete" +msgstr "" + +#: templates/js/translated/bom.js:1151 +msgid "No pricing available" +msgstr "" + +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2815 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2789 +#: templates/js/translated/sales_order.js:1946 +msgid "No Stock Available" +msgstr "" + +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2793 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2795 +#: templates/js/translated/part.js:1262 +#: templates/js/translated/sales_order.js:1943 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2797 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2780 +msgid "Consumable item" +msgstr "" + +#: templates/js/translated/bom.js:1285 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1287 +msgid "This line has been validated" +msgstr "" + +#: templates/js/translated/bom.js:1289 +msgid "Edit substitute parts" +msgstr "" + +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1293 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1313 +msgid "View BOM" +msgstr "" + +#: templates/js/translated/bom.js:1397 +msgid "No BOM items found" +msgstr "" + +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2661 +msgid "Required Part" +msgstr "" + +#: templates/js/translated/bom.js:1683 +msgid "Inherited from parent BOM" +msgstr "" + +#: templates/js/translated/build.js:143 +msgid "Edit Build Order" +msgstr "" + +#: templates/js/translated/build.js:191 +msgid "Create Build Order" +msgstr "" + +#: templates/js/translated/build.js:223 +msgid "Cancel Build Order" +msgstr "" + +#: templates/js/translated/build.js:232 +msgid "Are you sure you wish to cancel this build?" +msgstr "" + +#: templates/js/translated/build.js:238 +msgid "Stock items have been allocated to this build order" +msgstr "" + +#: templates/js/translated/build.js:245 +msgid "There are incomplete outputs remaining for this build order" +msgstr "" + +#: templates/js/translated/build.js:297 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:305 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:310 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:328 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:369 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 +msgid "Next available serial number" +msgstr "" + +#: templates/js/translated/build.js:371 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 +msgid "Latest serial number" +msgstr "" + +#: templates/js/translated/build.js:380 +msgid "The Bill of Materials contains trackable parts" +msgstr "" + +#: templates/js/translated/build.js:381 +msgid "Build outputs must be generated individually" +msgstr "" + +#: templates/js/translated/build.js:389 +msgid "Trackable parts can have serial numbers specified" +msgstr "" + +#: templates/js/translated/build.js:390 +msgid "Enter serial numbers to generate multiple single build outputs" +msgstr "" + +#: templates/js/translated/build.js:397 +msgid "Create Build Output" +msgstr "" + +#: templates/js/translated/build.js:428 +msgid "Allocate stock items to this build output" +msgstr "" + +#: templates/js/translated/build.js:436 +msgid "Deallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:445 +msgid "Complete build output" +msgstr "" + +#: templates/js/translated/build.js:453 +msgid "Scrap build output" +msgstr "" + +#: templates/js/translated/build.js:460 +msgid "Delete build output" +msgstr "" + +#: templates/js/translated/build.js:480 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "" + +#: templates/js/translated/build.js:498 +msgid "Deallocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:584 templates/js/translated/build.js:712 +#: templates/js/translated/build.js:838 +msgid "Select Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:585 templates/js/translated/build.js:713 +#: templates/js/translated/build.js:839 +msgid "At least one build output must be selected" +msgstr "" + +#: templates/js/translated/build.js:599 +msgid "Selected build outputs will be marked as complete" +msgstr "" + +#: templates/js/translated/build.js:603 templates/js/translated/build.js:737 +#: templates/js/translated/build.js:861 +msgid "Output" +msgstr "" + +#: templates/js/translated/build.js:631 +msgid "Complete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:728 +msgid "Selected build outputs will be marked as scrapped" +msgstr "" + +#: templates/js/translated/build.js:730 +msgid "Scrapped output are marked as rejected" +msgstr "" + +#: templates/js/translated/build.js:731 +msgid "Allocated stock items will no longer be available" +msgstr "" + +#: templates/js/translated/build.js:732 +msgid "The completion status of the build order will not be adjusted" +msgstr "" + +#: templates/js/translated/build.js:763 +msgid "Scrap Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:853 +msgid "Selected build outputs will be deleted" +msgstr "" + +#: templates/js/translated/build.js:855 +msgid "Build output data will be permanently deleted" +msgstr "" + +#: templates/js/translated/build.js:856 +msgid "Allocated stock items will be returned to stock" +msgstr "" + +#: templates/js/translated/build.js:874 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:961 +msgid "Delete allocations" +msgstr "" + +#: templates/js/translated/build.js:968 +msgid "Delete Stock Allocations" +msgstr "" + +#: templates/js/translated/build.js:991 +msgid "No allocated stock" +msgstr "" + +#: templates/js/translated/build.js:1047 +msgid "Stock item" +msgstr "" + +#: templates/js/translated/build.js:1072 +msgid "Edit build allocation" +msgstr "" + +#: templates/js/translated/build.js:1073 +msgid "Delete build allocation" +msgstr "" + +#: templates/js/translated/build.js:1091 +msgid "Edit Build Allocation" +msgstr "" + +#: templates/js/translated/build.js:1104 +msgid "Delete Build Allocation" +msgstr "" + +#: templates/js/translated/build.js:1135 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/translated/build.js:1180 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1202 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1220 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1238 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1291 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1292 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1296 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1472 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1565 +msgid "Allocated Lines" +msgstr "" + +#: templates/js/translated/build.js:1579 +msgid "Required Tests" +msgstr "" + +#: templates/js/translated/build.js:1751 +#: templates/js/translated/purchase_order.js:611 +#: templates/js/translated/sales_order.js:1207 +msgid "Select Parts" +msgstr "" + +#: templates/js/translated/build.js:1752 +#: templates/js/translated/sales_order.js:1208 +msgid "You must select at least one part to allocate" +msgstr "" + +#: templates/js/translated/build.js:1815 +#: templates/js/translated/sales_order.js:1157 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:1892 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:1893 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:1907 +#: templates/js/translated/sales_order.js:1222 +msgid "Select source location (leave blank to take from all locations)" +msgstr "" + +#: templates/js/translated/build.js:1935 +msgid "Allocate Stock Items to Build Order" +msgstr "" + +#: templates/js/translated/build.js:1946 +#: templates/js/translated/sales_order.js:1319 +msgid "No matching stock locations" +msgstr "" + +#: templates/js/translated/build.js:2019 +#: templates/js/translated/sales_order.js:1398 +msgid "No matching stock items" +msgstr "" + +#: templates/js/translated/build.js:2116 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:2117 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:2119 +msgid "If a location is specified, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:2120 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:2121 +msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" +msgstr "" + +#: templates/js/translated/build.js:2152 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2257 +msgid "No builds matching query" +msgstr "" + +#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2655 +#: templates/js/translated/forms.js:2163 templates/js/translated/forms.js:2179 +#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761 +#: templates/js/translated/stock.js:1983 templates/js/translated/stock.js:2710 +msgid "Select" +msgstr "" + +#: templates/js/translated/build.js:2306 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3042 +msgid "No user information" +msgstr "" + +#: templates/js/translated/build.js:2564 +#: templates/js/translated/sales_order.js:1682 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2565 +#: templates/js/translated/sales_order.js:1683 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2580 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2592 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2631 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2632 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2680 templates/js/translated/part.js:792 +#: templates/js/translated/part.js:1208 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2723 +msgid "Gets Inherited" +msgstr "" + +#: templates/js/translated/build.js:2733 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2785 +#: templates/js/translated/sales_order.js:1951 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2840 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2847 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2848 +msgid "Allocate tracked items against individual build outputs" +msgstr "" + +#: templates/js/translated/build.js:2856 +#: templates/js/translated/sales_order.js:2052 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2861 templates/js/translated/stock.js:1868 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2865 +#: templates/js/translated/sales_order.js:2046 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2869 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 +msgid "Add Manufacturer" +msgstr "" + +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 +msgid "Add Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:132 +msgid "Edit Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 +msgid "Add Supplier" +msgstr "" + +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:318 +msgid "Add Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:344 +msgid "All selected supplier parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:360 +msgid "Delete Supplier Parts" +msgstr "" + +#: templates/js/translated/company.js:466 +msgid "Add new Company" +msgstr "" + +#: templates/js/translated/company.js:546 +msgid "Parts Supplied" +msgstr "" + +#: templates/js/translated/company.js:555 +msgid "Parts Manufactured" +msgstr "" + +#: templates/js/translated/company.js:570 +msgid "No company information found" +msgstr "" + +#: templates/js/translated/company.js:619 +msgid "Create New Contact" +msgstr "" + +#: templates/js/translated/company.js:635 +#: templates/js/translated/company.js:758 +msgid "Edit Contact" +msgstr "" + +#: templates/js/translated/company.js:672 +msgid "All selected contacts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:678 +#: templates/js/translated/company.js:742 +msgid "Role" +msgstr "" + +#: templates/js/translated/company.js:686 +msgid "Delete Contacts" +msgstr "" + +#: templates/js/translated/company.js:717 +msgid "No contacts found" +msgstr "" + +#: templates/js/translated/company.js:730 +msgid "Phone Number" +msgstr "" + +#: templates/js/translated/company.js:736 +msgid "Email Address" +msgstr "" + +#: templates/js/translated/company.js:762 +msgid "Delete Contact" +msgstr "" + +#: templates/js/translated/company.js:859 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:874 +#: templates/js/translated/company.js:1035 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:909 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:923 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:950 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:989 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:995 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:1007 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1013 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1039 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1112 +msgid "All selected manufacturer parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1127 +msgid "Delete Manufacturer Parts" +msgstr "" + +#: templates/js/translated/company.js:1161 +msgid "All selected parameters will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1175 +msgid "Delete Parameters" +msgstr "" + +#: templates/js/translated/company.js:1191 +#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1208 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1240 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1259 +msgid "No manufacturer parts found" +msgstr "" + +#: templates/js/translated/company.js:1279 +#: templates/js/translated/company.js:1567 templates/js/translated/part.js:800 +#: templates/js/translated/part.js:1216 +msgid "Template part" +msgstr "" + +#: templates/js/translated/company.js:1283 +#: templates/js/translated/company.js:1571 templates/js/translated/part.js:804 +#: templates/js/translated/part.js:1220 +msgid "Assembled part" +msgstr "" + +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1470 +msgid "No parameters found" +msgstr "" + +#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1533 +msgid "Edit parameter" +msgstr "" + +#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534 +msgid "Delete parameter" +msgstr "" + +#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1439 +msgid "Edit Parameter" +msgstr "" + +#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1555 +msgid "Delete Parameter" +msgstr "" + +#: templates/js/translated/company.js:1496 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1546 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/translated/company.js:1664 +msgid "Base Units" +msgstr "" + +#: templates/js/translated/company.js:1694 +msgid "Availability" +msgstr "" + +#: templates/js/translated/company.js:1725 +msgid "Edit supplier part" +msgstr "" + +#: templates/js/translated/company.js:1726 +msgid "Delete supplier part" +msgstr "" + +#: templates/js/translated/company.js:1779 +#: templates/js/translated/pricing.js:694 +msgid "Delete Price Break" +msgstr "" + +#: templates/js/translated/company.js:1789 +#: templates/js/translated/pricing.js:712 +msgid "Edit Price Break" +msgstr "" + +#: templates/js/translated/company.js:1804 +msgid "No price break information found" +msgstr "" + +#: templates/js/translated/company.js:1833 +msgid "Last updated" +msgstr "" + +#: templates/js/translated/company.js:1840 +msgid "Edit price break" +msgstr "" + +#: templates/js/translated/company.js:1841 +msgid "Delete price break" +msgstr "" + +#: templates/js/translated/filters.js:186 +#: templates/js/translated/filters.js:667 +msgid "true" +msgstr "" + +#: templates/js/translated/filters.js:190 +#: templates/js/translated/filters.js:668 +msgid "false" +msgstr "" + +#: templates/js/translated/filters.js:214 +msgid "Select filter" +msgstr "" + +#: templates/js/translated/filters.js:437 +msgid "Print Labels" +msgstr "" + +#: templates/js/translated/filters.js:441 +msgid "Print Reports" +msgstr "" + +#: templates/js/translated/filters.js:453 +msgid "Download table data" +msgstr "" + +#: templates/js/translated/filters.js:460 +msgid "Reload table data" +msgstr "" + +#: templates/js/translated/filters.js:469 +msgid "Add new filter" +msgstr "" + +#: templates/js/translated/filters.js:477 +msgid "Clear all filters" +msgstr "" + +#: templates/js/translated/filters.js:577 +msgid "Create filter" +msgstr "" + +#: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393 +#: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421 +msgid "Action Prohibited" +msgstr "" + +#: templates/js/translated/forms.js:380 +msgid "Create operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:395 +msgid "Update operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:409 +msgid "Delete operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:423 +msgid "View operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:800 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:903 +msgid "Enter a valid number" +msgstr "" + +#: templates/js/translated/forms.js:1477 templates/modals.html:19 +#: templates/modals.html:43 +msgid "Form errors exist" +msgstr "" + +#: templates/js/translated/forms.js:1975 +msgid "No results found" +msgstr "" + +#: templates/js/translated/forms.js:2286 templates/js/translated/search.js:239 +msgid "Searching" +msgstr "" + +#: templates/js/translated/forms.js:2500 +msgid "Clear input" +msgstr "" + +#: templates/js/translated/forms.js:3102 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:3102 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:3114 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:77 +msgid "YES" +msgstr "" + +#: templates/js/translated/helpers.js:80 +msgid "NO" +msgstr "" + +#: templates/js/translated/helpers.js:93 +msgid "True" +msgstr "" + +#: templates/js/translated/helpers.js:94 +msgid "False" +msgstr "" + +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "" + +#: templates/js/translated/label.js:48 templates/js/translated/report.js:38 +msgid "Select Items" +msgstr "" + +#: templates/js/translated/label.js:49 templates/js/translated/report.js:39 +msgid "No items selected for printing" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:159 +#: templates/js/translated/modals.js:688 +msgid "Cancel" +msgstr "" + +#: templates/js/translated/modals.js:64 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:756 templates/js/translated/modals.js:1064 +#: templates/modals.html:28 templates/modals.html:51 +msgid "Submit" +msgstr "" + +#: templates/js/translated/modals.js:157 +msgid "Form Title" +msgstr "" + +#: templates/js/translated/modals.js:446 +msgid "Waiting for server..." +msgstr "" + +#: templates/js/translated/modals.js:597 +msgid "Show Error Information" +msgstr "" + +#: templates/js/translated/modals.js:687 +msgid "Accept" +msgstr "" + +#: templates/js/translated/modals.js:745 +msgid "Loading Data" +msgstr "" + +#: templates/js/translated/modals.js:1016 +msgid "Invalid response from server" +msgstr "" + +#: templates/js/translated/modals.js:1016 +msgid "Form data missing from server response" +msgstr "" + +#: templates/js/translated/modals.js:1028 +msgid "Error posting form data" +msgstr "" + +#: templates/js/translated/modals.js:1125 +msgid "JSON response missing form data" +msgstr "" + +#: templates/js/translated/modals.js:1140 +msgid "Error 400: Bad Request" +msgstr "" + +#: templates/js/translated/modals.js:1141 +msgid "Server returned error code 400" +msgstr "" + +#: templates/js/translated/modals.js:1164 +msgid "Error requesting form data" +msgstr "" + +#: templates/js/translated/news.js:33 +msgid "No news found" +msgstr "" + +#: templates/js/translated/news.js:38 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1610 +msgid "ID" +msgstr "" + +#: templates/js/translated/notification.js:52 +msgid "Age" +msgstr "" + +#: templates/js/translated/notification.js:65 +msgid "Notification" +msgstr "" + +#: templates/js/translated/notification.js:224 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:228 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:254 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:296 templates/notifications.html:12 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:89 +msgid "Add Extra Line Item" +msgstr "" + +#: templates/js/translated/order.js:126 +msgid "Export Order" +msgstr "" + +#: templates/js/translated/order.js:241 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:255 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:268 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:281 +#: templates/js/translated/purchase_order.js:1990 +msgid "No line items found" +msgstr "" + +#: templates/js/translated/order.js:369 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:370 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:374 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/part.js:90 +msgid "Part Attributes" +msgstr "" + +#: templates/js/translated/part.js:94 +msgid "Part Creation Options" +msgstr "" + +#: templates/js/translated/part.js:98 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:121 +msgid "Add Part Category" +msgstr "" + +#: templates/js/translated/part.js:334 templates/js/translated/stock.js:175 +msgid "Icon (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/part.js:354 +msgid "Create Part Category" +msgstr "" + +#: templates/js/translated/part.js:357 +msgid "Create new category after this one" +msgstr "" + +#: templates/js/translated/part.js:358 +msgid "Part category created" +msgstr "" + +#: templates/js/translated/part.js:372 +msgid "Edit Part Category" +msgstr "" + +#: templates/js/translated/part.js:385 +msgid "Are you sure you want to delete this part category?" +msgstr "" + +#: templates/js/translated/part.js:390 +msgid "Move to parent category" +msgstr "" + +#: templates/js/translated/part.js:399 +msgid "Delete Part Category" +msgstr "" + +#: templates/js/translated/part.js:403 +msgid "Action for parts in this category" +msgstr "" + +#: templates/js/translated/part.js:408 +msgid "Action for child categories" +msgstr "" + +#: templates/js/translated/part.js:432 +msgid "Create Part" +msgstr "" + +#: templates/js/translated/part.js:434 +msgid "Create another part after this one" +msgstr "" + +#: templates/js/translated/part.js:435 +msgid "Part created successfully" +msgstr "" + +#: templates/js/translated/part.js:463 +msgid "Edit Part" +msgstr "" + +#: templates/js/translated/part.js:465 +msgid "Part edited" +msgstr "" + +#: templates/js/translated/part.js:476 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:533 +msgid "Active Part" +msgstr "" + +#: templates/js/translated/part.js:534 +msgid "Part cannot be deleted as it is currently active" +msgstr "" + +#: templates/js/translated/part.js:548 +msgid "Deleting this part cannot be reversed" +msgstr "" + +#: templates/js/translated/part.js:550 +msgid "Any stock items for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:551 +msgid "This part will be removed from any Bills of Material" +msgstr "" + +#: templates/js/translated/part.js:552 +msgid "All manufacturer and supplier information for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:559 +msgid "Delete Part" +msgstr "" + +#: templates/js/translated/part.js:595 +msgid "You are subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:597 +msgid "You have subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:602 +msgid "Subscribe to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:604 +msgid "You have unsubscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:621 +msgid "Validating the BOM will mark each line item as valid" +msgstr "" + +#: templates/js/translated/part.js:631 +msgid "Validate Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:634 +msgid "Validated Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:659 +msgid "Copy Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:687 +#: templates/js/translated/table_filters.js:752 +msgid "Low stock" +msgstr "" + +#: templates/js/translated/part.js:690 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:750 +msgid "Demand" +msgstr "" + +#: templates/js/translated/part.js:773 +msgid "Unit" +msgstr "" + +#: templates/js/translated/part.js:796 templates/js/translated/part.js:1212 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:808 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:812 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:895 +msgid "Schedule generation of a new stocktake report." +msgstr "" + +#: templates/js/translated/part.js:895 +msgid "Once complete, the stocktake report will be available for download." +msgstr "" + +#: templates/js/translated/part.js:903 +msgid "Generate Stocktake Report" +msgstr "" + +#: templates/js/translated/part.js:907 +msgid "Stocktake report scheduled" +msgstr "" + +#: templates/js/translated/part.js:1056 +msgid "No stocktake information available" +msgstr "" + +#: templates/js/translated/part.js:1114 templates/js/translated/part.js:1150 +msgid "Edit Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1118 templates/js/translated/part.js:1160 +msgid "Delete Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1287 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1605 +msgid "No part parameter templates found" +msgstr "" + +#: templates/js/translated/part.js:1668 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1680 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/js/translated/part.js:1688 +msgid "Delete Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1722 +#: templates/js/translated/purchase_order.js:1654 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/translated/part.js:1866 +#: templates/js/translated/purchase_order.js:2153 +#: templates/js/translated/return_order.js:755 +#: templates/js/translated/sales_order.js:1911 +msgid "This line item is overdue" +msgstr "" + +#: templates/js/translated/part.js:1912 +#: templates/js/translated/purchase_order.js:2220 +msgid "Receive line item" +msgstr "" + +#: templates/js/translated/part.js:1975 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1997 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:2085 templates/js/translated/part.js:2525 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:2206 +msgid "Set the part category for the selected parts" +msgstr "" + +#: templates/js/translated/part.js:2211 +msgid "Set Part Category" +msgstr "" + +#: templates/js/translated/part.js:2241 +msgid "Set category" +msgstr "" + +#: templates/js/translated/part.js:2293 +msgid "part" +msgstr "" + +#: templates/js/translated/part.js:2294 +msgid "parts" +msgstr "" + +#: templates/js/translated/part.js:2390 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680 +#: templates/js/translated/stock.js:2669 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2566 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2664 +msgid "No subcategories found" +msgstr "" + +#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2689 +msgid "Display as tree" +msgstr "" + +#: templates/js/translated/part.js:2780 +msgid "Load Subcategories" +msgstr "" + +#: templates/js/translated/part.js:2796 +msgid "Subscribed category" +msgstr "" + +#: templates/js/translated/part.js:2884 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/translated/part.js:2906 templates/js/translated/search.js:342 +msgid "results" +msgstr "" + +#: templates/js/translated/part.js:2956 +msgid "Edit test template" +msgstr "" + +#: templates/js/translated/part.js:2957 +msgid "Delete test template" +msgstr "" + +#: templates/js/translated/part.js:2961 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:2977 +msgid "Edit Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:2991 +msgid "Delete Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:3070 templates/js/translated/part.js:3071 +msgid "No date specified" +msgstr "" + +#: templates/js/translated/part.js:3073 +msgid "Specified date is in the past" +msgstr "" + +#: templates/js/translated/part.js:3079 +msgid "Speculative" +msgstr "" + +#: templates/js/translated/part.js:3129 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:3135 +msgid "Error fetching scheduling information for this part" +msgstr "" + +#: templates/js/translated/part.js:3231 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:3247 +msgid "Maximum Quantity" +msgstr "" + +#: templates/js/translated/part.js:3292 +msgid "Minimum Stock Level" +msgstr "" + +#: templates/js/translated/plugin.js:46 +msgid "No plugins found" +msgstr "" + +#: templates/js/translated/plugin.js:58 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:60 +msgid "This plugin is active" +msgstr "" + +#: templates/js/translated/plugin.js:62 +msgid "This plugin is installed but not active" +msgstr "" + +#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186 +msgid "Disable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186 +msgid "Enable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:158 +msgid "The Plugin was installed" +msgstr "" + +#: templates/js/translated/plugin.js:177 +msgid "Are you sure you want to enable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:181 +msgid "Are you sure you want to disable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:189 +msgid "Enable" +msgstr "" + +#: templates/js/translated/plugin.js:189 +msgid "Disable" +msgstr "" + +#: templates/js/translated/plugin.js:203 +msgid "Plugin updated" +msgstr "" + +#: templates/js/translated/pricing.js:159 +msgid "Error fetching currency data" +msgstr "" + +#: templates/js/translated/pricing.js:321 +msgid "No BOM data available" +msgstr "" + +#: templates/js/translated/pricing.js:463 +msgid "No supplier pricing data available" +msgstr "" + +#: templates/js/translated/pricing.js:572 +msgid "No price break data available" +msgstr "" + +#: templates/js/translated/pricing.js:755 +msgid "No purchase history data available" +msgstr "" + +#: templates/js/translated/pricing.js:791 +msgid "Purchase Price History" +msgstr "" + +#: templates/js/translated/pricing.js:894 +msgid "No sales history data available" +msgstr "" + +#: templates/js/translated/pricing.js:916 +msgid "Sale Price History" +msgstr "" + +#: templates/js/translated/pricing.js:1005 +msgid "No variant data available" +msgstr "" + +#: templates/js/translated/pricing.js:1045 +msgid "Variant Part" +msgstr "" + +#: templates/js/translated/purchase_order.js:169 +msgid "Select purchase order to duplicate" +msgstr "" + +#: templates/js/translated/purchase_order.js:176 +msgid "Duplicate Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:177 +msgid "Duplicate all line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:184 +msgid "Duplicate Extra Lines" +msgstr "" + +#: templates/js/translated/purchase_order.js:185 +msgid "Duplicate extra line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:206 +msgid "Edit Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:223 +msgid "Duplication Options" +msgstr "" + +#: templates/js/translated/purchase_order.js:431 +msgid "Complete Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:448 +#: templates/js/translated/return_order.js:210 +#: templates/js/translated/sales_order.js:552 +msgid "Mark this order as complete?" +msgstr "" + +#: templates/js/translated/purchase_order.js:454 +msgid "All line items have been received" +msgstr "" + +#: templates/js/translated/purchase_order.js:459 +msgid "This order has line items which have not been marked as received." +msgstr "" + +#: templates/js/translated/purchase_order.js:460 +msgid "Completing this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:483 +msgid "Cancel Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:488 +msgid "Are you sure you wish to cancel this purchase order?" +msgstr "" + +#: templates/js/translated/purchase_order.js:494 +msgid "This purchase order can not be cancelled" +msgstr "" + +#: templates/js/translated/purchase_order.js:515 +#: templates/js/translated/return_order.js:164 +msgid "After placing this order, line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:520 +msgid "Issue Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:612 +msgid "At least one purchaseable part must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:637 +msgid "Quantity to order" +msgstr "" + +#: templates/js/translated/purchase_order.js:646 +msgid "New supplier part" +msgstr "" + +#: templates/js/translated/purchase_order.js:664 +msgid "New purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:705 +msgid "Add to purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:755 +msgid "Merge" +msgstr "" + +#: templates/js/translated/purchase_order.js:859 +msgid "No matching supplier parts" +msgstr "" + +#: templates/js/translated/purchase_order.js:878 +msgid "No matching purchase orders" +msgstr "" + +#: templates/js/translated/purchase_order.js:1073 +#: templates/js/translated/return_order.js:490 +msgid "Select Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/return_order.js:491 +msgid "At least one line item must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:1104 +msgid "Received Quantity" +msgstr "" + +#: templates/js/translated/purchase_order.js:1115 +msgid "Quantity to receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1191 +msgid "Stock Status" +msgstr "" + +#: templates/js/translated/purchase_order.js:1205 +msgid "Add barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1206 +msgid "Remove barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1209 +msgid "Specify location" +msgstr "" + +#: templates/js/translated/purchase_order.js:1217 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1228 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/purchase_order.js:1280 +msgid "Serials" +msgstr "" + +#: templates/js/translated/purchase_order.js:1305 +msgid "Order Code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1307 +msgid "Quantity to Receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1333 +#: templates/js/translated/return_order.js:560 +msgid "Confirm receipt of items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1334 +msgid "Receive Purchase Order Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1402 +msgid "Scan Item Barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1403 +msgid "Scan barcode on incoming item (must not match any existing stock items)" +msgstr "" + +#: templates/js/translated/purchase_order.js:1417 +msgid "Invalid barcode data" +msgstr "" + +#: templates/js/translated/purchase_order.js:1681 +#: templates/js/translated/return_order.js:285 +#: templates/js/translated/sales_order.js:810 +#: templates/js/translated/sales_order.js:1034 +msgid "Order is overdue" +msgstr "" + +#: templates/js/translated/purchase_order.js:1843 +msgid "All selected Line items will be deleted" +msgstr "" + +#: templates/js/translated/purchase_order.js:1861 +msgid "Delete selected Line items?" +msgstr "" + +#: templates/js/translated/purchase_order.js:1916 +#: templates/js/translated/sales_order.js:2106 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1931 +#: templates/js/translated/return_order.js:475 +#: templates/js/translated/return_order.js:668 +#: templates/js/translated/sales_order.js:2119 +msgid "Edit Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1942 +#: templates/js/translated/return_order.js:681 +#: templates/js/translated/sales_order.js:2130 +msgid "Delete Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2224 +#: templates/js/translated/sales_order.js:2060 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2225 +#: templates/js/translated/return_order.js:800 +#: templates/js/translated/sales_order.js:2061 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2226 +#: templates/js/translated/return_order.js:804 +#: templates/js/translated/sales_order.js:2067 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/report.js:49 +msgid "Print Report" +msgstr "" + +#: templates/js/translated/report.js:68 +msgid "Report print successful" +msgstr "" + +#: templates/js/translated/report.js:73 +msgid "Report printing failed" +msgstr "" + +#: templates/js/translated/return_order.js:60 +#: templates/js/translated/sales_order.js:86 +msgid "Add Customer" +msgstr "" + +#: templates/js/translated/return_order.js:134 +msgid "Create Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:149 +msgid "Edit Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:169 +msgid "Issue Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:186 +msgid "Are you sure you wish to cancel this Return Order?" +msgstr "" + +#: templates/js/translated/return_order.js:193 +msgid "Cancel Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:218 +msgid "Complete Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:265 +msgid "No return orders found" +msgstr "" + +#: templates/js/translated/return_order.js:299 +#: templates/js/translated/sales_order.js:824 +msgid "Invalid Customer" +msgstr "" + +#: templates/js/translated/return_order.js:561 +msgid "Receive Return Order Items" +msgstr "" + +#: templates/js/translated/return_order.js:692 +#: templates/js/translated/sales_order.js:2267 +msgid "No matching line items" +msgstr "" + +#: templates/js/translated/return_order.js:797 +msgid "Mark item as received" +msgstr "" + +#: templates/js/translated/sales_order.js:161 +msgid "Create Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:176 +msgid "Edit Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:291 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:296 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:336 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:360 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:416 +msgid "No pending shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:420 +msgid "No stock items have been allocated to pending shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:430 +msgid "Complete Shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:452 +msgid "Skip" +msgstr "" + +#: templates/js/translated/sales_order.js:484 +msgid "Ship Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:500 +msgid "Ship this order?" +msgstr "" + +#: templates/js/translated/sales_order.js:506 +msgid "Order cannot be shipped as there are incomplete shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:513 +msgid "This order has line items which have not been completed." +msgstr "" + +#: templates/js/translated/sales_order.js:514 +msgid "Shipping this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:572 +msgid "Issue this Sales Order?" +msgstr "" + +#: templates/js/translated/sales_order.js:577 +msgid "Issue Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:596 +msgid "Cancel Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:601 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:655 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:764 +msgid "No sales orders found" +msgstr "" + +#: templates/js/translated/sales_order.js:944 +msgid "Edit shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:947 +msgid "Complete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:952 +msgid "Delete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:969 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:984 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:1017 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:1042 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/sales_order.js:1066 +#: templates/js/translated/sales_order.js:1565 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:1084 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/sales_order.js:1088 +msgid "Invoice" +msgstr "" + +#: templates/js/translated/sales_order.js:1255 +msgid "Add Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:1306 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1307 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:1513 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/sales_order.js:1605 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1619 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/sales_order.js:1620 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1659 +#: templates/js/translated/sales_order.js:1746 +#: templates/js/translated/stock.js:1776 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/sales_order.js:1667 +#: templates/js/translated/sales_order.js:1755 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/sales_order.js:2044 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2048 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/sales_order.js:2057 +#: templates/js/translated/sales_order.js:2245 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/sales_order.js:2071 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:2074 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/sales_order.js:2145 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2253 +msgid "Update Unit Price" +msgstr "" + +#: templates/js/translated/search.js:270 +msgid "No results" +msgstr "" + +#: templates/js/translated/search.js:292 templates/search.html:25 +msgid "Enter search query" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "result" +msgstr "" + +#: templates/js/translated/search.js:352 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:355 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:98 +msgid "Serialize Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:129 +msgid "Confirm Stock Serialization" +msgstr "" + +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 +msgid "Edit Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:217 +msgid "New Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:219 +msgid "Create another location after this one" +msgstr "" + +#: templates/js/translated/stock.js:220 +msgid "Stock location created" +msgstr "" + +#: templates/js/translated/stock.js:234 +msgid "Are you sure you want to delete this stock location?" +msgstr "" + +#: templates/js/translated/stock.js:241 +msgid "Move to parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:250 +msgid "Delete Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:254 +msgid "Action for stock items in this stock location" +msgstr "" + +#: templates/js/translated/stock.js:259 +msgid "Action for sub-locations" +msgstr "" + +#: templates/js/translated/stock.js:313 +msgid "This part cannot be serialized" +msgstr "" + +#: templates/js/translated/stock.js:349 +msgid "Add given quantity as packs instead of individual items" +msgstr "" + +#: templates/js/translated/stock.js:362 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: templates/js/translated/stock.js:368 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: templates/js/translated/stock.js:439 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:459 +msgid "Duplicate Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:475 +msgid "Are you sure you want to delete this stock item?" +msgstr "" + +#: templates/js/translated/stock.js:480 +msgid "Delete Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:501 +msgid "Edit Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:543 +msgid "Create another item after this one" +msgstr "" + +#: templates/js/translated/stock.js:555 +msgid "Created new stock item" +msgstr "" + +#: templates/js/translated/stock.js:568 +msgid "Created multiple stock items" +msgstr "" + +#: templates/js/translated/stock.js:593 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:614 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:634 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:643 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:751 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:752 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:829 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:830 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:832 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:833 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:928 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:929 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1024 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:1025 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:1031 +msgid "Count Stock" +msgstr "" + +#: templates/js/translated/stock.js:1032 +msgid "Count" +msgstr "" + +#: templates/js/translated/stock.js:1036 +msgid "Remove Stock" +msgstr "" + +#: templates/js/translated/stock.js:1037 +msgid "Take" +msgstr "" + +#: templates/js/translated/stock.js:1041 +msgid "Add Stock" +msgstr "" + +#: templates/js/translated/stock.js:1042 users/models.py:396 +msgid "Add" +msgstr "" + +#: templates/js/translated/stock.js:1046 +msgid "Delete Stock" +msgstr "" + +#: templates/js/translated/stock.js:1146 +msgid "Quantity cannot be adjusted for serialized stock" +msgstr "" + +#: templates/js/translated/stock.js:1146 +msgid "Specify stock quantity" +msgstr "" + +#: templates/js/translated/stock.js:1180 templates/js/translated/stock.js:3299 +msgid "Select Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1181 +msgid "Select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1227 +msgid "Confirm stock adjustment" +msgstr "" + +#: templates/js/translated/stock.js:1363 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1365 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1370 +msgid "NO RESULT" +msgstr "" + +#: templates/js/translated/stock.js:1450 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1453 +msgid "Add test result" +msgstr "" + +#: templates/js/translated/stock.js:1456 +msgid "Edit test result" +msgstr "" + +#: templates/js/translated/stock.js:1457 templates/js/translated/stock.js:1731 +msgid "Delete test result" +msgstr "" + +#: templates/js/translated/stock.js:1476 +msgid "No test results found" +msgstr "" + +#: templates/js/translated/stock.js:1540 +msgid "Test Date" +msgstr "" + +#: templates/js/translated/stock.js:1553 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1562 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1716 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1768 +msgid "In production" +msgstr "" + +#: templates/js/translated/stock.js:1772 +msgid "Installed in Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:1780 +msgid "Assigned to Sales Order" +msgstr "" + +#: templates/js/translated/stock.js:1786 +msgid "No stock location set" +msgstr "" + +#: templates/js/translated/stock.js:1842 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1851 +msgid "Merge stock" +msgstr "" + +#: templates/js/translated/stock.js:1900 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1953 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1958 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1969 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:2013 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2091 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2096 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2099 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2102 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2104 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2106 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2109 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2111 +msgid "Stock item has been consumed by a build order" +msgstr "" + +#: templates/js/translated/stock.js:2115 +msgid "Stock item has expired" +msgstr "" + +#: templates/js/translated/stock.js:2117 +msgid "Stock item will expire soon" +msgstr "" + +#: templates/js/translated/stock.js:2122 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:2124 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:2126 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:2130 +#: templates/js/translated/table_filters.js:350 +msgid "Depleted" +msgstr "" + +#: templates/js/translated/stock.js:2295 +msgid "Supplier part not specified" +msgstr "" + +#: templates/js/translated/stock.js:2342 +msgid "Stock Value" +msgstr "" + +#: templates/js/translated/stock.js:2470 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/translated/stock.js:2573 +msgid "stock locations" +msgstr "" + +#: templates/js/translated/stock.js:2728 +msgid "Load Sublocations" +msgstr "" + +#: templates/js/translated/stock.js:2846 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2850 +msgid "No changes" +msgstr "" + +#: templates/js/translated/stock.js:2862 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2884 +msgid "Location no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2901 +msgid "Build order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2916 +msgid "Purchase order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2933 +msgid "Sales Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2950 +msgid "Return Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2969 +msgid "Customer no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2987 +msgid "Stock item no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:3005 +msgid "Added" +msgstr "" + +#: templates/js/translated/stock.js:3013 +msgid "Removed" +msgstr "" + +#: templates/js/translated/stock.js:3085 +msgid "No installed items" +msgstr "" + +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 +msgid "Uninstall Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3197 +msgid "Select stock item to uninstall" +msgstr "" + +#: templates/js/translated/stock.js:3218 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:3219 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:3221 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3222 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:3223 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:3224 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:3237 +msgid "Select part to install" +msgstr "" + +#: templates/js/translated/stock.js:3300 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3313 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3317 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 +msgid "Has project code" +msgstr "" + +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:605 +#: templates/js/translated/table_filters.js:617 +#: templates/js/translated/table_filters.js:658 +msgid "Order status" +msgstr "" + +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:648 +#: templates/js/translated/table_filters.js:663 +msgid "Outstanding" +msgstr "" + +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:528 +#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:671 +msgid "Assigned to me" +msgstr "" + +#: templates/js/translated/table_filters.js:158 +msgid "Trackable Part" +msgstr "" + +#: templates/js/translated/table_filters.js:162 +msgid "Assembled Part" +msgstr "" + +#: templates/js/translated/table_filters.js:166 +msgid "Has Available Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:182 +msgid "Allow Variant Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 +msgid "Include sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:235 +msgid "Include locations" +msgstr "" + +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:711 +msgid "Include subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:764 +msgid "Subscribed" +msgstr "" + +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 +msgid "Is Serialized" +msgstr "" + +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 +msgid "Serial number GTE" +msgstr "" + +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 +msgid "Serial number greater than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 +msgid "Serial number LTE" +msgstr "" + +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 +msgid "Serial number less than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 +msgid "Serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 +msgid "Batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:700 +msgid "Active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:326 +msgid "Show stock for active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:331 +msgid "Part is an assembly" +msgstr "" + +#: templates/js/translated/table_filters.js:335 +msgid "Is allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:336 +msgid "Item has been allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:341 +msgid "Stock is available for use" +msgstr "" + +#: templates/js/translated/table_filters.js:346 +msgid "Include stock in sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:351 +msgid "Show stock items which are depleted" +msgstr "" + +#: templates/js/translated/table_filters.js:356 +msgid "Show items which are in stock" +msgstr "" + +#: templates/js/translated/table_filters.js:361 +msgid "Show items which are in production" +msgstr "" + +#: templates/js/translated/table_filters.js:365 +msgid "Include Variants" +msgstr "" + +#: templates/js/translated/table_filters.js:366 +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:371 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:376 +msgid "Show items which have been assigned to a customer" +msgstr "" + +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 +msgid "Stock status" +msgstr "" + +#: templates/js/translated/table_filters.js:400 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:409 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:414 +msgid "Has purchase price" +msgstr "" + +#: templates/js/translated/table_filters.js:415 +msgid "Show stock items which have a purchase price set" +msgstr "" + +#: templates/js/translated/table_filters.js:419 +msgid "Expiry Date before" +msgstr "" + +#: templates/js/translated/table_filters.js:423 +msgid "Expiry Date after" +msgstr "" + +#: templates/js/translated/table_filters.js:436 +msgid "Show stock items which have expired" +msgstr "" + +#: templates/js/translated/table_filters.js:442 +msgid "Show stock which is close to expiring" +msgstr "" + +#: templates/js/translated/table_filters.js:456 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:460 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:515 +msgid "Build status" +msgstr "" + +#: templates/js/translated/table_filters.js:712 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:717 +msgid "Show active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:722 +msgid "Show locked parts" +msgstr "" + +#: templates/js/translated/table_filters.js:730 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:838 +msgid "Has Units" +msgstr "" + +#: templates/js/translated/table_filters.js:739 +msgid "Part has defined units" +msgstr "" + +#: templates/js/translated/table_filters.js:743 +msgid "Has IPN" +msgstr "" + +#: templates/js/translated/table_filters.js:744 +msgid "Part has internal part number" +msgstr "" + +#: templates/js/translated/table_filters.js:748 +msgid "In stock" +msgstr "" + +#: templates/js/translated/table_filters.js:756 +msgid "Purchasable" +msgstr "" + +#: templates/js/translated/table_filters.js:768 +msgid "Has stocktake entries" +msgstr "" + +#: templates/js/translated/table_filters.js:834 +msgid "Has Choices" +msgstr "" + +#: templates/js/translated/tables.js:92 +msgid "Display calendar view" +msgstr "" + +#: templates/js/translated/tables.js:102 +msgid "Display list view" +msgstr "" + +#: templates/js/translated/tables.js:112 +msgid "Display tree view" +msgstr "" + +#: templates/js/translated/tables.js:130 +msgid "Expand all rows" +msgstr "" + +#: templates/js/translated/tables.js:136 +msgid "Collapse all rows" +msgstr "" + +#: templates/js/translated/tables.js:186 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:190 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:529 +msgid "Loading data" +msgstr "" + +#: templates/js/translated/tables.js:532 +msgid "rows per page" +msgstr "" + +#: templates/js/translated/tables.js:537 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "Showing" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "to" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "of" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "rows" +msgstr "" + +#: templates/js/translated/tables.js:546 +msgid "No matching results" +msgstr "" + +#: templates/js/translated/tables.js:549 +msgid "Hide/Show pagination" +msgstr "" + +#: templates/js/translated/tables.js:555 +msgid "Toggle" +msgstr "" + +#: templates/js/translated/tables.js:561 +msgid "All" +msgstr "" + +#: templates/navbar.html:45 +msgid "Buy" +msgstr "" + +#: templates/navbar.html:57 +msgid "Sell" +msgstr "" + +#: templates/navbar.html:121 +msgid "Show Notifications" +msgstr "" + +#: templates/navbar.html:124 +msgid "New Notifications" +msgstr "" + +#: templates/navbar.html:144 users/models.py:201 +msgid "Admin" +msgstr "" + +#: templates/navbar.html:148 +msgid "Logout" +msgstr "" + +#: templates/notes_buttons.html:6 templates/notes_buttons.html:7 +msgid "Save" +msgstr "" + +#: templates/notifications.html:9 +msgid "Show all notifications and history" +msgstr "" + +#: templates/pui_banner.html:9 +msgid "Platform UI - the new UI for InvenTree - provides more modern administration options." +msgstr "" + +#: templates/pui_banner.html:12 +msgid "Platform UI - the new UI for InvenTree - is ready to be tested." +msgstr "" + +#: templates/pui_banner.html:15 +msgid "Try it out now" +msgstr "" + +#: templates/pui_banner.html:15 +msgid "here" +msgstr "" + +#: templates/qr_code.html:11 +msgid "QR data not provided" +msgstr "" + +#: templates/registration/logged_out.html:7 +msgid "You were logged out successfully." +msgstr "" + +#: templates/registration/logged_out.html:9 +msgid "Log in again" +msgstr "" + +#: templates/search.html:9 +msgid "Show full search results" +msgstr "" + +#: templates/search.html:12 +msgid "Clear search" +msgstr "" + +#: templates/search.html:15 +msgid "Close search menu" +msgstr "" + +#: templates/socialaccount/authentication_error.html:5 +msgid "Social Network Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:8 +msgid "Account Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:11 +msgid "An error occurred while attempting to login via your social network account." +msgstr "" + +#: templates/socialaccount/authentication_error.html:13 +msgid "Contact your system administrator for further information." +msgstr "" + +#: templates/socialaccount/login.html:13 +#, python-format +msgid "Connect %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:15 +#, python-format +msgid "You are about to connect a new third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:17 +#, python-format +msgid "Sign In Via %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:19 +#, python-format +msgid "You are about to sign in using a third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:24 +msgid "Continue" +msgstr "" + +#: templates/socialaccount/login.html:29 +msgid "Invalid SSO Provider" +msgstr "" + +#: templates/socialaccount/login.html:31 +msgid "The selected SSO provider is invalid, or has not been correctly configured" +msgstr "" + +#: templates/socialaccount/signup.html:11 +#, python-format +msgid "You are about to use your %(provider_name)s account to login to %(site_name)s." +msgstr "" + +#: templates/socialaccount/signup.html:13 +msgid "As a final step, please complete the following form" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:26 +msgid "Provider has not been configured" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:35 +msgid "No SSO providers have been configured" +msgstr "" + +#: templates/stats.html:13 +msgid "Instance Name" +msgstr "" + +#: templates/stats.html:18 +msgid "Database" +msgstr "" + +#: templates/stats.html:26 +msgid "Server is running in debug mode" +msgstr "" + +#: templates/stats.html:33 +msgid "Docker Mode" +msgstr "" + +#: templates/stats.html:34 +msgid "Server is deployed using docker" +msgstr "" + +#: templates/stats.html:39 +msgid "Plugin Support" +msgstr "" + +#: templates/stats.html:43 +msgid "Plugin support enabled" +msgstr "" + +#: templates/stats.html:45 +msgid "Plugin support disabled" +msgstr "" + +#: templates/stats.html:52 +msgid "Server status" +msgstr "" + +#: templates/stats.html:55 +msgid "Healthy" +msgstr "" + +#: templates/stats.html:57 +msgid "Issues detected" +msgstr "" + +#: templates/stats.html:64 +msgid "Background Worker" +msgstr "" + +#: templates/stats.html:67 +msgid "Background worker not running" +msgstr "" + +#: templates/stats.html:75 +msgid "Email Settings" +msgstr "" + +#: templates/stats.html:78 +msgid "Email settings not configured" +msgstr "" + +#: templates/yesnolabel.html:4 +msgid "Yes" +msgstr "" + +#: templates/yesnolabel.html:6 +msgid "No" +msgstr "" + +#: users/admin.py:104 +msgid "Users" +msgstr "" + +#: users/admin.py:105 +msgid "Select which users are assigned to this group" +msgstr "" + +#: users/admin.py:249 +msgid "The following users are members of multiple groups" +msgstr "" + +#: users/admin.py:283 +msgid "Personal info" +msgstr "" + +#: users/admin.py:285 +msgid "Permissions" +msgstr "" + +#: users/admin.py:288 +msgid "Important dates" +msgstr "" + +#: users/authentication.py:29 users/models.py:138 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:81 +msgid "API Token" +msgstr "" + +#: users/models.py:82 +msgid "API Tokens" +msgstr "" + +#: users/models.py:118 +msgid "Token Name" +msgstr "" + +#: users/models.py:119 +msgid "Custom token name" +msgstr "" + +#: users/models.py:125 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:133 +msgid "Last Seen" +msgstr "" + +#: users/models.py:134 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:138 +msgid "Revoked" +msgstr "" + +#: users/models.py:379 +msgid "Permission set" +msgstr "" + +#: users/models.py:388 +msgid "Group" +msgstr "" + +#: users/models.py:392 +msgid "View" +msgstr "" + +#: users/models.py:392 +msgid "Permission to view items" +msgstr "" + +#: users/models.py:396 +msgid "Permission to add items" +msgstr "" + +#: users/models.py:400 +msgid "Change" +msgstr "" + +#: users/models.py:402 +msgid "Permissions to edit items" +msgstr "" + +#: users/models.py:408 +msgid "Permission to delete items" +msgstr "" diff --git a/src/frontend/.linguirc b/src/frontend/.linguirc index c8051ff005..5295430412 100644 --- a/src/frontend/.linguirc +++ b/src/frontend/.linguirc @@ -9,6 +9,7 @@ "en", "es", "es-mx", + "et", "fa", "fi", "fr", diff --git a/src/frontend/src/contexts/LanguageContext.tsx b/src/frontend/src/contexts/LanguageContext.tsx index 34b9ccbc47..7d92c7e96d 100644 --- a/src/frontend/src/contexts/LanguageContext.tsx +++ b/src/frontend/src/contexts/LanguageContext.tsx @@ -26,6 +26,7 @@ export const getSupportedLanguages = (): Record => { en: t`English`, es: t`Spanish`, 'es-mx': t`Spanish (Mexican)`, + et: t`Estonian`, fa: t`Farsi / Persian`, fi: t`Finnish`, fr: t`French`, diff --git a/src/frontend/src/locales/et/messages.d.ts b/src/frontend/src/locales/et/messages.d.ts new file mode 100644 index 0000000000..1c1427cb3a --- /dev/null +++ b/src/frontend/src/locales/et/messages.d.ts @@ -0,0 +1,4 @@ +import { Messages } from '@lingui/core'; + declare const messages: Messages; + export { messages }; + \ No newline at end of file diff --git a/src/frontend/src/locales/et/messages.po b/src/frontend/src/locales/et/messages.po new file mode 100644 index 0000000000..97df4ba570 --- /dev/null +++ b/src/frontend/src/locales/et/messages.po @@ -0,0 +1,6069 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2024-07-14 02:55+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: @lingui/cli\n" +"Language: et\n" + +#: src/components/Boundary.tsx:12 +msgid "Error rendering component" +msgstr "" + +#: src/components/Boundary.tsx:14 +msgid "An error occurred while rendering this component. Refer to the console for more information." +msgstr "" + +#: src/components/DashboardItemProxy.tsx:34 +msgid "Title" +msgstr "" + +#: src/components/buttons/AdminButton.tsx:83 +msgid "Open in admin interface" +msgstr "" + +#: src/components/buttons/CopyButton.tsx:18 +msgid "Copy to clipboard" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:93 +msgid "Print Label" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:99 +msgid "Print" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:100 +msgid "Label printing completed successfully" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:106 +#: src/components/buttons/PrintingActions.tsx:144 +#: src/components/editors/NotesEditor.tsx:65 +#: src/components/editors/NotesEditor.tsx:165 +#: src/components/forms/ApiForm.tsx:515 +#: src/components/forms/fields/ApiFormField.tsx:330 +#: src/components/importer/ImportDataSelector.tsx:171 +#: src/components/importer/ImporterColumnSelector.tsx:112 +#: src/components/modals/LicenseModal.tsx:75 +#: src/components/nav/SearchDrawer.tsx:426 +#: src/pages/ErrorPage.tsx:11 +#: src/pages/part/PartPricingPanel.tsx:71 +#: src/tables/InvenTreeTable.tsx:469 +#: src/tables/InvenTreeTable.tsx:543 +#: src/tables/bom/BomTable.tsx:412 +#: src/tables/stock/StockItemTestResultTable.tsx:294 +msgid "Error" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:107 +msgid "The label could not be generated" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:122 +msgid "Print Report" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:138 +msgid "Generate" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:139 +msgid "Report printing completed successfully" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:145 +msgid "The report could not be generated" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:173 +msgid "Printing Actions" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:178 +msgid "Print Labels" +msgstr "" + +#: src/components/buttons/PrintingActions.tsx:184 +msgid "Print Reports" +msgstr "" + +#: src/components/buttons/ScanButton.tsx:15 +msgid "Scan QR code" +msgstr "" + +#: src/components/buttons/ScanButton.tsx:20 +msgid "Open QR code scanner" +msgstr "" + +#: src/components/buttons/SpotlightButton.tsx:14 +msgid "Open spotlight" +msgstr "" + +#: src/components/buttons/YesNoButton.tsx:16 +msgid "Pass" +msgstr "" + +#: src/components/buttons/YesNoButton.tsx:17 +msgid "Fail" +msgstr "" + +#: src/components/buttons/YesNoButton.tsx:33 +#: src/tables/Filter.tsx:51 +msgid "Yes" +msgstr "" + +#: src/components/buttons/YesNoButton.tsx:33 +#: src/tables/Filter.tsx:52 +msgid "No" +msgstr "" + +#: src/components/details/Details.tsx:294 +msgid "No name defined" +msgstr "" + +#: src/components/details/Details.tsx:331 +msgid "Copied" +msgstr "" + +#: src/components/details/Details.tsx:331 +msgid "Copy" +msgstr "" + +#: src/components/details/DetailsImage.tsx:65 +msgid "Remove Image" +msgstr "" + +#: src/components/details/DetailsImage.tsx:68 +msgid "Remove the associated image from this item?" +msgstr "" + +#: src/components/details/DetailsImage.tsx:71 +#: src/forms/StockForms.tsx:483 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299 +#: src/pages/stock/StockDetail.tsx:466 +msgid "Remove" +msgstr "" + +#: src/components/details/DetailsImage.tsx:71 +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158 +#: src/components/items/ActionDropdown.tsx:231 +#: src/components/items/ActionDropdown.tsx:232 +#: src/contexts/ThemeContext.tsx:43 +#: src/hooks/UseForm.tsx:40 +#: src/tables/FilterSelectDrawer.tsx:204 +#: src/tables/InvenTreeTable.tsx:516 +#: src/tables/build/BuildOutputTable.tsx:225 +msgid "Cancel" +msgstr "" + +#: src/components/details/DetailsImage.tsx:97 +msgid "Drag and drop to upload" +msgstr "" + +#: src/components/details/DetailsImage.tsx:100 +msgid "Click to select file(s)" +msgstr "" + +#: src/components/details/DetailsImage.tsx:224 +msgid "Clear" +msgstr "" + +#: src/components/details/DetailsImage.tsx:227 +#: src/components/forms/ApiForm.tsx:584 +#: src/contexts/ThemeContext.tsx:43 +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:56 +msgid "Submit" +msgstr "" + +#: src/components/details/DetailsImage.tsx:267 +msgid "Select from existing images" +msgstr "" + +#: src/components/details/DetailsImage.tsx:275 +msgid "Select Image" +msgstr "" + +#: src/components/details/DetailsImage.tsx:287 +msgid "Upload new image" +msgstr "" + +#: src/components/details/DetailsImage.tsx:294 +msgid "Upload Image" +msgstr "" + +#: src/components/details/DetailsImage.tsx:307 +msgid "Delete image" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:66 +msgid "Image upload failed" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:156 +#: src/components/forms/ApiForm.tsx:439 +#: src/tables/bom/BomTable.tsx:403 +msgid "Success" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:157 +msgid "Notes saved successfully" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:166 +msgid "Failed to save notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:198 +msgid "Preview Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:198 +msgid "Edit Notes" +msgstr "" + +#: src/components/editors/NotesEditor.tsx:212 +msgid "Save Notes" +msgstr "" + +#: src/components/editors/TemplateEditor/CodeEditor/index.tsx:9 +msgid "Code" +msgstr "" + +#: src/components/editors/TemplateEditor/PdfPreview/PdfPreview.tsx:81 +msgid "Preview not available, click \"Reload Preview\"." +msgstr "" + +#: src/components/editors/TemplateEditor/PdfPreview/index.tsx:9 +msgid "PDF Preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:104 +msgid "Error loading template" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:116 +msgid "Error saving template" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:146 +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:270 +msgid "Save & Reload Preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151 +msgid "Are you sure you want to Save & Reload the preview?" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:153 +msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157 +msgid "Save & Reload" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:189 +msgid "Preview updated" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:190 +msgid "The preview has been updated successfully." +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:262 +msgid "Reload preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263 +msgid "Use the currently stored template from the server" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:271 +msgid "Save the current template and reload the preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:329 +msgid "Select instance to preview" +msgstr "" + +#: src/components/editors/TemplateEditor/TemplateEditor.tsx:373 +msgid "Error rendering template" +msgstr "" + +#: src/components/errors/ClientError.tsx:23 +msgid "Client Error" +msgstr "" + +#: src/components/errors/ClientError.tsx:24 +msgid "Client error occurred" +msgstr "" + +#: src/components/errors/GenericErrorPage.tsx:51 +msgid "Status Code" +msgstr "" + +#: src/components/errors/GenericErrorPage.tsx:64 +msgid "Return to the index page" +msgstr "" + +#: src/components/errors/NotAuthenticated.tsx:8 +msgid "Not Authenticated" +msgstr "" + +#: src/components/errors/NotAuthenticated.tsx:9 +msgid "You are not logged in." +msgstr "" + +#: src/components/errors/NotFound.tsx:8 +msgid "Page Not Found" +msgstr "" + +#: src/components/errors/NotFound.tsx:9 +msgid "This page does not exist" +msgstr "" + +#: src/components/errors/PermissionDenied.tsx:8 +msgid "Permission Denied" +msgstr "" + +#: src/components/errors/PermissionDenied.tsx:9 +msgid "You do not have permission to view this page." +msgstr "" + +#: src/components/errors/ServerError.tsx:8 +msgid "Server Error" +msgstr "" + +#: src/components/errors/ServerError.tsx:9 +msgid "A server error occurred" +msgstr "" + +#: src/components/forms/ApiForm.tsx:150 +msgid "Form Error" +msgstr "" + +#: src/components/forms/ApiForm.tsx:622 +#: src/tables/plugin/PluginListTable.tsx:388 +msgid "Update" +msgstr "" + +#: src/components/forms/ApiForm.tsx:642 +#: src/components/items/ActionDropdown.tsx:212 +#: src/hooks/UseForm.tsx:122 +#: src/pages/Index/Scan.tsx:343 +#: src/pages/Notifications.tsx:123 +#: src/tables/InvenTreeTable.tsx:515 +#: src/tables/RowActions.tsx:71 +#: src/tables/plugin/PluginListTable.tsx:420 +msgid "Delete" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:51 +msgid "Login successful" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:52 +msgid "Logged in successfully" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:58 +msgid "Login failed" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:59 +#: src/components/forms/AuthenticationForm.tsx:76 +#: src/components/forms/AuthenticationForm.tsx:211 +#: src/functions/auth.tsx:165 +msgid "Check your input and try again." +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:70 +#: src/functions/auth.tsx:156 +msgid "Mail delivery successful" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:71 +msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too." +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:75 +msgid "Mail delivery failed" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:95 +msgid "Or continue with other methods" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:106 +#: src/components/forms/AuthenticationForm.tsx:227 +msgid "Username" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:107 +#: src/components/forms/AuthenticationForm.tsx:228 +msgid "Your username" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:112 +#: src/components/forms/AuthenticationForm.tsx:240 +#: src/pages/Auth/Set-Password.tsx:106 +msgid "Password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:113 +#: src/components/forms/AuthenticationForm.tsx:241 +msgid "Your password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:125 +#: src/pages/Auth/Reset.tsx:26 +msgid "Reset password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:134 +#: src/components/forms/AuthenticationForm.tsx:233 +#: src/pages/Auth/Reset.tsx:31 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49 +msgid "Email" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:135 +#: src/pages/Auth/Reset.tsx:32 +#: src/pages/Auth/Set-Password.tsx:107 +msgid "We will send you a link to login - if you are registered" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:151 +msgid "Send me an email" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:153 +msgid "Use username and password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:162 +msgid "Log In" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:164 +msgid "Send Email" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:193 +msgid "Registration successful" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:194 +msgid "Please confirm your email address to complete the registration" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:210 +msgid "Input error" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:234 +msgid "This will be used for a confirmation" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:246 +msgid "Password repeat" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:247 +msgid "Repeat password" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:259 +#: src/components/forms/AuthenticationForm.tsx:304 +msgid "Register" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:265 +msgid "Or use SSO" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:296 +msgid "Don't have an account?" +msgstr "" + +#: src/components/forms/AuthenticationForm.tsx:315 +msgid "Go back to login" +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:36 +#: src/components/forms/HostOptionsForm.tsx:67 +msgid "Host" +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:42 +#: src/components/forms/HostOptionsForm.tsx:70 +#: src/pages/part/CategoryDetail.tsx:80 +#: src/pages/part/PartDetail.tsx:127 +#: src/pages/stock/LocationDetail.tsx:87 +#: src/tables/machine/MachineTypeTable.tsx:65 +#: src/tables/machine/MachineTypeTable.tsx:109 +#: src/tables/machine/MachineTypeTable.tsx:216 +#: src/tables/machine/MachineTypeTable.tsx:319 +#: src/tables/plugin/PluginErrorTable.tsx:33 +#: src/tables/plugin/PluginListTable.tsx:126 +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:32 +#: src/tables/settings/GroupTable.tsx:103 +#: src/tables/settings/PendingTasksTable.tsx:26 +#: src/tables/stock/LocationTypesTable.tsx:60 +msgid "Name" +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:75 +msgid "No one here..." +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:86 +msgid "Add Host" +msgstr "" + +#: src/components/forms/HostOptionsForm.tsx:90 +msgid "Save" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:43 +msgid "Select destination instance" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:71 +msgid "Edit possible host options" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:98 +msgid "Version: {0}" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:100 +msgid "API:{0}" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:102 +msgid "Name: {0}" +msgstr "" + +#: src/components/forms/InstanceOptions.tsx:104 +msgid "State: <0>worker ({0}), <1>plugins{1}" +msgstr "" + +#: src/components/forms/fields/RelatedModelField.tsx:320 +#: src/pages/Index/Settings/UserSettings.tsx:71 +#: src/tables/Search.tsx:23 +msgid "Search" +msgstr "" + +#: src/components/forms/fields/RelatedModelField.tsx:321 +#: src/components/modals/AboutInvenTreeModal.tsx:81 +#: src/components/widgets/WidgetLayout.tsx:120 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:309 +msgid "Loading" +msgstr "" + +#: src/components/forms/fields/RelatedModelField.tsx:323 +msgid "No results found" +msgstr "" + +#: src/components/forms/fields/TableField.tsx:50 +msgid "modelRenderer entry required for tables" +msgstr "" + +#: src/components/forms/fields/TableField.tsx:74 +msgid "No entries available" +msgstr "" + +#: src/components/images/Thumbnail.tsx:12 +#: src/components/images/Thumbnail.tsx:58 +msgid "Thumbnail" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:154 +msgid "Importing Rows" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:155 +msgid "Please wait while the data is imported" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:172 +msgid "An error occurred while importing data" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:191 +msgid "Edit Data" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:218 +msgid "Delete Row" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:248 +msgid "Row" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:266 +msgid "Row contains errors" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:307 +msgid "Accept" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:340 +msgid "Valid" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:341 +msgid "Filter by row validation status" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:346 +#: src/tables/build/BuildOutputTable.tsx:205 +msgid "Complete" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:347 +msgid "Filter by row completion status" +msgstr "" + +#: src/components/importer/ImportDataSelector.tsx:364 +msgid "Import selected rows" +msgstr "" + +#: src/components/importer/ImporterColumnSelector.tsx:46 +#: src/components/importer/ImporterColumnSelector.tsx:85 +msgid "An error occurred" +msgstr "" + +#: src/components/importer/ImporterColumnSelector.tsx:57 +msgid "Select column, or leave blank to ignore this field." +msgstr "" + +#: src/components/importer/ImporterColumnSelector.tsx:91 +msgid "Select a column from the data file" +msgstr "" + +#: src/components/importer/ImporterColumnSelector.tsx:104 +msgid "Map data columns to database fields" +msgstr "" + +#: src/components/importer/ImporterColumnSelector.tsx:109 +msgid "Accept Column Mapping" +msgstr "" + +#: src/components/importer/ImporterColumnSelector.tsx:117 +msgid "Database Field" +msgstr "" + +#: src/components/importer/ImporterColumnSelector.tsx:118 +msgid "Field Description" +msgstr "" + +#: src/components/importer/ImporterColumnSelector.tsx:119 +msgid "Imported Column Name" +msgstr "" + +#: src/components/importer/ImporterDrawer.tsx:44 +msgid "Import Data" +msgstr "" + +#: src/components/importer/ImporterDrawer.tsx:45 +msgid "Map Columns" +msgstr "" + +#: src/components/importer/ImporterDrawer.tsx:46 +msgid "Process Data" +msgstr "" + +#: src/components/importer/ImporterDrawer.tsx:47 +msgid "Complete Import" +msgstr "" + +#: src/components/importer/ImporterDrawer.tsx:91 +msgid "Importing Data" +msgstr "" + +#: src/components/importer/ImporterDrawer.tsx:97 +msgid "Cancel import session" +msgstr "" + +#: src/components/importer/ImporterImportProgress.tsx:36 +msgid "Importing Records" +msgstr "" + +#: src/components/importer/ImporterImportProgress.tsx:39 +msgid "Imported rows" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:121 +#: src/pages/build/BuildDetail.tsx:370 +msgid "Barcode Actions" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:138 +msgid "View" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:139 +msgid "View barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:155 +msgid "Link Barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:156 +msgid "Link custom barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:172 +#: src/forms/PurchaseOrderForms.tsx:389 +msgid "Unlink Barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:173 +msgid "Unlink custom barcode" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:191 +#: src/tables/RowActions.tsx:51 +msgid "Edit" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:213 +msgid "Delete item" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:250 +#: src/tables/RowActions.tsx:31 +msgid "Duplicate" +msgstr "" + +#: src/components/items/ActionDropdown.tsx:251 +msgid "Duplicate item" +msgstr "" + +#: src/components/items/DocTooltip.tsx:92 +msgid "Read More" +msgstr "" + +#: src/components/items/ErrorItem.tsx:5 +#: src/tables/InvenTreeTable.tsx:461 +msgid "Unknown error" +msgstr "" + +#: src/components/items/ErrorItem.tsx:10 +msgid "An error occurred:" +msgstr "" + +#: src/components/items/GettingStartedCarousel.tsx:27 +msgid "Read more" +msgstr "" + +#: src/components/items/InfoItem.tsx:27 +msgid "None" +msgstr "" + +#: src/components/items/InvenTreeLogo.tsx:23 +msgid "InvenTree Logo" +msgstr "" + +#: src/components/items/OnlyStaff.tsx:9 +#: src/components/modals/AboutInvenTreeModal.tsx:44 +msgid "This information is only available for staff users" +msgstr "" + +#: src/components/items/Placeholder.tsx:14 +msgid "This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing." +msgstr "" + +#: src/components/items/Placeholder.tsx:17 +msgid "PLH" +msgstr "" + +#: src/components/items/Placeholder.tsx:31 +msgid "This panel is a placeholder." +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:99 +msgid "Version Information" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:103 +msgid "Your InvenTree version status is" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:107 +msgid "Development Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:111 +msgid "Up to Date" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:115 +msgid "Update Available" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:125 +msgid "InvenTree Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:131 +msgid "Commit Hash" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:136 +msgid "Commit Date" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:141 +msgid "Commit Branch" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:146 +#: src/components/modals/ServerInfoModal.tsx:133 +msgid "API Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:149 +msgid "Python Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:152 +msgid "Django Version" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:162 +msgid "Links" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:168 +msgid "InvenTree Documentation" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:169 +msgid "View Code on GitHub" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:170 +msgid "Credits" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:171 +msgid "Mobile App" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:172 +msgid "Submit Bug Report" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:183 +msgid "Copy version information" +msgstr "" + +#: src/components/modals/AboutInvenTreeModal.tsx:192 +#: src/components/modals/ServerInfoModal.tsx:147 +msgid "Dismiss" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:39 +msgid "No license text available" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:46 +msgid "No Information provided - this is likely a server issue" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:71 +msgid "Loading license information" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:77 +msgid "Failed to fetch license information" +msgstr "" + +#: src/components/modals/LicenseModal.tsx:85 +msgid "{key} Packages" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:72 +msgid "Unknown response" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:102 +#: src/pages/Index/Scan.tsx:636 +msgid "Error while getting camera" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:125 +#: src/pages/Index/Scan.tsx:659 +msgid "Error while scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:139 +#: src/pages/Index/Scan.tsx:673 +msgid "Error while stopping" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:154 +#: src/defaults/menuItems.tsx:21 +#: src/pages/Index/Scan.tsx:746 +msgid "Scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:154 +#: src/pages/Index/Scan.tsx:746 +msgid "Not scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:159 +#: src/pages/Index/Scan.tsx:752 +msgid "Select Camera" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:169 +#: src/pages/Index/Scan.tsx:737 +msgid "Start scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:176 +#: src/pages/Index/Scan.tsx:729 +msgid "Stop scanning" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:181 +msgid "No scans yet!" +msgstr "" + +#: src/components/modals/QrCodeModal.tsx:201 +msgid "Close modal" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:26 +#: src/pages/Index/Settings/SystemSettings.tsx:38 +msgid "Server" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:32 +msgid "Instance Name" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:38 +msgid "Database" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:47 +msgid "Debug Mode" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:50 +msgid "Server is running in debug mode" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:57 +msgid "Docker Mode" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:60 +msgid "Server is deployed using docker" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:66 +msgid "Plugin Support" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:71 +msgid "Plugin support enabled" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:73 +msgid "Plugin support disabled" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:80 +msgid "Server status" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:86 +msgid "Healthy" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:88 +msgid "Issues detected" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:97 +msgid "Background Worker" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:101 +msgid "Background worker not running" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:109 +msgid "Email Settings" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:113 +msgid "Email settings not configured" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:121 +#: src/tables/plugin/PluginListTable.tsx:144 +#: src/tables/plugin/PluginListTable.tsx:294 +msgid "Version" +msgstr "" + +#: src/components/modals/ServerInfoModal.tsx:127 +msgid "Server Version" +msgstr "" + +#: src/components/nav/Layout.tsx:70 +#: src/tables/part/PartThumbTable.tsx:194 +msgid "Search..." +msgstr "" + +#: src/components/nav/Layout.tsx:73 +msgid "Nothing found..." +msgstr "" + +#: src/components/nav/MainMenu.tsx:42 +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:26 +msgid "Settings" +msgstr "" + +#: src/components/nav/MainMenu.tsx:49 +#: src/defaults/menuItems.tsx:15 +msgid "Account settings" +msgstr "" + +#: src/components/nav/MainMenu.tsx:57 +#: src/defaults/menuItems.tsx:58 +#: src/pages/Index/Settings/SystemSettings.tsx:319 +msgid "System Settings" +msgstr "" + +#: src/components/nav/MainMenu.tsx:67 +#: src/defaults/menuItems.tsx:63 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:221 +msgid "Admin Center" +msgstr "" + +#: src/components/nav/MainMenu.tsx:77 +msgid "Logout" +msgstr "" + +#: src/components/nav/NavHoverMenu.tsx:65 +#: src/defaults/actions.tsx:58 +msgid "Open Navigation" +msgstr "" + +#: src/components/nav/NavHoverMenu.tsx:84 +msgid "View all" +msgstr "" + +#: src/components/nav/NavHoverMenu.tsx:100 +#: src/components/nav/NavHoverMenu.tsx:110 +msgid "Get started" +msgstr "" + +#: src/components/nav/NavHoverMenu.tsx:103 +msgid "Overview over high-level objects, functions and possible usecases." +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:57 +msgid "Navigation" +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:60 +msgid "Pages" +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:65 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:176 +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41 +msgid "Plugins" +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:75 +#: src/defaults/actions.tsx:30 +msgid "Documentation" +msgstr "" + +#: src/components/nav/NavigationDrawer.tsx:78 +msgid "About" +msgstr "" + +#: src/components/nav/NotificationDrawer.tsx:80 +#: src/pages/Index/Settings/SystemSettings.tsx:108 +#: src/pages/Index/Settings/UserSettings.tsx:101 +#: src/pages/Notifications.tsx:65 +#: src/pages/Notifications.tsx:152 +msgid "Notifications" +msgstr "" + +#: src/components/nav/NotificationDrawer.tsx:97 +msgid "You have no unread notifications." +msgstr "" + +#: src/components/nav/NotificationDrawer.tsx:113 +#: src/components/nav/NotificationDrawer.tsx:119 +#: src/tables/notifications/NotificationsTable.tsx:36 +msgid "Notification" +msgstr "" + +#: src/components/nav/NotificationDrawer.tsx:142 +#: src/pages/Notifications.tsx:73 +msgid "Mark as read" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:78 +msgid "results" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:348 +msgid "Enter search text" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:375 +msgid "Search Options" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:378 +msgid "Regex search" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:388 +msgid "Whole word search" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:429 +msgid "An error occurred during search query" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:440 +msgid "No results" +msgstr "" + +#: src/components/nav/SearchDrawer.tsx:443 +msgid "No results available for search query" +msgstr "" + +#: src/components/render/Instance.tsx:205 +msgid "Unknown model: {model}" +msgstr "" + +#: src/components/render/ModelType.tsx:22 +#: src/forms/BuildForms.tsx:201 +#: src/forms/StockForms.tsx:449 +#: src/forms/StockForms.tsx:483 +#: src/forms/StockForms.tsx:512 +#: src/forms/StockForms.tsx:540 +#: src/forms/StockForms.tsx:571 +#: src/forms/StockForms.tsx:606 +#: src/forms/StockForms.tsx:648 +#: src/forms/StockForms.tsx:684 +#: src/pages/build/BuildDetail.tsx:87 +#: src/pages/part/PartDetail.tsx:982 +#: src/tables/build/BuildAllocatedStockTable.tsx:44 +#: src/tables/part/PartTable.tsx:28 +#: src/tables/part/RelatedPartTable.tsx:45 +#: src/tables/stock/StockTrackingTable.tsx:74 +msgid "Part" +msgstr "" + +#: src/components/render/ModelType.tsx:23 +#: src/defaults/links.tsx:28 +#: src/defaults/menuItems.tsx:33 +#: src/pages/Index/Settings/SystemSettings.tsx:178 +#: src/pages/part/CategoryDetail.tsx:112 +#: src/pages/part/CategoryDetail.tsx:237 +#: src/pages/part/CategoryDetail.tsx:267 +#: src/pages/part/PartDetail.tsx:747 +msgid "Parts" +msgstr "" + +#: src/components/render/ModelType.tsx:31 +msgid "Part Parameter Template" +msgstr "" + +#: src/components/render/ModelType.tsx:32 +msgid "Part Parameter Templates" +msgstr "" + +#: src/components/render/ModelType.tsx:38 +msgid "Part Test Template" +msgstr "" + +#: src/components/render/ModelType.tsx:39 +msgid "Part Test Templates" +msgstr "" + +#: src/components/render/ModelType.tsx:45 +#: src/pages/company/SupplierPartDetail.tsx:192 +#: src/pages/company/SupplierPartDetail.tsx:320 +#: src/pages/stock/StockDetail.tsx:165 +#: src/tables/build/BuildAllocatedStockTable.tsx:85 +#: src/tables/purchasing/SupplierPartTable.tsx:68 +msgid "Supplier Part" +msgstr "" + +#: src/components/render/ModelType.tsx:46 +msgid "Supplier Parts" +msgstr "" + +#: src/components/render/ModelType.tsx:54 +#: src/pages/company/ManufacturerPartDetail.tsx:127 +msgid "Manufacturer Part" +msgstr "" + +#: src/components/render/ModelType.tsx:55 +msgid "Manufacturer Parts" +msgstr "" + +#: src/components/render/ModelType.tsx:63 +#: src/pages/part/CategoryDetail.tsx:297 +msgid "Part Category" +msgstr "" + +#: src/components/render/ModelType.tsx:64 +#: src/pages/Index/Settings/SystemSettings.tsx:172 +#: src/pages/part/CategoryDetail.tsx:251 +#: src/pages/part/CategoryDetail.tsx:288 +#: src/pages/part/PartDetail.tsx:972 +msgid "Part Categories" +msgstr "" + +#: src/components/render/ModelType.tsx:72 +#: src/pages/stock/StockDetail.tsx:564 +#: src/tables/stock/StockTrackingTable.tsx:45 +msgid "Stock Item" +msgstr "" + +#: src/components/render/ModelType.tsx:73 +#: src/pages/company/CompanyDetail.tsx:201 +#: src/pages/stock/LocationDetail.tsx:120 +#: src/pages/stock/LocationDetail.tsx:173 +#: src/pages/stock/LocationDetail.tsx:374 +msgid "Stock Items" +msgstr "" + +#: src/components/render/ModelType.tsx:81 +msgid "Stock Location" +msgstr "" + +#: src/components/render/ModelType.tsx:82 +#: src/pages/stock/LocationDetail.tsx:187 +#: src/pages/stock/LocationDetail.tsx:366 +#: src/pages/stock/StockDetail.tsx:556 +msgid "Stock Locations" +msgstr "" + +#: src/components/render/ModelType.tsx:90 +msgid "Stock Location Type" +msgstr "" + +#: src/components/render/ModelType.tsx:91 +msgid "Stock Location Types" +msgstr "" + +#: src/components/render/ModelType.tsx:95 +msgid "Stock History" +msgstr "" + +#: src/components/render/ModelType.tsx:96 +msgid "Stock Histories" +msgstr "" + +#: src/components/render/ModelType.tsx:100 +#: src/defaults/links.tsx:30 +#: src/defaults/menuItems.tsx:43 +msgid "Build" +msgstr "" + +#: src/components/render/ModelType.tsx:101 +msgid "Builds" +msgstr "" + +#: src/components/render/ModelType.tsx:109 +msgid "Build Line" +msgstr "" + +#: src/components/render/ModelType.tsx:110 +msgid "Build Lines" +msgstr "" + +#: src/components/render/ModelType.tsx:117 +msgid "Build Item" +msgstr "" + +#: src/components/render/ModelType.tsx:118 +msgid "Build Items" +msgstr "" + +#: src/components/render/ModelType.tsx:122 +#: src/pages/company/CompanyDetail.tsx:328 +msgid "Company" +msgstr "" + +#: src/components/render/ModelType.tsx:123 +msgid "Companies" +msgstr "" + +#: src/components/render/ModelType.tsx:131 +#: src/tables/TableHoverCard.tsx:58 +#: src/tables/build/BuildOrderTable.tsx:131 +#: src/tables/purchasing/PurchaseOrderTable.tsx:64 +#: src/tables/sales/ReturnOrderTable.tsx:55 +#: src/tables/sales/SalesOrderTable.tsx:61 +msgid "Project Code" +msgstr "" + +#: src/components/render/ModelType.tsx:132 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:128 +msgid "Project Codes" +msgstr "" + +#: src/components/render/ModelType.tsx:138 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:32 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:362 +#: src/tables/stock/StockTrackingTable.tsx:107 +msgid "Purchase Order" +msgstr "" + +#: src/components/render/ModelType.tsx:139 +#: src/pages/Index/Settings/SystemSettings.tsx:259 +#: src/pages/company/CompanyDetail.tsx:194 +#: src/pages/company/SupplierPartDetail.tsx:226 +#: src/pages/part/PartDetail.tsx:598 +#: src/pages/purchasing/PurchasingIndex.tsx:20 +msgid "Purchase Orders" +msgstr "" + +#: src/components/render/ModelType.tsx:147 +msgid "Purchase Order Line" +msgstr "" + +#: src/components/render/ModelType.tsx:148 +msgid "Purchase Order Lines" +msgstr "" + +#: src/components/render/ModelType.tsx:152 +#: src/pages/build/BuildDetail.tsx:135 +#: src/pages/sales/SalesOrderDetail.tsx:351 +#: src/pages/stock/StockDetail.tsx:213 +#: src/tables/stock/StockTrackingTable.tsx:118 +msgid "Sales Order" +msgstr "" + +#: src/components/render/ModelType.tsx:153 +#: src/pages/Index/Settings/SystemSettings.tsx:274 +#: src/pages/company/CompanyDetail.tsx:214 +#: src/pages/part/PartDetail.tsx:605 +#: src/pages/sales/SalesIndex.tsx:21 +msgid "Sales Orders" +msgstr "" + +#: src/components/render/ModelType.tsx:161 +msgid "Sales Order Shipment" +msgstr "" + +#: src/components/render/ModelType.tsx:162 +msgid "Sales Order Shipments" +msgstr "" + +#: src/components/render/ModelType.tsx:168 +#: src/pages/sales/ReturnOrderDetail.tsx:327 +#: src/tables/stock/StockTrackingTable.tsx:129 +msgid "Return Order" +msgstr "" + +#: src/components/render/ModelType.tsx:169 +#: src/pages/Index/Settings/SystemSettings.tsx:290 +#: src/pages/company/CompanyDetail.tsx:221 +#: src/pages/sales/SalesIndex.tsx:27 +msgid "Return Orders" +msgstr "" + +#: src/components/render/ModelType.tsx:177 +#: src/tables/company/AddressTable.tsx:47 +msgid "Address" +msgstr "" + +#: src/components/render/ModelType.tsx:178 +#: src/pages/company/CompanyDetail.tsx:251 +msgid "Addresses" +msgstr "" + +#: src/components/render/ModelType.tsx:184 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:192 +#: src/pages/sales/ReturnOrderDetail.tsx:161 +#: src/pages/sales/SalesOrderDetail.tsx:165 +msgid "Contact" +msgstr "" + +#: src/components/render/ModelType.tsx:185 +#: src/pages/company/CompanyDetail.tsx:245 +msgid "Contacts" +msgstr "" + +#: src/components/render/ModelType.tsx:191 +msgid "Owner" +msgstr "" + +#: src/components/render/ModelType.tsx:192 +msgid "Owners" +msgstr "" + +#: src/components/render/ModelType.tsx:198 +#: src/tables/settings/ImportSessionTable.tsx:122 +#: src/tables/stock/StockItemTestResultTable.tsx:193 +#: src/tables/stock/StockTrackingTable.tsx:195 +msgid "User" +msgstr "" + +#: src/components/render/ModelType.tsx:199 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:98 +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13 +msgid "Users" +msgstr "" + +#: src/components/render/ModelType.tsx:205 +msgid "Import Session" +msgstr "" + +#: src/components/render/ModelType.tsx:206 +msgid "Import Sessions" +msgstr "" + +#: src/components/render/ModelType.tsx:212 +msgid "Label Template" +msgstr "" + +#: src/components/render/ModelType.tsx:213 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:158 +msgid "Label Templates" +msgstr "" + +#: src/components/render/ModelType.tsx:219 +msgid "Report Template" +msgstr "" + +#: src/components/render/ModelType.tsx:220 +#: src/pages/Index/Settings/AdminCenter/Index.tsx:164 +msgid "Report Templates" +msgstr "" + +#: src/components/render/ModelType.tsx:226 +msgid "Plugin Configuration" +msgstr "" + +#: src/components/render/ModelType.tsx:227 +msgid "Plugin Configurations" +msgstr "" + +#: src/components/render/Order.tsx:104 +msgid "Shipment" +msgstr "" + +#: src/components/render/Part.tsx:24 +#: src/components/render/Plugin.tsx:17 +#: src/pages/company/CompanyDetail.tsx:315 +#: src/pages/company/SupplierPartDetail.tsx:307 +#: src/pages/part/PartDetail.tsx:799 +msgid "Inactive" +msgstr "" + +#: src/components/render/Part.tsx:27 +#: src/tables/bom/BomTable.tsx:194 +#: src/tables/part/PartTable.tsx:134 +msgid "No stock" +msgstr "" + +#: src/components/render/Part.tsx:29 +#: src/defaults/links.tsx:29 +#: src/defaults/menuItems.tsx:38 +#: src/pages/Index/Settings/SystemSettings.tsx:211 +#: src/pages/part/PartDetail.tsx:515 +#: src/pages/stock/LocationDetail.tsx:347 +#: src/pages/stock/StockDetail.tsx:356 +#: src/tables/stock/StockItemTable.tsx:67 +msgid "Stock" +msgstr "" + +#: src/components/render/Stock.tsx:52 +#: src/pages/stock/StockDetail.tsx:148 +#: src/pages/stock/StockDetail.tsx:521 +msgid "Serial Number" +msgstr "" + +#: src/components/render/Stock.tsx:54 +#: src/forms/BuildForms.tsx:206 +#: src/pages/part/pricing/BomPricingPanel.tsx:108 +#: src/pages/part/pricing/PriceBreakPanel.tsx:85 +#: src/pages/part/pricing/PriceBreakPanel.tsx:167 +#: src/pages/stock/StockDetail.tsx:143 +#: src/pages/stock/StockDetail.tsx:527 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:73 +#: src/tables/stock/StockTrackingTable.tsx:59 +msgid "Quantity" +msgstr "" + +#: src/components/settings/SettingList.tsx:67 +msgid "Edit Setting" +msgstr "" + +#: src/components/settings/SettingList.tsx:78 +#: src/components/settings/SettingList.tsx:108 +msgid "Setting {0} updated successfully" +msgstr "" + +#: src/components/settings/SettingList.tsx:107 +msgid "Setting updated" +msgstr "" + +#: src/components/settings/SettingList.tsx:117 +msgid "Error editing setting" +msgstr "" + +#: src/components/settings/SettingList.tsx:158 +msgid "No settings specified" +msgstr "" + +#: src/components/widgets/DisplayWidget.tsx:11 +#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:17 +msgid "Display Settings" +msgstr "" + +#: src/components/widgets/DisplayWidget.tsx:15 +#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:23 +msgid "Color Mode" +msgstr "" + +#: src/components/widgets/DisplayWidget.tsx:21 +#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:33 +msgid "Language" +msgstr "" + +#: src/components/widgets/FeedbackWidget.tsx:19 +msgid "Something is new: Platform UI" +msgstr "" + +#: src/components/widgets/FeedbackWidget.tsx:21 +msgid "We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward." +msgstr "" + +#: src/components/widgets/FeedbackWidget.tsx:32 +msgid "Provide Feedback" +msgstr "" + +#: src/components/widgets/GetStartedWidget.tsx:11 +msgid "Getting started" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:166 +msgid "Layout" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:172 +msgid "Reset Layout" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:185 +msgid "Stop Edit" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:185 +msgid "Edit Layout" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:191 +msgid "Appearance" +msgstr "" + +#: src/components/widgets/WidgetLayout.tsx:203 +msgid "Show Boxes" +msgstr "" + +#: src/contexts/LanguageContext.tsx:20 +msgid "Arabic" +msgstr "" + +#: src/contexts/LanguageContext.tsx:21 +msgid "Bulgarian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:22 +msgid "Czech" +msgstr "" + +#: src/contexts/LanguageContext.tsx:23 +msgid "Danish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:24 +msgid "German" +msgstr "" + +#: src/contexts/LanguageContext.tsx:25 +msgid "Greek" +msgstr "" + +#: src/contexts/LanguageContext.tsx:26 +msgid "English" +msgstr "" + +#: src/contexts/LanguageContext.tsx:27 +msgid "Spanish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:28 +msgid "Spanish (Mexican)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:29 +msgid "Estonian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:30 +msgid "Farsi / Persian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:31 +msgid "Finnish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:32 +msgid "French" +msgstr "" + +#: src/contexts/LanguageContext.tsx:33 +msgid "Hebrew" +msgstr "" + +#: src/contexts/LanguageContext.tsx:34 +msgid "Hindi" +msgstr "" + +#: src/contexts/LanguageContext.tsx:35 +msgid "Hungarian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:36 +msgid "Italian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:37 +msgid "Japanese" +msgstr "" + +#: src/contexts/LanguageContext.tsx:38 +msgid "Korean" +msgstr "" + +#: src/contexts/LanguageContext.tsx:39 +msgid "Latvian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:40 +msgid "Dutch" +msgstr "" + +#: src/contexts/LanguageContext.tsx:41 +msgid "Norwegian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:42 +msgid "Polish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:43 +msgid "Portuguese" +msgstr "" + +#: src/contexts/LanguageContext.tsx:44 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:45 +msgid "Romanian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:46 +msgid "Russian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:47 +msgid "Slovak" +msgstr "" + +#: src/contexts/LanguageContext.tsx:48 +msgid "Slovenian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:49 +msgid "Swedish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:50 +msgid "Thai" +msgstr "" + +#: src/contexts/LanguageContext.tsx:51 +msgid "Turkish" +msgstr "" + +#: src/contexts/LanguageContext.tsx:52 +msgid "Ukrainian" +msgstr "" + +#: src/contexts/LanguageContext.tsx:53 +msgid "Vietnamese" +msgstr "" + +#: src/contexts/LanguageContext.tsx:54 +msgid "Chinese (Simplified)" +msgstr "" + +#: src/contexts/LanguageContext.tsx:55 +msgid "Chinese (Traditional)" +msgstr "" + +#: src/defaults/actions.tsx:16 +#: src/defaults/links.tsx:26 +#: src/defaults/menuItems.tsx:9 +msgid "Home" +msgstr "" + +#: src/defaults/actions.tsx:23 +#: src/defaults/links.tsx:27 +#: src/defaults/menuItems.tsx:28 +#: src/pages/Index/Dashboard.tsx:19 +#: src/pages/Index/Settings/UserSettings.tsx:47 +msgid "Dashboard" +msgstr "" + +#: src/defaults/actions.tsx:24 +msgid "Go to the InvenTree dashboard" +msgstr "" + +#: src/defaults/actions.tsx:31 +msgid "Visit the documentation to learn more about InvenTree" +msgstr "" + +#: src/defaults/actions.tsx:37 +#: src/defaults/links.tsx:92 +#: src/defaults/links.tsx:122 +msgid "About InvenTree" +msgstr "" + +#: src/defaults/actions.tsx:38 +#: src/defaults/links.tsx:123 +msgid "About the InvenTree org" +msgstr "" + +#: src/defaults/actions.tsx:44 +msgid "Server Information" +msgstr "" + +#: src/defaults/actions.tsx:45 +#: src/defaults/links.tsx:117 +msgid "About this Inventree instance" +msgstr "" + +#: src/defaults/actions.tsx:51 +#: src/defaults/links.tsx:105 +msgid "License Information" +msgstr "" + +#: src/defaults/actions.tsx:52 +#: src/defaults/links.tsx:129 +msgid "Licenses for dependencies of the service" +msgstr "" + +#: src/defaults/actions.tsx:59 +msgid "Open the main navigation menu" +msgstr "" + +#: src/defaults/dashboardItems.tsx:15 +msgid "Subscribed Parts" +msgstr "" + +#: src/defaults/dashboardItems.tsx:22 +msgid "Subscribed Categories" +msgstr "" + +#: src/defaults/dashboardItems.tsx:29 +msgid "Latest Parts" +msgstr "" + +#: src/defaults/dashboardItems.tsx:36 +msgid "BOM Waiting Validation" +msgstr "" + +#: src/defaults/dashboardItems.tsx:43 +msgid "Recently Updated" +msgstr "" + +#: src/defaults/dashboardItems.tsx:50 +#: src/tables/part/PartTable.tsx:232 +msgid "Low Stock" +msgstr "" + +#: src/defaults/dashboardItems.tsx:57 +msgid "Depleted Stock" +msgstr "" + +#: src/defaults/dashboardItems.tsx:64 +msgid "Required for Build Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:71 +msgid "Expired Stock" +msgstr "" + +#: src/defaults/dashboardItems.tsx:78 +msgid "Stale Stock" +msgstr "" + +#: src/defaults/dashboardItems.tsx:85 +msgid "Build Orders In Progress" +msgstr "" + +#: src/defaults/dashboardItems.tsx:92 +msgid "Overdue Build Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:99 +msgid "Outstanding Purchase Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:106 +msgid "Overdue Purchase Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:113 +msgid "Outstanding Sales Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:120 +msgid "Overdue Sales Orders" +msgstr "" + +#: src/defaults/dashboardItems.tsx:127 +msgid "Current News" +msgstr "" + +#: src/defaults/links.tsx:11 +#: src/pages/company/CompanyDetail.tsx:94 +msgid "Website" +msgstr "" + +#: src/defaults/links.tsx:16 +msgid "GitHub" +msgstr "" + +#: src/defaults/links.tsx:21 +msgid "Demo" +msgstr "" + +#: src/defaults/links.tsx:31 +#: src/defaults/menuItems.tsx:48 +#: src/pages/company/ManufacturerDetail.tsx:9 +#: src/pages/company/ManufacturerPartDetail.tsx:236 +#: src/pages/company/SupplierDetail.tsx:9 +#: src/pages/company/SupplierPartDetail.tsx:294 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:365 +#: src/pages/purchasing/PurchasingIndex.tsx:52 +msgid "Purchasing" +msgstr "" + +#: src/defaults/links.tsx:32 +#: src/defaults/menuItems.tsx:53 +#: src/pages/company/CustomerDetail.tsx:9 +#: src/pages/sales/ReturnOrderDetail.tsx:332 +#: src/pages/sales/SalesIndex.tsx:45 +#: src/pages/sales/SalesOrderDetail.tsx:356 +msgid "Sales" +msgstr "" + +#: src/defaults/links.tsx:35 +#: src/defaults/menuItems.tsx:71 +#: src/pages/Index/Playground.tsx:221 +msgid "Playground" +msgstr "" + +#: src/defaults/links.tsx:49 +msgid "Getting Started" +msgstr "" + +#: src/defaults/links.tsx:50 +msgid "Getting started with InvenTree" +msgstr "" + +#: src/defaults/links.tsx:56 +msgid "API" +msgstr "" + +#: src/defaults/links.tsx:57 +msgid "InvenTree API documentation" +msgstr "" + +#: src/defaults/links.tsx:62 +msgid "Developer Manual" +msgstr "" + +#: src/defaults/links.tsx:63 +msgid "InvenTree developer manual" +msgstr "" + +#: src/defaults/links.tsx:68 +msgid "FAQ" +msgstr "" + +#: src/defaults/links.tsx:69 +msgid "Frequently asked questions" +msgstr "" + +#: src/defaults/links.tsx:79 +#: src/defaults/links.tsx:116 +msgid "System Information" +msgstr "" + +#: src/defaults/links.tsx:128 +msgid "Licenses" +msgstr "" + +#: src/defaults/menuItems.tsx:17 +msgid "User attributes and design settings." +msgstr "" + +#: src/defaults/menuItems.tsx:23 +msgid "View for interactive scanning and multiple actions." +msgstr "" + +#: src/forms/BuildForms.tsx:146 +msgid "Next serial number" +msgstr "" + +#: src/forms/BuildForms.tsx:150 +msgid "Latest serial number" +msgstr "" + +#: src/forms/BuildForms.tsx:222 +msgid "Remove output" +msgstr "" + +#: src/forms/BuildForms.tsx:304 +msgid "Complete Build Outputs" +msgstr "" + +#: src/forms/BuildForms.tsx:308 +msgid "Build outputs have been completed" +msgstr "" + +#: src/forms/BuildForms.tsx:377 +msgid "Scrap Build Outputs" +msgstr "" + +#: src/forms/BuildForms.tsx:381 +msgid "Build outputs have been scrapped" +msgstr "" + +#: src/forms/BuildForms.tsx:413 +#: src/forms/BuildForms.tsx:437 +msgid "Cancel Build Outputs" +msgstr "" + +#: src/forms/BuildForms.tsx:414 +msgid "Selected build outputs will be deleted" +msgstr "" + +#: src/forms/BuildForms.tsx:441 +msgid "Build outputs have been cancelled" +msgstr "" + +#: src/forms/PartForms.tsx:123 +msgid "Parent part category" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:279 +msgid "Choose Location" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:287 +msgid "Item Destination selected" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:296 +msgid "Part category default location selected" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:306 +msgid "Received stock location selected" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:311 +msgid "Default location selected" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:322 +#: src/forms/PurchaseOrderForms.tsx:398 +msgid "Scan Barcode" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:366 +msgid "Set Location" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:373 +msgid "Assign Batch Code{0}" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:382 +msgid "Change Status" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:407 +#: src/forms/StockForms.tsx:392 +msgid "Remove item from list" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:432 +#: src/forms/StockForms.tsx:449 +#: src/forms/StockForms.tsx:483 +#: src/forms/StockForms.tsx:512 +#: src/forms/StockForms.tsx:540 +#: src/forms/StockForms.tsx:571 +#: src/forms/StockForms.tsx:606 +#: src/forms/StockForms.tsx:648 +#: src/forms/StockForms.tsx:684 +#: src/pages/stock/StockDetail.tsx:173 +#: src/tables/ColumnRenderers.tsx:49 +#: src/tables/stock/StockTrackingTable.tsx:85 +msgid "Location" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:448 +msgid "Store at default location" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:461 +msgid "Store at line item destination" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:471 +msgid "Store with already received stock" +msgstr "" + +#: src/forms/PurchaseOrderForms.tsx:627 +msgid "Receive Line Items" +msgstr "" + +#: src/forms/StockForms.tsx:101 +msgid "Add given quantity as packs instead of individual items" +msgstr "" + +#: src/forms/StockForms.tsx:114 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: src/forms/StockForms.tsx:121 +msgid "Serial Numbers" +msgstr "" + +#: src/forms/StockForms.tsx:122 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: src/forms/StockForms.tsx:176 +#: src/pages/stock/StockDetail.tsx:379 +#: src/tables/stock/StockItemTable.tsx:414 +#: src/tables/stock/StockItemTable.tsx:531 +msgid "Add Stock Item" +msgstr "" + +#: src/forms/StockForms.tsx:339 +msgid "Loading..." +msgstr "" + +#: src/forms/StockForms.tsx:381 +msgid "Move to default location" +msgstr "" + +#: src/forms/StockForms.tsx:449 +#: src/forms/StockForms.tsx:483 +#: src/forms/StockForms.tsx:512 +#: src/forms/StockForms.tsx:540 +#: src/forms/StockForms.tsx:571 +#: src/forms/StockForms.tsx:606 +#: src/forms/StockForms.tsx:648 +#: src/forms/StockForms.tsx:684 +#: src/pages/part/PartDetail.tsx:214 +#: src/pages/part/PartDetail.tsx:763 +#: src/tables/stock/StockItemTable.tsx:322 +msgid "In Stock" +msgstr "" + +#: src/forms/StockForms.tsx:449 +msgid "Move" +msgstr "" + +#: src/forms/StockForms.tsx:449 +#: src/forms/StockForms.tsx:483 +#: src/forms/StockForms.tsx:512 +#: src/forms/StockForms.tsx:540 +#: src/forms/StockForms.tsx:571 +#: src/forms/StockForms.tsx:606 +#: src/forms/StockForms.tsx:648 +#: src/forms/StockForms.tsx:684 +#: src/tables/RowActions.tsx:149 +msgid "Actions" +msgstr "" + +#: src/forms/StockForms.tsx:512 +#: src/pages/stock/StockDetail.tsx:458 +#: src/tables/stock/StockItemTestResultTable.tsx:323 +msgid "Add" +msgstr "" + +#: src/forms/StockForms.tsx:540 +#: src/pages/Index/Scan.tsx:266 +#: src/pages/stock/StockDetail.tsx:448 +msgid "Count" +msgstr "" + +#: src/forms/StockForms.tsx:785 +msgid "Add Stock" +msgstr "" + +#: src/forms/StockForms.tsx:794 +msgid "Remove Stock" +msgstr "" + +#: src/forms/StockForms.tsx:803 +#: src/pages/part/PartDetail.tsx:926 +msgid "Transfer Stock" +msgstr "" + +#: src/forms/StockForms.tsx:812 +#: src/pages/part/PartDetail.tsx:915 +msgid "Count Stock" +msgstr "" + +#: src/forms/StockForms.tsx:821 +msgid "Change Stock Status" +msgstr "" + +#: src/forms/StockForms.tsx:830 +msgid "Merge Stock" +msgstr "" + +#: src/forms/StockForms.tsx:849 +msgid "Delete Stock Items" +msgstr "" + +#: src/forms/StockForms.tsx:856 +msgid "Parent stock location" +msgstr "" + +#: src/functions/auth.tsx:118 +msgid "Logged Out" +msgstr "" + +#: src/functions/auth.tsx:119 +msgid "Successfully logged out" +msgstr "" + +#: src/functions/auth.tsx:157 +msgid "Check your inbox for a reset link. This only works if you have an account. Check in spam too." +msgstr "" + +#: src/functions/auth.tsx:164 +#: src/pages/Auth/Set-Password.tsx:39 +msgid "Reset failed" +msgstr "" + +#: src/functions/auth.tsx:195 +msgid "Logged In" +msgstr "" + +#: src/functions/auth.tsx:196 +msgid "Successfully logged in" +msgstr "" + +#: src/functions/notifications.tsx:10 +msgid "Not implemented" +msgstr "" + +#: src/functions/notifications.tsx:11 +msgid "This feature is not yet implemented" +msgstr "" + +#: src/functions/notifications.tsx:21 +msgid "Permission denied" +msgstr "" + +#: src/functions/notifications.tsx:22 +msgid "You do not have permission to perform this action" +msgstr "" + +#: src/functions/notifications.tsx:33 +msgid "Invalid Return Code" +msgstr "" + +#: src/functions/notifications.tsx:34 +msgid "Server returned status {returnCode}" +msgstr "" + +#: src/hooks/UseForm.tsx:88 +msgid "Item Created" +msgstr "" + +#: src/hooks/UseForm.tsx:105 +msgid "Item Updated" +msgstr "" + +#: src/hooks/UseForm.tsx:124 +msgid "Item Deleted" +msgstr "" + +#: src/hooks/UseForm.tsx:128 +msgid "Are you sure you want to delete this item?" +msgstr "" + +#: src/pages/Auth/Logged-In.tsx:23 +msgid "Checking if you are already logged in" +msgstr "" + +#: src/pages/Auth/Login.tsx:31 +#: src/pages/Index/Scan.tsx:329 +msgid "No selection" +msgstr "" + +#: src/pages/Auth/Login.tsx:87 +msgid "Welcome, log in below" +msgstr "" + +#: src/pages/Auth/Login.tsx:89 +msgid "Register below" +msgstr "" + +#: src/pages/Auth/Logout.tsx:23 +msgid "Logging out" +msgstr "" + +#: src/pages/Auth/Reset.tsx:41 +#: src/pages/Auth/Set-Password.tsx:112 +msgid "Send mail" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:30 +msgid "Token invalid" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:31 +msgid "You need to provide a valid token to set a new password. Check your inbox for a reset link." +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:49 +msgid "No token provided" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:50 +msgid "You need to provide a token to set a new password. Check your inbox for a reset link." +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:73 +msgid "Password set" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:74 +msgid "The password was set successfully. You can now login with your new password" +msgstr "" + +#: src/pages/Auth/Set-Password.tsx:101 +msgid "Set new password" +msgstr "" + +#: src/pages/ErrorPage.tsx:16 +msgid "Error: {0}" +msgstr "" + +#: src/pages/ErrorPage.tsx:23 +msgid "An unexpected error has occurred" +msgstr "" + +#: src/pages/Index/Dashboard.tsx:22 +msgid "Autoupdate" +msgstr "" + +#: src/pages/Index/Dashboard.tsx:26 +msgid "This page is a replacement for the old start page with the same information. This page will be deprecated and replaced by the home page." +msgstr "" + +#: src/pages/Index/Home.tsx:58 +msgid "Welcome to your Dashboard{0}" +msgstr "" + +#: src/pages/Index/Playground.tsx:226 +msgid "This page is a showcase for the possibilities of Platform UI." +msgstr "" + +#: src/pages/Index/Scan.tsx:216 +msgid "Manual input" +msgstr "" + +#: src/pages/Index/Scan.tsx:217 +msgid "Image Barcode" +msgstr "" + +#: src/pages/Index/Scan.tsx:247 +msgid "Selected elements are not known" +msgstr "" + +#: src/pages/Index/Scan.tsx:254 +msgid "Multiple object types selected" +msgstr "" + +#: src/pages/Index/Scan.tsx:261 +msgid "Actions for {0}" +msgstr "" + +#: src/pages/Index/Scan.tsx:282 +msgid "Scan Page" +msgstr "" + +#: src/pages/Index/Scan.tsx:285 +msgid "This page can be used for continuously scanning items and taking actions on them." +msgstr "" + +#: src/pages/Index/Scan.tsx:292 +msgid "Toggle Fullscreen" +msgstr "" + +#: src/pages/Index/Scan.tsx:305 +msgid "Select the input method you want to use to scan items." +msgstr "" + +#: src/pages/Index/Scan.tsx:307 +msgid "Input" +msgstr "" + +#: src/pages/Index/Scan.tsx:314 +msgid "Select input method" +msgstr "" + +#: src/pages/Index/Scan.tsx:315 +msgid "Nothing found" +msgstr "" + +#: src/pages/Index/Scan.tsx:323 +msgid "Depending on the selected parts actions will be shown here. Not all barcode types are supported currently." +msgstr "" + +#: src/pages/Index/Scan.tsx:325 +msgid "Action" +msgstr "" + +#: src/pages/Index/Scan.tsx:334 +msgid "{0} items selected" +msgstr "" + +#: src/pages/Index/Scan.tsx:337 +msgid "General Actions" +msgstr "" + +#: src/pages/Index/Scan.tsx:351 +msgid "Lookup part" +msgstr "" + +#: src/pages/Index/Scan.tsx:359 +msgid "Open Link" +msgstr "" + +#: src/pages/Index/Scan.tsx:375 +msgid "History is locally kept in this browser." +msgstr "" + +#: src/pages/Index/Scan.tsx:376 +msgid "The history is kept in this browser's local storage. So it won't be shared with other users or other devices but is persistent through reloads. You can select items in the history to perform actions on them. To add items, scan/enter them in the Input area." +msgstr "" + +#: src/pages/Index/Scan.tsx:378 +#: src/pages/Notifications.tsx:100 +msgid "History" +msgstr "" + +#: src/pages/Index/Scan.tsx:384 +msgid "Delete History" +msgstr "" + +#: src/pages/Index/Scan.tsx:449 +msgid "No history" +msgstr "" + +#: src/pages/Index/Scan.tsx:467 +msgid "Item" +msgstr "" + +#: src/pages/Index/Scan.tsx:470 +msgid "Type" +msgstr "" + +#: src/pages/Index/Scan.tsx:473 +msgid "Source" +msgstr "" + +#: src/pages/Index/Scan.tsx:476 +msgid "Scanned at" +msgstr "" + +#: src/pages/Index/Scan.tsx:528 +msgid "Enter item serial or data" +msgstr "" + +#: src/pages/Index/Scan.tsx:540 +msgid "Add dummy item" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:37 +msgid "Account Details" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:46 +msgid "First name" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51 +msgid "Last name" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:63 +msgid "First name:" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:67 +msgid "Last name:" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/DisplaySettingsPanel.tsx:41 +msgid "Use pseudo language" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:53 +msgid "Single Sign On Accounts" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:60 +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:78 +msgid "Not enabled" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:63 +msgid "Single Sign On is not enabled for this server" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:67 +msgid "Multifactor" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:81 +msgid "Multifactor authentication is not configured for your account" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:132 +msgid "The following email addresses are associated with your account:" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:144 +msgid "Primary" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:149 +msgid "Verified" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:153 +msgid "Unverified" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:166 +msgid "Add Email Address" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:169 +msgid "E-Mail" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:170 +msgid "E-Mail address" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:182 +msgid "Make Primary" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:187 +msgid "Re-send Verification" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:198 +msgid "Add Email" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:263 +msgid "Provider has not been configured" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:273 +msgid "Not configured" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:276 +msgid "There are no social network accounts connected to this account." +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:286 +msgid "You can sign in to your account using any of the following third party accounts" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:65 +msgid "bars" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:66 +msgid "oval" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:67 +msgid "dots" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:81 +msgid "Theme" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:87 +msgid "Primary color" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:100 +msgid "White color" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:108 +msgid "Black color" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:116 +msgid "Border Radius" +msgstr "" + +#: src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx:132 +msgid "Loader" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:104 +msgid "Data Import" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:110 +msgid "Background Tasks" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:116 +msgid "Error Reports" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:122 +msgid "Currencies" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:140 +msgid "Custom Units" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:146 +#: src/pages/part/CategoryDetail.tsx:257 +msgid "Part Parameters" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:152 +msgid "Category Parameters" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:170 +msgid "Location types" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:182 +#: src/tables/machine/MachineTypeTable.tsx:287 +msgid "Machines" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:192 +msgid "Quick Actions" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:197 +msgid "Add a new user" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/Index.tsx:222 +msgid "Advanced Options" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:43 +msgid "Machine types" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:53 +msgid "Machine Error Stack" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/MachineManagementPanel.tsx:62 +msgid "There are no machine registry errors." +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28 +#: src/tables/settings/UserTable.tsx:116 +msgid "Info" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:32 +msgid "External plugins are not enabled for this InvenTree installation." +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:50 +msgid "Plugin Errors" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:59 +msgid "Plugin Settings" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:53 +msgid "Background Worker Not Running" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:54 +msgid "The background task manager service is not running. Contact your system administrator." +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:60 +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:76 +msgid "Pending Tasks" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:64 +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:84 +msgid "Scheduled Tasks" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:68 +#: src/pages/Index/Settings/AdminCenter/TaskManagementPanel.tsx:92 +msgid "Failed Tasks" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18 +#: src/tables/settings/UserTable.tsx:135 +msgid "Groups" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:30 +msgid "Select settings relevant for user lifecycle. More available in" +msgstr "" + +#: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:35 +msgid "System settings" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:67 +msgid "Login" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:93 +msgid "Barcodes" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:114 +msgid "Pricing" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:149 +msgid "Labels" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:155 +#: src/pages/Index/Settings/UserSettings.tsx:107 +msgid "Reporting" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:236 +#: src/pages/part/PartDetail.tsx:618 +#: src/tables/stock/StockItemTable.tsx:231 +msgid "Stocktake" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:242 +#: src/pages/build/BuildDetail.tsx:435 +#: src/pages/build/BuildIndex.tsx:14 +#: src/pages/part/PartDetail.tsx:552 +#: src/pages/sales/SalesOrderDetail.tsx:270 +msgid "Build Orders" +msgstr "" + +#: src/pages/Index/Settings/SystemSettings.tsx:322 +msgid "Switch to User Setting" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:35 +msgid "Account" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:41 +msgid "Security" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:53 +msgid "Display Options" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:126 +msgid "Account Settings" +msgstr "" + +#: src/pages/Index/Settings/UserSettings.tsx:130 +msgid "Switch to System Setting" +msgstr "" + +#: src/pages/Notifications.tsx:43 +msgid "Delete Notifications" +msgstr "" + +#: src/pages/Notifications.tsx:108 +msgid "Mark as unread" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:93 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:131 +#: src/pages/sales/ReturnOrderDetail.tsx:99 +#: src/pages/sales/SalesOrderDetail.tsx:103 +#: src/tables/build/BuildOrderTable.tsx:113 +#: src/tables/machine/MachineListTable.tsx:335 +#: src/tables/purchasing/PurchaseOrderTable.tsx:55 +#: src/tables/sales/ReturnOrderTable.tsx:46 +#: src/tables/sales/SalesOrderTable.tsx:52 +#: src/tables/settings/ImportSessionTable.tsx:116 +#: src/tables/stock/StockItemTable.tsx:291 +#: src/tables/stock/StockTrackingTable.tsx:52 +msgid "Status" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:99 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:104 +#: src/pages/sales/ReturnOrderDetail.tsx:73 +#: src/pages/sales/SalesOrderDetail.tsx:77 +#: src/tables/ColumnRenderers.tsx:121 +#: src/tables/build/BuildAllocatedStockTable.tsx:51 +#: src/tables/build/BuildLineTable.tsx:140 +msgid "Reference" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:104 +#: src/pages/company/CompanyDetail.tsx:88 +#: src/pages/company/ManufacturerPartDetail.tsx:78 +#: src/pages/company/SupplierPartDetail.tsx:85 +#: src/pages/part/CategoryDetail.tsx:94 +#: src/pages/part/PartDetail.tsx:134 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:125 +#: src/pages/sales/ReturnOrderDetail.tsx:93 +#: src/pages/sales/SalesOrderDetail.tsx:97 +#: src/pages/stock/LocationDetail.tsx:101 +#: src/tables/ColumnRenderers.tsx:81 +#: src/tables/machine/MachineTypeTable.tsx:69 +#: src/tables/machine/MachineTypeTable.tsx:112 +#: src/tables/machine/MachineTypeTable.tsx:219 +#: src/tables/machine/MachineTypeTable.tsx:323 +#: src/tables/part/RelatedPartTable.tsx:64 +#: src/tables/plugin/PluginListTable.tsx:129 +#: src/tables/plugin/PluginListTable.tsx:276 +#: src/tables/stock/LocationTypesTable.tsx:65 +msgid "Description" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:111 +msgid "Parent Build" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:122 +msgid "Build Quantity" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:130 +#: src/pages/build/BuildDetail.tsx:260 +msgid "Completed Outputs" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:147 +#: src/tables/build/BuildOrderTable.tsx:142 +msgid "Issued By" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:154 +#: src/pages/part/PartDetail.tsx:342 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:217 +#: src/pages/sales/ReturnOrderDetail.tsx:186 +#: src/pages/sales/SalesOrderDetail.tsx:190 +#: src/tables/build/BuildOrderTable.tsx:148 +#: src/tables/purchasing/PurchaseOrderTable.tsx:75 +#: src/tables/sales/ReturnOrderTable.tsx:66 +#: src/tables/sales/SalesOrderTable.tsx:72 +msgid "Responsible" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:161 +#: src/tables/settings/PendingTasksTable.tsx:30 +msgid "Created" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:168 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:210 +#: src/pages/sales/ReturnOrderDetail.tsx:179 +#: src/pages/sales/SalesOrderDetail.tsx:183 +#: src/tables/ColumnRenderers.tsx:206 +msgid "Target Date" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:175 +msgid "Completed" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:187 +msgid "Source Location" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:188 +msgid "Any location" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:195 +msgid "Destination Location" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:201 +#: src/pages/stock/StockDetail.tsx:539 +#: src/tables/build/BuildAllocatedStockTable.tsx:63 +msgid "Batch Code" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:233 +msgid "Build Details" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:239 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:140 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:255 +#: src/pages/sales/ReturnOrderDetail.tsx:108 +#: src/pages/sales/ReturnOrderDetail.tsx:224 +#: src/pages/sales/SalesOrderDetail.tsx:112 +#: src/pages/sales/SalesOrderDetail.tsx:252 +msgid "Line Items" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:253 +msgid "Incomplete Outputs" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:275 +msgid "Allocated Stock" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:285 +msgid "Consumed Stock" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:299 +msgid "Child Build Orders" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:309 +#: src/pages/company/CompanyDetail.tsx:257 +#: src/pages/company/ManufacturerPartDetail.tsx:174 +#: src/pages/part/PartDetail.tsx:641 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:279 +#: src/pages/sales/ReturnOrderDetail.tsx:230 +#: src/pages/sales/SalesOrderDetail.tsx:280 +#: src/pages/stock/StockDetail.tsx:330 +msgid "Attachments" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:317 +#: src/pages/company/CompanyDetail.tsx:268 +#: src/pages/part/PartDetail.tsx:649 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:290 +#: src/pages/sales/ReturnOrderDetail.tsx:241 +#: src/pages/sales/SalesOrderDetail.tsx:291 +#: src/pages/stock/StockDetail.tsx:341 +#: src/tables/stock/StockTrackingTable.tsx:189 +msgid "Notes" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:335 +msgid "Edit Build Order" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:344 +msgid "Cancel Build Order" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:356 +#: src/tables/build/BuildOrderTable.tsx:167 +#: src/tables/build/BuildOrderTable.tsx:182 +msgid "Add Build Order" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:388 +msgid "Build Order Actions" +msgstr "" + +#: src/pages/build/BuildDetail.tsx:396 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:333 +#: src/pages/sales/ReturnOrderDetail.tsx:309 +#: src/pages/sales/SalesOrderDetail.tsx:321 +msgid "Cancel order" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:102 +msgid "Phone Number" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:109 +msgid "Email Address" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:119 +msgid "Default Currency" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:124 +#: src/pages/company/SupplierDetail.tsx:8 +#: src/pages/company/SupplierPartDetail.tsx:109 +#: src/pages/company/SupplierPartDetail.tsx:195 +#: src/pages/company/SupplierPartDetail.tsx:298 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:119 +#: src/tables/company/CompanyTable.tsx:100 +#: src/tables/purchasing/PurchaseOrderTable.tsx:88 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:36 +msgid "Supplier" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:130 +#: src/pages/company/ManufacturerDetail.tsx:8 +#: src/pages/company/ManufacturerPartDetail.tsx:96 +#: src/pages/company/ManufacturerPartDetail.tsx:240 +#: src/pages/company/SupplierPartDetail.tsx:124 +#: src/tables/company/CompanyTable.tsx:105 +msgid "Manufacturer" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:136 +#: src/pages/company/CustomerDetail.tsx:8 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:29 +#: src/pages/sales/ReturnOrderDetail.tsx:87 +#: src/pages/sales/SalesOrderDetail.tsx:91 +#: src/pages/stock/StockDetail.tsx:222 +#: src/tables/company/CompanyTable.tsx:110 +#: src/tables/sales/ReturnOrderTable.tsx:78 +#: src/tables/sales/SalesOrderTable.tsx:107 +#: src/tables/stock/StockTrackingTable.tsx:140 +msgid "Customer" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:170 +#: src/tables/stock/StockTrackingTable.tsx:183 +msgid "Details" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:176 +msgid "Manufactured Parts" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:185 +msgid "Supplied Parts" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:230 +msgid "Assigned Stock" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:288 +#: src/tables/company/CompanyTable.tsx:86 +msgid "Edit Company" +msgstr "" + +#: src/pages/company/CompanyDetail.tsx:297 +msgid "Company Actions" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:71 +#: src/pages/company/SupplierPartDetail.tsx:78 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72 +msgid "Internal Part" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:86 +#: src/pages/company/SupplierPartDetail.tsx:92 +msgid "External Link" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:104 +#: src/pages/company/SupplierPartDetail.tsx:133 +#: src/tables/purchasing/ManufacturerPartTable.tsx:56 +msgid "Manufacturer Part Number" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:133 +msgid "Manufacturer Details" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:142 +msgid "Manufacturer Part Details" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:148 +#: src/pages/part/PartDetail.tsx:504 +msgid "Parameters" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:160 +#: src/pages/part/PartDetail.tsx:585 +#: src/pages/purchasing/PurchasingIndex.tsx:26 +msgid "Suppliers" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:191 +#: src/tables/purchasing/ManufacturerPartTable.tsx:84 +msgid "Edit Manufacturer Part" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:198 +#: src/tables/purchasing/ManufacturerPartTable.tsx:72 +#: src/tables/purchasing/ManufacturerPartTable.tsx:103 +msgid "Add Manufacturer Part" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:214 +msgid "Manufacturer Part Actions" +msgstr "" + +#: src/pages/company/ManufacturerPartDetail.tsx:252 +msgid "ManufacturerPart" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:99 +#: src/tables/ColumnRenderers.tsx:132 +msgid "Note" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:117 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:57 +msgid "SKU" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:145 +#: src/pages/company/SupplierPartDetail.tsx:196 +#: src/pages/stock/StockDetail.tsx:236 +msgid "Packaging" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:152 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143 +#: src/tables/purchasing/SupplierPartTable.tsx:131 +msgid "Pack Quantity" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:163 +msgid "Supplier Availability" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:170 +msgid "Availability Updated" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:197 +msgid "Availability" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:206 +msgid "Supplier Part Details" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:212 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:266 +msgid "Received Stock" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:236 +#: src/pages/part/PartPricingPanel.tsx:115 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:121 +msgid "Supplier Pricing" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:251 +msgid "Supplier Part Actions" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:275 +#: src/tables/purchasing/SupplierPartTable.tsx:210 +msgid "Edit Supplier Part" +msgstr "" + +#: src/pages/company/SupplierPartDetail.tsx:282 +#: src/tables/purchasing/SupplierPartTable.tsx:163 +msgid "Add Supplier Part" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:86 +#: src/pages/stock/LocationDetail.tsx:93 +#: src/tables/settings/ErrorTable.tsx:34 +msgid "Path" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:102 +msgid "Parent Category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:119 +msgid "Subcategories" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:126 +#: src/pages/stock/LocationDetail.tsx:133 +#: src/tables/part/PartCategoryTable.tsx:65 +#: src/tables/stock/StockLocationTable.tsx:47 +msgid "Structural" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:132 +msgid "Parent default location" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:139 +msgid "Default location" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:150 +msgid "Top level part category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:160 +#: src/pages/part/CategoryDetail.tsx:214 +#: src/tables/part/PartCategoryTable.tsx:93 +msgid "Edit Part Category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:173 +#: src/pages/stock/LocationDetail.tsx:225 +msgid "Delete items" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:181 +#: src/pages/part/CategoryDetail.tsx:219 +msgid "Delete Part Category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:184 +msgid "Parts Action" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:185 +msgid "Action for parts in this category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:190 +msgid "Child Categories Action" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:191 +msgid "Action for child categories in this category" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:209 +msgid "Category Actions" +msgstr "" + +#: src/pages/part/CategoryDetail.tsx:231 +msgid "Category Details" +msgstr "" + +#: src/pages/part/PartDetail.tsx:140 +msgid "Variant of" +msgstr "" + +#: src/pages/part/PartDetail.tsx:147 +msgid "Revision of" +msgstr "" + +#: src/pages/part/PartDetail.tsx:154 +#: src/tables/stock/StockItemTable.tsx:57 +msgid "Revision" +msgstr "" + +#: src/pages/part/PartDetail.tsx:161 +#: src/tables/notifications/NotificationsTable.tsx:31 +#: src/tables/part/PartCategoryTemplateTable.tsx:67 +msgid "Category" +msgstr "" + +#: src/pages/part/PartDetail.tsx:167 +msgid "Default Location" +msgstr "" + +#: src/pages/part/PartDetail.tsx:174 +msgid "Category Default Location" +msgstr "" + +#: src/pages/part/PartDetail.tsx:181 +#: src/tables/bom/BomTable.tsx:108 +#: src/tables/stock/StockItemTable.tsx:52 +msgid "IPN" +msgstr "" + +#: src/pages/part/PartDetail.tsx:188 +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:44 +msgid "Units" +msgstr "" + +#: src/pages/part/PartDetail.tsx:195 +#: src/tables/settings/PendingTasksTable.tsx:40 +msgid "Keywords" +msgstr "" + +#: src/pages/part/PartDetail.tsx:202 +#: src/pages/purchasing/PurchaseOrderDetail.tsx:183 +#: src/pages/sales/ReturnOrderDetail.tsx:152 +#: src/pages/sales/SalesOrderDetail.tsx:156 +msgid "Link" +msgstr "" + +#: src/pages/part/PartDetail.tsx:220 +#: src/tables/bom/BomTable.tsx:305 +#: src/tables/build/BuildLineTable.tsx:121 +#: src/tables/part/PartTable.tsx:282 +msgid "Available Stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:227 +msgid "Variant Stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:235 +msgid "Minimum Stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:241 +#: src/tables/bom/BomTable.tsx:227 +#: src/tables/build/BuildLineTable.tsx:95 +msgid "On order" +msgstr "" + +#: src/pages/part/PartDetail.tsx:250 +msgid "Allocated to Build Orders" +msgstr "" + +#: src/pages/part/PartDetail.tsx:258 +msgid "Allocated to Sales Orders" +msgstr "" + +#: src/pages/part/PartDetail.tsx:265 +#: src/tables/bom/BomTable.tsx:251 +#: src/tables/bom/BomTable.tsx:283 +msgid "Can Build" +msgstr "" + +#: src/pages/part/PartDetail.tsx:272 +#: src/tables/bom/BomTable.tsx:235 +#: src/tables/part/PartTable.tsx:92 +msgid "Building" +msgstr "" + +#: src/pages/part/PartDetail.tsx:281 +#: src/tables/bom/UsedInTable.tsx:73 +#: src/tables/build/BuildOrderTable.tsx:108 +#: src/tables/company/CompanyTable.tsx:61 +#: src/tables/company/CompanyTable.tsx:95 +#: src/tables/machine/MachineListTable.tsx:332 +#: src/tables/machine/MachineListTable.tsx:594 +#: src/tables/part/ParametricPartTable.tsx:222 +#: src/tables/part/PartTable.tsx:178 +#: src/tables/part/PartVariantTable.tsx:15 +#: src/tables/plugin/PluginListTable.tsx:149 +#: src/tables/plugin/PluginListTable.tsx:271 +#: src/tables/plugin/PluginListTable.tsx:563 +#: src/tables/purchasing/SupplierPartTable.tsx:98 +#: src/tables/purchasing/SupplierPartTable.tsx:187 +#: src/tables/stock/StockItemTable.tsx:286 +msgid "Active" +msgstr "" + +#: src/pages/part/PartDetail.tsx:286 +#: src/pages/part/PartDetail.tsx:793 +#: src/tables/part/ParametricPartTable.tsx:227 +#: src/tables/part/PartTable.tsx:184 +msgid "Locked" +msgstr "" + +#: src/pages/part/PartDetail.tsx:291 +msgid "Template Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:296 +#: src/tables/bom/BomTable.tsx:300 +msgid "Assembled Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:301 +msgid "Component Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:306 +#: src/tables/bom/BomTable.tsx:295 +msgid "Trackable Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:311 +msgid "Purchaseable Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:316 +msgid "Saleable Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:321 +msgid "Virtual Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:329 +#: src/tables/ColumnRenderers.tsx:214 +msgid "Creation Date" +msgstr "" + +#: src/pages/part/PartDetail.tsx:334 +msgid "Created By" +msgstr "" + +#: src/pages/part/PartDetail.tsx:349 +msgid "Default Supplier" +msgstr "" + +#: src/pages/part/PartDetail.tsx:360 +#: src/pages/part/pricing/BomPricingPanel.tsx:78 +#: src/pages/part/pricing/VariantPricingPanel.tsx:95 +#: src/tables/part/PartTable.tsx:161 +msgid "Price Range" +msgstr "" + +#: src/pages/part/PartDetail.tsx:399 +#: src/pages/stock/StockDetail.tsx:133 +msgid "Last Stocktake" +msgstr "" + +#: src/pages/part/PartDetail.tsx:434 +msgid "Stocktake By" +msgstr "" + +#: src/pages/part/PartDetail.tsx:498 +msgid "Part Details" +msgstr "" + +#: src/pages/part/PartDetail.tsx:529 +msgid "Variants" +msgstr "" + +#: src/pages/part/PartDetail.tsx:536 +#: src/pages/stock/StockDetail.tsx:286 +msgid "Allocations" +msgstr "" + +#: src/pages/part/PartDetail.tsx:543 +msgid "Bill of Materials" +msgstr "" + +#: src/pages/part/PartDetail.tsx:559 +msgid "Used In" +msgstr "" + +#: src/pages/part/PartDetail.tsx:566 +msgid "Part Pricing" +msgstr "" + +#: src/pages/part/PartDetail.tsx:572 +#: src/pages/purchasing/PurchasingIndex.tsx:37 +msgid "Manufacturers" +msgstr "" + +#: src/pages/part/PartDetail.tsx:612 +msgid "Scheduling" +msgstr "" + +#: src/pages/part/PartDetail.tsx:624 +msgid "Test Templates" +msgstr "" + +#: src/pages/part/PartDetail.tsx:635 +msgid "Related Parts" +msgstr "" + +#: src/pages/part/PartDetail.tsx:769 +#: src/pages/stock/StockDetail.tsx:154 +#: src/pages/stock/StockDetail.tsx:533 +#: src/tables/build/BuildLineTable.tsx:36 +#: src/tables/part/PartTable.tsx:117 +#: src/tables/stock/StockItemTable.tsx:176 +#: src/tables/stock/StockItemTable.tsx:307 +msgid "Available" +msgstr "" + +#: src/pages/part/PartDetail.tsx:775 +msgid "No Stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:781 +#: src/tables/bom/BomTable.tsx:310 +#: src/tables/part/PartTable.tsx:86 +msgid "On Order" +msgstr "" + +#: src/pages/part/PartDetail.tsx:787 +#: src/pages/stock/StockDetail.tsx:516 +#: src/tables/stock/StockItemTable.tsx:327 +msgid "In Production" +msgstr "" + +#: src/pages/part/PartDetail.tsx:812 +msgid "Edit Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:847 +#: src/tables/part/PartTable.tsx:315 +#: src/tables/part/PartTable.tsx:328 +msgid "Add Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:861 +msgid "Delete Part" +msgstr "" + +#: src/pages/part/PartDetail.tsx:870 +msgid "Deleting this part cannot be reversed" +msgstr "" + +#: src/pages/part/PartDetail.tsx:908 +#: src/pages/stock/LocationDetail.tsx:304 +#: src/tables/stock/StockItemTable.tsx:441 +msgid "Stock Actions" +msgstr "" + +#: src/pages/part/PartDetail.tsx:916 +msgid "Count part stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:927 +msgid "Transfer part stock" +msgstr "" + +#: src/pages/part/PartDetail.tsx:936 +msgid "Part Actions" +msgstr "" + +#: src/pages/part/PartDetail.tsx:994 +msgid "Select Part Revision" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:72 +msgid "No pricing data found for this part." +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:86 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:190 +msgid "Pricing Overview" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:92 +msgid "Purchase History" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:106 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:100 +msgid "Internal Pricing" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:124 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:107 +msgid "BOM Pricing" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:131 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:128 +msgid "Variant Pricing" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:143 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:135 +msgid "Sale Pricing" +msgstr "" + +#: src/pages/part/PartPricingPanel.tsx:150 +#: src/pages/part/pricing/PricingOverviewPanel.tsx:142 +msgid "Sale History" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:57 +#: src/pages/part/pricing/BomPricingPanel.tsx:137 +#: src/tables/ColumnRenderers.tsx:256 +#: src/tables/bom/BomTable.tsx:175 +#: src/tables/purchasing/PurchaseOrderTable.tsx:112 +#: src/tables/sales/ReturnOrderTable.tsx:104 +#: src/tables/sales/SalesOrderTable.tsx:134 +msgid "Total Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:77 +#: src/pages/part/pricing/BomPricingPanel.tsx:101 +#: src/tables/part/PartTable.tsx:202 +msgid "Component" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:80 +#: src/pages/part/pricing/VariantPricingPanel.tsx:37 +#: src/pages/part/pricing/VariantPricingPanel.tsx:97 +msgid "Minimum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:81 +#: src/pages/part/pricing/VariantPricingPanel.tsx:45 +#: src/pages/part/pricing/VariantPricingPanel.tsx:98 +msgid "Maximum Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:128 +#: src/pages/part/pricing/PriceBreakPanel.tsx:168 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:67 +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:128 +#: src/pages/part/pricing/SupplierPricingPanel.tsx:62 +#: src/tables/bom/BomTable.tsx:166 +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:88 +msgid "Unit Price" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:153 +#: src/pages/part/pricing/VariantPricingPanel.tsx:53 +#: src/tables/purchasing/SupplierPartTable.tsx:148 +msgid "Updated" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:218 +msgid "Pie Chart" +msgstr "" + +#: src/pages/part/pricing/BomPricingPanel.tsx:219 +msgid "Bar Chart" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:54 +#: src/pages/part/pricing/PriceBreakPanel.tsx:106 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:138 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:164 +msgid "Add Price Break" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:67 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:149 +msgid "Edit Price Break" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:77 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:157 +msgid "Delete Price Break" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:91 +msgid "Price Break" +msgstr "" + +#: src/pages/part/pricing/PriceBreakPanel.tsx:166 +msgid "Price" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:51 +msgid "Pricing Category" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:70 +msgid "Minimum" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:82 +msgid "Maximum" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:114 +msgid "Purchase Pricing" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:149 +msgid "Override Pricing" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:156 +msgid "Overall Pricing" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:175 +#: src/pages/stock/StockDetail.tsx:127 +msgid "Last Updated" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:192 +msgid "Minimum Value" +msgstr "" + +#: src/pages/part/pricing/PricingOverviewPanel.tsx:193 +msgid "Maximum Value" +msgstr "" + +#: src/pages/part/pricing/PricingPanel.tsx:25 +msgid "No data available" +msgstr "" + +#: src/pages/part/pricing/PricingPanel.tsx:66 +msgid "No Data" +msgstr "" + +#: src/pages/part/pricing/PricingPanel.tsx:67 +msgid "No pricing data available" +msgstr "" + +#: src/pages/part/pricing/PricingPanel.tsx:78 +msgid "Loading pricing data" +msgstr "" + +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:40 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:36 +#: src/tables/ColumnRenderers.tsx:195 +#: src/tables/plugin/PluginListTable.tsx:139 +msgid "Date" +msgstr "" + +#: src/pages/part/pricing/PurchaseHistoryPanel.tsx:47 +msgid "Purchase Price" +msgstr "" + +#: src/pages/part/pricing/SaleHistoryPanel.tsx:22 +msgid "Sale Order" +msgstr "" + +#: src/pages/part/pricing/SaleHistoryPanel.tsx:42 +#: src/pages/part/pricing/SaleHistoryPanel.tsx:92 +msgid "Sale Price" +msgstr "" + +#: src/pages/part/pricing/SupplierPricingPanel.tsx:65 +#: src/tables/purchasing/SupplierPriceBreakTable.tsx:79 +msgid "Supplier Price" +msgstr "" + +#: src/pages/part/pricing/VariantPricingPanel.tsx:30 +#: src/pages/part/pricing/VariantPricingPanel.tsx:94 +msgid "Variant Part" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:76 +msgid "Edit Purchase Order" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:85 +#: src/tables/purchasing/PurchaseOrderTable.tsx:128 +#: src/tables/purchasing/PurchaseOrderTable.tsx:140 +msgid "Add Purchase Order" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:110 +msgid "Supplier Reference" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:147 +#: src/pages/sales/ReturnOrderDetail.tsx:115 +#: src/pages/sales/SalesOrderDetail.tsx:119 +msgid "Completed Line Items" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:155 +#: src/pages/sales/ReturnOrderDetail.tsx:123 +#: src/pages/sales/SalesOrderDetail.tsx:127 +#: src/pages/sales/SalesOrderDetail.tsx:264 +msgid "Completed Shipments" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:162 +#: src/pages/sales/ReturnOrderDetail.tsx:131 +#: src/pages/sales/SalesOrderDetail.tsx:135 +msgid "Order Currency" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:169 +#: src/pages/sales/ReturnOrderDetail.tsx:138 +#: src/pages/sales/SalesOrderDetail.tsx:142 +msgid "Total Cost" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:204 +#: src/pages/sales/ReturnOrderDetail.tsx:173 +#: src/pages/sales/SalesOrderDetail.tsx:177 +msgid "Created On" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:249 +#: src/pages/sales/ReturnOrderDetail.tsx:218 +#: src/pages/sales/SalesOrderDetail.tsx:246 +msgid "Order Details" +msgstr "" + +#: src/pages/purchasing/PurchaseOrderDetail.tsx:323 +#: src/pages/sales/ReturnOrderDetail.tsx:299 +#: src/pages/sales/SalesOrderDetail.tsx:313 +msgid "Order Actions" +msgstr "" + +#: src/pages/sales/ReturnOrderDetail.tsx:79 +#: src/pages/sales/SalesOrderDetail.tsx:83 +#: src/tables/sales/SalesOrderTable.tsx:123 +msgid "Customer Reference" +msgstr "" + +#: src/pages/sales/ReturnOrderDetail.tsx:271 +msgid "Edit Return Order" +msgstr "" + +#: src/pages/sales/ReturnOrderDetail.tsx:280 +#: src/tables/sales/ReturnOrderTable.tsx:119 +#: src/tables/sales/ReturnOrderTable.tsx:128 +msgid "Add Return Order" +msgstr "" + +#: src/pages/sales/SalesIndex.tsx:33 +msgid "Customers" +msgstr "" + +#: src/pages/sales/SalesOrderDetail.tsx:223 +msgid "Edit Sales Order" +msgstr "" + +#: src/pages/sales/SalesOrderDetail.tsx:232 +#: src/tables/sales/SalesOrderTable.tsx:83 +#: src/tables/sales/SalesOrderTable.tsx:95 +msgid "Add Sales Order" +msgstr "" + +#: src/pages/sales/SalesOrderDetail.tsx:258 +msgid "Pending Shipments" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:109 +msgid "Parent Location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:127 +msgid "Sublocations" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:139 +#: src/tables/stock/StockLocationTable.tsx:52 +msgid "External" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:145 +#: src/tables/stock/StockLocationTable.tsx:61 +msgid "Location Type" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:156 +msgid "Top level stock location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:167 +msgid "Location Details" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:193 +msgid "Default Parts" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:212 +#: src/pages/stock/LocationDetail.tsx:331 +#: src/tables/stock/StockLocationTable.tsx:114 +msgid "Edit Stock Location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:233 +#: src/pages/stock/LocationDetail.tsx:336 +msgid "Delete Stock Location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:236 +msgid "Items Action" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:237 +msgid "Action for stock items in this location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:242 +msgid "Child Locations Action" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:243 +msgid "Action for child locations in this location" +msgstr "" + +#: src/pages/stock/LocationDetail.tsx:326 +msgid "Location Actions" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:106 +msgid "Base Part" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:113 +msgid "Stock Status" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:180 +msgid "Installed In" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:196 +msgid "Consumed By" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:205 +#: src/tables/stock/StockTrackingTable.tsx:96 +msgid "Build Order" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:270 +msgid "Stock Details" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:276 +msgid "Stock Tracking" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:295 +msgid "Test Data" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:309 +msgid "Installed Items" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:316 +msgid "Child Items" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:370 +msgid "Edit Stock Item" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:397 +msgid "Delete Stock Item" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:444 +msgid "Stock Operations" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:449 +msgid "Count stock" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:459 +#: src/tables/stock/StockItemTable.tsx:446 +msgid "Add stock" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:467 +#: src/tables/stock/StockItemTable.tsx:455 +msgid "Remove stock" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:474 +msgid "Transfer" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:475 +#: src/tables/stock/StockItemTable.tsx:475 +msgid "Transfer stock" +msgstr "" + +#: src/pages/stock/StockDetail.tsx:486 +msgid "Stock Item Actions" +msgstr "" + +#: src/tables/ColumnRenderers.tsx:30 +msgid "Part is not active" +msgstr "" + +#: src/tables/ColumnRenderers.tsx:35 +msgid "Part is locked" +msgstr "" + +#: src/tables/ColumnRenderers.tsx:57 +msgid "No location set" +msgstr "" + +#: src/tables/ColumnRenderers.tsx:222 +msgid "Shipment Date" +msgstr "" + +#: src/tables/ColumnRenderers.tsx:242 +#: src/tables/settings/CurrencyTable.tsx:23 +msgid "Currency" +msgstr "" + +#: src/tables/ColumnSelect.tsx:16 +#: src/tables/ColumnSelect.tsx:23 +msgid "Select Columns" +msgstr "" + +#: src/tables/DownloadAction.tsx:22 +msgid "CSV" +msgstr "" + +#: src/tables/DownloadAction.tsx:23 +msgid "TSV" +msgstr "" + +#: src/tables/DownloadAction.tsx:24 +msgid "Excel (.xlsx)" +msgstr "" + +#: src/tables/DownloadAction.tsx:38 +msgid "Download Data" +msgstr "" + +#: src/tables/Filter.tsx:88 +#: src/tables/build/BuildOrderTable.tsx:126 +msgid "Assigned to me" +msgstr "" + +#: src/tables/Filter.tsx:89 +#: src/tables/build/BuildOrderTable.tsx:127 +msgid "Show orders assigned to me" +msgstr "" + +#: src/tables/Filter.tsx:96 +msgid "Outstanding" +msgstr "" + +#: src/tables/Filter.tsx:97 +msgid "Show outstanding orders" +msgstr "" + +#: src/tables/Filter.tsx:104 +#: src/tables/build/BuildOrderTable.tsx:119 +msgid "Overdue" +msgstr "" + +#: src/tables/Filter.tsx:105 +msgid "Show overdue orders" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:51 +msgid "Remove filter" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:130 +msgid "Select filter" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:131 +msgid "Filter" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:138 +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:38 +#: src/tables/stock/StockItemTestResultTable.tsx:181 +msgid "Value" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:139 +msgid "Select filter value" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:182 +msgid "Table Filters" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:214 +msgid "Add Filter" +msgstr "" + +#: src/tables/FilterSelectDrawer.tsx:223 +msgid "Clear Filters" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:126 +#: src/tables/InvenTreeTable.tsx:408 +#: src/tables/InvenTreeTable.tsx:429 +msgid "No records found" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:440 +msgid "Server returned incorrect data type" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:448 +msgid "Bad request" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:451 +msgid "Unauthorized" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:454 +msgid "Forbidden" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:457 +msgid "Not found" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:505 +#: src/tables/InvenTreeTable.tsx:621 +msgid "Delete selected records" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:509 +msgid "Are you sure you want to delete the selected records?" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:511 +msgid "This action cannot be undone!" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:534 +msgid "Deleted records" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:535 +msgid "Records were deleted successfully" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:544 +msgid "Failed to delete records" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:611 +#: src/tables/InvenTreeTable.tsx:612 +msgid "Barcode actions" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:640 +msgid "Refresh data" +msgstr "" + +#: src/tables/InvenTreeTable.tsx:661 +msgid "Table filters" +msgstr "" + +#: src/tables/UploadAction.tsx:9 +msgid "Upload Data" +msgstr "" + +#: src/tables/bom/BomTable.tsx:85 +msgid "This BOM item is defined for a different parent" +msgstr "" + +#: src/tables/bom/BomTable.tsx:100 +msgid "Part Information" +msgstr "" + +#: src/tables/bom/BomTable.tsx:202 +#: src/tables/build/BuildLineTable.tsx:104 +#: src/tables/part/PartTable.tsx:125 +msgid "External stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:210 +#: src/tables/build/BuildLineTable.tsx:67 +msgid "Includes substitute stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:219 +#: src/tables/build/BuildLineTable.tsx:77 +msgid "Includes variant stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:244 +#: src/tables/part/PartTable.tsx:153 +#: src/tables/stock/StockItemTable.tsx:215 +msgid "Stock Information" +msgstr "" + +#: src/tables/bom/BomTable.tsx:275 +#: src/tables/build/BuildLineTable.tsx:204 +msgid "Consumable item" +msgstr "" + +#: src/tables/bom/BomTable.tsx:278 +msgid "No available stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:296 +msgid "Show trackable items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:301 +msgid "Show asssmbled items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:306 +msgid "Show items with available stock" +msgstr "" + +#: src/tables/bom/BomTable.tsx:311 +msgid "Show items on order" +msgstr "" + +#: src/tables/bom/BomTable.tsx:315 +msgid "Validated" +msgstr "" + +#: src/tables/bom/BomTable.tsx:316 +msgid "Show validated items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:320 +#: src/tables/bom/UsedInTable.tsx:63 +msgid "Inherited" +msgstr "" + +#: src/tables/bom/BomTable.tsx:321 +#: src/tables/bom/UsedInTable.tsx:64 +msgid "Show inherited items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:325 +msgid "Allow Variants" +msgstr "" + +#: src/tables/bom/BomTable.tsx:326 +msgid "Show items which allow variant substitution" +msgstr "" + +#: src/tables/bom/BomTable.tsx:330 +#: src/tables/bom/UsedInTable.tsx:68 +#: src/tables/build/BuildLineTable.tsx:46 +msgid "Optional" +msgstr "" + +#: src/tables/bom/BomTable.tsx:331 +#: src/tables/bom/UsedInTable.tsx:69 +msgid "Show optional items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:335 +#: src/tables/build/BuildLineTable.tsx:41 +msgid "Consumable" +msgstr "" + +#: src/tables/bom/BomTable.tsx:336 +msgid "Show consumable items" +msgstr "" + +#: src/tables/bom/BomTable.tsx:340 +#: src/tables/part/PartTable.tsx:276 +msgid "Has Pricing" +msgstr "" + +#: src/tables/bom/BomTable.tsx:341 +msgid "Show items with pricing" +msgstr "" + +#: src/tables/bom/BomTable.tsx:350 +#: src/tables/bom/BomTable.tsx:478 +msgid "Add BOM Item" +msgstr "" + +#: src/tables/bom/BomTable.tsx:355 +msgid "BOM item created" +msgstr "" + +#: src/tables/bom/BomTable.tsx:362 +msgid "Edit BOM Item" +msgstr "" + +#: src/tables/bom/BomTable.tsx:364 +msgid "BOM item updated" +msgstr "" + +#: src/tables/bom/BomTable.tsx:371 +msgid "Delete BOM Item" +msgstr "" + +#: src/tables/bom/BomTable.tsx:372 +msgid "BOM item deleted" +msgstr "" + +#: src/tables/bom/BomTable.tsx:385 +#: src/tables/bom/BomTable.tsx:388 +#: src/tables/bom/BomTable.tsx:472 +msgid "Validate BOM" +msgstr "" + +#: src/tables/bom/BomTable.tsx:389 +msgid "Do you want to validate the bill of materials for this assembly?" +msgstr "" + +#: src/tables/bom/BomTable.tsx:392 +msgid "BOM validated" +msgstr "" + +#: src/tables/bom/BomTable.tsx:404 +msgid "BOM item validated" +msgstr "" + +#: src/tables/bom/BomTable.tsx:413 +msgid "Failed to validate BOM item" +msgstr "" + +#: src/tables/bom/BomTable.tsx:425 +msgid "View BOM" +msgstr "" + +#: src/tables/bom/BomTable.tsx:434 +msgid "Validate BOM Line" +msgstr "" + +#: src/tables/bom/BomTable.tsx:451 +msgid "Edit Substitutes" +msgstr "" + +#: src/tables/bom/BomTable.tsx:493 +#: src/tables/part/PartParameterTable.tsx:191 +msgid "Part is Locked" +msgstr "" + +#: src/tables/bom/BomTable.tsx:498 +msgid "Bill of materials cannot be edited, as the part is locked" +msgstr "" + +#: src/tables/bom/UsedInTable.tsx:74 +msgid "Show active assemblies" +msgstr "" + +#: src/tables/bom/UsedInTable.tsx:78 +#: src/tables/part/PartTable.tsx:208 +#: src/tables/part/PartVariantTable.tsx:30 +msgid "Trackable" +msgstr "" + +#: src/tables/bom/UsedInTable.tsx:79 +msgid "Show trackable assemblies" +msgstr "" + +#: src/tables/build/BuildAllocatedStockTable.tsx:34 +msgid "Allocated to Output" +msgstr "" + +#: src/tables/build/BuildAllocatedStockTable.tsx:35 +msgid "Show items allocated to a build output" +msgstr "" + +#: src/tables/build/BuildAllocatedStockTable.tsx:57 +msgid "Allocated Quantity" +msgstr "" + +#: src/tables/build/BuildAllocatedStockTable.tsx:70 +msgid "Available Quantity" +msgstr "" + +#: src/tables/build/BuildAllocatedStockTable.tsx:80 +#: src/tables/build/BuildOutputTable.tsx:253 +msgid "Build Output" +msgstr "" + +#: src/tables/build/BuildAllocatedStockTable.tsx:97 +msgid "Edit Build Item" +msgstr "" + +#: src/tables/build/BuildAllocatedStockTable.tsx:107 +msgid "Delete Build Item" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:31 +#: src/tables/stock/StockItemTable.tsx:302 +msgid "Allocated" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:32 +msgid "Show allocated lines" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:37 +msgid "Show lines with available stock" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:42 +msgid "Show consumable lines" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:47 +msgid "Show optional lines" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:51 +#: src/tables/stock/StockItemTable.tsx:361 +msgid "Tracked" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:52 +msgid "Show tracked lines" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:86 +msgid "In production" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:118 +#: src/tables/stock/StockItemTable.tsx:185 +msgid "No stock available" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:157 +msgid "Gets Inherited" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:166 +msgid "Unit Quantity" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:234 +msgid "Allocate Stock" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:240 +msgid "Order Stock" +msgstr "" + +#: src/tables/build/BuildLineTable.tsx:246 +msgid "Build Stock" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:109 +msgid "Show active orders" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:114 +#: src/tables/purchasing/PurchaseOrderTable.tsx:56 +#: src/tables/sales/ReturnOrderTable.tsx:47 +#: src/tables/sales/SalesOrderTable.tsx:53 +msgid "Filter by order status" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:121 +msgid "Show overdue status" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:132 +#: src/tables/purchasing/PurchaseOrderTable.tsx:65 +#: src/tables/sales/ReturnOrderTable.tsx:56 +#: src/tables/sales/SalesOrderTable.tsx:62 +msgid "Filter by project code" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:137 +#: src/tables/purchasing/PurchaseOrderTable.tsx:70 +#: src/tables/sales/ReturnOrderTable.tsx:61 +#: src/tables/sales/SalesOrderTable.tsx:67 +msgid "Has Project Code" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:138 +#: src/tables/purchasing/PurchaseOrderTable.tsx:71 +#: src/tables/sales/ReturnOrderTable.tsx:62 +#: src/tables/sales/SalesOrderTable.tsx:68 +msgid "Filter by whether the purchase order has a project code" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:143 +msgid "Filter by user who issued this order" +msgstr "" + +#: src/tables/build/BuildOrderTable.tsx:149 +#: src/tables/purchasing/PurchaseOrderTable.tsx:76 +#: src/tables/sales/ReturnOrderTable.tsx:67 +#: src/tables/sales/SalesOrderTable.tsx:73 +msgid "Filter by responsible owner" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:114 +#: src/tables/build/BuildOutputTable.tsx:152 +msgid "Add Build Output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:157 +msgid "Complete selected outputs" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:167 +msgid "Scrap selected outputs" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:177 +msgid "Cancel selected outputs" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:193 +msgid "Allocate" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:194 +msgid "Allocate stock to build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:199 +msgid "Deallocate" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:200 +msgid "Deallocate stock from build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:206 +msgid "Complete build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:215 +msgid "Scrap" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:216 +msgid "Scrap build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:226 +msgid "Cancel build output" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:266 +msgid "Batch" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:280 +msgid "Allocated Items" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:290 +msgid "Required Tests" +msgstr "" + +#: src/tables/build/BuildOutputTable.tsx:319 +#: src/tables/stock/StockItemTestResultTable.tsx:145 +msgid "Test Results" +msgstr "" + +#: src/tables/company/AddressTable.tsx:121 +#: src/tables/company/AddressTable.tsx:185 +msgid "Add Address" +msgstr "" + +#: src/tables/company/AddressTable.tsx:126 +msgid "Address created" +msgstr "" + +#: src/tables/company/AddressTable.tsx:135 +msgid "Edit Address" +msgstr "" + +#: src/tables/company/AddressTable.tsx:143 +msgid "Delete Address" +msgstr "" + +#: src/tables/company/AddressTable.tsx:144 +msgid "Are you sure you want to delete this address?" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:74 +#: src/tables/company/CompanyTable.tsx:123 +msgid "Add Company" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:96 +msgid "Show active companies" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:101 +msgid "Show companies which are suppliers" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:106 +msgid "Show companies which are manufacturers" +msgstr "" + +#: src/tables/company/CompanyTable.tsx:111 +msgid "Show companies which are customers" +msgstr "" + +#: src/tables/company/ContactTable.tsx:71 +msgid "Edit Contact" +msgstr "" + +#: src/tables/company/ContactTable.tsx:78 +msgid "Add Contact" +msgstr "" + +#: src/tables/company/ContactTable.tsx:89 +msgid "Delete Contact" +msgstr "" + +#: src/tables/company/ContactTable.tsx:129 +msgid "Add contact" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:130 +msgid "File uploaded" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:131 +msgid "File {0} uploaded successfully" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:142 +msgid "Upload Error" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:143 +msgid "File could not be uploaded" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:191 +msgid "Upload Attachment" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:201 +msgid "Edit Attachment" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:215 +msgid "Delete Attachment" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:225 +msgid "Is Link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:226 +msgid "Show link attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:230 +msgid "Is File" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:231 +msgid "Show file attachments" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:240 +msgid "Add attachment" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:251 +msgid "Add external link" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:299 +msgid "No attachments found" +msgstr "" + +#: src/tables/general/AttachmentTable.tsx:337 +msgid "Drag attachment file here to upload" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:202 +msgid "Machine restarted" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:212 +#: src/tables/machine/MachineListTable.tsx:263 +msgid "Edit machine" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:226 +#: src/tables/machine/MachineListTable.tsx:267 +msgid "Delete machine" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:227 +msgid "Machine successfully deleted." +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:231 +msgid "Are you sure you want to remove the machine \"{0}\"?" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:255 +#: src/tables/machine/MachineListTable.tsx:432 +msgid "Restart required" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:259 +msgid "Machine Actions" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:272 +msgid "Restart" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:274 +msgid "Restart machine" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:276 +msgid "manual restart required" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:292 +msgid "Machine information" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:303 +#: src/tables/machine/MachineListTable.tsx:599 +msgid "Machine Type" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:316 +msgid "Machine Driver" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:329 +msgid "Initialized" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:350 +#: src/tables/machine/MachineTypeTable.tsx:261 +msgid "Errors" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:358 +#: src/tables/machine/MachineTypeTable.tsx:269 +msgid "No errors reported" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:378 +msgid "Machine Settings" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:389 +msgid "Driver Settings" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:506 +msgid "Add machine" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:561 +msgid "Machine detail" +msgstr "" + +#: src/tables/machine/MachineListTable.tsx:608 +msgid "Driver" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:73 +msgid "Builtin driver" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:89 +msgid "Machine type not found." +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:97 +msgid "Machine type information" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:110 +#: src/tables/machine/MachineTypeTable.tsx:217 +msgid "Slug" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:118 +#: src/tables/machine/MachineTypeTable.tsx:238 +msgid "Provider plugin" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:130 +#: src/tables/machine/MachineTypeTable.tsx:250 +msgid "Provider file" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:135 +#: src/tables/machine/MachineTypeTable.tsx:255 +#: src/tables/plugin/PluginListTable.tsx:180 +#: src/tables/plugin/PluginListTable.tsx:568 +msgid "Builtin" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:146 +msgid "Available drivers" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:196 +msgid "Machine driver not found." +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:204 +msgid "Machine driver information" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:224 +msgid "Machine type" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:327 +msgid "Builtin type" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:336 +msgid "Machine type detail" +msgstr "" + +#: src/tables/machine/MachineTypeTable.tsx:346 +msgid "Machine driver detail" +msgstr "" + +#: src/tables/notifications/NotificationsTable.tsx:26 +msgid "Age" +msgstr "" + +#: src/tables/notifications/NotificationsTable.tsx:40 +#: src/tables/plugin/PluginErrorTable.tsx:37 +msgid "Message" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:77 +#: src/tables/part/PartParameterTable.tsx:95 +msgid "Internal Units" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:82 +msgid "Edit parameter" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:125 +msgid "Add Part Parameter" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:139 +#: src/tables/part/PartParameterTable.tsx:128 +#: src/tables/part/PartParameterTable.tsx:151 +msgid "Edit Part Parameter" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:223 +msgid "Show active parts" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:228 +msgid "Show locked parts" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:232 +#: src/tables/part/PartTable.tsx:190 +#: src/tables/stock/StockItemTable.tsx:297 +msgid "Assembly" +msgstr "" + +#: src/tables/part/ParametricPartTable.tsx:233 +msgid "Show assembly parts" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:60 +#: src/tables/part/PartTable.tsx:196 +msgid "Include Subcategories" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:61 +msgid "Include subcategories in results" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:66 +msgid "Show structural categories" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:70 +#: src/tables/part/PartTable.tsx:288 +msgid "Subscribed" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:71 +msgid "Show categories to which the user is subscribed" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:78 +msgid "New Part Category" +msgstr "" + +#: src/tables/part/PartCategoryTable.tsx:103 +msgid "Add Part Category" +msgstr "" + +#: src/tables/part/PartCategoryTemplateTable.tsx:38 +#: src/tables/part/PartCategoryTemplateTable.tsx:131 +msgid "Add Category Parameter" +msgstr "" + +#: src/tables/part/PartCategoryTemplateTable.tsx:46 +msgid "Edit Category Parameter" +msgstr "" + +#: src/tables/part/PartCategoryTemplateTable.tsx:54 +msgid "Delete Category Parameter" +msgstr "" + +#: src/tables/part/PartCategoryTemplateTable.tsx:76 +msgid "Parameter Template" +msgstr "" + +#: src/tables/part/PartParameterTable.tsx:112 +msgid "New Part Parameter" +msgstr "" + +#: src/tables/part/PartParameterTable.tsx:137 +#: src/tables/part/PartParameterTable.tsx:159 +msgid "Delete Part Parameter" +msgstr "" + +#: src/tables/part/PartParameterTable.tsx:177 +msgid "Add parameter" +msgstr "" + +#: src/tables/part/PartParameterTable.tsx:196 +msgid "Part parameters cannot be edited, as the part is locked" +msgstr "" + +#: src/tables/part/PartParameterTable.tsx:210 +#: src/tables/stock/StockItemTable.tsx:332 +msgid "Include Variants" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:31 +msgid "Checkbox" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:32 +msgid "Show checkbox templates" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:36 +msgid "Has choices" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:37 +msgid "Show templates with choices" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:41 +#: src/tables/part/PartTable.tsx:214 +msgid "Has Units" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:42 +msgid "Show templates with units" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:85 +msgid "Add Parameter Template" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:100 +msgid "Edit Parameter Template" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:111 +msgid "Delete Parameter Template" +msgstr "" + +#: src/tables/part/PartParameterTemplateTable.tsx:141 +msgid "Add parameter template" +msgstr "" + +#: src/tables/part/PartTable.tsx:77 +msgid "Minimum stock" +msgstr "" + +#: src/tables/part/PartTable.tsx:99 +msgid "Build Order Allocations" +msgstr "" + +#: src/tables/part/PartTable.tsx:108 +msgid "Sales Order Allocations" +msgstr "" + +#: src/tables/part/PartTable.tsx:179 +msgid "Filter by part active status" +msgstr "" + +#: src/tables/part/PartTable.tsx:185 +msgid "Filter by part locked status" +msgstr "" + +#: src/tables/part/PartTable.tsx:191 +msgid "Filter by assembly attribute" +msgstr "" + +#: src/tables/part/PartTable.tsx:197 +msgid "Include parts in subcategories" +msgstr "" + +#: src/tables/part/PartTable.tsx:203 +msgid "Filter by component attribute" +msgstr "" + +#: src/tables/part/PartTable.tsx:209 +msgid "Filter by trackable attribute" +msgstr "" + +#: src/tables/part/PartTable.tsx:215 +msgid "Filter by parts which have units" +msgstr "" + +#: src/tables/part/PartTable.tsx:220 +msgid "Has IPN" +msgstr "" + +#: src/tables/part/PartTable.tsx:221 +msgid "Filter by parts which have an internal part number" +msgstr "" + +#: src/tables/part/PartTable.tsx:226 +msgid "Has Stock" +msgstr "" + +#: src/tables/part/PartTable.tsx:227 +msgid "Filter by parts which have stock" +msgstr "" + +#: src/tables/part/PartTable.tsx:233 +msgid "Filter by parts which have low stock" +msgstr "" + +#: src/tables/part/PartTable.tsx:238 +msgid "Purchaseable" +msgstr "" + +#: src/tables/part/PartTable.tsx:239 +msgid "Filter by parts which are purchaseable" +msgstr "" + +#: src/tables/part/PartTable.tsx:244 +msgid "Salable" +msgstr "" + +#: src/tables/part/PartTable.tsx:245 +msgid "Filter by parts which are salable" +msgstr "" + +#: src/tables/part/PartTable.tsx:250 +#: src/tables/part/PartTable.tsx:254 +#: src/tables/part/PartVariantTable.tsx:25 +msgid "Virtual" +msgstr "" + +#: src/tables/part/PartTable.tsx:251 +msgid "Filter by parts which are virtual" +msgstr "" + +#: src/tables/part/PartTable.tsx:255 +msgid "Not Virtual" +msgstr "" + +#: src/tables/part/PartTable.tsx:260 +msgid "Is Template" +msgstr "" + +#: src/tables/part/PartTable.tsx:261 +msgid "Filter by parts which are templates" +msgstr "" + +#: src/tables/part/PartTable.tsx:266 +msgid "Is Revision" +msgstr "" + +#: src/tables/part/PartTable.tsx:267 +msgid "Filter by parts which are revisions" +msgstr "" + +#: src/tables/part/PartTable.tsx:271 +msgid "Has Revisions" +msgstr "" + +#: src/tables/part/PartTable.tsx:272 +msgid "Filter by parts which have revisions" +msgstr "" + +#: src/tables/part/PartTable.tsx:277 +msgid "Filter by parts which have pricing information" +msgstr "" + +#: src/tables/part/PartTable.tsx:283 +msgid "Filter by parts which have available stock" +msgstr "" + +#: src/tables/part/PartTable.tsx:289 +msgid "Filter by parts to which the user is subscribed" +msgstr "" + +#: src/tables/part/PartTable.tsx:294 +msgid "Has Stocktake" +msgstr "" + +#: src/tables/part/PartTable.tsx:295 +msgid "Filter by parts which have stocktake information" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:52 +msgid "Results" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:54 +msgid "No Results" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:84 +#: src/tables/stock/StockItemTestResultTable.tsx:360 +msgid "Required" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:85 +msgid "Show required tests" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:89 +#: src/tables/settings/TemplateTable.tsx:160 +#: src/tables/settings/TemplateTable.tsx:270 +msgid "Enabled" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:90 +msgid "Show enabled tests" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:94 +msgid "Requires Value" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:95 +msgid "Show tests that require a value" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:99 +msgid "Requires Attachment" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:100 +msgid "Show tests that require an attachment" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:104 +msgid "Include Inherited" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:105 +msgid "Show tests from inherited templates" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:109 +msgid "Has Results" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:110 +msgid "Show tests which have recorded results" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:132 +#: src/tables/part/PartTestTemplateTable.tsx:207 +msgid "Add Test Template" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:148 +msgid "Edit Test Template" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:159 +msgid "Delete Test Template" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:161 +msgid "This action cannot be reversed" +msgstr "" + +#: src/tables/part/PartTestTemplateTable.tsx:163 +msgid "Any tests results associated with this template will be deleted" +msgstr "" + +#: src/tables/part/PartThumbTable.tsx:203 +msgid "Select" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:16 +msgid "Show active variants" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:20 +msgid "Template" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:21 +msgid "Show template variants" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:26 +msgid "Show virtual variants" +msgstr "" + +#: src/tables/part/PartVariantTable.tsx:31 +msgid "Show trackable variants" +msgstr "" + +#: src/tables/part/RelatedPartTable.tsx:84 +msgid "Add Related Part" +msgstr "" + +#: src/tables/part/RelatedPartTable.tsx:99 +msgid "Delete Related Part" +msgstr "" + +#: src/tables/part/RelatedPartTable.tsx:106 +msgid "Add related part" +msgstr "" + +#: src/tables/plugin/PluginErrorTable.tsx:29 +msgid "Stage" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:95 +msgid "Plugin with key {pluginKey} not found" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:97 +msgid "An error occurred while fetching plugin details" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:122 +msgid "Plugin information" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:134 +msgid "Author" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:154 +msgid "Plugin is not active" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:163 +msgid "Package information" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:169 +msgid "Package Name" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:175 +msgid "Installation Path" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:185 +msgid "Package" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:197 +msgid "Plugin settings" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:214 +msgid "Plugin is active" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:220 +msgid "Plugin is inactive" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:227 +msgid "Plugin is not installed" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:253 +msgid "Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:287 +msgid "Description not available" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:319 +msgid "Confirm plugin activation" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:320 +msgid "Confirm plugin deactivation" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:325 +msgid "The selected plugin will be activated" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:326 +msgid "The selected plugin will be deactivated" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:334 +msgid "Activate Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:362 +msgid "Deactivate" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:373 +msgid "Activate" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:406 +msgid "Uninstall" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:438 +msgid "Install plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:451 +msgid "Install" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:452 +msgid "Plugin installed successfully" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:457 +msgid "Uninstall Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:469 +msgid "Confirm plugin uninstall" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:472 +msgid "The selected plugin will be uninstalled." +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:473 +msgid "This action cannot be undone." +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:477 +msgid "Plugin uninstalled successfully" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:484 +msgid "Delete Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:485 +msgid "Deleting this plugin configuration will remove all associated settings and data. Are you sure you want to delete this plugin?" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:498 +msgid "Plugins reloaded" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:499 +msgid "Plugins were reloaded successfully" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:515 +msgid "Reload Plugins" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:524 +msgid "Install Plugin" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:544 +msgid "Plugin Detail" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:573 +msgid "Sample" +msgstr "" + +#: src/tables/plugin/PluginListTable.tsx:578 +#: src/tables/stock/StockItemTable.tsx:337 +msgid "Installed" +msgstr "" + +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:59 +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:108 +msgid "Add Parameter" +msgstr "" + +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:70 +msgid "Edit Parameter" +msgstr "" + +#: src/tables/purchasing/ManufacturerPartParameterTable.tsx:78 +msgid "Delete Parameter" +msgstr "" + +#: src/tables/purchasing/ManufacturerPartTable.tsx:92 +msgid "Delete Manufacturer Part" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86 +msgid "Part Description" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113 +msgid "Total Quantity" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129 +msgid "Received" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148 +msgid "Supplier Code" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155 +msgid "Supplier Link" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162 +msgid "Manufacturer Code" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176 +msgid "Destination" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:198 +msgid "Add Line Item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:215 +msgid "Edit Line Item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:223 +msgid "Delete Line Item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:234 +msgid "Receive line item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:272 +msgid "Add line item" +msgstr "" + +#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:282 +msgid "Receive items" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:93 +msgid "MPN" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:122 +msgid "Base units" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:170 +msgid "Supplier part created" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:176 +msgid "Add supplier part" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:188 +msgid "Show active supplier parts" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:192 +msgid "Active Part" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:193 +msgid "Show active internal parts" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:197 +msgid "Active Supplier" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:198 +msgid "Show active suppliers" +msgstr "" + +#: src/tables/purchasing/SupplierPartTable.tsx:218 +msgid "Delete Supplier Part" +msgstr "" + +#: src/tables/settings/CurrencyTable.tsx:28 +msgid "Rate" +msgstr "" + +#: src/tables/settings/CurrencyTable.tsx:40 +msgid "Exchange rates updated" +msgstr "" + +#: src/tables/settings/CurrencyTable.tsx:46 +msgid "Exchange rate update error" +msgstr "" + +#: src/tables/settings/CurrencyTable.tsx:57 +msgid "Refresh currency exchange rates" +msgstr "" + +#: src/tables/settings/CustomUnitsTable.tsx:50 +msgid "Add Custom Unit" +msgstr "" + +#: src/tables/settings/CustomUnitsTable.tsx:60 +msgid "Edit Custom Unit" +msgstr "" + +#: src/tables/settings/CustomUnitsTable.tsx:68 +msgid "Delete Custom Unit" +msgstr "" + +#: src/tables/settings/CustomUnitsTable.tsx:100 +msgid "Add custom unit" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:29 +msgid "When" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:39 +msgid "Error Information" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:51 +msgid "Delete Error Report" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:53 +msgid "Are you sure you want to delete this error report?" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:55 +msgid "Error report deleted" +msgstr "" + +#: src/tables/settings/ErrorTable.tsx:77 +#: src/tables/settings/FailedTasksTable.tsx:57 +msgid "Error Details" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:24 +#: src/tables/settings/PendingTasksTable.tsx:17 +#: src/tables/settings/ScheduledTasksTable.tsx:19 +msgid "Task" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:30 +#: src/tables/settings/PendingTasksTable.tsx:22 +msgid "Task ID" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:34 +#: src/tables/stock/StockItemTestResultTable.tsx:206 +msgid "Started" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:40 +msgid "Stopped" +msgstr "" + +#: src/tables/settings/FailedTasksTable.tsx:46 +msgid "Attempts" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:51 +msgid "Group with id {id} not found" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:53 +msgid "An error occurred while fetching group details" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:77 +msgid "Permission set" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:127 +msgid "Delete group" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:128 +msgid "Group deleted" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:130 +msgid "Are you sure you want to delete this group?" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:135 +#: src/tables/settings/GroupTable.tsx:147 +msgid "Add group" +msgstr "" + +#: src/tables/settings/GroupTable.tsx:159 +msgid "Edit group" +msgstr "" + +#: src/tables/settings/ImportSessionTable.tsx:39 +msgid "Delete Import Session" +msgstr "" + +#: src/tables/settings/ImportSessionTable.tsx:45 +#: src/tables/settings/ImportSessionTable.tsx:132 +msgid "Create Import Session" +msgstr "" + +#: src/tables/settings/ImportSessionTable.tsx:70 +msgid "Uploaded" +msgstr "" + +#: src/tables/settings/ImportSessionTable.tsx:80 +msgid "Imported Rows" +msgstr "" + +#: src/tables/settings/ImportSessionTable.tsx:110 +#: src/tables/settings/TemplateTable.tsx:276 +msgid "Model Type" +msgstr "" + +#: src/tables/settings/ImportSessionTable.tsx:111 +#: src/tables/settings/TemplateTable.tsx:277 +msgid "Filter by target model type" +msgstr "" + +#: src/tables/settings/ImportSessionTable.tsx:117 +msgid "Filter by import session status" +msgstr "" + +#: src/tables/settings/ImportSessionTable.tsx:123 +msgid "Filter by user" +msgstr "" + +#: src/tables/settings/PendingTasksTable.tsx:36 +msgid "Arguments" +msgstr "" + +#: src/tables/settings/ProjectCodeTable.tsx:42 +msgid "Add Project Code" +msgstr "" + +#: src/tables/settings/ProjectCodeTable.tsx:54 +msgid "Edit Project Code" +msgstr "" + +#: src/tables/settings/ProjectCodeTable.tsx:62 +msgid "Delete Project Code" +msgstr "" + +#: src/tables/settings/ProjectCodeTable.tsx:92 +msgid "Add project code" +msgstr "" + +#: src/tables/settings/ScheduledTasksTable.tsx:25 +msgid "Last Run" +msgstr "" + +#: src/tables/settings/ScheduledTasksTable.tsx:47 +msgid "Next Run" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:82 +msgid "Template not found" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:84 +msgid "An error occurred while fetching template details" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:170 +msgid "Modify" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:171 +msgid "Modify template file" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:222 +#: src/tables/settings/TemplateTable.tsx:289 +msgid "Edit Template" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:230 +msgid "Delete template" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:236 +msgid "Add Template" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:249 +msgid "Add template" +msgstr "" + +#: src/tables/settings/TemplateTable.tsx:271 +msgid "Filter by enabled status" +msgstr "" + +#: src/tables/settings/UserTable.tsx:79 +msgid "User with id {id} not found" +msgstr "" + +#: src/tables/settings/UserTable.tsx:81 +msgid "An error occurred while fetching user details" +msgstr "" + +#: src/tables/settings/UserTable.tsx:99 +msgid "Is Active" +msgstr "" + +#: src/tables/settings/UserTable.tsx:100 +msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts." +msgstr "" + +#: src/tables/settings/UserTable.tsx:104 +msgid "Is Staff" +msgstr "" + +#: src/tables/settings/UserTable.tsx:105 +msgid "Designates whether the user can log into the django admin site." +msgstr "" + +#: src/tables/settings/UserTable.tsx:109 +msgid "Is Superuser" +msgstr "" + +#: src/tables/settings/UserTable.tsx:110 +msgid "Designates that this user has all permissions without explicitly assigning them." +msgstr "" + +#: src/tables/settings/UserTable.tsx:120 +msgid "You cannot edit the rights for the currently logged-in user." +msgstr "" + +#: src/tables/settings/UserTable.tsx:151 +msgid "No groups" +msgstr "" + +#: src/tables/settings/UserTable.tsx:231 +msgid "Delete user" +msgstr "" + +#: src/tables/settings/UserTable.tsx:232 +msgid "User deleted" +msgstr "" + +#: src/tables/settings/UserTable.tsx:234 +msgid "Are you sure you want to delete this user?" +msgstr "" + +#: src/tables/settings/UserTable.tsx:240 +#: src/tables/settings/UserTable.tsx:258 +msgid "Add user" +msgstr "" + +#: src/tables/settings/UserTable.tsx:248 +msgid "Added user" +msgstr "" + +#: src/tables/settings/UserTable.tsx:270 +msgid "Edit user" +msgstr "" + +#: src/tables/stock/LocationTypesTable.tsx:36 +#: src/tables/stock/LocationTypesTable.tsx:105 +msgid "Add Location Type" +msgstr "" + +#: src/tables/stock/LocationTypesTable.tsx:44 +msgid "Edit Location Type" +msgstr "" + +#: src/tables/stock/LocationTypesTable.tsx:52 +msgid "Delete Location Type" +msgstr "" + +#: src/tables/stock/LocationTypesTable.tsx:69 +msgid "Icon" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:100 +msgid "This stock item is in production" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:109 +msgid "This stock item has been assigned to a sales order" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:118 +msgid "This stock item has been assigned to a customer" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:127 +msgid "This stock item is installed in another stock item" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:136 +msgid "This stock item has been consumed by a build order" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:145 +msgid "This stock item has expired" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:149 +msgid "This stock item is stale" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:160 +msgid "This stock item is fully allocated" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:167 +msgid "This stock item is partially allocated" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:195 +msgid "This stock item has been depleted" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:257 +msgid "Stock Value" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:287 +msgid "Show stock for active parts" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:292 +msgid "Filter by stock status" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:298 +msgid "Show stock for assmebled parts" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:303 +msgid "Show items which have been allocated" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:308 +msgid "Show items which are available" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:312 +#: src/tables/stock/StockLocationTable.tsx:42 +msgid "Include Sublocations" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:313 +msgid "Include stock in sublocations" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:317 +msgid "Depleted" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:318 +msgid "Show depleted stock items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:323 +msgid "Show items which are in stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:328 +msgid "Show items which are in production" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:333 +msgid "Include stock items for variant parts" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:338 +msgid "Show stock items which are installed in other items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:342 +msgid "Sent to Customer" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:343 +msgid "Show items which have been sent to a customer" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:347 +msgid "Is Serialized" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:348 +msgid "Show items which have a serial number" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:355 +msgid "Has Batch Code" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:356 +msgid "Show items which have a batch code" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:362 +msgid "Show tracked items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:366 +msgid "Has Purchase Price" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:367 +msgid "Show items which have a purchase price" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:375 +msgid "External Location" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:376 +msgid "Show items in an external location" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:448 +msgid "Add a new stock item" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:457 +msgid "Remove some quantity from a stock item" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:479 +msgid "Move Stock items to new locations" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:486 +msgid "Change stock status" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:488 +msgid "Change the status of stock items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:495 +msgid "Merge stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:497 +msgid "Merge stock items" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:504 +msgid "Order stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:506 +#: src/tables/stock/StockItemTable.tsx:512 +msgid "Order new stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:510 +msgid "Assign to customer" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:519 +msgid "Delete stock" +msgstr "" + +#: src/tables/stock/StockItemTable.tsx:521 +msgid "Delete stock items" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:126 +msgid "Test" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:152 +msgid "Test result for installed stock item" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:163 +msgid "Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:169 +msgid "No Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:185 +msgid "Attachment" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:201 +msgid "Test station" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:221 +msgid "Finished" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:252 +#: src/tables/stock/StockItemTestResultTable.tsx:324 +#: src/tables/stock/StockItemTestResultTable.tsx:379 +msgid "Add Test Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:254 +msgid "Test result added" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:263 +#: src/tables/stock/StockItemTestResultTable.tsx:334 +msgid "Edit Test Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:265 +msgid "Test result updated" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:271 +#: src/tables/stock/StockItemTestResultTable.tsx:343 +msgid "Delete Test Result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:273 +msgid "Test result deleted" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:287 +msgid "Test Passed" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:288 +msgid "Test result has been recorded" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:295 +msgid "Failed to record test result" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:312 +msgid "Pass Test" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:361 +msgid "Show results for required tests" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:365 +msgid "Include Installed" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:366 +msgid "Show results for installed stock items" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:370 +msgid "Passed" +msgstr "" + +#: src/tables/stock/StockItemTestResultTable.tsx:371 +msgid "Show only passed tests" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:43 +msgid "Include sublocations in results" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:48 +msgid "Show structural locations" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:53 +msgid "Show external locations" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:57 +msgid "Has location type" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:62 +msgid "Filter by location type" +msgstr "" + +#: src/tables/stock/StockLocationTable.tsx:99 +#: src/tables/stock/StockLocationTable.tsx:124 +msgid "Add Stock Location" +msgstr "" + +#: src/tables/stock/StockTrackingTable.tsx:64 +msgid "Added" +msgstr "" + +#: src/tables/stock/StockTrackingTable.tsx:69 +msgid "Removed" +msgstr "" + +#: src/tables/stock/StockTrackingTable.tsx:198 +msgid "No user information" +msgstr "" + +#: src/views/MobileAppView.tsx:22 +msgid "Mobile viewport detected" +msgstr "" + +#: src/views/MobileAppView.tsx:25 +msgid "Platform UI is optimized for Tablets and Desktops, you can use the official app for a mobile experience." +msgstr "" + +#: src/views/MobileAppView.tsx:31 +msgid "Read the docs" +msgstr "" + +#: src/views/MobileAppView.tsx:35 +msgid "Ignore and continue to Desktop view" +msgstr "" From 750e6d81fa5b663b5deadcf17d362effd87e699c Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 14 Jul 2024 20:49:46 +1000 Subject: [PATCH 02/58] Allocated stock table fix (#7636) * Expose batch code field to StockItemSerializerBrief * Expose more fields to PartBriefSerializer * Additional export fields to BuildItemSerializer * Bump API version * Fix playwright test --- src/backend/InvenTree/InvenTree/api_version.py | 7 ++++++- src/backend/InvenTree/build/serializers.py | 7 +++++++ src/backend/InvenTree/part/serializers.py | 2 ++ src/backend/InvenTree/stock/serializers.py | 1 + src/frontend/src/pages/stock/StockDetail.tsx | 1 - .../src/tables/build/BuildAllocatedStockTable.tsx | 12 +++++++++++- src/frontend/tests/pages/pui_build.spec.ts | 4 ++-- 7 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/backend/InvenTree/InvenTree/api_version.py b/src/backend/InvenTree/InvenTree/api_version.py index b11316cb69..3a2894e99d 100644 --- a/src/backend/InvenTree/InvenTree/api_version.py +++ b/src/backend/InvenTree/InvenTree/api_version.py @@ -1,12 +1,17 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 220 +INVENTREE_API_VERSION = 221 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ +v221 - 2024-07-13 : https://github.com/inventree/InvenTree/pull/7636 + - Adds missing fields from StockItemBriefSerializer + - Adds missing fields from PartBriefSerializer + - Adds extra exportable fields to BuildItemSerializer + v220 - 2024-07-11 : https://github.com/inventree/InvenTree/pull/7585 - Adds "revision_of" field to Part serializer - Adds new API filters for "revision" status diff --git a/src/backend/InvenTree/build/serializers.py b/src/backend/InvenTree/build/serializers.py index 7c8bb2a0aa..390cabab92 100644 --- a/src/backend/InvenTree/build/serializers.py +++ b/src/backend/InvenTree/build/serializers.py @@ -1072,6 +1072,8 @@ class BuildItemSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali 'part_name', 'part_ipn', 'available_quantity', + 'item_batch_code', + 'item_serial', ] class Meta: @@ -1103,6 +1105,8 @@ class BuildItemSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali 'part_name', 'part_ipn', 'available_quantity', + 'item_batch_code', + 'item_serial_number', ] def __init__(self, *args, **kwargs): @@ -1138,6 +1142,9 @@ class BuildItemSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali part_name = serializers.CharField(source='stock_item.part.name', label=_('Part Name'), read_only=True) part_ipn = serializers.CharField(source='stock_item.part.IPN', label=_('Part IPN'), read_only=True) + item_batch_code = serializers.CharField(source='stock_item.batch', label=_('Batch Code'), read_only=True) + item_serial_number = serializers.CharField(source='stock_item.serial', label=_('Serial Number'), read_only=True) + # Annotated fields build = serializers.PrimaryKeyRelatedField(source='build_line.build', many=False, read_only=True) diff --git a/src/backend/InvenTree/part/serializers.py b/src/backend/InvenTree/part/serializers.py index a5e4f783d6..b05a426ed1 100644 --- a/src/backend/InvenTree/part/serializers.py +++ b/src/backend/InvenTree/part/serializers.py @@ -309,7 +309,9 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer): 'image', 'thumbnail', 'active', + 'locked', 'assembly', + 'component', 'is_template', 'purchaseable', 'salable', diff --git a/src/backend/InvenTree/stock/serializers.py b/src/backend/InvenTree/stock/serializers.py index fa9e060e72..8cbdd28566 100644 --- a/src/backend/InvenTree/stock/serializers.py +++ b/src/backend/InvenTree/stock/serializers.py @@ -306,6 +306,7 @@ class StockItemSerializerBrief( 'location', 'quantity', 'serial', + 'batch', 'supplier_part', 'barcode_hash', ] diff --git a/src/frontend/src/pages/stock/StockDetail.tsx b/src/frontend/src/pages/stock/StockDetail.tsx index c07814af48..63abe0d829 100644 --- a/src/frontend/src/pages/stock/StockDetail.tsx +++ b/src/frontend/src/pages/stock/StockDetail.tsx @@ -57,7 +57,6 @@ import { useEditApiFormModal } from '../../hooks/UseForm'; import { useInstance } from '../../hooks/UseInstance'; -import { apiUrl } from '../../states/ApiState'; import { useUserState } from '../../states/UserState'; import { AttachmentTable } from '../../tables/general/AttachmentTable'; import InstalledItemsTable from '../../tables/stock/InstalledItemsTable'; diff --git a/src/frontend/src/tables/build/BuildAllocatedStockTable.tsx b/src/frontend/src/tables/build/BuildAllocatedStockTable.tsx index 56d68d6404..f89939fe92 100644 --- a/src/frontend/src/tables/build/BuildAllocatedStockTable.tsx +++ b/src/frontend/src/tables/build/BuildAllocatedStockTable.tsx @@ -2,6 +2,7 @@ import { t } from '@lingui/macro'; import { useCallback, useMemo, useState } from 'react'; import { ApiEndpoints } from '../../enums/ApiEndpoints'; +import { ModelType } from '../../enums/ModelType'; import { UserRoles } from '../../enums/Roles'; import { useDeleteApiFormModal, @@ -58,6 +59,13 @@ export default function BuildAllocatedStockTable({ sortable: true, switchable: false }, + { + accessor: 'serial', + title: t`Serial Number`, + sortable: false, + switchable: true, + render: (record: any) => record?.stock_item_detail?.serial + }, { accessor: 'batch', title: t`Batch Code`, @@ -150,7 +158,9 @@ export default function BuildAllocatedStockTable({ enableDownload: true, enableSelection: true, rowActions: rowActions, - tableFilters: tableFilters + tableFilters: tableFilters, + modelField: 'stock_item', + modelType: ModelType.stockitem }} /> diff --git a/src/frontend/tests/pages/pui_build.spec.ts b/src/frontend/tests/pages/pui_build.spec.ts index 0703380ee1..93df2ca397 100644 --- a/src/frontend/tests/pages/pui_build.spec.ts +++ b/src/frontend/tests/pages/pui_build.spec.ts @@ -19,10 +19,10 @@ test('PUI - Pages - Build Order', async ({ page }) => { await page.getByRole('tab', { name: 'Allocated Stock' }).click(); // Check for expected text in the table - await page.getByText('R_10R_0402_1%').click(); + await page.getByText('R_10R_0402_1%').waitFor(); await page .getByRole('cell', { name: 'R38, R39, R40, R41, R42, R43' }) - .click(); + .waitFor(); // Click through to the "parent" build await page.getByRole('tab', { name: 'Build Details' }).click(); From 76f8a2ee9e42c383383c846b892d1874720ac089 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 14 Jul 2024 22:00:29 +1000 Subject: [PATCH 03/58] [PUI] Add BOM import tool (#7635) * Add "field_overrides" field to DataImportSession model * Adjust logic for extracting field value * Add import drawer to BOM table * Enable download of BOM data * Improve support for hidden errors in forms * Improve form submission on front-end - Handle a mix of files and JSON fields - Stringify any objects * Update backend validation for data import session - Accept override values if provided - Ensure correct data format - Update fields for BomItem serializer * Add completion check for data import session * Improvements to importer drawer * Render column selection as a table * Add debouncing to text form fields - Significantly reduces rendering calls * Fix for TextField * Allow instance data to be updated manually * Allow specification of per-field default values when importing data * Improve rendering of import * Improve UI for data import drawer * Bump API version * Add callback after bulk delete * Update playwright test * Fix for editRow function --- .../InvenTree/InvenTree/api_version.py | 5 +- .../0002_dataimportsession_field_overrides.py | 19 ++ src/backend/InvenTree/importer/models.py | 82 ++++++++- src/backend/InvenTree/importer/serializers.py | 32 ++++ src/backend/InvenTree/importer/validators.py | 8 +- src/backend/InvenTree/part/serializers.py | 14 +- src/frontend/src/components/forms/ApiForm.tsx | 37 +++- .../components/forms/fields/ApiFormField.tsx | 21 +-- .../src/components/forms/fields/TextField.tsx | 66 +++++++ .../importer/ImportDataSelector.tsx | 23 ++- .../importer/ImporterColumnSelector.tsx | 164 ++++++++++++++---- .../components/importer/ImporterDrawer.tsx | 78 ++++++--- .../src/components/render/Instance.tsx | 6 +- src/frontend/src/forms/ImporterForms.tsx | 9 +- src/frontend/src/hooks/UseImportSession.tsx | 35 +++- src/frontend/src/hooks/UseInstance.tsx | 8 +- src/frontend/src/tables/InvenTreeTable.tsx | 4 + src/frontend/src/tables/bom/BomTable.tsx | 51 +++++- src/frontend/tests/pages/pui_part.spec.ts | 4 + 19 files changed, 565 insertions(+), 101 deletions(-) create mode 100644 src/backend/InvenTree/importer/migrations/0002_dataimportsession_field_overrides.py create mode 100644 src/frontend/src/components/forms/fields/TextField.tsx diff --git a/src/backend/InvenTree/InvenTree/api_version.py b/src/backend/InvenTree/InvenTree/api_version.py index 3a2894e99d..8494ebb26d 100644 --- a/src/backend/InvenTree/InvenTree/api_version.py +++ b/src/backend/InvenTree/InvenTree/api_version.py @@ -1,12 +1,15 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 221 +INVENTREE_API_VERSION = 222 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ +v222 - 2024-07-14 : https://github.com/inventree/InvenTree/pull/7635 + - Adjust the BomItem API endpoint to improve data import process + v221 - 2024-07-13 : https://github.com/inventree/InvenTree/pull/7636 - Adds missing fields from StockItemBriefSerializer - Adds missing fields from PartBriefSerializer diff --git a/src/backend/InvenTree/importer/migrations/0002_dataimportsession_field_overrides.py b/src/backend/InvenTree/importer/migrations/0002_dataimportsession_field_overrides.py new file mode 100644 index 0000000000..9d00ce956b --- /dev/null +++ b/src/backend/InvenTree/importer/migrations/0002_dataimportsession_field_overrides.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.14 on 2024-07-12 03:35 + +from django.db import migrations, models +import importer.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ('importer', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='dataimportsession', + name='field_overrides', + field=models.JSONField(blank=True, null=True, validators=[importer.validators.validate_field_defaults], verbose_name='Field Overrides'), + ), + ] diff --git a/src/backend/InvenTree/importer/models.py b/src/backend/InvenTree/importer/models.py index 3eb811c262..83c417f782 100644 --- a/src/backend/InvenTree/importer/models.py +++ b/src/backend/InvenTree/importer/models.py @@ -1,5 +1,6 @@ """Model definitions for the 'importer' app.""" +import json import logging from django.contrib.auth.models import User @@ -32,6 +33,7 @@ class DataImportSession(models.Model): status: IntegerField for the status of the import session user: ForeignKey to the User who initiated the import field_defaults: JSONField for field default values + field_overrides: JSONField for field override values """ @staticmethod @@ -92,6 +94,13 @@ class DataImportSession(models.Model): validators=[importer.validators.validate_field_defaults], ) + field_overrides = models.JSONField( + blank=True, + null=True, + verbose_name=_('Field Overrides'), + validators=[importer.validators.validate_field_defaults], + ) + @property def field_mapping(self): """Construct a dict of field mappings for this import session. @@ -132,8 +141,15 @@ class DataImportSession(models.Model): matched_columns = set() + field_overrides = self.field_overrides or {} + # Create a default mapping for each available field in the database for field, field_def in serializer_fields.items(): + # If an override value is provided for the field, + # skip creating a mapping for this field + if field in field_overrides: + continue + # Generate a list of possible column names for this field field_options = [ field, @@ -181,10 +197,15 @@ class DataImportSession(models.Model): required_fields = self.required_fields() field_defaults = self.field_defaults or {} + field_overrides = self.field_overrides or {} missing_fields = [] for field in required_fields.keys(): + # An override value exists + if field in field_overrides: + continue + # A default value exists if field in field_defaults and field_defaults[field]: continue @@ -265,6 +286,18 @@ class DataImportSession(models.Model): self.status = DataImportStatusCode.PROCESSING.value self.save() + def check_complete(self) -> bool: + """Check if the import session is complete.""" + if self.completed_row_count < self.row_count: + return False + + # Update the status of this session + if self.status != DataImportStatusCode.COMPLETE.value: + self.status = DataImportStatusCode.COMPLETE.value + self.save() + + return True + @property def row_count(self): """Return the number of rows in the import session.""" @@ -467,6 +500,34 @@ class DataImportRow(models.Model): complete = models.BooleanField(default=False, verbose_name=_('Complete')) + @property + def default_values(self) -> dict: + """Return a dict object of the 'default' values for this row.""" + defaults = self.session.field_defaults or {} + + if type(defaults) is not dict: + try: + defaults = json.loads(str(defaults)) + except json.JSONDecodeError: + logger.warning('Failed to parse default values for import row') + defaults = {} + + return defaults + + @property + def override_values(self) -> dict: + """Return a dict object of the 'override' values for this row.""" + overrides = self.session.field_overrides or {} + + if type(overrides) is not dict: + try: + overrides = json.loads(str(overrides)) + except json.JSONDecodeError: + logger.warning('Failed to parse override values for import row') + overrides = {} + + return overrides + def extract_data( self, available_fields: dict = None, field_mapping: dict = None, commit=True ): @@ -477,14 +538,24 @@ class DataImportRow(models.Model): if not available_fields: available_fields = self.session.available_fields() - default_values = self.session.field_defaults or {} + overrride_values = self.override_values + default_values = self.default_values data = {} # We have mapped column (file) to field (serializer) already for field, col in field_mapping.items(): + # Data override (force value and skip any further checks) + if field in overrride_values: + data[field] = overrride_values[field] + continue + + # Default value (if provided) + if field in default_values: + data[field] = default_values[field] + # If this field is *not* mapped to any column, skip - if not col: + if not col or col not in self.row_data: continue # Extract field type @@ -516,11 +587,14 @@ class DataImportRow(models.Model): - If available, we use the "default" values provided by the import session - If available, we use the "override" values provided by the import session """ - data = self.session.field_defaults or {} + data = self.default_values if self.data: data.update(self.data) + # Override values take priority, if present + data.update(self.override_values) + return data def construct_serializer(self): @@ -568,6 +642,8 @@ class DataImportRow(models.Model): self.complete = True self.save() + self.session.check_complete() + except Exception as e: self.errors = {'non_field_errors': str(e)} result = False diff --git a/src/backend/InvenTree/importer/serializers.py b/src/backend/InvenTree/importer/serializers.py index 61bcb26960..2400dc179d 100644 --- a/src/backend/InvenTree/importer/serializers.py +++ b/src/backend/InvenTree/importer/serializers.py @@ -1,5 +1,7 @@ """API serializers for the importer app.""" +import json + from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ @@ -47,6 +49,7 @@ class DataImportSessionSerializer(InvenTreeModelSerializer): 'columns', 'column_mappings', 'field_defaults', + 'field_overrides', 'row_count', 'completed_row_count', ] @@ -75,6 +78,32 @@ class DataImportSessionSerializer(InvenTreeModelSerializer): user_detail = UserSerializer(source='user', read_only=True, many=False) + def validate_field_defaults(self, defaults): + """De-stringify the field defaults.""" + if defaults is None: + return None + + if type(defaults) is not dict: + try: + defaults = json.loads(str(defaults)) + except: + raise ValidationError(_('Invalid field defaults')) + + return defaults + + def validate_field_overrides(self, overrides): + """De-stringify the field overrides.""" + if overrides is None: + return None + + if type(overrides) is not dict: + try: + overrides = json.loads(str(overrides)) + except: + raise ValidationError(_('Invalid field overrides')) + + return overrides + def create(self, validated_data): """Override create method for this serializer. @@ -167,4 +196,7 @@ class DataImportAcceptRowSerializer(serializers.Serializer): for row in rows: row.validate(commit=True) + if session := self.context.get('session', None): + session.check_complete() + return rows diff --git a/src/backend/InvenTree/importer/validators.py b/src/backend/InvenTree/importer/validators.py index 34e48b1862..166c30acc6 100644 --- a/src/backend/InvenTree/importer/validators.py +++ b/src/backend/InvenTree/importer/validators.py @@ -1,6 +1,6 @@ """Custom validation routines for the 'importer' app.""" -import os +import json from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ @@ -46,4 +46,8 @@ def validate_field_defaults(value): return if type(value) is not dict: - raise ValidationError(_('Value must be a valid dictionary object')) + # OK if we can parse it as JSON + try: + value = json.loads(value) + except json.JSONDecodeError: + raise ValidationError(_('Value must be a valid dictionary object')) diff --git a/src/backend/InvenTree/part/serializers.py b/src/backend/InvenTree/part/serializers.py index b05a426ed1..a87453348f 100644 --- a/src/backend/InvenTree/part/serializers.py +++ b/src/backend/InvenTree/part/serializers.py @@ -1480,28 +1480,30 @@ class BomItemSerializer( ): """Serializer for BomItem object.""" + import_exclude_fields = ['validated', 'substitutes'] + class Meta: """Metaclass defining serializer fields.""" model = BomItem fields = [ + 'part', + 'sub_part', + 'reference', + 'quantity', + 'overage', 'allow_variants', 'inherited', - 'note', 'optional', 'consumable', - 'overage', + 'note', 'pk', - 'part', 'part_detail', 'pricing_min', 'pricing_max', 'pricing_min_total', 'pricing_max_total', 'pricing_updated', - 'quantity', - 'reference', - 'sub_part', 'sub_part_detail', 'substitutes', 'validated', diff --git a/src/frontend/src/components/forms/ApiForm.tsx b/src/frontend/src/components/forms/ApiForm.tsx index 3456b2e07b..8cc11e915c 100644 --- a/src/frontend/src/components/forms/ApiForm.tsx +++ b/src/frontend/src/components/forms/ApiForm.tsx @@ -384,21 +384,40 @@ export function ApiForm({ let method = props.method?.toLowerCase() ?? 'get'; let hasFiles = false; - mapFields(fields, (_path, field) => { - if (field.field_type === 'file upload') { - hasFiles = true; - } - }); // Optionally pre-process the data before submitting it if (props.processFormData) { data = props.processFormData(data); } + let dataForm = new FormData(); + + Object.keys(data).forEach((key: string) => { + let value: any = data[key]; + let field_type = fields[key]?.field_type; + + if (field_type == 'file upload') { + hasFiles = true; + } + + // Stringify any JSON objects + if (typeof value === 'object') { + switch (field_type) { + case 'file upload': + break; + default: + value = JSON.stringify(value); + break; + } + } + + dataForm.append(key, value); + }); + return api({ method: method, url: url, - data: data, + data: hasFiles ? dataForm : data, timeout: props.timeout, headers: { 'Content-Type': hasFiles ? 'multipart/form-data' : 'application/json' @@ -462,7 +481,11 @@ export function ApiForm({ for (const [k, v] of Object.entries(errors)) { const path = _path ? `${_path}.${k}` : k; - if (k === 'non_field_errors' || k === '__all__') { + // Determine if field "k" is valid (exists and is visible) + let field = fields[k]; + let valid = field && !field.hidden; + + if (!valid || k === 'non_field_errors' || k === '__all__') { if (Array.isArray(v)) { _nonFieldErrors.push(...v); } diff --git a/src/frontend/src/components/forms/fields/ApiFormField.tsx b/src/frontend/src/components/forms/fields/ApiFormField.tsx index 736d8cda8c..5116790fc9 100644 --- a/src/frontend/src/components/forms/fields/ApiFormField.tsx +++ b/src/frontend/src/components/forms/fields/ApiFormField.tsx @@ -21,6 +21,7 @@ import { DependentField } from './DependentField'; import { NestedObjectField } from './NestedObjectField'; import { RelatedModelField } from './RelatedModelField'; import { TableField } from './TableField'; +import TextField from './TextField'; export type ApiFormData = UseFormReturnType>; @@ -223,21 +224,11 @@ export function ApiFormField({ case 'url': case 'string': return ( - onChange(event.currentTarget.value)} - rightSection={ - value && !definition.required ? ( - onChange('')} /> - ) : null - } + ); case 'boolean': diff --git a/src/frontend/src/components/forms/fields/TextField.tsx b/src/frontend/src/components/forms/fields/TextField.tsx new file mode 100644 index 0000000000..ddb9e8843f --- /dev/null +++ b/src/frontend/src/components/forms/fields/TextField.tsx @@ -0,0 +1,66 @@ +import { TextInput } from '@mantine/core'; +import { useDebouncedValue } from '@mantine/hooks'; +import { IconX } from '@tabler/icons-react'; +import { useCallback, useEffect, useId, useState } from 'react'; +import { FieldValues, UseControllerReturn } from 'react-hook-form'; + +/* + * Custom implementation of the mantine component, + * used for rendering text input fields in forms. + * Uses a debounced value to prevent excessive re-renders. + */ +export default function TextField({ + controller, + fieldName, + definition, + onChange +}: { + controller: UseControllerReturn; + definition: any; + fieldName: string; + onChange: (value: any) => void; +}) { + const fieldId = useId(); + const { + field, + fieldState: { error } + } = controller; + + const { value } = field; + + const [rawText, setRawText] = useState(value); + const [debouncedText] = useDebouncedValue(rawText, 250); + + useEffect(() => { + setRawText(value); + }, [value]); + + const onTextChange = useCallback((value: any) => { + setRawText(value); + }, []); + + useEffect(() => { + if (debouncedText !== value) { + onChange(debouncedText); + } + }, [debouncedText]); + + return ( + onTextChange(event.currentTarget.value)} + rightSection={ + value && !definition.required ? ( + onTextChange('')} /> + ) : null + } + /> + ); +} diff --git a/src/frontend/src/components/importer/ImportDataSelector.tsx b/src/frontend/src/components/importer/ImportDataSelector.tsx index 46a3378267..095a42bd59 100644 --- a/src/frontend/src/components/importer/ImportDataSelector.tsx +++ b/src/frontend/src/components/importer/ImportDataSelector.tsx @@ -1,5 +1,5 @@ import { t } from '@lingui/macro'; -import { Group, HoverCard, Stack, Text } from '@mantine/core'; +import { Group, HoverCard, Paper, Space, Stack, Text } from '@mantine/core'; import { notifications } from '@mantine/notifications'; import { IconArrowRight, @@ -26,6 +26,7 @@ import { RowDeleteAction, RowEditAction } from '../../tables/RowActions'; import { ActionButton } from '../buttons/ActionButton'; import { YesNoButton } from '../buttons/YesNoButton'; import { ApiFormFieldSet } from '../forms/fields/ApiFormField'; +import { ProgressBar } from '../items/ProgressBar'; import { RenderRemoteInstance } from '../render/Instance'; function ImporterDataCell({ @@ -178,6 +179,8 @@ export default function ImporterDataSelector({ table.clearSelectedRecords(); notifications.hide('importing-rows'); table.refreshTable(); + + session.refreshSession(); }); }, [session.sessionId, table.refreshTable] @@ -191,6 +194,7 @@ export default function ImporterDataSelector({ title: t`Edit Data`, fields: selectedFields, initialData: selectedRow.data, + fetchInitialData: false, processFormData: (data: any) => { // Construct fields back into a single object return { @@ -374,6 +378,18 @@ export default function ImporterDataSelector({ {editRow.modal} {deleteRow.modal} + + + {t`Processing Data`} + + + + + { + session.refreshSession(); + } }} /> diff --git a/src/frontend/src/components/importer/ImporterColumnSelector.tsx b/src/frontend/src/components/importer/ImporterColumnSelector.tsx index 370e8da1a0..0fe47653db 100644 --- a/src/frontend/src/components/importer/ImporterColumnSelector.tsx +++ b/src/frontend/src/components/importer/ImporterColumnSelector.tsx @@ -2,19 +2,23 @@ import { t } from '@lingui/macro'; import { Alert, Button, - Divider, Group, + Paper, Select, - SimpleGrid, + Space, Stack, + Table, Text } from '@mantine/core'; +import { IconCheck } from '@tabler/icons-react'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { api } from '../../App'; import { ApiEndpoints } from '../../enums/ApiEndpoints'; import { ImportSessionState } from '../../hooks/UseImportSession'; import { apiUrl } from '../../states/ApiState'; +import { StandaloneField } from '../forms/StandaloneField'; +import { ApiFormFieldType } from '../forms/fields/ApiFormField'; function ImporterColumn({ column, options }: { column: any; options: any[] }) { const [errorMessage, setErrorMessage] = useState(''); @@ -54,6 +58,7 @@ function ImporterColumn({ column, options }: { column: any; options: any[] }) { + + + {% endblock page_content %} {% block js_ready %} {{ block.super }} +// Load the "notes" tab +onPanelLoad('manufacturer-part-notes', function() { + + setupNotesField( + 'manufacturer-part-notes', + '{% url "api-manufacturer-part-detail" part.pk %}', + { + model_type: "manufacturerpart", + model_id: {{ part.pk }}, + editable: {% js_bool roles.purchase_order.change %}, + } + ); +}); + onPanelLoad("attachments", function() { loadAttachmentTable('manufacturerpart', {{ part.pk }}); }); diff --git a/src/backend/InvenTree/company/templates/company/manufacturer_part_sidebar.html b/src/backend/InvenTree/company/templates/company/manufacturer_part_sidebar.html index 64f8f950b0..fb538cb290 100644 --- a/src/backend/InvenTree/company/templates/company/manufacturer_part_sidebar.html +++ b/src/backend/InvenTree/company/templates/company/manufacturer_part_sidebar.html @@ -8,3 +8,5 @@ {% include "sidebar_item.html" with label='supplier-parts' text=text icon="fa-building" %} {% trans "Attachments" as text %} {% include "sidebar_item.html" with label='attachments' text=text icon="fa-paperclip" %} +{% trans "Notes" as text %} +{% include "sidebar_item.html" with label="manufacturer-part-notes" text=text icon="fa-clipboard" %} diff --git a/src/backend/InvenTree/company/templates/company/supplier_part.html b/src/backend/InvenTree/company/templates/company/supplier_part.html index 2949926cb7..16841c5570 100644 --- a/src/backend/InvenTree/company/templates/company/supplier_part.html +++ b/src/backend/InvenTree/company/templates/company/supplier_part.html @@ -264,11 +264,40 @@ src="{% static 'img/blank_image.png' %}" +
+
+
+

{% trans "Supplier Part Notes" %}

+ {% include "spacer.html" %} +
+ {% include "notes_buttons.html" %} +
+
+
+
+ +
+
+ {% endblock page_content %} {% block js_ready %} {{ block.super }} +// Load the "notes" tab +onPanelLoad('supplier-part-notes', function() { + + setupNotesField( + 'supplier-part-notes', + '{% url "api-supplier-part-detail" part.pk %}', + { + model_type: "supplierpart", + model_id: {{ part.pk }}, + editable: {% js_bool roles.purchase_order.change %}, + } + ); +}); + {% if barcodes %} $("#show-qr-code").click(function() { diff --git a/src/backend/InvenTree/company/templates/company/supplier_part_sidebar.html b/src/backend/InvenTree/company/templates/company/supplier_part_sidebar.html index 91c0682e00..d6cd017500 100644 --- a/src/backend/InvenTree/company/templates/company/supplier_part_sidebar.html +++ b/src/backend/InvenTree/company/templates/company/supplier_part_sidebar.html @@ -8,3 +8,5 @@ {% include "sidebar_item.html" with label='purchase-orders' text=text icon="fa-shopping-cart" %} {% trans "Supplier Part Pricing" as text %} {% include "sidebar_item.html" with label='pricing' text=text icon="fa-dollar-sign" %} +{% trans "Notes" as text %} +{% include "sidebar_item.html" with label="supplier-part-notes" text=text icon="fa-clipboard" %} diff --git a/src/frontend/src/pages/company/ManufacturerPartDetail.tsx b/src/frontend/src/pages/company/ManufacturerPartDetail.tsx index 49a8681064..5e5e5f2ba9 100644 --- a/src/frontend/src/pages/company/ManufacturerPartDetail.tsx +++ b/src/frontend/src/pages/company/ManufacturerPartDetail.tsx @@ -5,6 +5,7 @@ import { IconDots, IconInfoCircle, IconList, + IconNotes, IconPaperclip } from '@tabler/icons-react'; import { useMemo } from 'react'; @@ -14,6 +15,7 @@ import AdminButton from '../../components/buttons/AdminButton'; import { DetailsField, DetailsTable } from '../../components/details/Details'; import { DetailsImage } from '../../components/details/DetailsImage'; import { ItemDetailsGrid } from '../../components/details/ItemDetails'; +import NotesEditor from '../../components/editors/NotesEditor'; import { ActionDropdown, DeleteItemAction, @@ -179,6 +181,18 @@ export default function ManufacturerPartDetail() { model_id={manufacturerPart?.pk} /> ) + }, + { + name: 'notes', + label: t`Notes`, + icon: , + content: ( + + ) } ]; }, [manufacturerPart]); diff --git a/src/frontend/src/pages/company/SupplierPartDetail.tsx b/src/frontend/src/pages/company/SupplierPartDetail.tsx index d6e917e21e..1746c4bb9b 100644 --- a/src/frontend/src/pages/company/SupplierPartDetail.tsx +++ b/src/frontend/src/pages/company/SupplierPartDetail.tsx @@ -4,6 +4,7 @@ import { IconCurrencyDollar, IconDots, IconInfoCircle, + IconNotes, IconPackages, IconShoppingCart } from '@tabler/icons-react'; @@ -15,6 +16,7 @@ import { DetailsField, DetailsTable } from '../../components/details/Details'; import DetailsBadge from '../../components/details/DetailsBadge'; import { DetailsImage } from '../../components/details/DetailsImage'; import { ItemDetailsGrid } from '../../components/details/ItemDetails'; +import NotesEditor from '../../components/editors/NotesEditor'; import { ActionDropdown, DeleteItemAction, @@ -240,6 +242,18 @@ export default function SupplierPartDetail() { ) : ( ) + }, + { + name: 'notes', + label: t`Notes`, + icon: , + content: ( + + ) } ]; }, [supplierPart]); From eacd28bf190b143a6ca758e26e08e3280bd5c584 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 17 Jul 2024 17:44:42 +1000 Subject: [PATCH 16/58] [PUI] PO line item import (#7671) * Fix typo * Adds new field to DataImportSession model - field_filters - Allows custom API field filters to be specified * Update serializer * Add button to import purchase order line items * Fix instance renderer * Make use of "filters" attribute * Specify default currency for import * Update serializer * Bump API version * Rename purchaseorderline -> purchaseorderlineitem --- .../InvenTree/InvenTree/api_version.py | 5 +- .../0003_dataimportsession_field_filters.py | 19 ++++++ src/backend/InvenTree/importer/models.py | 12 +++- src/backend/InvenTree/importer/serializers.py | 14 ++++ src/backend/InvenTree/order/serializers.py | 10 ++- .../importer/ImportDataSelector.tsx | 15 ++++- .../src/components/render/Instance.tsx | 2 +- .../src/components/render/ModelType.tsx | 2 +- src/frontend/src/defaults/backendMappings.tsx | 2 +- src/frontend/src/enums/ModelType.tsx | 2 +- src/frontend/src/forms/ImporterForms.tsx | 4 ++ src/frontend/src/hooks/UseImportSession.tsx | 6 ++ .../pages/purchasing/PurchaseOrderDetail.tsx | 1 + src/frontend/src/tables/bom/BomTable.tsx | 2 +- .../purchasing/PurchaseOrderLineItemTable.tsx | 66 ++++++++++++++++++- 15 files changed, 150 insertions(+), 12 deletions(-) create mode 100644 src/backend/InvenTree/importer/migrations/0003_dataimportsession_field_filters.py diff --git a/src/backend/InvenTree/InvenTree/api_version.py b/src/backend/InvenTree/InvenTree/api_version.py index 91497f5ec7..0079fb39be 100644 --- a/src/backend/InvenTree/InvenTree/api_version.py +++ b/src/backend/InvenTree/InvenTree/api_version.py @@ -1,12 +1,15 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 224 +INVENTREE_API_VERSION = 225 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ +v225 - 2024-07-17 : https://github.com/inventree/InvenTree/pull/7671 + - Adds "filters" field to DataImportSession API + v224 - 2024-07-14 : https://github.com/inventree/InvenTree/pull/7667 - Add notes field to ManufacturerPart and SupplierPart API endpoints diff --git a/src/backend/InvenTree/importer/migrations/0003_dataimportsession_field_filters.py b/src/backend/InvenTree/importer/migrations/0003_dataimportsession_field_filters.py new file mode 100644 index 0000000000..b5663a5e31 --- /dev/null +++ b/src/backend/InvenTree/importer/migrations/0003_dataimportsession_field_filters.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.14 on 2024-07-16 03:04 + +from django.db import migrations, models +import importer.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ('importer', '0002_dataimportsession_field_overrides'), + ] + + operations = [ + migrations.AddField( + model_name='dataimportsession', + name='field_filters', + field=models.JSONField(blank=True, null=True, validators=[importer.validators.validate_field_defaults], verbose_name='Field Filters'), + ), + ] diff --git a/src/backend/InvenTree/importer/models.py b/src/backend/InvenTree/importer/models.py index 83c417f782..219e1ac600 100644 --- a/src/backend/InvenTree/importer/models.py +++ b/src/backend/InvenTree/importer/models.py @@ -32,8 +32,9 @@ class DataImportSession(models.Model): data_file: FileField for the data file to import status: IntegerField for the status of the import session user: ForeignKey to the User who initiated the import - field_defaults: JSONField for field default values - field_overrides: JSONField for field override values + field_defaults: JSONField for field default values - provides a backup value for a field + field_overrides: JSONField for field override values - used to force a value for a field + field_filters: JSONField for field filter values - optional field API filters """ @staticmethod @@ -101,6 +102,13 @@ class DataImportSession(models.Model): validators=[importer.validators.validate_field_defaults], ) + field_filters = models.JSONField( + blank=True, + null=True, + verbose_name=_('Field Filters'), + validators=[importer.validators.validate_field_defaults], + ) + @property def field_mapping(self): """Construct a dict of field mappings for this import session. diff --git a/src/backend/InvenTree/importer/serializers.py b/src/backend/InvenTree/importer/serializers.py index 2400dc179d..ac68056f55 100644 --- a/src/backend/InvenTree/importer/serializers.py +++ b/src/backend/InvenTree/importer/serializers.py @@ -50,6 +50,7 @@ class DataImportSessionSerializer(InvenTreeModelSerializer): 'column_mappings', 'field_defaults', 'field_overrides', + 'field_filters', 'row_count', 'completed_row_count', ] @@ -104,6 +105,19 @@ class DataImportSessionSerializer(InvenTreeModelSerializer): return overrides + def validate_field_filters(self, filters): + """De-stringify the field filters.""" + if filters is None: + return None + + if type(filters) is not dict: + try: + filters = json.loads(str(filters)) + except: + raise ValidationError(_('Invalid field filters')) + + return filters + def create(self, validated_data): """Override create method for this serializer. diff --git a/src/backend/InvenTree/order/serializers.py b/src/backend/InvenTree/order/serializers.py index dd6129bec8..f8ed5c6f39 100644 --- a/src/backend/InvenTree/order/serializers.py +++ b/src/backend/InvenTree/order/serializers.py @@ -373,13 +373,13 @@ class PurchaseOrderLineItemSerializer( fields = [ 'pk', + 'part', 'quantity', 'reference', 'notes', 'order', 'order_detail', 'overdue', - 'part', 'part_detail', 'supplier_part_detail', 'received', @@ -454,6 +454,14 @@ class PurchaseOrderLineItemSerializer( return queryset + part = serializers.PrimaryKeyRelatedField( + queryset=part_models.SupplierPart.objects.all(), + many=False, + required=True, + allow_null=True, + label=_('Supplier Part'), + ) + quantity = serializers.FloatField(min_value=0, required=True) def validate_quantity(self, quantity): diff --git a/src/frontend/src/components/importer/ImportDataSelector.tsx b/src/frontend/src/components/importer/ImportDataSelector.tsx index 095a42bd59..9c6d7c531f 100644 --- a/src/frontend/src/components/importer/ImportDataSelector.tsx +++ b/src/frontend/src/components/importer/ImportDataSelector.tsx @@ -138,16 +138,27 @@ export default function ImporterDataSelector({ // Find the field definition in session.availableFields let fieldDef = session.availableFields[field]; if (fieldDef) { + // Construct field filters based on session field filters + let filters = fieldDef.filters ?? {}; + + if (session.fieldFilters[field]) { + filters = { + ...filters, + ...session.fieldFilters[field] + }; + } + fields[field] = { ...fieldDef, field_type: fieldDef.type, - description: fieldDef.help_text + description: fieldDef.help_text, + filters: filters }; } } return fields; - }, [selectedFieldNames, session.availableFields]); + }, [selectedFieldNames, session.availableFields, session.fieldFilters]); const importData = useCallback( (rows: number[]) => { diff --git a/src/frontend/src/components/render/Instance.tsx b/src/frontend/src/components/render/Instance.tsx index 85c50ced5a..aa14af36d2 100644 --- a/src/frontend/src/components/render/Instance.tsx +++ b/src/frontend/src/components/render/Instance.tsx @@ -71,7 +71,7 @@ const RendererLookup: EnumDictionary< [ModelType.parttesttemplate]: RenderPartTestTemplate, [ModelType.projectcode]: RenderProjectCode, [ModelType.purchaseorder]: RenderPurchaseOrder, - [ModelType.purchaseorderline]: RenderPurchaseOrder, + [ModelType.purchaseorderlineitem]: RenderPurchaseOrder, [ModelType.returnorder]: RenderReturnOrder, [ModelType.salesorder]: RenderSalesOrder, [ModelType.salesordershipment]: RenderSalesOrderShipment, diff --git a/src/frontend/src/components/render/ModelType.tsx b/src/frontend/src/components/render/ModelType.tsx index e8b12da9ca..50a22c82ba 100644 --- a/src/frontend/src/components/render/ModelType.tsx +++ b/src/frontend/src/components/render/ModelType.tsx @@ -143,7 +143,7 @@ export const ModelInformationDict: ModelDict = { api_endpoint: ApiEndpoints.purchase_order_list, admin_url: '/order/purchaseorder/' }, - purchaseorderline: { + purchaseorderlineitem: { label: t`Purchase Order Line`, label_multiple: t`Purchase Order Lines`, api_endpoint: ApiEndpoints.purchase_order_line_list diff --git a/src/frontend/src/defaults/backendMappings.tsx b/src/frontend/src/defaults/backendMappings.tsx index 25dd8965e0..3339b27a8e 100644 --- a/src/frontend/src/defaults/backendMappings.tsx +++ b/src/frontend/src/defaults/backendMappings.tsx @@ -9,7 +9,7 @@ import { ModelType } from '../enums/ModelType'; export const statusCodeList: Record = { BuildStatus: ModelType.build, PurchaseOrderStatus: ModelType.purchaseorder, - ReturnOrderLineStatus: ModelType.purchaseorderline, + ReturnOrderLineStatus: ModelType.purchaseorderlineitem, ReturnOrderStatus: ModelType.returnorder, SalesOrderStatus: ModelType.salesorder, StockHistoryCode: ModelType.stockhistory, diff --git a/src/frontend/src/enums/ModelType.tsx b/src/frontend/src/enums/ModelType.tsx index e71944f954..570c382c25 100644 --- a/src/frontend/src/enums/ModelType.tsx +++ b/src/frontend/src/enums/ModelType.tsx @@ -18,7 +18,7 @@ export enum ModelType { builditem = 'builditem', company = 'company', purchaseorder = 'purchaseorder', - purchaseorderline = 'purchaseorderline', + purchaseorderlineitem = 'purchaseorderlineitem', salesorder = 'salesorder', salesordershipment = 'salesordershipment', returnorder = 'returnorder', diff --git a/src/frontend/src/forms/ImporterForms.tsx b/src/frontend/src/forms/ImporterForms.tsx index 9fac28cbf5..9ce00d30b6 100644 --- a/src/frontend/src/forms/ImporterForms.tsx +++ b/src/frontend/src/forms/ImporterForms.tsx @@ -11,6 +11,10 @@ export function dataImporterSessionFields(): ApiFormFieldSet { field_overrides: { hidden: true, value: {} + }, + field_filters: { + hidden: true, + value: {} } }; } diff --git a/src/frontend/src/hooks/UseImportSession.tsx b/src/frontend/src/hooks/UseImportSession.tsx index 34d52dff20..361206f5a7 100644 --- a/src/frontend/src/hooks/UseImportSession.tsx +++ b/src/frontend/src/hooks/UseImportSession.tsx @@ -31,6 +31,7 @@ export type ImportSessionState = { columnMappings: any[]; fieldDefaults: any; fieldOverrides: any; + fieldFilters: any; rowCount: number; completedRowCount: number; }; @@ -113,6 +114,10 @@ export function useImportSession({ return sessionData?.field_overrides ?? {}; }, [sessionData]); + const fieldFilters: any = useMemo(() => { + return sessionData?.field_filters ?? {}; + }, [sessionData]); + const rowCount: number = useMemo(() => { return sessionData?.row_count ?? 0; }, [sessionData]); @@ -134,6 +139,7 @@ export function useImportSession({ mappedFields, fieldDefaults, fieldOverrides, + fieldFilters, rowCount, completedRowCount }; diff --git a/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx b/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx index 5e83b22f2b..7cf646b8fb 100644 --- a/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx +++ b/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx @@ -242,6 +242,7 @@ export default function PurchaseOrderDetail() { icon: , content: ( diff --git a/src/frontend/src/tables/bom/BomTable.tsx b/src/frontend/src/tables/bom/BomTable.tsx index f1bac0c23d..d583cff857 100644 --- a/src/frontend/src/tables/bom/BomTable.tsx +++ b/src/frontend/src/tables/bom/BomTable.tsx @@ -561,7 +561,7 @@ export function BomTable({ { setSelectedSession(undefined); setImportOpened(false); diff --git a/src/frontend/src/tables/purchasing/PurchaseOrderLineItemTable.tsx b/src/frontend/src/tables/purchasing/PurchaseOrderLineItemTable.tsx index 3a4dba67da..8083aafc90 100644 --- a/src/frontend/src/tables/purchasing/PurchaseOrderLineItemTable.tsx +++ b/src/frontend/src/tables/purchasing/PurchaseOrderLineItemTable.tsx @@ -1,16 +1,19 @@ import { t } from '@lingui/macro'; import { Text } from '@mantine/core'; -import { IconSquareArrowRight } from '@tabler/icons-react'; +import { Action } from '@mdxeditor/editor'; +import { IconFileArrowLeft, IconSquareArrowRight } from '@tabler/icons-react'; import { useCallback, useMemo, useState } from 'react'; import { ActionButton } from '../../components/buttons/ActionButton'; import { AddItemButton } from '../../components/buttons/AddItemButton'; import { Thumbnail } from '../../components/images/Thumbnail'; +import ImporterDrawer from '../../components/importer/ImporterDrawer'; import { ProgressBar } from '../../components/items/ProgressBar'; import { RenderStockLocation } from '../../components/render/Stock'; import { ApiEndpoints } from '../../enums/ApiEndpoints'; import { ModelType } from '../../enums/ModelType'; import { UserRoles } from '../../enums/Roles'; +import { dataImporterSessionFields } from '../../forms/ImporterForms'; import { usePurchaseOrderLineItemFields, useReceiveLineItems @@ -44,10 +47,12 @@ import { TableHoverCard } from '../TableHoverCard'; * Display a table of purchase order line items, for a specific order */ export function PurchaseOrderLineItemTable({ + order, orderId, supplierId, params }: { + order: any; orderId: number; supplierId?: number; params?: any; @@ -56,6 +61,49 @@ export function PurchaseOrderLineItemTable({ const user = useUserState(); + // Data import + const [importOpened, setImportOpened] = useState(false); + const [selectedSession, setSelectedSession] = useState( + undefined + ); + + const importSessionFields = useMemo(() => { + let fields = dataImporterSessionFields(); + + fields.model_type.hidden = true; + fields.model_type.value = ModelType.purchaseorderlineitem; + + // Specify override values for import + fields.field_overrides.value = { + order: orderId + }; + + // Specify default values based on the order data + fields.field_defaults.value = { + purchase_price_currency: + order?.order_currency || order?.supplier_detail?.currency || undefined + }; + + fields.field_filters.value = { + part: { + supplier: supplierId, + active: true + } + }; + + return fields; + }, [order, orderId, supplierId]); + + const importLineItems = useCreateApiFormModal({ + url: ApiEndpoints.import_session_list, + title: t`Import Line Items`, + fields: importSessionFields, + onFormSuccess: (response: any) => { + setSelectedSession(response.pk); + setImportOpened(true); + } + }); + const [singleRecord, setSingleRecord] = useState(null); const receiveLineItems = useReceiveLineItems({ @@ -277,6 +325,12 @@ export function PurchaseOrderLineItemTable({ // Custom table actions const tableActions = useMemo(() => { return [ +