From 4f8dddc5976a5b11fbfb89c7e41ac5ceddf156cf Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 19 Jan 2024 12:16:17 +1100 Subject: [PATCH] JS translation fix (#6288) * Implement {% jstrans %} template - Forces string escaping in translated text - Required for js written in templates * Fix part_base.html * Update .html files - Change any templated javascript code to use {% jstrans %} * Update .js files - Explicitly use {% jstrans %} * Update CI checks --- InvenTree/InvenTree/templatetags/i18n.py | 28 +- .../build/templates/build/build_base.html | 6 +- InvenTree/build/templates/build/detail.html | 4 +- .../templates/company/company_base.html | 12 +- .../templates/company/manufacturer_part.html | 2 +- .../templates/company/supplier_part.html | 6 +- .../order/templates/order/order_base.html | 4 +- .../templates/order/return_order_base.html | 4 +- .../templates/order/sales_order_base.html | 4 +- InvenTree/part/templates/part/detail.html | 6 +- InvenTree/part/templates/part/part_base.html | 24 +- .../templates/part/pricing_javascript.html | 2 +- InvenTree/stock/templates/stock/item.html | 4 +- .../stock/templates/stock/item_base.html | 12 +- InvenTree/stock/templates/stock/location.html | 8 +- InvenTree/templates/InvenTree/index.html | 46 +- .../notifications/notifications.html | 8 +- InvenTree/templates/InvenTree/search.html | 32 +- .../InvenTree/settings/settings_js.html | 8 +- .../InvenTree/settings/settings_staff_js.html | 86 ++-- .../templates/InvenTree/settings/user.html | 2 +- InvenTree/templates/js/translated/api.js | 36 +- .../templates/js/translated/attachment.js | 30 +- InvenTree/templates/js/translated/barcode.js | 74 +-- InvenTree/templates/js/translated/bom.js | 172 +++---- InvenTree/templates/js/translated/build.js | 292 ++++++------ InvenTree/templates/js/translated/company.js | 248 +++++----- InvenTree/templates/js/translated/filters.js | 30 +- InvenTree/templates/js/translated/forms.js | 42 +- InvenTree/templates/js/translated/helpers.js | 14 +- InvenTree/templates/js/translated/index.js | 10 +- InvenTree/templates/js/translated/label.js | 22 +- InvenTree/templates/js/translated/modals.js | 64 +-- .../js/translated/model_renderers.js | 14 +- InvenTree/templates/js/translated/news.js | 12 +- .../templates/js/translated/notification.js | 20 +- InvenTree/templates/js/translated/order.js | 36 +- InvenTree/templates/js/translated/part.js | 374 +++++++-------- InvenTree/templates/js/translated/plugin.js | 40 +- InvenTree/templates/js/translated/pricing.js | 78 ++-- .../templates/js/translated/purchase_order.js | 232 +++++----- InvenTree/templates/js/translated/report.js | 14 +- .../templates/js/translated/return_order.js | 98 ++-- .../templates/js/translated/sales_order.js | 270 +++++------ InvenTree/templates/js/translated/search.js | 34 +- InvenTree/templates/js/translated/stock.js | 428 +++++++++--------- .../templates/js/translated/table_filters.js | 298 ++++++------ InvenTree/templates/js/translated/tables.js | 38 +- ci/check_js_templates.py | 12 +- 49 files changed, 1682 insertions(+), 1658 deletions(-) diff --git a/InvenTree/InvenTree/templatetags/i18n.py b/InvenTree/InvenTree/templatetags/i18n.py index f313947c02..ceaba38625 100644 --- a/InvenTree/InvenTree/templatetags/i18n.py +++ b/InvenTree/InvenTree/templatetags/i18n.py @@ -27,6 +27,14 @@ def translation_stats(lang_code): class CustomTranslateNode(TranslateNode): """Custom translation node class, which sanitizes the translated strings for javascript use.""" + def __init__(self, filter_expression, noop, asvar, message_context, escape=False): + """Custom constructor for TranslateNode class. + + - Adds an 'escape' argument, which is passed to the render function + """ + super().__init__(filter_expression, noop, asvar, message_context) + self.escape = escape + def render(self, context): """Custom render function overrides / extends default behaviour.""" result = super().render(context) @@ -44,7 +52,7 @@ class CustomTranslateNode(TranslateNode): # Escape any quotes contained in the string, if the request is for a javascript file request = context.get('request', None) - if request and request.path.endswith('.js'): + if self.escape or (request and request.path.endswith('.js')): result = result.replace("'", r'\'') result = result.replace('"', r'\"') @@ -54,7 +62,7 @@ class CustomTranslateNode(TranslateNode): @register.tag('translate') @register.tag('trans') -def do_translate(parser, token): +def do_translate(parser, token, escape=False): """Custom translation function. - Lifted from https://github.com/django/django/blob/main/django/templatetags/i18n.py. @@ -110,7 +118,21 @@ def do_translate(parser, token): ) seen.add(option) - return CustomTranslateNode(message_string, noop, asvar, message_context) + return CustomTranslateNode( + message_string, noop, asvar, message_context, escape=escape + ) + + +@register.tag('jstrans') +def do_jstrans(parser, token): + """Custom translation function for javascript strings. + + - Usage: {% jstrans "String to translate" %} + - Performs the same function as the 'trans' tag, but also escapes the translated string. + - Explicitly required for javascript code within a .html template + - Note: Any {% trans %} tag is automatically escaped in a .js file + """ + return do_translate(parser, token, escape=True) # Re-register tags which we have not explicitly overridden diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html index 3eb50e1270..e9de6bf97a 100644 --- a/InvenTree/build/templates/build/build_base.html +++ b/InvenTree/build/templates/build/build_base.html @@ -270,7 +270,7 @@ src="{% static 'img/blank_image.png' %}" '{% url "api-build-detail" build.pk %}', { method: 'DELETE', - title: '{% trans "Delete Build Order" %}', + title: '{% jstrans "Delete Build Order" %}', redirect: "{% url 'build-index' %}", } ); @@ -280,7 +280,7 @@ src="{% static 'img/blank_image.png' %}" $('#show-qr-code').click(function() { showQRDialog( - '{% trans "Build Order QR Code" %}', + '{% jstrans "Build Order QR Code" %}', '{"build": {{ build.pk }} }' ); }); @@ -292,7 +292,7 @@ src="{% static 'img/blank_image.png' %}" build: {{ build.pk }}, }, { - title: '{% trans "Link Barcode to Build Order" %}', + title: '{% jstrans "Link Barcode to Build Order" %}', } ); }); diff --git a/InvenTree/build/templates/build/detail.html b/InvenTree/build/templates/build/detail.html index 8f60cc31df..a290ce7021 100644 --- a/InvenTree/build/templates/build/detail.html +++ b/InvenTree/build/templates/build/detail.html @@ -419,8 +419,8 @@ function allocateSelectedLines() { if (unallocated_lines.length == 0) { showAlertDialog( - '{% trans "Allocation Complete" %}', - '{% trans "All lines have been fully allocated" %}', + '{% jstrans "Allocation Complete" %}', + '{% jstrans "All lines have been fully allocated" %}', ); } else { diff --git a/InvenTree/company/templates/company/company_base.html b/InvenTree/company/templates/company/company_base.html index 238c53847e..70dfd364cb 100644 --- a/InvenTree/company/templates/company/company_base.html +++ b/InvenTree/company/templates/company/company_base.html @@ -159,7 +159,7 @@ $('#company-delete').click(function() { constructForm('{% url "api-company-detail" company.pk %}', { method: 'DELETE', - title: '{% trans "Delete Company" %}', + title: '{% jstrans "Delete Company" %}', redirect: '{% url "company-index" %}', }); }); @@ -202,10 +202,10 @@ $('#company-image-delete').click(function(event) { event.stopPropagation(); showQuestionDialog( - '{% trans "Remove Image" %}', - '{% trans "Remove associated image from this company" %}', + '{% jstrans "Remove Image" %}', + '{% jstrans "Remove associated image from this company" %}', { - accept_text: '{% trans "Remove" %}', + accept_text: '{% jstrans "Remove" %}', submitClass: 'danger', accept: function() { inventreePut( @@ -234,7 +234,7 @@ fields: { image: {}, }, - title: '{% trans "Upload Image" %}', + title: '{% jstrans "Upload Image" %}', onSuccess: function(data) { reloadImage(data); } @@ -249,7 +249,7 @@ '{% url "api-company-detail" company.pk %}', { method: 'PATCH', - title: '{% trans "Download Image" %}', + title: '{% jstrans "Download Image" %}', fields: { remote_image: {}, }, diff --git a/InvenTree/company/templates/company/manufacturer_part.html b/InvenTree/company/templates/company/manufacturer_part.html index 1987c1d204..50ad8048b2 100644 --- a/InvenTree/company/templates/company/manufacturer_part.html +++ b/InvenTree/company/templates/company/manufacturer_part.html @@ -203,7 +203,7 @@ $('#parameter-create').click(function() { hidden: true, } }, - title: '{% trans "Add Parameter" %}', + title: '{% jstrans "Add Parameter" %}', refreshTable: '#parameter-table', }); }); diff --git a/InvenTree/company/templates/company/supplier_part.html b/InvenTree/company/templates/company/supplier_part.html index eeb158653e..b30c55f04e 100644 --- a/InvenTree/company/templates/company/supplier_part.html +++ b/InvenTree/company/templates/company/supplier_part.html @@ -273,7 +273,7 @@ src="{% static 'img/blank_image.png' %}" $("#show-qr-code").click(function() { showQRDialog( - '{% trans "Supplier Part QR Code" %}', + '{% jstrans "Supplier Part QR Code" %}', '{"supplierpart": {{ part.pk }} }' ); }); @@ -284,7 +284,7 @@ $("#barcode-link").click(function() { supplierpart: {{ part.pk }}, }, { - title: '{% trans "Link Barcode to Supplier Part" %}', + title: '{% jstrans "Link Barcode to Supplier Part" %}', } ); }); @@ -356,7 +356,7 @@ $('#update-part-availability').click(function() { fields: { available: {}, }, - title: '{% trans "Update Part Availability" %}', + title: '{% jstrans "Update Part Availability" %}', onSuccess: function() { location.reload(); } diff --git a/InvenTree/order/templates/order/order_base.html b/InvenTree/order/templates/order/order_base.html index 2a064794d8..fbd3dcac67 100644 --- a/InvenTree/order/templates/order/order_base.html +++ b/InvenTree/order/templates/order/order_base.html @@ -315,7 +315,7 @@ $("#export-order").click(function() { $('#show-qr-code').click(function() { showQRDialog( - '{% trans "Purchase Order QR Code" %}', + '{% jstrans "Purchase Order QR Code" %}', '{"purchaseorder": {{ order.pk }} }' ); }); @@ -327,7 +327,7 @@ $("#barcode-link").click(function() { purchaseorder: {{ order.pk }}, }, { - title: '{% trans "Link Barcode to Purchase Order" %}', + title: '{% jstrans "Link Barcode to Purchase Order" %}', } ); }); diff --git a/InvenTree/order/templates/order/return_order_base.html b/InvenTree/order/templates/order/return_order_base.html index b9c0f5e370..1a5542b2d8 100644 --- a/InvenTree/order/templates/order/return_order_base.html +++ b/InvenTree/order/templates/order/return_order_base.html @@ -260,7 +260,7 @@ $('#print-order-report').click(function() { $('#show-qr-code').click(function() { showQRDialog( - '{% trans "Return Order QR Code" %}', + '{% jstrans "Return Order QR Code" %}', '{"returnorder": {{ order.pk }} }' ); }); @@ -272,7 +272,7 @@ $("#barcode-link").click(function() { returnorder: {{ order.pk }}, }, { - title: '{% trans "Link Barcode to Return Order" %}', + title: '{% jstrans "Link Barcode to Return Order" %}', } ); }); diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index 53d15b2aa0..736765959e 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -309,7 +309,7 @@ $('#print-order-report').click(function() { $('#show-qr-code').click(function() { showQRDialog( - '{% trans "Sales Order QR Code" %}', + '{% jstrans "Sales Order QR Code" %}', '{"salesorder": {{ order.pk }} }' ); }); @@ -321,7 +321,7 @@ $("#barcode-link").click(function() { salesorder: {{ order.pk }}, }, { - title: '{% trans "Link Barcode to Sales Order" %}', + title: '{% jstrans "Link Barcode to Sales Order" %}', } ); }); diff --git a/InvenTree/part/templates/part/detail.html b/InvenTree/part/templates/part/detail.html index 6f9a11147b..335527c8c6 100644 --- a/InvenTree/part/templates/part/detail.html +++ b/InvenTree/part/templates/part/detail.html @@ -656,7 +656,7 @@ value: {{ part.pk }}, }, part_2: { - label: '{% trans "Related Part" %}', + label: '{% jstrans "Related Part" %}', filters: { exclude_id: {{ part.pk }}, exclude_related: {{ part.pk }}, @@ -664,7 +664,7 @@ } }, focus: 'part_2', - title: '{% trans "Add Related Part" %}', + title: '{% jstrans "Add Related Part" %}', refreshTable: '#related-parts-table', }); }); @@ -749,7 +749,7 @@ fields: partTestTemplateFields({ part: {{ part.pk }} }), - title: '{% trans "Add Test Result Template" %}', + title: '{% jstrans "Add Test Result Template" %}', refreshTable: '#test-template-table', }); }); diff --git a/InvenTree/part/templates/part/part_base.html b/InvenTree/part/templates/part/part_base.html index 3dcfeebb78..cc71f8e19b 100644 --- a/InvenTree/part/templates/part/part_base.html +++ b/InvenTree/part/templates/part/part_base.html @@ -441,7 +441,7 @@ {% if barcodes %} $("#show-qr-code").click(function() { showQRDialog( - '{% trans "Part QR Code" %}', + '{% jstrans "Part QR Code" %}', '{"part": {{ part.pk }} }', ); }); @@ -458,7 +458,7 @@ part: {{ part.pk }}, }, { - title: '{% trans "Link Barcode to Part" %}', + title: '{% jstrans "Link Barcode to Part" %}', } ); }); @@ -469,7 +469,7 @@ printLabels({ items: [{{ part.pk }}], key: 'part', - singular_name: '{% trans "part" %}', + singular_name: 'part', url: '{% url "api-part-label-list" %}', }); }); @@ -509,7 +509,7 @@ launchModalForm( "{% url 'part-pricing' part.id %}", { - submit_text: '{% trans "Calculate" %}', + submit_text: '{% jstrans "Calculate" %}', hideErrorMessage: true, } ); @@ -525,10 +525,10 @@ $('#part-image-delete').click(function(event) { event.stopPropagation(); showQuestionDialog( - '{% trans "Remove Image" %}', - '{% trans "Remove associated image from this part" %}', + '{% jstrans "Remove Image" %}', + '{% jstrans "Remove associated image from this part" %}', { - accept_text: '{% trans "Remove" %}', + accept_text: '{% jstrans "Remove" %}', submitClass: 'danger', accept: function() { inventreePut( @@ -557,7 +557,7 @@ fields: { image: {}, }, - title: '{% trans "Upload Image" %}', + title: '{% jstrans "Upload Image" %}', onSuccess: function(data) { reloadImage(data); } @@ -577,7 +577,7 @@ sidePagination: 'server', singleSelect: true, formatNoMatches: function() { - return '{% trans "No matching images found" %}'; + return '{% jstrans "No matching images found" %}'; }, columns: [ { @@ -611,7 +611,7 @@ '{% url "api-part-detail" part.pk %}', { method: 'PATCH', - title: '{% trans "Download Image" %}', + title: '{% jstrans "Download Image" %}', fields: { remote_image: {}, }, @@ -673,13 +673,13 @@ // Callback function when the "part details" panel is shown $('#collapse-part-details').on('show.bs.collapse', function() { - $('#toggle-details-button').html('{% trans "Hide Part Details" %}'); + $('#toggle-details-button').html('{% jstrans "Hide Part Details" %}'); inventreeSave('show-part-details', true); }); // Callback function when the "part details" panel is hidden $('#collapse-part-details').on('hide.bs.collapse', function() { - $('#toggle-details-button').html('{% trans "Show Part Details" %}'); + $('#toggle-details-button').html('{% jstrans "Show Part Details" %}'); inventreeSave('show-part-details', false); }); diff --git a/InvenTree/part/templates/part/pricing_javascript.html b/InvenTree/part/templates/part/pricing_javascript.html index 42976e530e..ae3795bdcc 100644 --- a/InvenTree/part/templates/part/pricing_javascript.html +++ b/InvenTree/part/templates/part/pricing_javascript.html @@ -21,7 +21,7 @@ $('#part-pricing-refresh').click(function() { $('#part-pricing-edit').click(function() { constructForm('{% url "api-part-pricing" part.pk %}', { - title: '{% trans "Update Pricing" %}', + title: '{% jstrans "Update Pricing" %}', fields: { override_min: {}, override_min_currency: {}, diff --git a/InvenTree/stock/templates/stock/item.html b/InvenTree/stock/templates/stock/item.html index a36dd54f91..78076a1c9a 100644 --- a/InvenTree/stock/templates/stock/item.html +++ b/InvenTree/stock/templates/stock/item.html @@ -276,7 +276,7 @@ }, multi_delete: true, method: 'DELETE', - title: '{% trans "Delete Test Data" %}', + title: '{% jstrans "Delete Test Data" %}', preFormContent: html, refreshTable: '#test-result-table', }); @@ -293,7 +293,7 @@ fields: stockItemTestResultFields({ stock_item: {{ item.pk }}, }), - title: '{% trans "Add Test Result" %}', + title: '{% jstrans "Add Test Result" %}', refreshTable: '#test-result-table', }); }); diff --git a/InvenTree/stock/templates/stock/item_base.html b/InvenTree/stock/templates/stock/item_base.html index 5e36025014..aeb5287817 100644 --- a/InvenTree/stock/templates/stock/item_base.html +++ b/InvenTree/stock/templates/stock/item_base.html @@ -504,7 +504,7 @@ $("#stock-test-report").click(function() { $("#print-label").click(function() { printLabels({ items: [{{ item.pk }}], - singular_name: '{% trans "stock item" %}', + singular_name: '{% jstrans "stock item" %}', url: '{% url "api-stockitem-label-list" %}', key: 'item', }); @@ -529,7 +529,7 @@ $('#stock-edit-status').click(function () { status: {}, }, reload: true, - title: '{% trans "Edit Stock Status" %}', + title: '{% jstrans "Edit Stock Status" %}', }); }); @@ -538,7 +538,7 @@ $('#stock-edit-status').click(function () { {% if barcodes %} $("#show-qr-code").click(function() { showQRDialog( - '{% trans "Stock Item QR Code" %}', + '{% jstrans "Stock Item QR Code" %}', '{"stockitem": {{ item.pk }} }', ); }); @@ -549,7 +549,7 @@ $("#barcode-link").click(function() { stockitem: {{ item.pk }}, }, { - title: '{% trans "Link Barcode to Stock Item" %}', + title: '{% jstrans "Link Barcode to Stock Item" %}', } ); }); @@ -625,7 +625,7 @@ $("#stock-convert").click(function() { '{% url "api-stock-item-convert" item.pk %}', { method: 'POST', - title: '{% trans "Convert Stock Item" %}', + title: '{% jstrans "Convert Stock Item" %}', preFormContent: html, reload: true, fields: { @@ -659,7 +659,7 @@ $("#stock-return-from-customer").click(function() { }, }, method: 'POST', - title: '{% trans "Return to Stock" %}', + title: '{% jstrans "Return to Stock" %}', reload: true, }); diff --git a/InvenTree/stock/templates/stock/location.html b/InvenTree/stock/templates/stock/location.html index f6178465c8..f4e1c20179 100644 --- a/InvenTree/stock/templates/stock/location.html +++ b/InvenTree/stock/templates/stock/location.html @@ -286,7 +286,7 @@ printLabels({ items: locs, - singular_name: '{% trans "stock location" %}', + singular_name: '{% jstrans "stock location" %}', key: 'location', url: '{% url "api-stocklocation-label-list" %}', }); @@ -314,7 +314,7 @@ { onSuccess: function() { showMessage( - '{% trans "Scanned stock container into this location" %}', + '{% jstrans "Scanned stock container into this location" %}', { style: 'success', } @@ -387,7 +387,7 @@ {% if barcodes %} $('#show-qr-code').click(function() { showQRDialog( - '{% trans "Stock Location QR Code" %}', + '{% jstrans "Stock Location QR Code" %}', '{"stocklocation": {{ location.pk }} }' ); }); @@ -398,7 +398,7 @@ stocklocation: {{ location.pk }}, }, { - title: '{% trans "Link Barcode to Stock Location" %}', + title: '{% jstrans "Link Barcode to Stock Location" %}', } ); }); diff --git a/InvenTree/templates/InvenTree/index.html b/InvenTree/templates/InvenTree/index.html index 4d7fecd67a..013c638e2b 100644 --- a/InvenTree/templates/InvenTree/index.html +++ b/InvenTree/templates/InvenTree/index.html @@ -33,10 +33,10 @@ {% to_list setting_part_starred setting_part_latest setting_bom_validation as settings_list_part %} {% if roles.part.view and True in settings_list_part %} -addHeaderTitle('{% trans "Parts" %}'); +addHeaderTitle('{% jstrans "Parts" %}'); {% if setting_part_starred %} -addHeaderAction('starred-parts', '{% trans "Subscribed Parts" %}', 'fa-bell'); +addHeaderAction('starred-parts', '{% jstrans "Subscribed Parts" %}', 'fa-bell'); loadSimplePartTable("#table-starred-parts", "{% url 'api-part-list' %}", { name: 'starred-parts', params: { @@ -49,7 +49,7 @@ loadSimplePartTable("#table-starred-parts", "{% url 'api-part-list' %}", { {% endif %} {% if setting_category_starred %} -addHeaderAction('starred-categories', '{% trans "Subscribed Categories" %}', 'fa-bell'); +addHeaderAction('starred-categories', '{% jstrans "Subscribed Categories" %}', 'fa-bell'); loadPartCategoryTable($('#table-starred-categories'), { params: { starred: true, @@ -59,7 +59,7 @@ loadPartCategoryTable($('#table-starred-categories'), { {% endif %} {% if setting_part_latest %} -addHeaderAction('latest-parts', '{% trans "Latest Parts" %}', 'fa-newspaper'); +addHeaderAction('latest-parts', '{% jstrans "Latest Parts" %}', 'fa-newspaper'); loadSimplePartTable("#table-latest-parts", "{% url 'api-part-list' %}", { name: 'latest-parts', params: { @@ -74,7 +74,7 @@ loadSimplePartTable("#table-latest-parts", "{% url 'api-part-list' %}", { {% endif %} {% if setting_bom_validation %} -addHeaderAction('bom-validation', '{% trans "BOM Waiting Validation" %}', 'fa-times-circle'); +addHeaderAction('bom-validation', '{% jstrans "BOM Waiting Validation" %}', 'fa-times-circle'); loadSimplePartTable("#table-bom-validation", "{% url 'api-part-list' %}", { name: 'parts-invalid-bom', params: { @@ -103,7 +103,7 @@ loadSimplePartTable("#table-bom-validation", "{% url 'api-part-list' %}", { {% if roles.stock.view %} {% if setting_stock_recent %} -addHeaderAction('recently-updated-stock', '{% trans "Recently Updated" %}', 'fa-clock'); +addHeaderAction('recently-updated-stock', '{% jstrans "Recently Updated" %}', 'fa-clock'); loadStockTable($('#table-recently-updated-stock'), { disableFilters: true, params: { @@ -117,7 +117,7 @@ loadStockTable($('#table-recently-updated-stock'), { {% endif %} {% if setting_stock_low %} -addHeaderAction('low-stock', '{% trans "Low Stock" %}', 'fa-flag'); +addHeaderAction('low-stock', '{% jstrans "Low Stock" %}', 'fa-flag'); loadSimplePartTable("#table-low-stock", "{% url 'api-part-list' %}", { name: 'parts-low-stock', params: { @@ -131,7 +131,7 @@ loadSimplePartTable("#table-low-stock", "{% url 'api-part-list' %}", { {% endif %} {% if setting_stock_depleted %} -addHeaderAction('depleted-stock', '{% trans "Depleted Stock" %}', 'fa-times'); +addHeaderAction('depleted-stock', '{% jstrans "Depleted Stock" %}', 'fa-times'); loadSimplePartTable("#table-depleted-stock", "{% url 'api-part-list' %}", { name: 'parts-depleted-stock', params: { @@ -145,7 +145,7 @@ loadSimplePartTable("#table-depleted-stock", "{% url 'api-part-list' %}", { {% endif %} {% if setting_stock_needed %} -addHeaderAction('stock-to-build', '{% trans "Required for Build Orders" %}', 'fa-bullhorn'); +addHeaderAction('stock-to-build', '{% jstrans "Required for Build Orders" %}', 'fa-bullhorn'); loadRequiredForBuildsPartsTable("#table-stock-to-build", {}); {% endif %} @@ -153,7 +153,7 @@ loadRequiredForBuildsPartsTable("#table-stock-to-build", {}); {% if expiry %} {% if setting_stock_expired %} -addHeaderAction('expired-stock', '{% trans "Expired Stock" %}', 'fa-calendar-times'); +addHeaderAction('expired-stock', '{% jstrans "Expired Stock" %}', 'fa-calendar-times'); loadStockTable($("#table-expired-stock"), { disableFilters: true, params: { @@ -169,7 +169,7 @@ loadStockTable($("#table-expired-stock"), { {% endif %} {% if setting_stock_stale %} -addHeaderAction('stale-stock', '{% trans "Stale Stock" %}', 'fa-stopwatch'); +addHeaderAction('stale-stock', '{% jstrans "Stale Stock" %}', 'fa-stopwatch'); loadStockTable($("#table-stale-stock"), { disableFilters: true, params: { @@ -193,10 +193,10 @@ loadStockTable($("#table-stale-stock"), { {% to_list setting_build_pending setting_build_overdue as settings_list_build %} {% if roles.build.view and True in settings_list_build %} -addHeaderTitle('{% trans "Build Orders" %}'); +addHeaderTitle('{% jstrans "Build Orders" %}'); {% if setting_build_pending %} -addHeaderAction('build-pending', '{% trans "Build Orders In Progress" %}', 'fa-cogs'); +addHeaderAction('build-pending', '{% jstrans "Build Orders In Progress" %}', 'fa-cogs'); loadBuildTable("#table-build-pending", { locale: '{{ request.LANGUAGE_CODE }}', params: { @@ -207,7 +207,7 @@ loadBuildTable("#table-build-pending", { {% endif %} {% if setting_build_overdue %} -addHeaderAction('build-overdue', '{% trans "Overdue Build Orders" %}', 'fa-calendar-times'); +addHeaderAction('build-overdue', '{% jstrans "Overdue Build Orders" %}', 'fa-calendar-times'); loadBuildTable("#table-build-overdue", { locale: '{{ request.LANGUAGE_CODE }}', params: { @@ -224,10 +224,10 @@ loadBuildTable("#table-build-overdue", { {% to_list setting_po_outstanding setting_po_overdue as settings_list_po %} {% if roles.purchase_order.view and True in settings_list_po %} -addHeaderTitle('{% trans "Purchase Orders" %}'); +addHeaderTitle('{% jstrans "Purchase Orders" %}'); {% if setting_po_outstanding %} -addHeaderAction('po-outstanding', '{% trans "Outstanding Purchase Orders" %}', 'fa-sign-in-alt'); +addHeaderAction('po-outstanding', '{% jstrans "Outstanding Purchase Orders" %}', 'fa-sign-in-alt'); loadPurchaseOrderTable("#table-po-outstanding", { url: "{% url 'api-po-list' %}", params: { @@ -238,7 +238,7 @@ loadPurchaseOrderTable("#table-po-outstanding", { {% endif %} {% if setting_po_overdue %} -addHeaderAction('po-overdue', '{% trans "Overdue Purchase Orders" %}', 'fa-calendar-times'); +addHeaderAction('po-overdue', '{% jstrans "Overdue Purchase Orders" %}', 'fa-calendar-times'); loadPurchaseOrderTable("#table-po-overdue", { url: "{% url 'api-po-list' %}", params: { @@ -256,10 +256,10 @@ loadPurchaseOrderTable("#table-po-overdue", { {% to_list setting_so_outstanding setting_so_overdue setting_so_shipments_pending as settings_list_so %} {% if roles.sales_order.view and True in settings_list_so %} -addHeaderTitle('{% trans "Sales Orders" %}'); +addHeaderTitle('{% jstrans "Sales Orders" %}'); {% if setting_so_outstanding %} -addHeaderAction('so-outstanding', '{% trans "Outstanding Sales Orders" %}', 'fa-sign-out-alt'); +addHeaderAction('so-outstanding', '{% jstrans "Outstanding Sales Orders" %}', 'fa-sign-out-alt'); loadSalesOrderTable("#table-so-outstanding", { url: "{% url 'api-so-list' %}", params: { @@ -270,7 +270,7 @@ loadSalesOrderTable("#table-so-outstanding", { {% endif %} {% if setting_so_overdue %} -addHeaderAction('so-overdue', '{% trans "Overdue Sales Orders" %}', 'fa-calendar-times'); +addHeaderAction('so-overdue', '{% jstrans "Overdue Sales Orders" %}', 'fa-calendar-times'); loadSalesOrderTable("#table-so-overdue", { url: "{% url 'api-so-list' %}", params: { @@ -281,7 +281,7 @@ loadSalesOrderTable("#table-so-overdue", { {% endif %} {% if setting_so_shipments_pending %} -addHeaderAction('so-shipments', '{% trans "Pending Shipments" %}', 'fa-truck-loading'); +addHeaderAction('so-shipments', '{% jstrans "Pending Shipments" %}', 'fa-truck-loading'); loadSalesOrderShipmentTable("#table-so-shipments", { url: "{% url 'api-so-shipment-list' %}", params: { @@ -296,9 +296,9 @@ loadSalesOrderShipmentTable("#table-so-shipments", { {% settings_value 'HOMEPAGE_NEWS' user=request.user as setting_news %} {% if setting_news and user.is_staff %} -addHeaderTitle('{% trans "InvenTree News" %}'); +addHeaderTitle('{% jstrans "InvenTree News" %}'); -addHeaderAction('news', '{% trans "Current News" %}', 'fa-newspaper'); +addHeaderAction('news', '{% jstrans "Current News" %}', 'fa-newspaper'); loadNewsFeedTable("#table-news", { url: "{% url 'api-news-list' %}", }); diff --git a/InvenTree/templates/InvenTree/notifications/notifications.html b/InvenTree/templates/InvenTree/notifications/notifications.html index 7f95103a28..4ce156805d 100644 --- a/InvenTree/templates/InvenTree/notifications/notifications.html +++ b/InvenTree/templates/InvenTree/notifications/notifications.html @@ -35,7 +35,7 @@ loadNotificationTable("#inbox-table", { params: { read: false, }, - no_matches: function() { return '{% trans "No unread notifications found" %}'; }, + no_matches: function() { return '{% jstrans "No unread notifications found" %}'; }, }); $("#mark-all").on('click', function() { @@ -55,7 +55,7 @@ $("#mark-all").on('click', function() { loadNotificationTable("#history-table", { name: 'history', url: '{% url 'api-notifications-list' %}', - no_matches: function() { return '{% trans "No notification history found" %}'; }, + no_matches: function() { return '{% jstrans "No notification history found" %}'; }, }, true); $('#history-delete').click(function() { @@ -72,7 +72,7 @@ $('#history-delete').click(function() { method: 'DELETE', multi_delete: true, preFormContent: html, - title: '{% trans "Delete Notifications" %}', + title: '{% jstrans "Delete Notifications" %}', refreshTable: '#history-table', form_data: { filters: { @@ -86,7 +86,7 @@ $('#history-delete').click(function() { $("#history-table").on('click', '.notification-delete', function() { constructForm(`{% url "api-notifications-list" %}${$(this).attr('pk')}/`, { method: 'DELETE', - title: '{% trans "Delete Notification" %}', + title: '{% jstrans "Delete Notification" %}', onSuccess: function(data) { updateNotificationTables(); } diff --git a/InvenTree/templates/InvenTree/search.html b/InvenTree/templates/InvenTree/search.html index 0b4c28c8d1..326e5d84c8 100644 --- a/InvenTree/templates/InvenTree/search.html +++ b/InvenTree/templates/InvenTree/search.html @@ -79,9 +79,9 @@ } {% if roles.part.view %} - addItemTitle('{% trans "Part" %}'); + addItemTitle('{% jstrans "Part" %}'); - addItem('part', '{% trans "Parts" %}', 'fa-shapes'); + addItem('part', '{% jstrans "Parts" %}', 'fa-shapes'); loadPartTable("#table-part", "{% url 'api-part-list' %}", @@ -94,7 +94,7 @@ } ); - addItem('category', '{% trans "Part Categories" %}', 'fa-sitemap'); + addItem('category', '{% jstrans "Part Categories" %}', 'fa-sitemap'); loadPartCategoryTable($("#table-category"), { params: { @@ -102,7 +102,7 @@ } }); - addItem('manufacturer-part', '{% trans "Manufacturer Parts" %}', 'fa-toolbox'); + addItem('manufacturer-part', '{% jstrans "Manufacturer Parts" %}', 'fa-toolbox'); loadManufacturerPartTable( "#table-manufacturer-part", @@ -117,7 +117,7 @@ } ); - addItem('supplier-part', '{% trans "Supplier Parts" %}', 'fa-pallet'); + addItem('supplier-part', '{% jstrans "Supplier Parts" %}', 'fa-pallet'); loadSupplierPartTable( "#table-supplier-part", @@ -136,9 +136,9 @@ {% if roles.build.view %} - addItemTitle('{% trans "Build" %}'); + addItemTitle('{% jstrans "Build" %}'); - addItem('build-order', '{% trans "Build Orders" %}', 'fa-tools'); + addItem('build-order', '{% jstrans "Build Orders" %}', 'fa-tools'); loadBuildTable('#table-build-order', { locale: '{{ request.LANGUAGE_CODE }}', @@ -150,9 +150,9 @@ {% endif %} {% if roles.stock.view %} - addItemTitle('{% trans "Stock" %}'); + addItemTitle('{% jstrans "Stock" %}'); - addItem('stock', '{% trans "Stock Items" %}', 'fa-boxes'); + addItem('stock', '{% jstrans "Stock Items" %}', 'fa-boxes'); loadStockTable($('#table-stock'), { filterKey: 'stocksearch', @@ -163,7 +163,7 @@ } }); - addItem('location', '{% trans "Stock Locations" %}', 'fa-map-marker-alt'); + addItem('location', '{% jstrans "Stock Locations" %}', 'fa-map-marker-alt'); loadStockLocationTable($("#table-location"), { filterKey: 'locationsearch', @@ -175,9 +175,9 @@ {% endif %} {% if roles.purchase_order.view or roles.sales_order.view %} - addItemTitle('{% trans "Company" %}'); + addItemTitle('{% jstrans "Company" %}'); - addItem('manufacturer', '{% trans "Manufacturers" %}', 'fa-industry'); + addItem('manufacturer', '{% jstrans "Manufacturers" %}', 'fa-industry'); loadCompanyTable('#table-manufacturer', "{% url 'api-company-list' %}", { params: { @@ -187,7 +187,7 @@ }); {% if roles.purchase_order.view %} - addItem('supplier', '{% trans "Suppliers" %}', 'fa-building'); + addItem('supplier', '{% jstrans "Suppliers" %}', 'fa-building'); loadCompanyTable('#table-supplier', "{% url 'api-company-list' %}", { params: { @@ -196,7 +196,7 @@ } }); - addItem('purchase-order', '{% trans "Purchase Orders" %}', 'fa-shopping-cart'); + addItem('purchase-order', '{% jstrans "Purchase Orders" %}', 'fa-shopping-cart'); loadPurchaseOrderTable('#table-purchase-order', { params: { @@ -207,7 +207,7 @@ {% endif %} {% if roles.sales_order.view %} - addItem('customer', '{% trans "Customers" %}', 'fa-user-tie'); + addItem('customer', '{% jstrans "Customers" %}', 'fa-user-tie'); loadCompanyTable('#table-customer', "{% url 'api-company-list' %}", { params: { @@ -216,7 +216,7 @@ } }); - addItem('sales-orders', '{% trans "Sales Orders" %}', 'fa-truck'); + addItem('sales-orders', '{% jstrans "Sales Orders" %}', 'fa-truck'); loadSalesOrderTable('#table-sales-orders', { params: { diff --git a/InvenTree/templates/InvenTree/settings/settings_js.html b/InvenTree/templates/InvenTree/settings/settings_js.html index 9eff1e7e43..6aea5650e3 100644 --- a/InvenTree/templates/InvenTree/settings/settings_js.html +++ b/InvenTree/templates/InvenTree/settings/settings_js.html @@ -55,14 +55,14 @@ $('table').find('.btn-edit-setting').click(function() { var title = ''; if (plugin != null) { - title = '{% trans "Edit Plugin Setting" %}'; + title = '{% jstrans "Edit Plugin Setting" %}'; } else if (notification) { - title = '{% trans "Edit Notification Setting" %}'; + title = '{% jstrans "Edit Notification Setting" %}'; setting = $(this).attr('pk'); } else if (is_global) { - title = '{% trans "Edit Global Setting" %}'; + title = '{% jstrans "Edit Global Setting" %}'; } else { - title = '{% trans "Edit User Setting" %}'; + title = '{% jstrans "Edit User Setting" %}'; } editSetting(setting, { diff --git a/InvenTree/templates/InvenTree/settings/settings_staff_js.html b/InvenTree/templates/InvenTree/settings/settings_staff_js.html index 512d21898d..c762a31cc1 100644 --- a/InvenTree/templates/InvenTree/settings/settings_staff_js.html +++ b/InvenTree/templates/InvenTree/settings/settings_staff_js.html @@ -41,12 +41,12 @@ onPanelLoad('pricing', function() { { field: 'currency', sortable: true, - title: '{% trans "Currency" %}', + title: '{% jstrans "Currency" %}', }, { field: 'rate', sortable: true, - title: '{% trans "Rate" %}', + title: '{% jstrans "Rate" %}', } ] }); @@ -64,21 +64,21 @@ onPanelLoad('units', function() { columns: [ { field: 'name', - title: '{% trans "Name" %}', + title: '{% jstrans "Name" %}', }, { field: 'definition', - title: '{% trans "Definition" %}', + title: '{% jstrans "Definition" %}', }, { field: 'symbol', - title: '{% trans "Symbol" %}', + title: '{% jstrans "Symbol" %}', formatter: function(value, row) { let html = value; let buttons = ''; - buttons += makeEditButton('button-units-edit', row.pk, '{% trans "Edit" %}'); - buttons += makeDeleteButton('button-units-delete', row.pk, '{% trans "Delete" %}'); + buttons += makeEditButton('button-units-edit', row.pk, '{% jstrans "Edit" %}'); + buttons += makeDeleteButton('button-units-delete', row.pk, '{% jstrans "Delete" %}'); html += wrapButtons(buttons); return html; @@ -92,7 +92,7 @@ onPanelLoad('units', function() { let pk = $(this).attr('pk'); constructForm(`{% url "api-custom-unit-list" %}${pk}/`, { - title: '{% trans "Edit Custom Unit" %}', + title: '{% jstrans "Edit Custom Unit" %}', fields: { name: {}, definition: {}, @@ -107,7 +107,7 @@ onPanelLoad('units', function() { let pk = $(this).attr('pk'); constructForm(`{% url "api-custom-unit-list" %}${pk}/`, { - title: '{% trans "Delete Custom Unit" %}', + title: '{% jstrans "Delete Custom Unit" %}', method: 'DELETE', refreshTable: '#physical-units-table', }); @@ -121,7 +121,7 @@ onPanelLoad('units', function() { definition: {}, symbol: {}, }, - title: '{% trans "New Custom Unit" %}', + title: '{% jstrans "New Custom Unit" %}', method: 'POST', refreshTable: '#physical-units-table', }); @@ -137,17 +137,17 @@ onPanelLoad('project-codes', function() { search: true, sortable: true, formatNoMatches: function() { - return '{% trans "No project codes found" %}'; + return '{% jstrans "No project codes found" %}'; }, columns: [ { field: 'code', sortable: true, - title: '{% trans "Project Code" %}', + title: '{% jstrans "Project Code" %}', }, { field: 'responsible', - title: '{% trans "Responsible" %}', + title: '{% jstrans "Responsible" %}', formatter: function(value, row) { if (!row.responsible_detail) { return '-'; @@ -155,7 +155,7 @@ onPanelLoad('project-codes', function() { var html = row.responsible_detail.name; - if (row.responsible_detail.label == '{% trans "group" %}') { + if (row.responsible_detail.label == '{% jstrans "group" %}') { html += ``; } else { html += ``; @@ -167,13 +167,13 @@ onPanelLoad('project-codes', function() { { field: 'description', sortable: false, - title: '{% trans "Description" %}', + title: '{% jstrans "Description" %}', formatter: function(value, row) { let html = value; let buttons = ''; - buttons += makeEditButton('button-project-code-edit', row.pk, '{% trans "Edit Project Code" %}'); - buttons += makeDeleteButton('button-project-code-delete', row.pk, '{% trans "Delete Project Code" %}'); + buttons += makeEditButton('button-project-code-edit', row.pk, '{% jstrans "Edit Project Code" %}'); + buttons += makeDeleteButton('button-project-code-delete', row.pk, '{% jstrans "Delete Project Code" %}'); html += wrapButtons(buttons); return html; @@ -186,7 +186,7 @@ onPanelLoad('project-codes', function() { let pk = $(this).attr('pk'); constructForm(`{% url "api-project-code-list" %}${pk}/`, { - title: '{% trans "Edit Project Code" %}', + title: '{% jstrans "Edit Project Code" %}', fields: { code: {}, description: {}, @@ -200,7 +200,7 @@ onPanelLoad('project-codes', function() { let pk = $(this).attr('pk'); constructForm(`{% url "api-project-code-list" %}${pk}/`, { - title: '{% trans "Delete Project Code" %}', + title: '{% jstrans "Delete Project Code" %}', method: 'DELETE', refreshTable: '#project-code-table', }); @@ -213,7 +213,7 @@ onPanelLoad('project-codes', function() { code: {}, description: {}, }, - title: '{% trans "New Project Code" %}', + title: '{% jstrans "New Project Code" %}', method: 'POST', refreshTable: '#project-code-table', }); @@ -282,7 +282,7 @@ onPanelLoad('category', function() { }); $('#cat-param-table').inventreeTable({ - formatNoMatches: function() { return '{% trans "No category parameter templates found" %}'; }, + formatNoMatches: function() { return '{% jstrans "No category parameter templates found" %}'; }, columns: [ { field: 'pk', @@ -292,21 +292,21 @@ onPanelLoad('category', function() { }, { field: 'parameter_template_detail.name', - title: '{% trans "Parameter Template" %}', + title: '{% jstrans "Parameter Template" %}', sortable: 'true', }, { field: 'category_detail.pathstring', - title: '{% trans "Category" %}', + title: '{% jstrans "Category" %}', }, { field: 'default_value', - title: '{% trans "Default Value" %}', + title: '{% jstrans "Default Value" %}', sortable: 'true', formatter: function(value, row, index, field) { let buttons = ''; - buttons += makeEditButton('template-edit', row.pk, '{% trans "Edit Template" %}'); - buttons += makeDeleteButton('template-delete', row.pk, '{% trans "Delete Template" %}'); + buttons += makeEditButton('template-edit', row.pk, '{% jstrans "Edit Template" %}'); + buttons += makeDeleteButton('template-delete', row.pk, '{% jstrans "Delete Template" %}'); let html = value html += wrapButtons(buttons); @@ -323,7 +323,7 @@ onPanelLoad('category', function() { var pk = $(this).attr('pk'); constructForm(`/api/part/category/parameters/${pk}/`, { - title: '{% trans "Edit Category Parameter Template" %}', + title: '{% jstrans "Edit Category Parameter Template" %}', fields: { parameter_template: {}, category: { @@ -350,7 +350,7 @@ onPanelLoad('category', function() { constructForm(`/api/part/category/parameters/${pk}/`, { method: 'DELETE', - title: '{% trans "Delete Category Parameter Template" %}', + title: '{% jstrans "Delete Category Parameter Template" %}', onSuccess: function() { loadTemplateTable(pk); } @@ -385,7 +385,7 @@ onPanelLoad('category', function() { var pk = $('#category-select').val(); constructForm('{% url "api-part-category-parameter-list" %}', { - title: '{% trans "Create Category Parameter Template" %}', + title: '{% jstrans "Create Category Parameter Template" %}', method: 'POST', fields: { parameter_template: {}, @@ -415,7 +415,7 @@ onPanelLoad('part-parameters', function() { constructForm('{% url "api-part-parameter-template-list" %}', { fields: partParameterTemplateFields(), method: 'POST', - title: '{% trans "Create Part Parameter Template" %}', + title: '{% jstrans "Create Part Parameter Template" %}', refreshTable: '#param-table', }); }); @@ -437,34 +437,34 @@ onPanelLoad("stock", function() { search: true, sortable: true, formatNoMatches: function() { - return '{% trans "No stock location types found" %}'; + return '{% jstrans "No stock location types found" %}'; }, columns: [ { field: 'name', sortable: true, - title: '{% trans "Name" %}', + title: '{% jstrans "Name" %}', }, { field: 'description', sortable: false, - title: '{% trans "Description" %}', + title: '{% jstrans "Description" %}', }, { field: 'icon', sortable: true, - title: '{% trans "Icon" %}', + title: '{% jstrans "Icon" %}', }, { field: 'location_count', sortable: true, - title: '{% trans "Location count" %}', + title: '{% jstrans "Location count" %}', formatter: function(value, row) { let html = value; let buttons = ''; - buttons += makeEditButton('button-location-type-edit', row.pk, '{% trans "Edit Location Type" %}'); - buttons += makeDeleteButton('button-location-type-delete', row.pk, '{% trans "Delete Location type" %}'); + buttons += makeEditButton('button-location-type-edit', row.pk, '{% jstrans "Edit Location Type" %}'); + buttons += makeDeleteButton('button-location-type-delete', row.pk, '{% jstrans "Delete Location type" %}'); html += wrapButtons(buttons); return html; @@ -477,7 +477,7 @@ onPanelLoad("stock", function() { let pk = $(this).attr('pk'); constructForm(`{% url "api-location-type-list" %}${pk}/`, { - title: '{% trans "Edit Location Type" %}', + title: '{% jstrans "Edit Location Type" %}', fields: stockLocationTypeFields(), refreshTable: '#location-type-table', }); @@ -487,7 +487,7 @@ onPanelLoad("stock", function() { let pk = $(this).attr('pk'); constructForm(`{% url "api-location-type-list" %}${pk}/`, { - title: '{% trans "Delete Location Type" %}', + title: '{% jstrans "Delete Location Type" %}', method: 'DELETE', refreshTable: '#location-type-table', }); @@ -497,7 +497,7 @@ onPanelLoad("stock", function() { // Construct a new location type constructForm('{% url "api-location-type-list" %}', { fields: stockLocationTypeFields(), - title: '{% trans "New Location Type" %}', + title: '{% jstrans "New Location Type" %}', method: 'POST', refreshTable: '#location-type-table', }); @@ -526,18 +526,18 @@ onPanelLoad('stocktake', function() { columns: [ { field: 'report', - title: '{% trans "Report" %}', + title: '{% jstrans "Report" %}', formatter: function(value, row) { return attachmentLink(value); } }, { field: 'part_count', - title: '{% trans "Part Count" %}', + title: '{% jstrans "Part Count" %}', }, { field: 'date', - title: '{% trans "Date" %}', + title: '{% jstrans "Date" %}', sortable: true, formatter: function(value, row) { let html = renderDate(value); diff --git a/InvenTree/templates/InvenTree/settings/user.html b/InvenTree/templates/InvenTree/settings/user.html index 9a1fbcd135..7933ad72dd 100644 --- a/InvenTree/templates/InvenTree/settings/user.html +++ b/InvenTree/templates/InvenTree/settings/user.html @@ -215,7 +215,7 @@ {% block js_ready %} (function() { -var message = "{% trans 'Do you really want to remove the selected email address?' %}"; +var message = "{% jstrans 'Do you really want to remove the selected email address?' %}"; var actions = document.getElementsByName('action_remove'); if (actions.length) { actions[0].addEventListener("click", function(e) { diff --git a/InvenTree/templates/js/translated/api.js b/InvenTree/templates/js/translated/api.js index c9bd3dbd1a..fb893c96e0 100644 --- a/InvenTree/templates/js/translated/api.js +++ b/InvenTree/templates/js/translated/api.js @@ -222,48 +222,48 @@ function showApiError(xhr, url) { switch (xhr.status || 0) { // No response case 0: - title = '{% trans "No Response" %}'; - message = '{% trans "No response from the InvenTree server" %}'; + title = '{% jstrans "No Response" %}'; + message = '{% jstrans "No response from the InvenTree server" %}'; break; // Bad request case 400: // Note: Normally error code 400 is handled separately, // and should now be shown here! - title = '{% trans "Error 400: Bad request" %}'; - message = '{% trans "API request returned error code 400" %}'; + title = '{% jstrans "Error 400: Bad request" %}'; + message = '{% jstrans "API request returned error code 400" %}'; break; // Not authenticated case 401: - title = '{% trans "Error 401: Not Authenticated" %}'; - message = '{% trans "Authentication credentials not supplied" %}'; + title = '{% jstrans "Error 401: Not Authenticated" %}'; + message = '{% jstrans "Authentication credentials not supplied" %}'; break; // Permission denied case 403: - title = '{% trans "Error 403: Permission Denied" %}'; - message = '{% trans "You do not have the required permissions to access this function" %}'; + title = '{% jstrans "Error 403: Permission Denied" %}'; + message = '{% jstrans "You do not have the required permissions to access this function" %}'; break; // Resource not found case 404: - title = '{% trans "Error 404: Resource Not Found" %}'; - message = '{% trans "The requested resource could not be located on the server" %}'; + title = '{% jstrans "Error 404: Resource Not Found" %}'; + message = '{% jstrans "The requested resource could not be located on the server" %}'; break; // Method not allowed case 405: - title = '{% trans "Error 405: Method Not Allowed" %}'; - message = '{% trans "HTTP method not allowed at URL" %}'; + title = '{% jstrans "Error 405: Method Not Allowed" %}'; + message = '{% jstrans "HTTP method not allowed at URL" %}'; break; // Timeout case 408: - title = '{% trans "Error 408: Timeout" %}'; - message = '{% trans "Connection timeout while requesting data from server" %}'; + title = '{% jstrans "Error 408: Timeout" %}'; + message = '{% jstrans "Connection timeout while requesting data from server" %}'; break; case 503: - title = '{% trans "Error 503: Service Unavailable" %}'; - message = '{% trans "The server is currently unavailable" %}'; + title = '{% jstrans "Error 503: Service Unavailable" %}'; + message = '{% jstrans "The server is currently unavailable" %}'; break; default: - title = '{% trans "Unhandled Error Code" %}'; - message = `{% trans "Error code" %}: ${xhr.status}`; + title = '{% jstrans "Unhandled Error Code" %}'; + message = `{% jstrans "Error code" %}: ${xhr.status}`; var response = xhr.responseJSON; diff --git a/InvenTree/templates/js/translated/attachment.js b/InvenTree/templates/js/translated/attachment.js index 4ec0b4b625..f4d551636a 100644 --- a/InvenTree/templates/js/translated/attachment.js +++ b/InvenTree/templates/js/translated/attachment.js @@ -45,7 +45,7 @@ function addAttachmentButtonCallbacks(url, fields={}) { fields: file_fields, method: 'POST', refreshTable: '#attachment-table', - title: '{% trans "Add Attachment" %}', + title: '{% jstrans "Add Attachment" %}', }); }); @@ -67,7 +67,7 @@ function addAttachmentButtonCallbacks(url, fields={}) { fields: link_fields, method: 'POST', refreshTable: '#attachment-table', - title: '{% trans "Add Link" %}', + title: '{% jstrans "Add Link" %}', }); }); } @@ -111,13 +111,13 @@ function deleteAttachments(attachments, url, options={}) { var html = `
- {% trans "All selected attachments will be deleted" %} + {% jstrans "All selected attachments will be deleted" %}
- - + + ${rows}
{% trans "Attachment" %}{% trans "Comment" %}{% jstrans "Attachment" %}{% jstrans "Comment" %}
@@ -126,7 +126,7 @@ function deleteAttachments(attachments, url, options={}) { constructForm(url, { method: 'DELETE', multi_delete: true, - title: '{% trans "Delete Attachments" %}', + title: '{% jstrans "Delete Attachments" %}', preFormContent: html, form_data: { items: ids, @@ -202,7 +202,7 @@ function makeAttachmentActions(permissions, options) { actions.push({ label: 'delete', icon: 'fa-trash-alt icon-red', - title: '{% trans "Delete attachments" %}', + title: '{% jstrans "Delete attachments" %}', callback: options.callback, }); } @@ -250,7 +250,7 @@ function loadAttachmentTable(url, options) { { label: 'attachments', icon: 'fa-tools', - title: '{% trans "Attachment actions" %}', + title: '{% jstrans "Attachment actions" %}', actions: makeAttachmentActions(permissions, { callback: function(attachments) { deleteAttachments(attachments, url, options); @@ -272,7 +272,7 @@ function loadAttachmentTable(url, options) { url: url, name: options.name || 'attachments', formatNoMatches: function() { - return '{% trans "No attachments found" %}'; + return '{% jstrans "No attachments found" %}'; }, sortable: true, search: true, @@ -312,7 +312,7 @@ function loadAttachmentTable(url, options) { } }, refreshTable: '#attachment-table', - title: '{% trans "Edit Attachment" %}', + title: '{% jstrans "Edit Attachment" %}', }); }); } @@ -323,7 +323,7 @@ function loadAttachmentTable(url, options) { }, { field: 'attachment', - title: '{% trans "Attachment" %}', + title: '{% jstrans "Attachment" %}', formatter: function(value, row) { if (row.attachment) { @@ -338,12 +338,12 @@ function loadAttachmentTable(url, options) { }, { field: 'comment', - title: '{% trans "Comment" %}', + title: '{% jstrans "Comment" %}', }, { field: 'upload_date', sortable: true, - title: '{% trans "Upload Date" %}', + title: '{% jstrans "Upload Date" %}', formatter: function(value, row) { var html = renderDate(value); @@ -363,7 +363,7 @@ function loadAttachmentTable(url, options) { buttons += makeEditButton( 'button-attachment-edit', row.pk, - '{% trans "Edit attachment" %}', + '{% jstrans "Edit attachment" %}', ); } @@ -371,7 +371,7 @@ function loadAttachmentTable(url, options) { buttons += makeDeleteButton( 'button-attachment-delete', row.pk, - '{% trans "Delete attachment" %}', + '{% jstrans "Delete attachment" %}', ); } diff --git a/InvenTree/templates/js/translated/barcode.js b/InvenTree/templates/js/translated/barcode.js index e03d6f3950..966adc6a5e 100644 --- a/InvenTree/templates/js/translated/barcode.js +++ b/InvenTree/templates/js/translated/barcode.js @@ -40,23 +40,23 @@ var barcodeInputTimer = null; */ function makeBarcodeInput(placeholderText='', hintText='') { - placeholderText = placeholderText || '{% trans "Scan barcode data here using barcode scanner" %}'; + placeholderText = placeholderText || '{% jstrans "Scan barcode data here using barcode scanner" %}'; - hintText = hintText || '{% trans "Enter barcode data" %}'; + hintText = hintText || '{% jstrans "Enter barcode data" %}'; var html = `
- +
${makeIcon('fa-qrcode')} -
@@ -135,12 +135,12 @@ function onBarcodeScanCompleted(result, options) { */ function makeNotesField(options={}) { - var tooltip = options.tooltip || '{% trans "Enter optional notes for stock transfer" %}'; - var placeholder = options.placeholder || '{% trans "Enter notes" %}'; + var tooltip = options.tooltip || '{% jstrans "Enter optional notes for stock transfer" %}'; + var placeholder = options.placeholder || '{% jstrans "Enter notes" %}'; return `
- +
@@ -185,7 +185,7 @@ function postBarcodeData(barcode_data, options={}) { } else { console.error(xhr); data = xhr.responseJSON || {}; - showBarcodeMessage(modal, data.error || '{% trans "Server error" %}'); + showBarcodeMessage(modal, data.error || '{% jstrans "Server error" %}'); } break; default: @@ -214,7 +214,7 @@ function postBarcodeData(barcode_data, options={}) { } else { showBarcodeMessage( modal, - '{% trans "Unknown response from server" %}', + '{% jstrans "Unknown response from server" %}', 'warning' ); } @@ -249,7 +249,7 @@ function showBarcodeMessage(modal, message, style='danger') { function showInvalidResponseError(modal, response, status) { showBarcodeMessage( modal, - `{% trans "Invalid server response" %}
{% trans "Status" %}: '${status}'` + `{% jstrans "Invalid server response" %}
{% jstrans "Status" %}: '${status}'` ); } @@ -369,7 +369,7 @@ function barcodeDialog(title, options={}) { modalShowSubmitButton(modal, false); } - var details = options.details || '{% trans "Scan barcode data" %}'; + var details = options.details || '{% jstrans "Scan barcode data" %}'; var content = ''; @@ -417,7 +417,7 @@ function barcodeDialog(title, options={}) { function barcodeScanDialog(options={}) { let modal = options.modal || createNewModal(); - let title = options.title || '{% trans "Scan Barcode" %}'; + let title = options.title || '{% jstrans "Scan Barcode" %}'; const matching_models = [ 'build', @@ -455,7 +455,7 @@ function barcodeScanDialog(options={}) { // No match showBarcodeMessage( modal, - '{% trans "No URL in response" %}', + '{% jstrans "No URL in response" %}', 'warning' ); } @@ -493,15 +493,15 @@ function linkBarcodeDialog(data, options={}) { */ function unlinkBarcode(data, options={}) { - var html = `{% trans "Unlink Barcode" %}
`; + var html = `{% jstrans "Unlink Barcode" %}
`; - html += '{% trans "This will remove the link to the associated barcode" %}'; + html += '{% jstrans "This will remove the link to the associated barcode" %}'; showQuestionDialog( - '{% trans "Unlink Barcode" %}', + '{% jstrans "Unlink Barcode" %}', html, { - accept_text: '{% trans "Unlink" %}', + accept_text: '{% jstrans "Unlink" %}', accept: function() { inventreePut( '{% url "api-barcode-unlink" %}', @@ -543,9 +543,9 @@ function barcodeCheckInStockItems(location_id, options={}) { - - - + + + @@ -564,7 +564,7 @@ function barcodeCheckInStockItems(location_id, options={}) { - + `; }); @@ -607,12 +607,12 @@ function barcodeCheckInStockItems(location_id, options={}) { var extra = makeNotesField(); barcodeDialog( - '{% trans "Scan Stock Items Into Location" %}', + '{% jstrans "Scan Stock Items Into Location" %}', { - details: '{% trans "Scan stock item barcode to check in to this location" %}', + details: '{% jstrans "Scan stock item barcode to check in to this location" %}', headerContent: table, preShow: function() { - modalSetSubmitText(modal, '{% trans "Check In" %}'); + modalSetSubmitText(modal, '{% jstrans "Check In" %}'); modalEnable(modal, false); reloadTable(); }, @@ -644,7 +644,7 @@ function barcodeCheckInStockItems(location_id, options={}) { // Prevent submission without any entries if (entries.length == 0) { - showBarcodeMessage(modal, '{% trans "No barcode provided" %}', 'warning'); + showBarcodeMessage(modal, '{% jstrans "No barcode provided" %}', 'warning'); return; } @@ -684,18 +684,18 @@ function barcodeCheckInStockItems(location_id, options={}) { }); if (duplicate) { - showBarcodeMessage(modal, '{% trans "Stock Item already scanned" %}', 'warning'); + showBarcodeMessage(modal, '{% jstrans "Stock Item already scanned" %}', 'warning'); } else { if (stockitem.location == location_id) { - showBarcodeMessage(modal, '{% trans "Stock Item already in this location" %}'); + showBarcodeMessage(modal, '{% jstrans "Stock Item already in this location" %}'); return; } // Add this stock item to the list items.push(stockitem); - showBarcodeMessage(modal, '{% trans "Added stock item" %}', 'success'); + showBarcodeMessage(modal, '{% jstrans "Added stock item" %}', 'success'); reloadTable(); } @@ -704,7 +704,7 @@ function barcodeCheckInStockItems(location_id, options={}) { ); } else { // Barcode does not match a stock item - showBarcodeMessage(modal, '{% trans "Barcode does not match valid stock item" %}', 'warning'); + showBarcodeMessage(modal, '{% jstrans "Barcode does not match valid stock item" %}', 'warning'); } }, } @@ -723,9 +723,9 @@ function barcodeCheckInStockLocations(location_id, options={}) { var header = ''; barcodeDialog( - '{% trans "Scan Stock Container Into Location" %}', + '{% jstrans "Scan Stock Container Into Location" %}', { - details: '{% trans "Scan stock container barcode to check in to this location" %}', + details: '{% jstrans "Scan stock container barcode to check in to this location" %}', headerContent: header, preShow: function() { modalEnable(modal, false); @@ -759,7 +759,7 @@ function barcodeCheckInStockLocations(location_id, options={}) { ); } else { // Barcode does not match a valid stock location - showBarcodeMessage(modal, '{% trans "Barcode does not match valid stock location" %}', 'warning'); + showBarcodeMessage(modal, '{% jstrans "Barcode does not match valid stock location" %}', 'warning'); } } } @@ -792,7 +792,7 @@ function scanItemsIntoLocation(item_list, options={}) { if (location && location.pk) { div.html(`
- {% trans "Location" %}
+ {% jstrans "Location" %}
${location.name}
${location.description}
@@ -803,13 +803,13 @@ function scanItemsIntoLocation(item_list, options={}) { } barcodeDialog( - '{% trans "Check Into Location" %}', + '{% jstrans "Check Into Location" %}', { headerContent: header, extraFields: extra, modal: modal, preShow: function() { - modalSetSubmitText(modal, '{% trans "Check In" %}'); + modalSetSubmitText(modal, '{% jstrans "Check In" %}'); modalEnable(modal, false); }, onShow: function() { @@ -872,7 +872,7 @@ function scanItemsIntoLocation(item_list, options={}) { // Barcode does *NOT* correspond to a StockLocation showBarcodeMessage( modal, - '{% trans "Barcode does not match a valid location" %}', + '{% jstrans "Barcode does not match a valid location" %}', 'warning', ); } @@ -881,7 +881,7 @@ function scanItemsIntoLocation(item_list, options={}) { // Barcode does *NOT* correspond to a StockLocation showBarcodeMessage( modal, - '{% trans "Barcode does not match a valid location" %}', + '{% jstrans "Barcode does not match a valid location" %}', 'warning', ); } diff --git a/InvenTree/templates/js/translated/bom.js b/InvenTree/templates/js/translated/bom.js index ebf1caec67..64a5cd0c0e 100644 --- a/InvenTree/templates/js/translated/bom.js +++ b/InvenTree/templates/js/translated/bom.js @@ -75,7 +75,7 @@ function addBomItem(part_id, options={}) { constructForm('{% url "api-bom-list" %}', { fields: fields, method: 'POST', - title: '{% trans "Create BOM Item" %}', + title: '{% jstrans "Create BOM Item" %}', focus: 'sub_part', onSuccess: function(response) { handleFormSuccess(response, options); @@ -129,8 +129,8 @@ function constructBomUploadTable(data, options={}) { let buttons = ''; - buttons += makeInfoButton('button-row-data', idx, '{% trans "Display row data" %}'); - buttons += makeRemoveButton('button-row-remove', idx, '{% trans "Remove row" %}'); + buttons += makeInfoButton('button-row-data', idx, '{% jstrans "Display row data" %}'); + buttons += makeRemoveButton('button-row-remove', idx, '{% jstrans "Remove row" %}'); buttons = wrapButtons(buttons); @@ -185,8 +185,8 @@ function constructBomUploadTable(data, options={}) { $(`#button-row-data-${idx}`).click(function() { var modal = createNewModal({ - title: '{% trans "Row Data" %}', - closeText: '{% trans "Close" %}', + title: '{% jstrans "Row Data" %}', + closeText: '{% jstrans "Close" %}', hideSubmitButton: true }); @@ -303,11 +303,11 @@ function downloadBomTemplate(options={}) { } constructFormBody({}, { - title: '{% trans "Download BOM Template" %}', + title: '{% jstrans "Download BOM Template" %}', fields: { format: { - label: '{% trans "Format" %}', - help_text: '{% trans "Select file format" %}', + label: '{% jstrans "Format" %}', + help_text: '{% jstrans "Select file format" %}', required: true, type: 'choice', value: format, @@ -337,63 +337,63 @@ function downloadBomTemplate(options={}) { function exportBom(part_id, options={}) { constructFormBody({}, { - title: '{% trans "Export BOM" %}', + title: '{% jstrans "Export BOM" %}', fields: { format: { - label: '{% trans "Format" %}', - help_text: '{% trans "Select file format" %}', + label: '{% jstrans "Format" %}', + help_text: '{% jstrans "Select file format" %}', required: true, type: 'choice', value: inventreeLoad('bom-export-format', 'csv'), choices: exportFormatOptions(), }, cascade: { - label: '{% trans "Multi Level BOM" %}', - help_text: '{% trans "Include BOM data for subassemblies" %}', + label: '{% jstrans "Multi Level BOM" %}', + help_text: '{% jstrans "Include BOM data for subassemblies" %}', type: 'boolean', value: inventreeLoad('bom-export-cascading', true), }, levels: { - label: '{% trans "Levels" %}', - help_text: '{% trans "Select maximum number of BOM levels to export (0 = all levels)" %}', + label: '{% jstrans "Levels" %}', + help_text: '{% jstrans "Select maximum number of BOM levels to export (0 = all levels)" %}', type: 'integer', value: 0, required: true, min_value: 0, }, substitute_part_data: { - label: '{% trans "Include Alternative Parts" %}', - help_text: '{% trans "Include alternative parts in exported BOM" %}', + label: '{% jstrans "Include Alternative Parts" %}', + help_text: '{% jstrans "Include alternative parts in exported BOM" %}', type: 'boolean', value: inventreeLoad('bom-export-substitute_part_data', false), }, parameter_data: { - label: '{% trans "Include Parameter Data" %}', - help_text: '{% trans "Include part parameter data in exported BOM" %}', + label: '{% jstrans "Include Parameter Data" %}', + help_text: '{% jstrans "Include part parameter data in exported BOM" %}', type: 'boolean', value: inventreeLoad('bom-export-parameter_data', false), }, stock_data: { - label: '{% trans "Include Stock Data" %}', - help_text: '{% trans "Include part stock data in exported BOM" %}', + label: '{% jstrans "Include Stock Data" %}', + help_text: '{% jstrans "Include part stock data in exported BOM" %}', type: 'boolean', value: inventreeLoad('bom-export-stock_data', false), }, manufacturer_data: { - label: '{% trans "Include Manufacturer Data" %}', - help_text: '{% trans "Include part manufacturer data in exported BOM" %}', + label: '{% jstrans "Include Manufacturer Data" %}', + help_text: '{% jstrans "Include part manufacturer data in exported BOM" %}', type: 'boolean', value: inventreeLoad('bom-export-manufacturer_data', false), }, supplier_data: { - label: '{% trans "Include Supplier Data" %}', - help_text: '{% trans "Include part supplier data in exported BOM" %}', + label: '{% jstrans "Include Supplier Data" %}', + help_text: '{% jstrans "Include part supplier data in exported BOM" %}', type: 'boolean', value: inventreeLoad('bom-export-supplier_data', false), }, pricing_data: { - label: '{% trans "Include Pricing Data" %}', - help_text: '{% trans "Include part pricing data in exported BOM" %}', + label: '{% jstrans "Include Pricing Data" %}', + help_text: '{% jstrans "Include part pricing data in exported BOM" %}', type: 'boolean', value: inventreeLoad('bom-export-pricing_data', false), } @@ -441,7 +441,7 @@ function bomItemFields() { sub_part: { icon: 'fa-shapes', secondary: { - title: '{% trans "New Part" %}', + title: '{% jstrans "New Part" %}', fields: function() { var fields = partFields(); @@ -588,7 +588,7 @@ function bomSubstitutesDialog(bom_item_id, substitutes, options={}) { var buttons = ''; - buttons += makeRemoveButton('button-row-remove', pk, '{% trans "Remove substitute part" %}'); + buttons += makeRemoveButton('button-row-remove', pk, '{% jstrans "Remove substitute part" %}'); // Render a single row var html = ` @@ -619,7 +619,7 @@ function bomSubstitutesDialog(bom_item_id, substitutes, options={}) { var html = `
- {% trans "Base Part" %}
+ {% jstrans "Base Part" %}
${part_thumb} ${part_name} - ${part_desc}
`; @@ -629,8 +629,8 @@ function bomSubstitutesDialog(bom_item_id, substitutes, options={}) {
{% trans "Part" %}{% trans "Location" %}{% trans "Quantity" %}{% jstrans "Part" %}{% jstrans "Location" %}{% jstrans "Quantity" %}
${imageHoverIcon(item.part_detail.thumbnail)} ${item.part_detail.name} ${location_info} ${item.quantity}${makeRemoveButton('button-item-remove', item.pk, '{% trans "Remove stock item" %}')}${makeRemoveButton('button-item-remove', item.pk, '{% jstrans "Remove stock item" %}')}
- - + + @@ -642,7 +642,7 @@ function bomSubstitutesDialog(bom_item_id, substitutes, options={}) { html += `
- {% trans "Select and add a new substitute part using the input below" %} + {% jstrans "Select and add a new substitute part using the input below" %}
`; @@ -653,13 +653,13 @@ function bomSubstitutesDialog(bom_item_id, substitutes, options={}) { var pre = `
- {% trans "Are you sure you wish to remove this substitute part link?" %} + {% jstrans "Are you sure you wish to remove this substitute part link?" %}
`; constructForm(`{% url "api-bom-substitute-list" %}${pk}/`, { method: 'DELETE', - title: '{% trans "Remove Substitute Part" %}', + title: '{% jstrans "Remove Substitute Part" %}', preFormContent: pre, confirm: true, onSuccess: function() { @@ -697,9 +697,9 @@ function bomSubstitutesDialog(bom_item_id, substitutes, options={}) { }, }, preFormContent: html, - closeText: '{% trans "Close" %}', - submitText: '{% trans "Add Substitute" %}', - title: '{% trans "Edit BOM Item Substitutes" %}', + closeText: '{% jstrans "Close" %}', + submitText: '{% jstrans "Add Substitute" %}', + title: '{% jstrans "Edit BOM Item Substitutes" %}', afterRender: function(fields, opts) { addRemoveCallback(opts.modal, '.button-row-remove'); }, @@ -761,14 +761,14 @@ function deleteBomItems(items, options={}) { var html = `
- {% trans "All selected BOM items will be deleted" %} + {% jstrans "All selected BOM items will be deleted" %}
{% trans "Part" %}{% trans "Description" %}{% jstrans "Part" %}{% jstrans "Description" %}
- - - + + + ${rows}
{% trans "Part" %}{% trans "Reference" %}{% trans "Quantity" %}{% jstrans "Part" %}{% jstrans "Reference" %}{% jstrans "Quantity" %}
@@ -777,7 +777,7 @@ function deleteBomItems(items, options={}) { constructForm('{% url "api-bom-list" %}', { method: 'DELETE', multi_delete: true, - title: '{% trans "Delete selected BOM items?" %}', + title: '{% jstrans "Delete selected BOM items?" %}', form_data: { items: ids, }, @@ -823,7 +823,7 @@ function loadBomTable(table, options={}) { label: 'actions', actions: [{ label: 'delete', - title: '{% trans "Delete items" %}', + title: '{% jstrans "Delete items" %}', icon: 'fa-trash-alt icon-red', permission: 'part.change', callback: function(data) { @@ -902,7 +902,7 @@ function loadBomTable(table, options={}) { cols.push( { field: 'sub_part', - title: '{% trans "Part" %}', + title: '{% jstrans "Part" %}', sortable: true, switchable: false, sorter: function(_valA, _valB, rowA, rowB) { @@ -933,7 +933,7 @@ function loadBomTable(table, options={}) { } else { html += ` - + `; } } @@ -943,11 +943,11 @@ function loadBomTable(table, options={}) { html += makePartIcons(sub_part); if (row.substitutes && row.substitutes.length > 0) { - html += makeIconBadge('fa-exchange-alt', '{% trans "Substitutes Available" %}'); + html += makeIconBadge('fa-exchange-alt', '{% jstrans "Substitutes Available" %}'); } if (row.allow_variants) { - html += makeIconBadge('fa-sitemap', '{% trans "Variant stock allowed" %}'); + html += makeIconBadge('fa-sitemap', '{% jstrans "Variant stock allowed" %}'); } return html; @@ -960,7 +960,7 @@ function loadBomTable(table, options={}) { cols.push( { field: 'sub_part_detail.description', - title: '{% trans "Description" %}', + title: '{% jstrans "Description" %}', formatter: function(value) { return withTitle(shortenString(value), value); } @@ -970,7 +970,7 @@ function loadBomTable(table, options={}) { // Part reference cols.push({ field: 'reference', - title: '{% trans "Reference" %}', + title: '{% jstrans "Reference" %}', searchable: true, sortable: true, }); @@ -978,7 +978,7 @@ function loadBomTable(table, options={}) { // Part quantity cols.push({ field: 'quantity', - title: '{% trans "Quantity" %}', + title: '{% jstrans "Quantity" %}', searchable: false, sortable: true, switchable: false, @@ -994,11 +994,11 @@ function loadBomTable(table, options={}) { } if (row.consumable) { - text += ` ({% trans "Consumable" %})`; + text += ` ({% jstrans "Consumable" %})`; } if (row.optional) { - text += ' ({% trans "Optional" %})'; + text += ' ({% jstrans "Optional" %})'; } if (row.overage) { @@ -1011,7 +1011,7 @@ function loadBomTable(table, options={}) { cols.push({ field: 'substitutes', - title: '{% trans "Substitutes" %}', + title: '{% jstrans "Substitutes" %}', searchable: false, sortable: true, formatter: function(value, row) { @@ -1025,7 +1025,7 @@ function loadBomTable(table, options={}) { cols.push({ field: 'optional', - title: '{% trans "Optional" %}', + title: '{% jstrans "Optional" %}', searchable: false, formatter: function(value) { return yesNoLabel(value); @@ -1034,7 +1034,7 @@ function loadBomTable(table, options={}) { cols.push({ field: 'consumable', - title: '{% trans "Consumable" %}', + title: '{% jstrans "Consumable" %}', searchable: false, formatter: function(value) { return yesNoLabel(value); @@ -1043,7 +1043,7 @@ function loadBomTable(table, options={}) { cols.push({ field: 'allow_variants', - title: '{% trans "Allow Variants" %}', + title: '{% jstrans "Allow Variants" %}', formatter: function(value) { return yesNoLabel(value); } @@ -1051,7 +1051,7 @@ function loadBomTable(table, options={}) { cols.push({ field: 'inherited', - title: '{% trans "Gets inherited" %}', + title: '{% jstrans "Gets inherited" %}', searchable: false, formatter: function(value, row) { // This BOM item *is* inheritable, but is defined for this BOM @@ -1068,7 +1068,7 @@ function loadBomTable(table, options={}) { cols.push({ field: 'pricing', - title: '{% trans "Price Range" %}', + title: '{% jstrans "Price Range" %}', sortable: true, sorter: function(valA, valB, rowA, rowB) { var a = rowA.pricing_min || rowA.pricing_max; @@ -1136,19 +1136,19 @@ function loadBomTable(table, options={}) { if (complete_pricing) { html += makeIconBadge( 'fa-check-circle icon-green', - '{% trans "BOM pricing is complete" %}', + '{% jstrans "BOM pricing is complete" %}', ); } else { html += makeIconBadge( 'fa-exclamation-circle icon-yellow', - '{% trans "BOM pricing is incomplete" %}', + '{% jstrans "BOM pricing is incomplete" %}', ); } return html; } else { - let html = '{% trans "No pricing available" %}'; + let html = '{% jstrans "No pricing available" %}'; html += makeIconBadge('fa-times-circle icon-red'); return html; @@ -1159,7 +1159,7 @@ function loadBomTable(table, options={}) { cols.push({ field: 'available_stock', - title: '{% trans "Available" %}', + title: '{% jstrans "Available" %}', searchable: false, sortable: true, formatter: function(value, row) { @@ -1179,16 +1179,16 @@ function loadBomTable(table, options={}) { } if (available_stock <= 0) { - text += makeIconBadge('fa-times-circle icon-red', '{% trans "No Stock Available" %}'); + text += makeIconBadge('fa-times-circle icon-red', '{% jstrans "No Stock Available" %}'); } else { var extra = ''; if ((substitute_stock > 0) && (variant_stock > 0)) { - extra = '{% trans "Includes variant and substitute stock" %}'; + extra = '{% jstrans "Includes variant and substitute stock" %}'; } else if (variant_stock > 0) { - extra = '{% trans "Includes variant stock" %}'; + extra = '{% jstrans "Includes variant stock" %}'; } else if (substitute_stock > 0) { - extra = '{% trans "Includes substitute stock" %}'; + extra = '{% jstrans "Includes substitute stock" %}'; } if (extra) { @@ -1199,7 +1199,7 @@ function loadBomTable(table, options={}) { if (row.on_order && row.on_order > 0) { text += makeIconBadge( 'fa-shopping-cart', - `{% trans "On Order" %}: ${row.on_order}`, + `{% jstrans "On Order" %}: ${row.on_order}`, ); } @@ -1210,13 +1210,13 @@ function loadBomTable(table, options={}) { cols.push( { field: 'can_build', - title: '{% trans "Can Build" %}', + title: '{% jstrans "Can Build" %}', sortable: true, formatter: function(value, row) { // "Consumable" parts are not tracked in the build if (row.consumable) { - return `{% trans "Consumable item" %}`; + return `{% jstrans "Consumable item" %}`; } var can_build = canBuildQuantity(row); @@ -1256,7 +1256,7 @@ function loadBomTable(table, options={}) { cols.push( { field: 'note', - title: '{% trans "Notes" %}', + title: '{% jstrans "Notes" %}', searchable: true, sortable: true, formatter: function(value) { @@ -1268,7 +1268,7 @@ function loadBomTable(table, options={}) { if (options.editable) { cols.push({ - title: '{% trans "Actions" %}', + title: '{% jstrans "Actions" %}', switchable: false, field: 'pk', visible: true, @@ -1276,15 +1276,15 @@ function loadBomTable(table, options={}) { if (row.part == options.parent_id) { - var bValidate = makeIconButton('fa-check-circle icon-green', 'bom-validate-button', row.pk, '{% trans "Validate BOM Item" %}'); + var bValidate = makeIconButton('fa-check-circle icon-green', 'bom-validate-button', row.pk, '{% jstrans "Validate BOM Item" %}'); - var bValid = makeIconButton('fa-check-double icon-green', 'bom-valid-button', row.pk, '{% trans "This line has been validated" %}', {disabled: true}); + var bValid = makeIconButton('fa-check-double icon-green', 'bom-valid-button', row.pk, '{% jstrans "This line has been validated" %}', {disabled: true}); - var bSubs = makeIconButton('fa-exchange-alt icon-blue', 'bom-substitutes-button', row.pk, '{% trans "Edit substitute parts" %}'); + var bSubs = makeIconButton('fa-exchange-alt icon-blue', 'bom-substitutes-button', row.pk, '{% jstrans "Edit substitute parts" %}'); - var bEdit = makeEditButton('bom-edit-button', row.pk, '{% trans "Edit BOM Item" %}'); + var bEdit = makeEditButton('bom-edit-button', row.pk, '{% jstrans "Edit BOM Item" %}'); - var bDelt = makeDeleteButton('bom-delete-button', row.pk, '{% trans "Delete BOM Item" %}'); + var bDelt = makeDeleteButton('bom-delete-button', row.pk, '{% jstrans "Delete BOM Item" %}'); let buttons = ''; @@ -1304,15 +1304,15 @@ function loadBomTable(table, options={}) { // Return a link to the external BOM return renderLink( - '{% trans "View BOM" %}', + '{% jstrans "View BOM" %}', `/part/${row.part}/bom/` ); } }, footerFormatter: function(data) { return ` - `; } @@ -1388,7 +1388,7 @@ function loadBomTable(table, options={}) { }, formatNoMatches: function() { - return '{% trans "No BOM items found" %}'; + return '{% jstrans "No BOM items found" %}'; }, queryParams: filters, original: params, @@ -1477,7 +1477,7 @@ function loadBomTable(table, options={}) { constructForm(`{% url "api-bom-list" %}${pk}/`, { fields: fields, - title: '{% trans "Edit BOM Item" %}', + title: '{% jstrans "Edit BOM Item" %}', focus: 'sub_part', onSuccess: function() { reloadBomTable(table); @@ -1630,7 +1630,7 @@ function loadUsedInTable(table, part_id, options={}) { }, { field: 'part', - title: '{% trans "Assembly" %}', + title: '{% jstrans "Assembly" %}', switchable: false, sortable: true, formatter: function(value, row) { @@ -1648,7 +1648,7 @@ function loadUsedInTable(table, part_id, options={}) { }, { field: 'sub_part', - title: '{% trans "Required Part" %}', + title: '{% jstrans "Required Part" %}', sortable: true, formatter: function(value, row) { var url = `/part/${value}/`; @@ -1665,7 +1665,7 @@ function loadUsedInTable(table, part_id, options={}) { }, { field: 'quantity', - title: '{% trans "Required Quantity" %}', + title: '{% jstrans "Required Quantity" %}', formatter: function(value, row) { var html = value; @@ -1674,7 +1674,7 @@ function loadUsedInTable(table, part_id, options={}) { } if (row.parent && row.parent != 'top-level-item') { - html += ` ({% trans "Inherited from parent BOM" %})`; + html += ` ({% jstrans "Inherited from parent BOM" %})`; } return html; diff --git a/InvenTree/templates/js/translated/build.js b/InvenTree/templates/js/translated/build.js index b0caeef764..fce8d0ea57 100644 --- a/InvenTree/templates/js/translated/build.js +++ b/InvenTree/templates/js/translated/build.js @@ -139,7 +139,7 @@ function editBuildOrder(pk) { constructForm(`{% url "api-build-list" %}${pk}/`, { fields: fields, reload: true, - title: '{% trans "Edit Build Order" %}', + title: '{% jstrans "Edit Build Order" %}', }); } @@ -182,7 +182,7 @@ function newBuildOrder(options={}) { data: options.data, follow: true, method: 'POST', - title: '{% trans "Create Build Order" %}', + title: '{% jstrans "Create Build Order" %}', onSuccess: options.onSuccess, }); } @@ -214,7 +214,7 @@ function cancelBuildOrder(build_id, options={}) { `{% url "api-build-list" %}${build_id}/cancel/`, { method: 'POST', - title: '{% trans "Cancel Build Order" %}', + title: '{% jstrans "Cancel Build Order" %}', confirm: true, fields: { remove_allocated_stock: {}, @@ -223,20 +223,20 @@ function cancelBuildOrder(build_id, options={}) { preFormContent: function(opts) { var html = `
- {% trans "Are you sure you wish to cancel this build?" %} + {% jstrans "Are you sure you wish to cancel this build?" %}
`; if (opts.context.has_allocated_stock) { html += `
- {% trans "Stock items have been allocated to this build order" %} + {% jstrans "Stock items have been allocated to this build order" %}
`; } if (opts.context.incomplete_outputs) { html += `
- {% trans "There are incomplete outputs remaining for this build order" %} + {% jstrans "There are incomplete outputs remaining for this build order" %}
`; } @@ -288,30 +288,30 @@ function completeBuildOrder(build_id, options={}) { if (ctx.allocated && ctx.remaining == 0 && ctx.incomplete == 0) { html += `
- {% trans "Build order is ready to be completed" %}' + {% jstrans "Build order is ready to be completed" %}'
`; } else { if (ctx.incomplete > 0) { html += `
- {% trans "Build order has incomplete outputs" %}
- {% trans "This build order cannot be completed as there are incomplete outputs" %} + {% jstrans "Build order has incomplete outputs" %}
+ {% jstrans "This build order cannot be completed as there are incomplete outputs" %}
`; } else { html += `
- {% trans "Build Order is incomplete" %} + {% jstrans "Build Order is incomplete" %}
`; } if (!ctx.allocated) { - html += `
{% trans "Required stock has not been fully allocated" %}
`; + html += `
{% jstrans "Required stock has not been fully allocated" %}
`; } if (ctx.remaining > 0) { - html += `
{% trans "Required build quantity has not been completed" %}
`; + html += `
{% jstrans "Required build quantity has not been completed" %}
`; } } @@ -319,7 +319,7 @@ function completeBuildOrder(build_id, options={}) { }, reload: true, confirm: true, - title: '{% trans "Complete Build Order" %}', + title: '{% jstrans "Complete Build Order" %}', method: 'POST', }); } @@ -360,9 +360,9 @@ function createBuildOutput(build_id, options) { inventreeGet(`{% url "api-part-list" %}${build.part}/serial-numbers/`, {}, { success: function(data) { if (data.next) { - fields.serial_numbers.placeholder = `{% trans "Next available serial number" %}: ${data.next}`; + fields.serial_numbers.placeholder = `{% jstrans "Next available serial number" %}: ${data.next}`; } else if (data.latest) { - fields.serial_numbers.placeholder = `{% trans "Latest serial number" %}: ${data.latest}`; + fields.serial_numbers.placeholder = `{% jstrans "Latest serial number" %}: ${data.latest}`; } }, async: false, @@ -371,8 +371,8 @@ function createBuildOutput(build_id, options) { if (options.trackable_parts) { html += `
- {% trans "The Bill of Materials contains trackable parts" %}.
- {% trans "Build outputs must be generated individually" %}. + {% jstrans "The Bill of Materials contains trackable parts" %}.
+ {% jstrans "Build outputs must be generated individually" %}.
`; } @@ -380,15 +380,15 @@ function createBuildOutput(build_id, options) { if (trackable) { html += `
- {% trans "Trackable parts can have serial numbers specified" %}
- {% trans "Enter serial numbers to generate multiple single build outputs" %} + {% jstrans "Trackable parts can have serial numbers specified" %}
+ {% jstrans "Enter serial numbers to generate multiple single build outputs" %}
`; } constructForm(`{% url "api-build-list" %}${build_id}/create-output/`, { method: 'POST', - title: '{% trans "Create Build Output" %}', + title: '{% jstrans "Create Build Output" %}', confirm: true, fields: fields, preFormContent: html, @@ -419,7 +419,7 @@ function makeBuildOutputButtons(output_id, build_info, options={}) { 'fa-sign-in-alt icon-blue', 'button-output-allocate', output_id, - '{% trans "Allocate stock items to this build output" %}', + '{% jstrans "Allocate stock items to this build output" %}', ); // Add a button to deallocate stock from this build output @@ -427,7 +427,7 @@ function makeBuildOutputButtons(output_id, build_info, options={}) { 'fa-minus-circle icon-red', 'button-output-deallocate', output_id, - '{% trans "Deallocate stock from build output" %}', + '{% jstrans "Deallocate stock from build output" %}', ); } @@ -436,7 +436,7 @@ function makeBuildOutputButtons(output_id, build_info, options={}) { 'fa-check-circle icon-green', 'button-output-complete', output_id, - '{% trans "Complete build output" %}', + '{% jstrans "Complete build output" %}', ); // Add a button to "scrap" the build output @@ -444,14 +444,14 @@ function makeBuildOutputButtons(output_id, build_info, options={}) { 'fa-times-circle icon-red', 'button-output-scrap', output_id, - '{% trans "Scrap build output" %}', + '{% jstrans "Scrap build output" %}', ); // Add a button to "remove" this build output html += makeDeleteButton( 'button-output-remove', output_id, - '{% trans "Delete build output" %}', + '{% jstrans "Delete build output" %}', ); return wrapButtons(html); @@ -471,7 +471,7 @@ function deallocateStock(build_id, options={}) { var html = `
- {% trans "Are you sure you wish to deallocate the selected stock items from this build?" %} + {% jstrans "Are you sure you wish to deallocate the selected stock items from this build?" %} `; @@ -489,7 +489,7 @@ function deallocateStock(build_id, options={}) { value: options.build_line, }, }, - title: '{% trans "Deallocate Stock Items" %}', + title: '{% jstrans "Deallocate Stock Items" %}', onSuccess: function(response, opts) { if (options.onSuccess) { options.onSuccess(response, opts); @@ -511,9 +511,9 @@ function renderBuildOutput(output, options={}) { let output_html = imageHoverIcon(output.part_detail.thumbnail); if (output.quantity == 1 && output.serial) { - output_html += `{% trans "Serial Number" %}: ${output.serial}`; + output_html += `{% jstrans "Serial Number" %}: ${output.serial}`; } else { - output_html += `{% trans "Quantity" %}: ${output.quantity}`; + output_html += `{% jstrans "Quantity" %}: ${output.quantity}`; if (output.part_detail && output.part_detail.units) { output_html += ` ${output.part_detail.units} `; } @@ -521,7 +521,7 @@ function renderBuildOutput(output, options={}) { let buttons = `
`; - buttons += makeRemoveButton('button-row-remove', pk, '{% trans "Remove row" %}'); + buttons += makeRemoveButton('button-row-remove', pk, '{% jstrans "Remove row" %}'); buttons += '
'; @@ -575,8 +575,8 @@ function completeBuildOutputs(build_id, outputs, options={}) { if (outputs.length == 0) { showAlertDialog( - '{% trans "Select Build Outputs" %}', - '{% trans "At least one build output must be selected" %}', + '{% jstrans "Select Build Outputs" %}', + '{% jstrans "At least one build output must be selected" %}', ); return; } @@ -590,11 +590,11 @@ function completeBuildOutputs(build_id, outputs, options={}) { var html = `
- {% trans "Selected build outputs will be marked as complete" %} + {% jstrans "Selected build outputs will be marked as complete" %}
- + @@ -622,7 +622,7 @@ function completeBuildOutputs(build_id, outputs, options={}) { accept_incomplete_allocation: {}, }, confirm: true, - title: '{% trans "Complete Build Outputs" %}', + title: '{% jstrans "Complete Build Outputs" %}', afterRender: function(fields, opts) { // Setup callbacks to remove outputs $(opts.modal).find('.button-row-remove').click(function() { @@ -703,8 +703,8 @@ function scrapBuildOutputs(build_id, outputs, options={}) { if (outputs.length == 0) { showAlertDialog( - '{% trans "Select Build Outputs" %}', - '{% trans "At least one build output must be selected" %}', + '{% jstrans "Select Build Outputs" %}', + '{% jstrans "At least one build output must be selected" %}', ); return; } @@ -719,17 +719,17 @@ function scrapBuildOutputs(build_id, outputs, options={}) { var html = `
- {% trans "Selected build outputs will be marked as scrapped" %} + {% jstrans "Selected build outputs will be marked as scrapped" %}
    -
  • {% trans "Scrapped output are marked as rejected" %}
  • -
  • {% trans "Allocated stock items will no longer be available" %}
  • -
  • {% trans "The completion status of the build order will not be adjusted" %}
  • +
  • {% jstrans "Scrapped output are marked as rejected" %}
  • +
  • {% jstrans "Allocated stock items will no longer be available" %}
  • +
  • {% jstrans "The completion status of the build order will not be adjusted" %}
{% trans "Output" %}{% jstrans "Output" %}
- - + + @@ -754,7 +754,7 @@ function scrapBuildOutputs(build_id, outputs, options={}) { discard_allocations: {}, }, confirm: true, - title: '{% trans "Scrap Build Outputs" %}', + title: '{% jstrans "Scrap Build Outputs" %}', afterRender: function(fields, opts) { // Setup callbacks to remove outputs $(opts.modal).find('.button-row-remove').click(function() { @@ -829,8 +829,8 @@ function deleteBuildOutputs(build_id, outputs, options={}) { if (outputs.length == 0) { showAlertDialog( - '{% trans "Select Build Outputs" %}', - '{% trans "At least one build output must be selected" %}', + '{% jstrans "Select Build Outputs" %}', + '{% jstrans "At least one build output must be selected" %}', ); return; } @@ -844,15 +844,15 @@ function deleteBuildOutputs(build_id, outputs, options={}) { var html = `
- {% trans "Selected build outputs will be deleted" %} + {% jstrans "Selected build outputs will be deleted" %}
    -
  • {% trans "Build output data will be permanently deleted" %}
  • -
  • {% trans "Allocated stock items will be returned to stock" %}
  • +
  • {% jstrans "Build output data will be permanently deleted" %}
  • +
  • {% jstrans "Allocated stock items will be returned to stock" %}
{% trans "Output" %}{% trans "Quantity" %}{% jstrans "Output" %}{% jstrans "Quantity" %}
- + @@ -865,7 +865,7 @@ function deleteBuildOutputs(build_id, outputs, options={}) { preFormContent: html, fields: {}, confirm: true, - title: '{% trans "Delete Build Outputs" %}', + title: '{% jstrans "Delete Build Outputs" %}', afterRender: function(fields, opts) { // Setup callbacks to remove outputs $(opts.modal).find('.button-row-remove').click(function() { @@ -952,7 +952,7 @@ function loadBuildOrderAllocationTable(table, options={}) { paginationVAlign: 'bottom', original: options.params, formatNoMatches: function() { - return '{% trans "No build order allocations found" %}'; + return '{% jstrans "No build order allocations found" %}'; }, columns: [ { @@ -964,7 +964,7 @@ function loadBuildOrderAllocationTable(table, options={}) { field: 'build', sortable: true, switchable: false, - title: '{% trans "Build Order" %}', + title: '{% jstrans "Build Order" %}', formatter: function(value, row) { let ref = `${row.build_detail.reference}`; let html = renderLink(ref, `/build/${row.build}/`); @@ -981,7 +981,7 @@ function loadBuildOrderAllocationTable(table, options={}) { { field: 'quantity', sortable: true, - title: '{% trans "Allocated Quantity" %}', + title: '{% jstrans "Allocated Quantity" %}', formatter: function(value, row) { let link = `/stock/item/${row.stock_item}/`; let text = formatDecimal(value); @@ -991,11 +991,11 @@ function loadBuildOrderAllocationTable(table, options={}) { }, { field: 'location_detail', - title: '{% trans "Location" %}', + title: '{% jstrans "Location" %}', formatter: function(value, row) { if (!value) { - return '{% trans "Location not specified" %}'; + return '{% jstrans "Location not specified" %}'; } let item = row.stock_item_detail; @@ -1017,7 +1017,7 @@ function makeBuildOutputActions(build_info) { return [ { label: 'complete', - title: '{% trans "Complete outputs" %}', + title: '{% jstrans "Complete outputs" %}', icon: 'fa-check-circle icon-green', permission: 'build.add', callback: function(data) { @@ -1035,7 +1035,7 @@ function makeBuildOutputActions(build_info) { }, { label: 'scrap', - title: '{% trans "Scrap outputs" %}', + title: '{% jstrans "Scrap outputs" %}', icon: 'fa-times-circle icon-red', permission: 'build.change', callback: function(data) { @@ -1053,7 +1053,7 @@ function makeBuildOutputActions(build_info) { }, { label: 'delete', - title: '{% trans "Delete outputs" %}', + title: '{% jstrans "Delete outputs" %}', icon: 'fa-trash-alt icon-red', permission: 'build.delete', callback: function(data) { @@ -1107,12 +1107,12 @@ function loadBuildOutputTable(build_info, options={}) { url: '{% url "api-stockitem-label-list" %}', key: 'item', }, - singular_name: '{% trans "build output" %}', - plural_name: '{% trans "build outputs" %}', + singular_name: '{% jstrans "build output" %}', + plural_name: '{% jstrans "build outputs" %}', custom_actions: [{ label: 'buildoutput', icon: 'fa-tools', - title: '{% trans "Build output actions" %}', + title: '{% jstrans "Build output actions" %}', actions: makeBuildOutputActions(build_info), }] }); @@ -1281,7 +1281,7 @@ function loadBuildOutputTable(build_info, options={}) { return constructOutputSubTable(index, row, element); }, formatNoMatches: function() { - return '{% trans "No active build outputs found" %}'; + return '{% jstrans "No active build outputs found" %}'; }, onLoadSuccess: function() { reloadOutputAllocations(); @@ -1296,7 +1296,7 @@ function loadBuildOutputTable(build_info, options={}) { }, { field: 'part', - title: '{% trans "Part" %}', + title: '{% jstrans "Part" %}', switchable: false, formatter: function(value, row) { return imageHoverIcon(row.part_detail.thumbnail) + @@ -1306,7 +1306,7 @@ function loadBuildOutputTable(build_info, options={}) { }, { field: 'quantity', - title: '{% trans "Build Output" %}', + title: '{% jstrans "Build Output" %}', switchable: false, sortable: true, sorter: function(fieldA, fieldB, rowA, rowB) { @@ -1351,9 +1351,9 @@ function loadBuildOutputTable(build_info, options={}) { let text = ''; if (row.serial && row.quantity == 1) { - text = `{% trans "Serial Number" %}: ${row.serial}`; + text = `{% jstrans "Serial Number" %}: ${row.serial}`; } else { - text = `{% trans "Quantity" %}: ${row.quantity}`; + text = `{% jstrans "Quantity" %}: ${row.quantity}`; } @@ -1364,7 +1364,7 @@ function loadBuildOutputTable(build_info, options={}) { } if (row.batch) { - text += ` ({% trans "Batch" %}: ${row.batch})`; + text += ` ({% jstrans "Batch" %}: ${row.batch})`; } text += stockStatusDisplay(row.status, {classes: 'float-right'}); @@ -1374,7 +1374,7 @@ function loadBuildOutputTable(build_info, options={}) { }, { field: 'fully_allocated', - title: '{% trans "Allocated Lines" %}', + title: '{% jstrans "Allocated Lines" %}', visible: false, sortable: true, switchable: false, @@ -1388,7 +1388,7 @@ function loadBuildOutputTable(build_info, options={}) { }, { field: 'tests', - title: '{% trans "Required Tests" %}', + title: '{% jstrans "Required Tests" %}', visible: test_templates.length > 0, switchable: true, sortable: true, @@ -1560,8 +1560,8 @@ function allocateStockToBuild(build_id, line_items, options={}) { if (line_items.length == 0) { showAlertDialog( - '{% trans "Select Parts" %}', - '{% trans "You must select at least one part to allocate" %}', + '{% jstrans "Select Parts" %}', + '{% jstrans "You must select at least one part to allocate" %}', ); return; @@ -1613,7 +1613,7 @@ function allocateStockToBuild(build_id, line_items, options={}) { delete_button += makeRemoveButton( 'button-row-remove', pk, - '{% trans "Remove row" %}', + '{% jstrans "Remove row" %}', ); delete_button += ``; @@ -1624,7 +1624,7 @@ function allocateStockToBuild(build_id, line_items, options={}) { type: 'decimal', min_value: 0, value: quantity || 0, - title: '{% trans "Specify stock allocation quantity" %}', + title: '{% jstrans "Specify stock allocation quantity" %}', required: true, }, { @@ -1701,8 +1701,8 @@ function allocateStockToBuild(build_id, line_items, options={}) { if (table_entries.length == 0) { showAlertDialog( - '{% trans "All Parts Allocated" %}', - '{% trans "All selected parts have been fully allocated" %}', + '{% jstrans "All Parts Allocated" %}', + '{% jstrans "All selected parts have been fully allocated" %}', ); return; @@ -1715,8 +1715,8 @@ function allocateStockToBuild(build_id, line_items, options={}) { 'take_from', { type: 'related field', - label: '{% trans "Source Location" %}', - help_text: '{% trans "Select source location (leave blank to take from all locations)" %}', + label: '{% jstrans "Source Location" %}', + help_text: '{% jstrans "Select source location (leave blank to take from all locations)" %}', required: false, }, {}, @@ -1727,10 +1727,10 @@ function allocateStockToBuild(build_id, line_items, options={}) {
{% trans "Output" %}{% jstrans "Output" %}
- - - - + + + + @@ -1744,7 +1744,7 @@ function allocateStockToBuild(build_id, line_items, options={}) { method: 'POST', fields: {}, preFormContent: html, - title: '{% trans "Allocate Stock Items to Build Order" %}', + title: '{% jstrans "Allocate Stock Items to Build Order" %}', afterRender: function(fields, options) { var take_from_field = { @@ -1755,7 +1755,7 @@ function allocateStockToBuild(build_id, line_items, options={}) { type: 'related field', value: source_location, noResults: function(query) { - return '{% trans "No matching stock locations" %}'; + return '{% jstrans "No matching stock locations" %}'; }, }; @@ -1828,7 +1828,7 @@ function allocateStockToBuild(build_id, line_items, options={}) { return filters; }, noResults: function(query) { - return '{% trans "No matching stock items" %}'; + return '{% jstrans "No matching stock items" %}'; } }, null, @@ -1925,12 +1925,12 @@ function autoAllocateStockToBuild(build_id, bom_items=[], options={}) { var html = `
- {% trans "Automatic Stock Allocation" %}
- {% trans "Stock items will be automatically allocated to this build order, according to the provided guidelines" %}: + {% jstrans "Automatic Stock Allocation" %}
+ {% jstrans "Stock items will be automatically allocated to this build order, according to the provided guidelines" %}:
    -
  • {% trans "If a location is specified, stock will only be allocated from that location" %}
  • -
  • {% trans "If stock is considered interchangeable, it will be allocated from the first location it is found" %}
  • -
  • {% trans "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" %}
  • +
  • {% jstrans "If a location is specified, stock will only be allocated from that location" %}
  • +
  • {% jstrans "If stock is considered interchangeable, it will be allocated from the first location it is found" %}
  • +
  • {% jstrans "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" %}
`; @@ -1961,7 +1961,7 @@ function autoAllocateStockToBuild(build_id, bom_items=[], options={}) { constructForm(`{% url "api-build-list" %}${build_id}/auto-allocate/`, { method: 'POST', fields: fields, - title: '{% trans "Allocate Stock Items" %}', + title: '{% jstrans "Allocate Stock Items" %}', confirm: true, preFormContent: html, onSuccess: function(response) { @@ -2067,7 +2067,7 @@ function loadBuildTable(table, options) { $(table).inventreeTable({ method: 'get', formatNoMatches: function() { - return '{% trans "No builds matching query" %}'; + return '{% jstrans "No builds matching query" %}'; }, url: '{% url "api-build-list" %}', queryParams: filters, @@ -2102,13 +2102,13 @@ function loadBuildTable(table, options) { }, { checkbox: true, - title: '{% trans "Select" %}', + title: '{% jstrans "Select" %}', searchable: false, switchable: false, }, { field: 'reference', - title: '{% trans "Build" %}', + title: '{% jstrans "Build" %}', sortable: true, switchable: true, formatter: function(value, row) { @@ -2116,7 +2116,7 @@ function loadBuildTable(table, options) { var html = renderLink(value, '/build/' + row.pk + '/'); if (row.overdue) { - html += makeIconBadge('fa-calendar-times icon-red', '{% trans "Build order is overdue" %}'); + html += makeIconBadge('fa-calendar-times icon-red', '{% jstrans "Build order is overdue" %}'); } return html; @@ -2124,12 +2124,12 @@ function loadBuildTable(table, options) { }, { field: 'title', - title: '{% trans "Description" %}', + title: '{% jstrans "Description" %}', switchable: true, }, { field: 'project_code', - title: '{% trans "Project Code" %}', + title: '{% jstrans "Project Code" %}', sortable: true, switchable: global_settings.PROJECT_CODES_ENABLED, visible: global_settings.PROJECT_CODES_ENABLED, @@ -2141,13 +2141,13 @@ function loadBuildTable(table, options) { }, { field: 'priority', - title: '{% trans "Priority" %}', + title: '{% jstrans "Priority" %}', switchable: true, sortable: true, }, { field: 'part', - title: '{% trans "Part" %}', + title: '{% jstrans "Part" %}', sortable: true, sortName: 'part__name', formatter: function(value, row) { @@ -2162,7 +2162,7 @@ function loadBuildTable(table, options) { }, { field: 'completed', - title: '{% trans "Progress" %}', + title: '{% jstrans "Progress" %}', sortable: true, formatter: function(value, row) { return makeProgressBar( @@ -2176,7 +2176,7 @@ function loadBuildTable(table, options) { }, { field: 'status', - title: '{% trans "Status" %}', + title: '{% jstrans "Status" %}', sortable: true, formatter: function(value) { return buildStatusDisplay(value); @@ -2184,7 +2184,7 @@ function loadBuildTable(table, options) { }, { field: 'creation_date', - title: '{% trans "Created" %}', + title: '{% jstrans "Created" %}', sortable: true, formatter: function(value) { return renderDate(value); @@ -2192,19 +2192,19 @@ function loadBuildTable(table, options) { }, { field: 'issued_by', - title: '{% trans "Issued by" %}', + title: '{% jstrans "Issued by" %}', sortable: true, formatter: function(value, row) { if (value) { return row.issued_by_detail.username; } else { - return `{% trans "No user information" %}`; + return `{% jstrans "No user information" %}`; } } }, { field: 'responsible', - title: '{% trans "Responsible" %}', + title: '{% jstrans "Responsible" %}', sortable: true, formatter: function(value, row) { if (!row.responsible_detail) { @@ -2213,7 +2213,7 @@ function loadBuildTable(table, options) { var html = row.responsible_detail.name; - if (row.responsible_detail.label == '{% trans "group" %}') { + if (row.responsible_detail.label == '{% jstrans "group" %}') { html += ``; } else { html += ``; @@ -2224,7 +2224,7 @@ function loadBuildTable(table, options) { }, { field: 'target_date', - title: '{% trans "Target Date" %}', + title: '{% jstrans "Target Date" %}', sortable: true, formatter: function(value) { return renderDate(value); @@ -2232,7 +2232,7 @@ function loadBuildTable(table, options) { }, { field: 'completion_date', - title: '{% trans "Completion Date" %}', + title: '{% jstrans "Completion Date" %}', sortable: true, formatter: function(value) { return renderDate(value); @@ -2320,7 +2320,7 @@ function renderBuildLineAllocationTable(element, build_line, options={}) { columns: [ { field: 'part', - title: '{% trans "Part" %}', + title: '{% jstrans "Part" %}', formatter: function(_value, row) { let html = imageHoverIcon(row.part_detail.thumbnail); html += renderLink(row.part_detail.full_name, `/part/${row.part_detail.pk}/`); @@ -2329,7 +2329,7 @@ function renderBuildLineAllocationTable(element, build_line, options={}) { }, { field: 'quantity', - title: '{% trans "Allocated Quantity" %}', + title: '{% jstrans "Allocated Quantity" %}', formatter: function(_value, row) { let text = ''; let url = ''; @@ -2340,9 +2340,9 @@ function renderBuildLineAllocationTable(element, build_line, options={}) { } if (serial && row.quantity == 1) { - text = `{% trans "Serial Number" %}: ${serial}`; + text = `{% jstrans "Serial Number" %}: ${serial}`; } else { - text = `{% trans "Quantity" %}: ${row.quantity}`; + text = `{% jstrans "Quantity" %}: ${row.quantity}`; if (row.part_detail && row.part_detail.units) { text += ` ${row.part_detail.units}`; } @@ -2357,7 +2357,7 @@ function renderBuildLineAllocationTable(element, build_line, options={}) { }, { field: 'location', - title: '{% trans "Location" %}', + title: '{% jstrans "Location" %}', formatter: function(value, row) { if (row.location_detail) { let text = shortenString(row.location_detail.pathstring); @@ -2365,7 +2365,7 @@ function renderBuildLineAllocationTable(element, build_line, options={}) { return renderLink(text, url); } else { - return '{% trans "No location set" %}'; + return '{% jstrans "No location set" %}'; } } }, @@ -2374,8 +2374,8 @@ function renderBuildLineAllocationTable(element, build_line, options={}) { title: '', formatter: function(value, row) { let buttons = ''; - buttons += makeEditButton('button-allocation-edit', row.pk, '{% trans "Edit stock allocation" %}'); - buttons += makeDeleteButton('button-allocation-delete', row.pk, '{% trans "Delete stock allocation" %}'); + buttons += makeEditButton('button-allocation-edit', row.pk, '{% jstrans "Edit stock allocation" %}'); + buttons += makeDeleteButton('button-allocation-delete', row.pk, '{% jstrans "Delete stock allocation" %}'); return wrapButtons(buttons); } } @@ -2390,7 +2390,7 @@ function renderBuildLineAllocationTable(element, build_line, options={}) { fields: { quantity: {}, }, - title: '{% trans "Edit Allocation" %}', + title: '{% jstrans "Edit Allocation" %}', onSuccess: function() { $(options.parent_table).bootstrapTable('refresh'); }, @@ -2402,7 +2402,7 @@ function renderBuildLineAllocationTable(element, build_line, options={}) { constructForm(`{% url "api-build-item-list" %}${pk}/`, { method: 'DELETE', - title: '{% trans "Remove Allocation" %}', + title: '{% jstrans "Remove Allocation" %}', onSuccess: function() { $(options.parent_table).bootstrapTable('refresh'); }, @@ -2443,8 +2443,8 @@ function loadBuildLineTable(table, build_id, options={}) { url: '{% url "api-buildline-label-list" %}', key: 'line', }, - singular_name: '{% trans "build line" %}', - plural_name: '{% trans "build lines" %}', + singular_name: '{% jstrans "build line" %}', + plural_name: '{% jstrans "build lines" %}', }); } @@ -2462,18 +2462,18 @@ function loadBuildLineTable(table, build_id, options={}) { }); }, formatNoMatches: function() { - return '{% trans "No build lines found" %}'; + return '{% jstrans "No build lines found" %}'; }, columns: [ { checkbox: true, - title: '{% trans "Select" %}', + title: '{% jstrans "Select" %}', searchable: false, switchable: false, }, { field: 'bom_item', - title: '{% trans "Required Part" %}', + title: '{% jstrans "Required Part" %}', switchable: false, sortable: true, sortName: 'part', @@ -2488,11 +2488,11 @@ function loadBuildLineTable(table, build_id, options={}) { html += imageHoverIcon(row.part_detail.thumbnail) + renderLink(row.part_detail.full_name, `/part/${row.part_detail.pk}/`); if (row.bom_item_detail.allow_variants) { - html += makeIconBadge('fa-sitemap', '{% trans "Variant stock allowed" %}'); + html += makeIconBadge('fa-sitemap', '{% jstrans "Variant stock allowed" %}'); } if (row.part_detail.trackable) { - html += makeIconBadge('fa-directions', '{% trans "Trackable part" %}'); + html += makeIconBadge('fa-directions', '{% jstrans "Trackable part" %}'); } return html; @@ -2500,7 +2500,7 @@ function loadBuildLineTable(table, build_id, options={}) { }, { field: 'reference', - title: '{% trans "Reference" %}', + title: '{% jstrans "Reference" %}', sortable: true, formatter: function(value, row) { return row.bom_item_detail.reference; @@ -2508,7 +2508,7 @@ function loadBuildLineTable(table, build_id, options={}) { }, { field: 'consumable', - title: '{% trans "Consumable" %}', + title: '{% jstrans "Consumable" %}', sortable: true, switchable: true, formatter: function(value, row) { @@ -2517,7 +2517,7 @@ function loadBuildLineTable(table, build_id, options={}) { }, { field: 'optional', - title: '{% trans "Optional" %}', + title: '{% jstrans "Optional" %}', sortable: true, switchable: true, formatter: function(value, row) { @@ -2527,7 +2527,7 @@ function loadBuildLineTable(table, build_id, options={}) { { field: 'unit_quantity', sortable: true, - title: '{% trans "Unit Quantity" %}', + title: '{% jstrans "Unit Quantity" %}', formatter: function(value, row) { let text = row.bom_item_detail.quantity; @@ -2544,12 +2544,12 @@ function loadBuildLineTable(table, build_id, options={}) { }, { field: 'quantity', - title: '{% trans "Required Quantity" %}', + title: '{% jstrans "Required Quantity" %}', sortable: true, }, { field: 'available_stock', - title: '{% trans "Available" %}', + title: '{% jstrans "Available" %}', sortable: true, formatter: function(value, row) { var url = `/part/${row.part_detail.pk}/?display=part-stock`; @@ -2573,24 +2573,24 @@ function loadBuildLineTable(table, build_id, options={}) { let icons = ''; if (row.bom_item_detail.consumable) { - icons += ``; + icons += ``; } else { if (available < (row.quantity - row.allocated)) { - icons += makeIconBadge('fa-times-circle icon-red', '{% trans "Insufficient stock available" %}'); + icons += makeIconBadge('fa-times-circle icon-red', '{% jstrans "Insufficient stock available" %}'); } else { - icons += makeIconBadge('fa-check-circle icon-green', '{% trans "Sufficient stock available" %}'); + icons += makeIconBadge('fa-check-circle icon-green', '{% jstrans "Sufficient stock available" %}'); } if (available <= 0) { - icons += `{% trans "No Stock Available" %}`; + icons += `{% jstrans "No Stock Available" %}`; } else { let extra = ''; if ((row.available_substitute_stock > 0) && (row.available_variant_stock > 0)) { - extra = '{% trans "Includes variant and substitute stock" %}'; + extra = '{% jstrans "Includes variant and substitute stock" %}'; } else if (row.available_variant_stock > 0) { - extra = '{% trans "Includes variant stock" %}'; + extra = '{% jstrans "Includes variant stock" %}'; } else if (row.available_substitute_stock > 0) { - extra = '{% trans "Includes substitute stock" %}'; + extra = '{% jstrans "Includes substitute stock" %}'; } if (extra) { @@ -2600,7 +2600,7 @@ function loadBuildLineTable(table, build_id, options={}) { } if (row.on_order && row.on_order > 0) { - icons += makeIconBadge('fa-shopping-cart', `{% trans "On Order" %}: ${formatDecimal(row.on_order)}`); + icons += makeIconBadge('fa-shopping-cart', `{% jstrans "On Order" %}: ${formatDecimal(row.on_order)}`); } return renderLink(text, url) + icons; @@ -2608,7 +2608,7 @@ function loadBuildLineTable(table, build_id, options={}) { }, { field: 'allocated', - title: '{% trans "Allocated" %}', + title: '{% jstrans "Allocated" %}', sortable: true, formatter: function(value, row) { return makeProgressBar(row.allocated, row.quantity); @@ -2625,32 +2625,32 @@ function loadBuildLineTable(table, build_id, options={}) { // Consumable items do not need to be allocated if (row.bom_item_detail.consumable) { - return `{% trans "Consumable Item" %}`; + return `{% jstrans "Consumable Item" %}`; } if (row.part_detail.trackable && !options.output) { // Tracked parts must be allocated to a specific build output - return `{% trans "Tracked item" %}`; + return `{% jstrans "Tracked item" %}`; } if (row.allocated < row.quantity) { // Add a button to "build" stock for this line if (row.part_detail.assembly) { - buttons += makeIconButton('fa-tools icon-blue', 'button-build', pk, '{% trans "Build stock" %}'); + buttons += makeIconButton('fa-tools icon-blue', 'button-build', pk, '{% jstrans "Build stock" %}'); } // Add a button to "purchase" stock for this line if (row.part_detail.purchaseable) { - buttons += makeIconButton('fa-shopping-cart icon-blue', 'button-buy', pk, '{% trans "Order stock" %}'); + buttons += makeIconButton('fa-shopping-cart icon-blue', 'button-buy', pk, '{% jstrans "Order stock" %}'); } // Add a button to "allocate" stock for this line - buttons += makeIconButton('fa-sign-in-alt icon-green', 'button-allocate', pk, '{% trans "Allocate stock" %}'); + buttons += makeIconButton('fa-sign-in-alt icon-green', 'button-allocate', pk, '{% jstrans "Allocate stock" %}'); } if (row.allocated > 0) { - buttons += makeRemoveButton('button-unallocate', pk, '{% trans "Remove stock allocation" %}'); + buttons += makeRemoveButton('button-unallocate', pk, '{% jstrans "Remove stock allocation" %}'); } return wrapButtons(buttons); diff --git a/InvenTree/templates/js/translated/company.js b/InvenTree/templates/js/translated/company.js index b1fdacb540..47f564cb81 100644 --- a/InvenTree/templates/js/translated/company.js +++ b/InvenTree/templates/js/translated/company.js @@ -95,7 +95,7 @@ function createManufacturerPart(options={}) { } fields.manufacturer.secondary = { - title: '{% trans "Add Manufacturer" %}', + title: '{% jstrans "Add Manufacturer" %}', fields: function() { var company_fields = companyFormFields(); @@ -108,7 +108,7 @@ function createManufacturerPart(options={}) { constructForm('{% url "api-manufacturer-part-list" %}', { fields: fields, method: 'POST', - title: '{% trans "Add Manufacturer Part" %}', + title: '{% jstrans "Add Manufacturer Part" %}', onSuccess: options.onSuccess }); } @@ -129,7 +129,7 @@ function editManufacturerPart(part, options={}) { constructForm(url, { fields: fields, - title: '{% trans "Edit Manufacturer Part" %}', + title: '{% jstrans "Edit Manufacturer Part" %}', onSuccess: options.onSuccess }); } @@ -198,7 +198,7 @@ function createSupplierPart(options={}) { // Add a secondary modal for the supplier fields.supplier.secondary = { - title: '{% trans "Add Supplier" %}', + title: '{% jstrans "Add Supplier" %}', fields: function() { var company_fields = companyFormFields(); @@ -210,7 +210,7 @@ function createSupplierPart(options={}) { // Add a secondary modal for the manufacturer part fields.manufacturer_part.secondary = { - title: '{% trans "Add Manufacturer Part" %}', + title: '{% jstrans "Add Manufacturer Part" %}', fields: function(data) { var mp_fields = manufacturerPartFields(); @@ -240,7 +240,7 @@ function createSupplierPart(options={}) { constructForm('{% url "api-supplier-part-list" %}', { fields: fields, method: 'POST', - title: '{% trans "Add Supplier Part" %}', + title: '{% jstrans "Add Supplier Part" %}', onSuccess: options.onSuccess, header_html: header, }); @@ -266,7 +266,7 @@ function duplicateSupplierPart(part, options={}) { constructForm('{% url "api-supplier-part-list" %}', { method: 'POST', fields: fields, - title: '{% trans "Duplicate Supplier Part" %}', + title: '{% jstrans "Duplicate Supplier Part" %}', data: data, onSuccess: function(response) { handleFormSuccess(response, options); @@ -291,7 +291,7 @@ function editSupplierPart(part, options={}) { constructForm(`{% url "api-supplier-part-list" %}${part}/`, { fields: fields, - title: options.title || '{% trans "Edit Supplier Part" %}', + title: options.title || '{% jstrans "Edit Supplier Part" %}', onSuccess: options.onSuccess }); } @@ -341,14 +341,14 @@ function deleteSupplierParts(parts, options={}) { var html = `
- {% trans "All selected supplier parts will be deleted" %} + {% jstrans "All selected supplier parts will be deleted" %}
{% trans "Part" %}{% trans "Allocated" %}{% trans "Stock Item" %}{% trans "Quantity" %}{% jstrans "Part" %}{% jstrans "Allocated" %}{% jstrans "Stock Item" %}{% jstrans "Quantity" %}
- - - - + + + + ${rows}
{% trans "Part" %}{% trans "SKU" %}{% trans "Supplier" %}{% trans "MPN" %}{% jstrans "Part" %}{% jstrans "SKU" %}{% jstrans "Supplier" %}{% jstrans "MPN" %}
@@ -357,7 +357,7 @@ function deleteSupplierParts(parts, options={}) { constructForm('{% url "api-supplier-part-list" %}', { method: 'DELETE', multi_delete: true, - title: '{% trans "Delete Supplier Parts" %}', + title: '{% jstrans "Delete Supplier Parts" %}', preFormContent: html, form_data: { items: ids, @@ -395,7 +395,7 @@ function createSupplierPartPriceBreak(part_id, options={}) { constructForm('{% url "api-part-supplier-price-list" %}', { fields: fields, method: 'POST', - title: '{% trans "Add Price Break" %}', + title: '{% jstrans "Add Price Break" %}', onSuccess: function(response) { handleFormSuccess(response, options); } @@ -441,7 +441,7 @@ function editCompany(pk, options={}) { method: 'PATCH', fields: fields, reload: true, - title: '{% trans "Edit Company" %}', + title: '{% jstrans "Edit Company" %}', } ); } @@ -462,7 +462,7 @@ function createCompany(options={}) { method: 'POST', fields: fields, follow: true, - title: '{% trans "Add new Company" %}', + title: '{% jstrans "Add new Company" %}', } ); } @@ -492,22 +492,22 @@ function loadCompanyTable(table, url, options={}) { }, { field: 'name', - title: '{% trans "Company" %}', + title: '{% jstrans "Company" %}', sortable: true, switchable: false, formatter: function(value, row) { var html = imageHoverIcon(row.image) + renderLink(value, row.url); if (row.is_customer) { - html += ``; + html += ``; } if (row.is_manufacturer) { - html += ``; + html += ``; } if (row.is_supplier) { - html += ``; + html += ``; } return html; @@ -515,11 +515,11 @@ function loadCompanyTable(table, url, options={}) { }, { field: 'description', - title: '{% trans "Description" %}', + title: '{% jstrans "Description" %}', }, { field: 'website', - title: '{% trans "Website" %}', + title: '{% jstrans "Website" %}', formatter: function(value) { if (value) { return renderLink(value, value); @@ -533,7 +533,7 @@ function loadCompanyTable(table, url, options={}) { columns.push({ sortable: true, field: 'parts_supplied', - title: '{% trans "Parts Supplied" %}', + title: '{% jstrans "Parts Supplied" %}', formatter: function(value, row) { return renderLink(value, `/company/${row.pk}/?display=supplier-parts`); } @@ -542,7 +542,7 @@ function loadCompanyTable(table, url, options={}) { columns.push({ sortable: true, field: 'parts_manufactured', - title: '{% trans "Parts Manufactured" %}', + title: '{% jstrans "Parts Manufactured" %}', formatter: function(value, row) { return renderLink(value, `/company/${row.pk}/?display=manufacturer-parts`); } @@ -557,7 +557,7 @@ function loadCompanyTable(table, url, options={}) { groupBy: false, sidePagination: 'server', formatNoMatches: function() { - return '{% trans "No company information found" %}'; + return '{% jstrans "No company information found" %}'; }, showColumns: true, name: options.pagetype || 'company', @@ -606,7 +606,7 @@ function createContact(options={}) { constructForm('{% url "api-contact-list" %}', { method: 'POST', fields: fields, - title: '{% trans "Create New Contact" %}', + title: '{% jstrans "Create New Contact" %}', onSuccess: function(response) { handleFormSuccess(response, options); } @@ -622,7 +622,7 @@ function editContact(pk, options={}) { constructForm(`{% url "api-contact-list" %}${pk}/`, { fields: fields, - title: '{% trans "Edit Contact" %}', + title: '{% jstrans "Edit Contact" %}', onSuccess: function(response) { handleFormSuccess(response, options); } @@ -659,13 +659,13 @@ function deleteContacts(contacts, options={}) { // eslint-disable-next-line no-useless-escape let html = `
- {% trans "All selected contacts will be deleted" %} + {% jstrans "All selected contacts will be deleted" %}
- - - + + + ${rows}
{% trans "Name" %}{% trans "Email" %}{% trans "Role" %}{% jstrans "Name" %}{% jstrans "Email" %}{% jstrans "Role" %}
`; @@ -673,7 +673,7 @@ function deleteContacts(contacts, options={}) { constructForm('{% url "api-contact-list" %}', { method: 'DELETE', multi_delete: true, - title: '{% trans "Delete Contacts" %}', + title: '{% jstrans "Delete Contacts" %}', preFormContent: html, form_data: { items: ids, @@ -704,32 +704,32 @@ function loadContactTable(table, options={}) { uniqueId: 'pk', sidePagination: 'server', formatNoMatches: function() { - return '{% trans "No contacts found" %}'; + return '{% jstrans "No contacts found" %}'; }, showColumns: true, name: 'contacts', columns: [ { field: 'name', - title: '{% trans "Name" %}', + title: '{% jstrans "Name" %}', sortable: true, switchable: false, }, { field: 'phone', - title: '{% trans "Phone Number" %}', + title: '{% jstrans "Phone Number" %}', sortable: false, switchable: true, }, { field: 'email', - title: '{% trans "Email Address" %}', + title: '{% jstrans "Email Address" %}', sortable: false, switchable: true, }, { field: 'role', - title: '{% trans "Role" %}', + title: '{% jstrans "Role" %}', sortable: false, switchable: false, }, @@ -745,11 +745,11 @@ function loadContactTable(table, options={}) { let html = ''; if (options.allow_edit) { - html += makeEditButton('btn-contact-edit', pk, '{% trans "Edit Contact" %}'); + html += makeEditButton('btn-contact-edit', pk, '{% jstrans "Edit Contact" %}'); } if (options.allow_delete) { - html += makeDeleteButton('btn-contact-delete', pk, '{% trans "Delete Contact" %}'); + html += makeDeleteButton('btn-contact-delete', pk, '{% jstrans "Delete Contact" %}'); } return wrapButtons(html); @@ -846,7 +846,7 @@ function createAddress(options={}) { constructForm('{% url "api-address-list" %}', { method: 'POST', fields: fields, - title: '{% trans "Create New Address" %}', + title: '{% jstrans "Create New Address" %}', onSuccess: function(response) { handleFormSuccess(response, options); } @@ -861,7 +861,7 @@ function editAddress(pk, options={}) { constructForm(`{% url "api-address-list" %}${pk}/`, { fields: fields, - title: '{% trans "Edit Address" %}', + title: '{% jstrans "Edit Address" %}', onSuccess: function(response) { handleFormSuccess(response, options); } @@ -896,13 +896,13 @@ function deleteAddress(addresses, options={}) { let html = `
- {% trans "All selected addresses will be deleted" %} + {% jstrans "All selected addresses will be deleted" %}
- - - + + + ${rows}
{% trans "Name" %}{% trans "Line 1" %}{% trans "Line 2" %}{% jstrans "Name" %}{% jstrans "Line 1" %}{% jstrans "Line 2" %}
`; @@ -910,7 +910,7 @@ function deleteAddress(addresses, options={}) { constructForm('{% url "api-address-list" %}', { method: 'DELETE', multi_delete: true, - title: '{% trans "Delete Addresses" %}', + title: '{% jstrans "Delete Addresses" %}', preFormContent: html, form_data: { items: ids, @@ -937,14 +937,14 @@ function loadAddressTable(table, options={}) { sidePagination: 'server', sortable: true, formatNoMatches: function() { - return '{% trans "No addresses found" %}'; + return '{% jstrans "No addresses found" %}'; }, showColumns: true, name: 'addresses', columns: [ { field: 'primary', - title: '{% trans "Primary" %}', + title: '{% jstrans "Primary" %}', switchable: false, formatter: function(value) { return yesNoLabel(value); @@ -952,61 +952,61 @@ function loadAddressTable(table, options={}) { }, { field: 'title', - title: '{% trans "Title" %}', + title: '{% jstrans "Title" %}', sortable: true, switchable: false, }, { field: 'line1', - title: '{% trans "Line 1" %}', + title: '{% jstrans "Line 1" %}', sortable: false, switchable: false, }, { field: 'line2', - title: '{% trans "Line 2" %}', + title: '{% jstrans "Line 2" %}', sortable: false, switchable: false, }, { field: 'postal_code', - title: '{% trans "Postal code" %}', + title: '{% jstrans "Postal code" %}', sortable: false, switchable: false, }, { field: 'postal_city', - title: '{% trans "Postal city" %}', + title: '{% jstrans "Postal city" %}', sortable: false, switchable: false, }, { field: 'province', - title: '{% trans "State/province" %}', + title: '{% jstrans "State/province" %}', sortable: false, switchable: false, }, { field: 'country', - title: '{% trans "Country" %}', + title: '{% jstrans "Country" %}', sortable: false, switchable: false, }, { field: 'shipping_notes', - title: '{% trans "Courier notes" %}', + title: '{% jstrans "Courier notes" %}', sortable: false, switchable: true, }, { field: 'internal_shipping_notes', - title: '{% trans "Internal notes" %}', + title: '{% jstrans "Internal notes" %}', sortable: false, switchable: true, }, { field: 'link', - title: '{% trans "External Link" %}', + title: '{% jstrans "External Link" %}', sortable: false, switchable: true, }, @@ -1022,11 +1022,11 @@ function loadAddressTable(table, options={}) { let html = ''; if (options.allow_edit) { - html += makeEditButton('btn-address-edit', pk, '{% trans "Edit Address" %}'); + html += makeEditButton('btn-address-edit', pk, '{% jstrans "Edit Address" %}'); } if (options.allow_delete) { - html += makeDeleteButton('btn-address-delete', pk, '{% trans "Delete Address" %}'); + html += makeDeleteButton('btn-address-delete', pk, '{% jstrans "Delete Address" %}'); } return wrapButtons(html); @@ -1099,13 +1099,13 @@ function deleteManufacturerParts(selections, options={}) { var html = `
- {% trans "All selected manufacturer parts will be deleted" %} + {% jstrans "All selected manufacturer parts will be deleted" %}
- - - + + + ${rows}
{% trans "Part" %}{% trans "MPN" %}{% trans "Manufacturer" %}{% jstrans "Part" %}{% jstrans "MPN" %}{% jstrans "Manufacturer" %}
@@ -1114,7 +1114,7 @@ function deleteManufacturerParts(selections, options={}) { constructForm('{% url "api-manufacturer-part-list" %}', { method: 'DELETE', multi_delete: true, - title: '{% trans "Delete Manufacturer Parts" %}', + title: '{% jstrans "Delete Manufacturer Parts" %}', preFormContent: html, form_data: { items: ids, @@ -1148,12 +1148,12 @@ function deleteManufacturerPartParameters(selections, options={}) { var html = `
- {% trans "All selected parameters will be deleted" %} + {% jstrans "All selected parameters will be deleted" %}
- - + + ${rows}
{% trans "Name" %}{% trans "Value" %}{% jstrans "Name" %}{% jstrans "Value" %}
@@ -1162,7 +1162,7 @@ function deleteManufacturerPartParameters(selections, options={}) { constructForm('{% url "api-manufacturer-part-parameter-list" %}', { method: 'DELETE', multi_delete: true, - title: '{% trans "Delete Parameters" %}', + title: '{% jstrans "Delete Parameters" %}', preFormContent: html, form_data: { items: ids, @@ -1178,7 +1178,7 @@ function makeManufacturerPartActions(options={}) { return [ { label: 'order', - title: '{% trans "Order parts" %}', + title: '{% jstrans "Order parts" %}', icon: 'fa-shopping-cart', permission: 'purchase_order.add', callback: function(data) { @@ -1195,7 +1195,7 @@ function makeManufacturerPartActions(options={}) { }, { label: 'delete', - title: '{% trans "Delete manufacturer parts" %}', + title: '{% jstrans "Delete manufacturer parts" %}', icon: 'fa-trash-alt icon-red', permission: 'purchase_order.delete', callback: function(data) { @@ -1227,7 +1227,7 @@ function loadManufacturerPartTable(table, url, options) { custom_actions: [ { label: 'manufacturer-part', - title: '{% trans "Manufacturer part actions" %}', + title: '{% jstrans "Manufacturer part actions" %}', icon: 'fa-tools', actions: makeManufacturerPartActions({ manufacturer_id: options.params.manufacturer, @@ -1246,7 +1246,7 @@ function loadManufacturerPartTable(table, url, options) { name: 'manufacturerparts', groupBy: false, formatNoMatches: function() { - return '{% trans "No manufacturer parts found" %}'; + return '{% jstrans "No manufacturer parts found" %}'; }, columns: [ { @@ -1258,7 +1258,7 @@ function loadManufacturerPartTable(table, url, options) { switchable: params['part_detail'], sortable: true, field: 'part_detail.full_name', - title: '{% trans "Part" %}', + title: '{% jstrans "Part" %}', formatter: function(value, row) { var url = `/part/${row.part}/`; @@ -1266,15 +1266,15 @@ function loadManufacturerPartTable(table, url, options) { var html = imageHoverIcon(row.part_detail.thumbnail) + renderLink(value, url); if (row.part_detail.is_template) { - html += makeIconBadge('fa-clone', '{% trans "Template part" %}'); + html += makeIconBadge('fa-clone', '{% jstrans "Template part" %}'); } if (row.part_detail.assembly) { - html += makeIconBadge('fa-tools', '{% trans "Assembled part" %}'); + html += makeIconBadge('fa-tools', '{% jstrans "Assembled part" %}'); } if (!row.part_detail.active) { - html += `{% trans "Inactive" %}`; + html += `{% jstrans "Inactive" %}`; } return html; @@ -1283,7 +1283,7 @@ function loadManufacturerPartTable(table, url, options) { { sortable: true, field: 'manufacturer', - title: '{% trans "Manufacturer" %}', + title: '{% jstrans "Manufacturer" %}', formatter: function(value, row) { if (value && row.manufacturer_detail) { var name = row.manufacturer_detail.name; @@ -1299,14 +1299,14 @@ function loadManufacturerPartTable(table, url, options) { { sortable: true, field: 'MPN', - title: '{% trans "MPN" %}', + title: '{% jstrans "MPN" %}', formatter: function(value, row) { return renderClipboard(renderLink(value, `/manufacturer-part/${row.pk}/`)); } }, { field: 'link', - title: '{% trans "Link" %}', + title: '{% jstrans "Link" %}', formatter: function(value) { if (value) { return renderLink(value, value, {external: true}); @@ -1317,7 +1317,7 @@ function loadManufacturerPartTable(table, url, options) { }, { field: 'description', - title: '{% trans "Description" %}', + title: '{% jstrans "Description" %}', sortable: false, switchable: true, }, @@ -1330,8 +1330,8 @@ function loadManufacturerPartTable(table, url, options) { let pk = row.pk; let html = ''; - html += makeEditButton('button-manufacturer-part-edit', pk, '{% trans "Edit manufacturer part" %}'); - html += makeDeleteButton('button-manufacturer-part-delete', pk, '{% trans "Delete manufacturer part" %}'); + html += makeEditButton('button-manufacturer-part-edit', pk, '{% jstrans "Edit manufacturer part" %}'); + html += makeDeleteButton('button-manufacturer-part-delete', pk, '{% jstrans "Delete manufacturer part" %}'); return wrapButtons(html); } @@ -1390,7 +1390,7 @@ function loadManufacturerPartParameterTable(table, url, options) { name: 'manufacturerpartparameters', groupBy: false, formatNoMatches: function() { - return '{% trans "No parameters found" %}'; + return '{% jstrans "No parameters found" %}'; }, columns: [ { @@ -1400,19 +1400,19 @@ function loadManufacturerPartParameterTable(table, url, options) { }, { field: 'name', - title: '{% trans "Name" %}', + title: '{% jstrans "Name" %}', switchable: false, sortable: true, }, { field: 'value', - title: '{% trans "Value" %}', + title: '{% jstrans "Value" %}', switchable: false, sortable: true, }, { field: 'units', - title: '{% trans "Units" %}', + title: '{% jstrans "Units" %}', switchable: true, sortable: true, }, @@ -1425,8 +1425,8 @@ function loadManufacturerPartParameterTable(table, url, options) { let pk = row.pk; let html = ''; - html += makeEditButton('button-parameter-edit', pk, '{% trans "Edit parameter" %}'); - html += makeDeleteButton('button-parameter-delete', pk, '{% trans "Delete parameter" %}'); + html += makeEditButton('button-parameter-edit', pk, '{% jstrans "Edit parameter" %}'); + html += makeDeleteButton('button-parameter-delete', pk, '{% jstrans "Delete parameter" %}'); return wrapButtons(html); } @@ -1443,7 +1443,7 @@ function loadManufacturerPartParameterTable(table, url, options) { value: {}, units: {}, }, - title: '{% trans "Edit Parameter" %}', + title: '{% jstrans "Edit Parameter" %}', refreshTable: table, }); }); @@ -1452,7 +1452,7 @@ function loadManufacturerPartParameterTable(table, url, options) { constructForm(`{% url "api-manufacturer-part-parameter-list" %}${pk}/`, { method: 'DELETE', - title: '{% trans "Delete Parameter" %}', + title: '{% jstrans "Delete Parameter" %}', refreshTable: table, }); }); @@ -1466,7 +1466,7 @@ function makeSupplierPartActions(options={}) { return [ { label: 'order', - title: '{% trans "Order parts" %}', + title: '{% jstrans "Order parts" %}', icon: 'fa-shopping-cart', permission: 'purchase_order.add', callback: function(data) { @@ -1483,7 +1483,7 @@ function makeSupplierPartActions(options={}) { }, { label: 'delete', - title: '{% trans "Delete supplier parts" %}', + title: '{% jstrans "Delete supplier parts" %}', icon: 'fa-trash-alt icon-red', permission: 'purchase_order.delete', callback: function(data) { @@ -1513,7 +1513,7 @@ function loadSupplierPartTable(table, url, options) { custom_actions: [ { label: 'supplier-part', - title: '{% trans "Supplier part actions" %}', + title: '{% jstrans "Supplier part actions" %}', icon: 'fa-tools', actions: makeSupplierPartActions({ supplier_id: options.params.supplier, @@ -1533,7 +1533,7 @@ function loadSupplierPartTable(table, url, options) { groupBy: false, sortable: true, formatNoMatches: function() { - return '{% trans "No supplier parts found" %}'; + return '{% jstrans "No supplier parts found" %}'; }, columns: [ { @@ -1546,7 +1546,7 @@ function loadSupplierPartTable(table, url, options) { sortable: true, field: 'part_detail.full_name', sortName: 'part', - title: '{% trans "Part" %}', + title: '{% jstrans "Part" %}', formatter: function(value, row) { var url = `/part/${row.part}/`; @@ -1554,15 +1554,15 @@ function loadSupplierPartTable(table, url, options) { var html = imageHoverIcon(row.part_detail.thumbnail) + renderLink(value, url); if (row.part_detail.is_template) { - html += makeIconBadge('fa-clone', '{% trans "Template part" %}'); + html += makeIconBadge('fa-clone', '{% jstrans "Template part" %}'); } if (row.part_detail.assembly) { - html += makeIconBadge('fa-tools', '{% trans "Assembled part" %}'); + html += makeIconBadge('fa-tools', '{% jstrans "Assembled part" %}'); } if (!row.part_detail.active) { - html += `{% trans "Inactive" %}`; + html += `{% jstrans "Inactive" %}`; } return html; @@ -1571,7 +1571,7 @@ function loadSupplierPartTable(table, url, options) { { sortable: true, field: 'supplier', - title: '{% trans "Supplier" %}', + title: '{% jstrans "Supplier" %}', formatter: function(value, row) { if (value) { var name = row.supplier_detail.name; @@ -1587,7 +1587,7 @@ function loadSupplierPartTable(table, url, options) { { sortable: true, field: 'SKU', - title: '{% trans "Supplier Part" %}', + title: '{% jstrans "Supplier Part" %}', formatter: function(value, row) { return renderClipboard(renderLink(value, `/supplier-part/${row.pk}/`)); } @@ -1598,7 +1598,7 @@ function loadSupplierPartTable(table, url, options) { sortable: true, sortName: 'manufacturer', field: 'manufacturer_detail.name', - title: '{% trans "Manufacturer" %}', + title: '{% jstrans "Manufacturer" %}', formatter: function(value, row) { if (value && row.manufacturer_detail) { var name = value; @@ -1617,7 +1617,7 @@ function loadSupplierPartTable(table, url, options) { sortable: true, sortName: 'MPN', field: 'manufacturer_part_detail.MPN', - title: '{% trans "MPN" %}', + title: '{% jstrans "MPN" %}', formatter: function(value, row) { if (value && row.manufacturer_part) { return renderClipboard(renderLink(value, `/manufacturer-part/${row.manufacturer_part}/`)); @@ -1628,17 +1628,17 @@ function loadSupplierPartTable(table, url, options) { }, { field: 'description', - title: '{% trans "Description" %}', + title: '{% jstrans "Description" %}', sortable: false, }, { field: 'packaging', - title: '{% trans "Packaging" %}', + title: '{% jstrans "Packaging" %}', sortable: true, }, { field: 'pack_quantity', - title: '{% trans "Pack Quantity" %}', + title: '{% jstrans "Pack Quantity" %}', sortable: true, formatter: function(value, row) { @@ -1651,7 +1651,7 @@ function loadSupplierPartTable(table, url, options) { } if (row.part_detail && row.part_detail.units) { - html += ``; + html += ``; } return html; @@ -1660,7 +1660,7 @@ function loadSupplierPartTable(table, url, options) { { field: 'link', sortable: false, - title: '{% trans "Link" %}', + title: '{% jstrans "Link" %}', formatter: function(value) { if (value) { return renderLink(value, value, {external: true}); @@ -1671,17 +1671,17 @@ function loadSupplierPartTable(table, url, options) { }, { field: 'note', - title: '{% trans "Notes" %}', + title: '{% jstrans "Notes" %}', sortable: false, }, { field: 'in_stock', - title: '{% trans "In Stock" %}', + title: '{% jstrans "In Stock" %}', sortable: true, }, { field: 'available', - title: '{% trans "Availability" %}', + title: '{% jstrans "Availability" %}', sortable: true, formatter: function(value, row) { if (row.availability_updated) { @@ -1690,7 +1690,7 @@ function loadSupplierPartTable(table, url, options) { html += makeIconBadge( 'fa-info-circle', - `{% trans "Last Updated" %}: ${date}` + `{% jstrans "Last Updated" %}: ${date}` ); return html; } else { @@ -1700,7 +1700,7 @@ function loadSupplierPartTable(table, url, options) { }, { field: 'updated', - title: '{% trans "Last Updated" %}', + title: '{% jstrans "Last Updated" %}', sortable: true, }, { @@ -1712,8 +1712,8 @@ function loadSupplierPartTable(table, url, options) { let pk = row.pk; let html = ''; - html += makeEditButton('button-supplier-part-edit', pk, '{% trans "Edit supplier part" %}'); - html += makeDeleteButton('button-supplier-part-delete', pk, '{% trans "Delete supplier part" %}'); + html += makeEditButton('button-supplier-part-edit', pk, '{% jstrans "Edit supplier part" %}'); + html += makeDeleteButton('button-supplier-part-delete', pk, '{% jstrans "Delete supplier part" %}'); return wrapButtons(html); } @@ -1766,7 +1766,7 @@ function loadSupplierPriceBreakTable(options={}) { constructForm(`{% url "api-part-supplier-price-list" %}${pk}/`, { method: 'DELETE', - title: '{% trans "Delete Price Break" %}', + title: '{% jstrans "Delete Price Break" %}', refreshTable: table, }); }); @@ -1776,7 +1776,7 @@ function loadSupplierPriceBreakTable(options={}) { constructForm(`{% url "api-part-supplier-price-list" %}${pk}/`, { fields: supplierPartPriceBreakFields(), - title: '{% trans "Edit Price Break" %}', + title: '{% jstrans "Edit Price Break" %}', refreshTable: table, }); }); @@ -1791,7 +1791,7 @@ function loadSupplierPriceBreakTable(options={}) { part: options.part, }, formatNoMatches: function() { - return '{% trans "No price break information found" %}'; + return '{% jstrans "No price break information found" %}'; }, onPostBody: function() { setupCallbacks(); @@ -1805,12 +1805,12 @@ function loadSupplierPriceBreakTable(options={}) { }, { field: 'quantity', - title: '{% trans "Quantity" %}', + title: '{% jstrans "Quantity" %}', sortable: true, }, { field: 'price', - title: '{% trans "Price" %}', + title: '{% jstrans "Price" %}', sortable: true, formatter: function(value, row, index) { return formatCurrency(value, { @@ -1820,15 +1820,15 @@ function loadSupplierPriceBreakTable(options={}) { }, { field: 'updated', - title: '{% trans "Last updated" %}', + title: '{% jstrans "Last updated" %}', sortable: true, formatter: function(value, row) { var html = renderDate(value); let buttons = ''; - buttons += makeEditButton('button-price-break-edit', row.pk, '{% trans "Edit price break" %}'); - buttons += makeDeleteButton('button-price-break-delete', row.pk, '{% trans "Delete price break" %}'); + buttons += makeEditButton('button-price-break-edit', row.pk, '{% jstrans "Edit price break" %}'); + buttons += makeDeleteButton('button-price-break-delete', row.pk, '{% jstrans "Delete price break" %}'); html += wrapButtons(buttons); diff --git a/InvenTree/templates/js/translated/filters.js b/InvenTree/templates/js/translated/filters.js index 51fcc265b6..798b25a954 100644 --- a/InvenTree/templates/js/translated/filters.js +++ b/InvenTree/templates/js/translated/filters.js @@ -183,11 +183,11 @@ function getFilterOptionList(tableKey, filterKey) { return { '1': { key: '1', - value: '{% trans "true" %}', + value: '{% jstrans "true" %}', }, '0': { key: '0', - value: '{% trans "false" %}', + value: '{% jstrans "false" %}', }, }; } else if (settings.type == 'date') { @@ -211,7 +211,7 @@ function generateAvailableFilterList(tableKey) { var html = ` +
@@ -2164,7 +2164,7 @@ function initializeRelatedField(field, fields, options={}) {
`; showQuestionDialog(title, content, { - accept_text: '{% trans "Select" %}', + accept_text: '{% jstrans "Select" %}', accept: () => { const selectedNode = $(`#${tree_id}`).treeview('getSelected'); if(selectedNode.length > 0) { @@ -2268,7 +2268,7 @@ function initializeChoiceField(field, fields, options) { // Render a 'no results' element function searching() { - return `{% trans "Searching" %}...`; + return `{% jstrans "Searching" %}...`; } /* @@ -2482,7 +2482,7 @@ function constructField(name, parameters, options={}) { if (!parameters.required && !options.hideClearButton) { html += ` - `; } @@ -3068,7 +3068,7 @@ function selectImportFields(url, data={}, options={}) { rows += `${field_name}${choice_input}`; } - var headers = `{% trans "File Column" %}{% trans "Field Name" %}`; + var headers = `{% jstrans "File Column" %}{% jstrans "Field Name" %}`; var html = ''; @@ -3080,7 +3080,7 @@ function selectImportFields(url, data={}, options={}) { constructForm(url, { method: 'POST', - title: '{% trans "Select Columns" %}', + title: '{% jstrans "Select Columns" %}', fields: {}, preFormContent: html, onSubmit: function(fields, opts) { diff --git a/InvenTree/templates/js/translated/helpers.js b/InvenTree/templates/js/translated/helpers.js index dedd3cdc87..10d31fcf5d 100644 --- a/InvenTree/templates/js/translated/helpers.js +++ b/InvenTree/templates/js/translated/helpers.js @@ -74,10 +74,10 @@ function yesNoLabel(value, options={}) { let color = ''; if (toBool(value)) { - text = options.pass || '{% trans "YES" %}'; + text = options.pass || '{% jstrans "YES" %}'; color = 'bg-success'; } else { - text = options.fail || '{% trans "NO" %}'; + text = options.fail || '{% jstrans "NO" %}'; color = 'bg-warning'; } @@ -90,19 +90,19 @@ function yesNoLabel(value, options={}) { function trueFalseLabel(value, options={}) { - options.pass = '{% trans "True" %}'; - options.fail = '{% trans "False" %}'; + options.pass = '{% jstrans "True" %}'; + options.fail = '{% jstrans "False" %}'; return yesNoLabel(value, options); } -function editButton(url, text='{% trans "Edit" %}') { +function editButton(url, text='{% jstrans "Edit" %}') { return ``; } -function deleteButton(url, text='{% trans "Delete" %}') { +function deleteButton(url, text='{% jstrans "Delete" %}') { return ``; } @@ -582,7 +582,7 @@ function renderClipboard(s, prepend=false) { return s; } - let clipString = ``; + let clipString = ``; if (prepend === true) { return `
${clipString+s}
`; diff --git a/InvenTree/templates/js/translated/index.js b/InvenTree/templates/js/translated/index.js index 3fe010457c..b945a75486 100644 --- a/InvenTree/templates/js/translated/index.js +++ b/InvenTree/templates/js/translated/index.js @@ -101,12 +101,12 @@ function loadRequiredForBuildsPartsTable(table, options={}) { search: false, sortable: false, formatNoMatches: function() { - return '{% trans "No parts required for builds" %}'; + return '{% jstrans "No parts required for builds" %}'; }, columns: [ { field: 'name', - title: '{% trans "Part" %}', + title: '{% jstrans "Part" %}', formatter: function(value, row) { let name = shortenString(row.full_name); let display= imageHoverIcon(row.thumbnail) + renderLink(name, `/part/${row.pk}/`); @@ -116,18 +116,18 @@ function loadRequiredForBuildsPartsTable(table, options={}) { }, { field: 'description', - title: '{% trans "Description" %}', + title: '{% jstrans "Description" %}', }, { field: 'total_in_stock', - title: '{% trans "Available" %}', + title: '{% jstrans "Available" %}', formatter: function(value, row) { return value; } }, { field: 'allocated_to_build_orders', - title: '{% trans "Allocated Stock" %}', + title: '{% jstrans "Allocated Stock" %}', formatter: function(_value, row) { return makeProgressBar( row.allocated_to_build_orders, diff --git a/InvenTree/templates/js/translated/label.js b/InvenTree/templates/js/translated/label.js index a9a75f0f56..aac0d727cc 100644 --- a/InvenTree/templates/js/translated/label.js +++ b/InvenTree/templates/js/translated/label.js @@ -50,8 +50,8 @@ function printLabels(options) { if (!options.items || options.items.length == 0) { showAlertDialog( - '{% trans "Select Items" %}', - '{% trans "No items selected for printing" %}', + '{% jstrans "Select Items" %}', + '{% jstrans "No items selected for printing" %}', ); return; } @@ -69,8 +69,8 @@ function printLabels(options) { success: function (response) { if (response.length == 0) { showAlertDialog( - '{% trans "No Labels Found" %}', - '{% trans "No label templates found which match the selected items" %}', + '{% jstrans "No Labels Found" %}', + '{% jstrans "No label templates found which match the selected items" %}', ); return; } @@ -94,7 +94,7 @@ function printLabels(options) { if (options.items.length > 1) { header_html += `
- ${options.items.length} ${options.plural_name} {% trans "selected" %} + ${options.items.length} ${options.plural_name} {% jstrans "selected" %}
`; } @@ -130,7 +130,7 @@ function printLabels(options) { if (Object.keys(printingOptions).length > 0) { formOptions.fields = { ...formOptions.fields, - divider: { type: "candy", html: `
{% trans "Printing Options" %}
` }, + divider: { type: "candy", html: `
{% jstrans "Printing Options" %}
` }, ...printingOptions, }; } @@ -145,14 +145,14 @@ function printLabels(options) { } const printingFormOptions = { - title: options.items.length === 1 ? `{% trans "Print label" %}` : `{% trans "Print labels" %}`, - submitText: `{% trans "Print" %}`, + title: options.items.length === 1 ? `{% jstrans "Print label" %}` : `{% jstrans "Print labels" %}`, + submitText: `{% jstrans "Print" %}`, method: "POST", disableSuccessMessage: true, header_html, fields: { _label_template: { - label: `{% trans "Select label template" %}`, + label: `{% jstrans "Select label template" %}`, type: "choice", localOnly: true, value: defaultLabelTemplates[options.key], @@ -165,7 +165,7 @@ function printLabels(options) { } }, _plugin: { - label: `{% trans "Select plugin" %}`, + label: `{% jstrans "Select plugin" %}`, type: "choice", localOnly: true, value: user_settings.LABEL_DEFAULT_PRINTER || plugins[0].key, @@ -184,7 +184,7 @@ function printLabels(options) { // Download the generated file window.open(response.file); } else { - showMessage('{% trans "Labels sent to printer" %}', { + showMessage('{% jstrans "Labels sent to printer" %}', { style: 'success', }); } diff --git a/InvenTree/templates/js/translated/modals.js b/InvenTree/templates/js/translated/modals.js index 16d823e593..848cd7b519 100644 --- a/InvenTree/templates/js/translated/modals.js +++ b/InvenTree/templates/js/translated/modals.js @@ -55,12 +55,12 @@ function createNewModal(options={}) { // Add in a "close" button if (!options.hideCloseButton) { - buttons += ``; + buttons += ``; } // Add in a "submit" button if (!options.hideSubmitButton) { - buttons += ``; + buttons += ``; } var html = ` @@ -71,7 +71,7 @@ function createNewModal(options={}) { - +