From 698b94640380ae4546e8bb84bbc64017fd1ec99a Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 2 Apr 2021 23:03:24 +0200 Subject: [PATCH 01/16] activated translations for settings --- InvenTree/templates/InvenTree/settings/setting.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InvenTree/templates/InvenTree/settings/setting.html b/InvenTree/templates/InvenTree/settings/setting.html index b7932fc30a..7376adf8d9 100644 --- a/InvenTree/templates/InvenTree/settings/setting.html +++ b/InvenTree/templates/InvenTree/settings/setting.html @@ -8,7 +8,7 @@ {% endif %} - {{ setting.name }} + {% trans setting.name %} {% if setting.is_bool %}
@@ -24,7 +24,7 @@ {% endif %} {% endif %} - {{ setting.description }} + {% trans setting.description %}
From 2de6fcbfa422d91727523edad7d94a3a2a45d887 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Apr 2021 03:59:09 +0200 Subject: [PATCH 02/16] added missing translation fields #753 --- InvenTree/InvenTree/models.py | 10 +++++++--- InvenTree/build/forms.py | 4 +++- InvenTree/build/models.py | 5 ++++- InvenTree/company/forms.py | 1 + InvenTree/company/models.py | 12 ++++++------ InvenTree/part/models.py | 21 +++++++++++---------- InvenTree/stock/forms.py | 2 +- InvenTree/stock/models.py | 6 +++--- 8 files changed, 36 insertions(+), 25 deletions(-) diff --git a/InvenTree/InvenTree/models.py b/InvenTree/InvenTree/models.py index cffe48cc0b..8494b52a10 100644 --- a/InvenTree/InvenTree/models.py +++ b/InvenTree/InvenTree/models.py @@ -56,19 +56,20 @@ class InvenTreeAttachment(models.Model): def __str__(self): return os.path.basename(self.attachment.name) - attachment = models.FileField(upload_to=rename_attachment, + attachment = models.FileField(upload_to=rename_attachment, verbose_name=_('Attachment'), help_text=_('Select file to attach')) - comment = models.CharField(blank=True, max_length=100, help_text=_('File comment')) + comment = models.CharField(blank=True, max_length=100, verbose_name=_('Comment'), help_text=_('File comment')) user = models.ForeignKey( User, on_delete=models.SET_NULL, blank=True, null=True, + verbose_name=_('User'), help_text=_('User'), ) - upload_date = models.DateField(auto_now_add=True, null=True, blank=True) + upload_date = models.DateField(auto_now_add=True, null=True, blank=True, verbose_name=_('upload date')) @property def basename(self): @@ -103,12 +104,14 @@ class InvenTreeTree(MPTTModel): blank=False, max_length=100, validators=[validate_tree_name], + verbose_name=_("Name"), help_text=_("Name"), ) description = models.CharField( blank=True, max_length=250, + verbose_name=_("Description"), help_text=_("Description (optional)") ) @@ -117,6 +120,7 @@ class InvenTreeTree(MPTTModel): on_delete=models.DO_NOTHING, blank=True, null=True, + verbose_name=_("parent"), related_name='children') @property diff --git a/InvenTree/build/forms.py b/InvenTree/build/forms.py index 4892fa631f..380c72f50d 100644 --- a/InvenTree/build/forms.py +++ b/InvenTree/build/forms.py @@ -36,11 +36,13 @@ class EditBuildForm(HelperForm): } target_date = DatePickerFormField( + label=_('Target Date'), help_text=_('Target date for build completion. Build will be overdue after this date.') ) quantity = RoundingDecimalFormField( max_digits=10, decimal_places=5, + label=_('Quantity'), help_text=_('Number of items to build') ) @@ -87,7 +89,7 @@ class BuildOutputCreateForm(HelperForm): ) serial_numbers = forms.CharField( - label=_('Serial numbers'), + label=_('Serial Numbers'), required=False, help_text=_('Enter serial numbers for build outputs'), ) diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index ada9db1e08..1c668324a5 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -224,12 +224,13 @@ class Build(MPTTModel): help_text=_('Target date for build completion. Build will be overdue after this date.') ) - completion_date = models.DateField(null=True, blank=True) + completion_date = models.DateField(null=True, blank=True, verbose_name=_('Completion Date')) completed_by = models.ForeignKey( User, on_delete=models.SET_NULL, blank=True, null=True, + verbose_name=_('completed by'), related_name='builds_completed' ) @@ -237,6 +238,7 @@ class Build(MPTTModel): User, on_delete=models.SET_NULL, blank=True, null=True, + verbose_name=_('Issued by'), help_text=_('User who issued this build order'), related_name='builds_issued', ) @@ -245,6 +247,7 @@ class Build(MPTTModel): UserModels.Owner, on_delete=models.SET_NULL, blank=True, null=True, + verbose_name=_('Responsible'), help_text=_('User responsible for this build order'), related_name='builds_responsible', ) diff --git a/InvenTree/company/forms.py b/InvenTree/company/forms.py index 67ac402ba7..3d2826fdec 100644 --- a/InvenTree/company/forms.py +++ b/InvenTree/company/forms.py @@ -34,6 +34,7 @@ class EditCompanyForm(HelperForm): currency = django.forms.ChoiceField( required=False, + label=_('Currency'), help_text=_('Default currency used for this company'), choices=[('', '----------')] + djmoney.settings.CURRENCY_CHOICES, initial=common.settings.currency_code_default, diff --git a/InvenTree/company/models.py b/InvenTree/company/models.py index e4386712c8..c1b0594aac 100644 --- a/InvenTree/company/models.py +++ b/InvenTree/company/models.py @@ -126,11 +126,11 @@ class Company(models.Model): notes = MarkdownxField(blank=True) - is_customer = models.BooleanField(default=False, help_text=_('Do you sell items to this company?')) + is_customer = models.BooleanField(default=False, verbose_name=_('is customer'), help_text=_('Do you sell items to this company?')) - is_supplier = models.BooleanField(default=True, help_text=_('Do you purchase items from this company?')) + is_supplier = models.BooleanField(default=True, verbose_name=_('is supplier'), help_text=_('Do you purchase items from this company?')) - is_manufacturer = models.BooleanField(default=False, help_text=_('Does this company manufacture parts?')) + is_manufacturer = models.BooleanField(default=False, verbose_name=_('is manufacturer'), help_text=_('Does this company manufacture parts?')) currency = models.CharField( max_length=3, @@ -366,11 +366,11 @@ class SupplierPart(models.Model): help_text=_('Notes') ) - base_cost = models.DecimalField(max_digits=10, decimal_places=3, default=0, validators=[MinValueValidator(0)], help_text=_('Minimum charge (e.g. stocking fee)')) + base_cost = models.DecimalField(max_digits=10, decimal_places=3, default=0, validators=[MinValueValidator(0)], verbose_name=('base cost'), help_text=_('Minimum charge (e.g. stocking fee)')) - packaging = models.CharField(max_length=50, blank=True, null=True, help_text=_('Part packaging')) + packaging = models.CharField(max_length=50, blank=True, null=True, verbose_name=_('Packaging'), help_text=_('Part packaging')) - multiple = models.PositiveIntegerField(default=1, validators=[MinValueValidator(1)], help_text=('Order multiple')) + multiple = models.PositiveIntegerField(default=1, validators=[MinValueValidator(1)], verbose_name=_('multiple'), help_text=('Order multiple')) # TODO - Reimplement lead-time as a charfield with special validation (pattern matching). # lead_time = models.DurationField(blank=True, null=True) diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 2824a89e75..9003e800d8 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -69,10 +69,11 @@ class PartCategory(InvenTreeTree): 'stock.StockLocation', related_name="default_categories", null=True, blank=True, on_delete=models.SET_NULL, + verbose_name=_('Default Location'), help_text=_('Default location for parts in this category') ) - default_keywords = models.CharField(null=True, blank=True, max_length=250, help_text=_('Default keywords for parts in this category')) + default_keywords = models.CharField(null=True, blank=True, max_length=250, verbose_name=_('Default keywords'), help_text=_('Default keywords for parts in this category')) def get_absolute_url(self): return reverse('category-detail', kwargs={'pk': self.id}) @@ -870,18 +871,18 @@ class Part(MPTTModel): help_text=_('Part notes - supports Markdown formatting') ) - bom_checksum = models.CharField(max_length=128, blank=True, help_text=_('Stored BOM checksum')) + bom_checksum = models.CharField(max_length=128, blank=True, verbose_name=_('BOM checksum'), help_text=_('Stored BOM checksum')) bom_checked_by = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, - related_name='boms_checked') + verbose_name=_('BOM checked by'), related_name='boms_checked') - bom_checked_date = models.DateField(blank=True, null=True) + bom_checked_date = models.DateField(blank=True, null=True, verbose_name=_('BOM checked date')) - creation_date = models.DateField(auto_now_add=True, editable=False, blank=True, null=True) + creation_date = models.DateField(auto_now_add=True, editable=False, blank=True, null=True, verbose_name=_('Creation Date')) - creation_user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, related_name='parts_created') + creation_user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, verbose_name=_('Creation User'), related_name='parts_created') - responsible = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, related_name='parts_responible') + responsible = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, verbose_name=_('Responsible'), related_name='parts_responible') def format_barcode(self, **kwargs): """ Return a JSON string for formatting a barcode for this Part object """ @@ -2050,11 +2051,11 @@ class PartParameter(models.Model): # Prevent multiple instances of a parameter for a single part unique_together = ('part', 'template') - part = models.ForeignKey(Part, on_delete=models.CASCADE, related_name='parameters', help_text=_('Parent Part')) + part = models.ForeignKey(Part, on_delete=models.CASCADE, related_name='parameters', verbose_name=_('Part'), help_text=_('Parent Part')) - template = models.ForeignKey(PartParameterTemplate, on_delete=models.CASCADE, related_name='instances', help_text=_('Parameter Template')) + template = models.ForeignKey(PartParameterTemplate, on_delete=models.CASCADE, related_name='instances', verbose_name=_('Template'), help_text=_('Parameter Template')) - data = models.CharField(max_length=500, help_text=_('Parameter Value')) + data = models.CharField(max_length=500, verbose_name=_('Data'), help_text=_('Parameter Value')) @classmethod def create(cls, part, template, data, save=False): diff --git a/InvenTree/stock/forms.py b/InvenTree/stock/forms.py index 0bec20a3e8..9bc5063925 100644 --- a/InvenTree/stock/forms.py +++ b/InvenTree/stock/forms.py @@ -114,7 +114,7 @@ class CreateStockItemForm(HelperForm): help_text=('Expiration date for this stock item'), ) - serial_numbers = forms.CharField(label=_('Serial numbers'), required=False, help_text=_('Enter unique serial numbers (or leave blank)')) + serial_numbers = forms.CharField(label=_('Serial Numbers'), required=False, help_text=_('Enter unique serial numbers (or leave blank)')) def __init__(self, *args, **kwargs): diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 1be988fed0..df767a3a70 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -1548,11 +1548,11 @@ class StockItemTracking(models.Model): date = models.DateTimeField(auto_now_add=True, editable=False) - title = models.CharField(blank=False, max_length=250, help_text=_('Tracking entry title')) + title = models.CharField(blank=False, max_length=250, verbose_name=_('Title'), help_text=_('Tracking entry title')) - notes = models.CharField(blank=True, max_length=512, help_text=_('Entry notes')) + notes = models.CharField(blank=True, max_length=512, verbose_name=_('Notes'), help_text=_('Entry notes')) - link = InvenTreeURLField(blank=True, help_text=_('Link to external page for further information')) + link = InvenTreeURLField(blank=True, verbose_name=_('Link'), help_text=_('Link to external page for further information')) user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True) From 446bc06c1bf172d0b806a5b9f5b2e79ad5bf6c5f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Apr 2021 04:01:40 +0200 Subject: [PATCH 03/16] switched translation methode to lazy --- InvenTree/InvenTree/forms.py | 2 +- InvenTree/build/forms.py | 2 +- InvenTree/build/models.py | 2 +- InvenTree/build/views.py | 2 +- InvenTree/common/models.py | 2 +- InvenTree/company/forms.py | 2 +- InvenTree/company/models.py | 2 +- InvenTree/order/forms.py | 2 +- InvenTree/order/models.py | 2 +- InvenTree/part/forms.py | 2 +- InvenTree/stock/forms.py | 2 +- InvenTree/stock/views.py | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/InvenTree/InvenTree/forms.py b/InvenTree/InvenTree/forms.py index 56a1a116da..79cdf49c3d 100644 --- a/InvenTree/InvenTree/forms.py +++ b/InvenTree/InvenTree/forms.py @@ -5,7 +5,7 @@ Helper forms which subclass Django forms to provide additional functionality # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django import forms from crispy_forms.helper import FormHelper from crispy_forms.layout import Layout, Field diff --git a/InvenTree/build/forms.py b/InvenTree/build/forms.py index 380c72f50d..48be9a0ffa 100644 --- a/InvenTree/build/forms.py +++ b/InvenTree/build/forms.py @@ -5,7 +5,7 @@ Django Forms for interacting with Build objects # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django import forms from InvenTree.forms import HelperForm diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index 1c668324a5..ad0149ed48 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -9,7 +9,7 @@ import os from datetime import datetime from django.contrib.auth.models import User -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django.core.exceptions import ValidationError from django.urls import reverse diff --git a/InvenTree/build/views.py b/InvenTree/build/views.py index e8a1d33ddc..15ced77130 100644 --- a/InvenTree/build/views.py +++ b/InvenTree/build/views.py @@ -5,7 +5,7 @@ Django views for interacting with Build objects # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django.core.exceptions import ValidationError from django.views.generic import DetailView, ListView, UpdateView from django.forms import HiddenInput diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index df8e3b2d37..12b51438cb 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -17,7 +17,7 @@ from djmoney.models.fields import MoneyField from djmoney.contrib.exchange.models import convert_money from djmoney.contrib.exchange.exceptions import MissingRate -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django.core.validators import MinValueValidator, URLValidator from django.core.exceptions import ValidationError diff --git a/InvenTree/company/forms.py b/InvenTree/company/forms.py index 3d2826fdec..2677402334 100644 --- a/InvenTree/company/forms.py +++ b/InvenTree/company/forms.py @@ -8,7 +8,7 @@ from __future__ import unicode_literals from InvenTree.forms import HelperForm from InvenTree.fields import RoundingDecimalFormField -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ import django.forms import djmoney.settings diff --git a/InvenTree/company/models.py b/InvenTree/company/models.py index c1b0594aac..e05d81a16a 100644 --- a/InvenTree/company/models.py +++ b/InvenTree/company/models.py @@ -9,7 +9,7 @@ import os import math -from django.utils.translation import gettext_lazy as _ +from django.utils.translation import ugettext_lazy as _ from django.core.validators import MinValueValidator from django.db import models from django.db.models import Sum, Q, UniqueConstraint diff --git a/InvenTree/order/forms.py b/InvenTree/order/forms.py index bb6cb40889..c8501d68b2 100644 --- a/InvenTree/order/forms.py +++ b/InvenTree/order/forms.py @@ -6,7 +6,7 @@ Django Forms for interacting with Order objects from __future__ import unicode_literals from django import forms -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from mptt.fields import TreeNodeChoiceField diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index cb78eabc6a..b1ee7f7c74 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -15,7 +15,7 @@ from django.core.validators import MinValueValidator from django.core.exceptions import ValidationError from django.contrib.auth.models import User from django.urls import reverse -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from markdownx.models import MarkdownxField diff --git a/InvenTree/part/forms.py b/InvenTree/part/forms.py index 7962ec3252..42970ccfb1 100644 --- a/InvenTree/part/forms.py +++ b/InvenTree/part/forms.py @@ -11,7 +11,7 @@ from InvenTree.fields import RoundingDecimalFormField from mptt.fields import TreeNodeChoiceField from django import forms -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ import common.models diff --git a/InvenTree/stock/forms.py b/InvenTree/stock/forms.py index 9bc5063925..3560f205cc 100644 --- a/InvenTree/stock/forms.py +++ b/InvenTree/stock/forms.py @@ -7,7 +7,7 @@ from __future__ import unicode_literals from django import forms from django.forms.utils import ErrorDict -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django.core.validators import MinValueValidator from django.core.exceptions import ValidationError diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py index 6edcb8cf70..eeee13ad3a 100644 --- a/InvenTree/stock/views.py +++ b/InvenTree/stock/views.py @@ -14,7 +14,7 @@ from django.urls import reverse from django.contrib.auth import get_user_model from django.contrib.auth.models import Group -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from moneyed import CURRENCIES From 0547e1c03bf1d9b82a914555b7272c545552c0fa Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Apr 2021 04:05:59 +0200 Subject: [PATCH 04/16] added more translations in html / js --- .../build/templates/build/build_base.html | 4 +-- .../templates/company/company_base.html | 6 ++-- .../company/supplier_part_orders.html | 2 +- .../order/order_wizard/select_parts.html | 2 +- .../order/order_wizard/select_pos.html | 2 +- .../order/templates/order/receive_parts.html | 2 +- .../templates/order/sales_order_base.html | 2 +- .../part/bom_upload/select_fields.html | 4 +-- InvenTree/part/templates/part/params.html | 4 +-- InvenTree/part/templates/part/part_base.html | 2 +- .../part/templates/part/part_pricing.html | 30 ++++++++++--------- .../stock/templates/stock/item_base.html | 2 +- InvenTree/stock/templates/stock/location.html | 6 ++-- .../stock/templates/stock/stock_adjust.html | 2 +- InvenTree/templates/InvenTree/search.html | 8 ++--- InvenTree/templates/js/modals.js | 2 +- InvenTree/templates/js/stock.js | 4 +-- InvenTree/templates/qr_button.html | 2 +- 18 files changed, 44 insertions(+), 42 deletions(-) diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html index 83cef5bd44..a8e5e53377 100644 --- a/InvenTree/build/templates/build/build_base.html +++ b/InvenTree/build/templates/build/build_base.html @@ -164,7 +164,7 @@ src="{% static 'img/blank_image.png' %}" launchModalForm("{% url 'build-cancel' build.id %}", { reload: true, - submit_text: "Cancel Build", + submit_text: '{% trans "Cancel Build" %}', }); }); @@ -173,7 +173,7 @@ src="{% static 'img/blank_image.png' %}" "{% url 'build-complete' build.id %}", { reload: true, - submit_text: "Complete Build", + submit_text: '{% trans "Complete Build" %}', } ); }); diff --git a/InvenTree/company/templates/company/company_base.html b/InvenTree/company/templates/company/company_base.html index 9331e5d895..236cc58981 100644 --- a/InvenTree/company/templates/company/company_base.html +++ b/InvenTree/company/templates/company/company_base.html @@ -43,17 +43,17 @@ InvenTree | {% trans "Company" %} - {{ company.name }}

{{ company.description }}

{% if company.is_supplier and roles.purchase_order.add %} - {% endif %} {% if perms.company.change_company %} - {% endif %} {% if perms.company.delete_company %} - {% endif %} diff --git a/InvenTree/company/templates/company/supplier_part_orders.html b/InvenTree/company/templates/company/supplier_part_orders.html index ae4b025b11..f01bfa68d1 100644 --- a/InvenTree/company/templates/company/supplier_part_orders.html +++ b/InvenTree/company/templates/company/supplier_part_orders.html @@ -14,7 +14,7 @@ {% if roles.purchase_order.add %}
-
diff --git a/InvenTree/order/templates/order/order_wizard/select_parts.html b/InvenTree/order/templates/order/order_wizard/select_parts.html index c93e26e363..21e23266bb 100644 --- a/InvenTree/order/templates/order/order_wizard/select_parts.html +++ b/InvenTree/order/templates/order/order_wizard/select_parts.html @@ -66,7 +66,7 @@
- diff --git a/InvenTree/order/templates/order/order_wizard/select_pos.html b/InvenTree/order/templates/order/order_wizard/select_pos.html index 3c322410ca..616e618deb 100644 --- a/InvenTree/order/templates/order/order_wizard/select_pos.html +++ b/InvenTree/order/templates/order/order_wizard/select_pos.html @@ -42,7 +42,7 @@
- diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index ac4ebcf2bc..dfab8d1ae7 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -49,7 +49,7 @@ src="{% static 'img/blank_image.png' %}" {% if roles.sales_order.change %} - {% if order.status == SalesOrderStatus.PENDING %} diff --git a/InvenTree/part/templates/part/bom_upload/select_fields.html b/InvenTree/part/templates/part/bom_upload/select_fields.html index 5e44cee2b9..e82223da88 100644 --- a/InvenTree/part/templates/part/bom_upload/select_fields.html +++ b/InvenTree/part/templates/part/bom_upload/select_fields.html @@ -44,7 +44,7 @@
{{ col.name }} -
@@ -73,7 +73,7 @@ {% for row in bom_rows %} - diff --git a/InvenTree/part/templates/part/params.html b/InvenTree/part/templates/part/params.html index 52b32d0643..b8cb1ae563 100644 --- a/InvenTree/part/templates/part/params.html +++ b/InvenTree/part/templates/part/params.html @@ -65,8 +65,8 @@ reload: true, secondary: [{ field: 'template', - label: 'New Template', - title: 'Create New Parameter Template', + label: '{% trans "New Template" %}', + title: '{% trans "Create New Parameter Template" %}', url: "{% url 'part-param-template-create' %}" }], }); diff --git a/InvenTree/part/templates/part/part_base.html b/InvenTree/part/templates/part/part_base.html index 96c9636c88..f11fe879ce 100644 --- a/InvenTree/part/templates/part/part_base.html +++ b/InvenTree/part/templates/part/part_base.html @@ -246,7 +246,7 @@ launchModalForm( "{% url 'part-pricing' part.id %}", { - submit_text: 'Calculate', + submit_text: '{% trans "Calculate" %}', hideErrorMessage: true, } ); diff --git a/InvenTree/part/templates/part/part_pricing.html b/InvenTree/part/templates/part/part_pricing.html index c0b23ffbd7..7865bb2fbe 100644 --- a/InvenTree/part/templates/part/part_pricing.html +++ b/InvenTree/part/templates/part/part_pricing.html @@ -1,35 +1,37 @@ {% extends "modal_form.html" %} +{% load i18n %} + {% block pre_form_content %}
-Pricing information for:
+{% trans 'Pricing information for:' %}
{{ part }}.
-

Quantity

+

{% trans 'Quantity' %}

- + - +
Part{% trans 'Part' %} {{ part }}
Quantity{% trans 'Quantity' %} {{ quantity }}
{% if part.supplier_count > 0 %} -

Supplier Pricing

+

{% trans 'Supplier Pricing' %}

{% if min_total_buy_price %} - + {% if quantity > 1 %} - + @@ -37,7 +39,7 @@ Pricing information for:
{% else %} {% endif %} @@ -45,17 +47,17 @@ Pricing information for:
{% endif %} {% if part.bom_count > 0 %} -

BOM Pricing

+

{% trans 'BOM Pricing' %}

Unit Cost{% trans 'Unit Cost' %} Min: {% include "price.html" with price=min_unit_buy_price %} Max: {% include "price.html" with price=max_unit_buy_price %}
Total Cost{% trans 'Total Cost' %} Min: {% include "price.html" with price=min_total_buy_price %} Max: {% include "price.html" with price=max_total_buy_price %}
- No supplier pricing available + {% trans 'No supplier pricing available' %}
{% if min_total_bom_price %} - + {% if quantity > 1 %} - + @@ -63,14 +65,14 @@ Pricing information for:
{% if part.has_complete_bom_pricing == False %} {% endif %} {% else %} {% endif %} @@ -80,7 +82,7 @@ Pricing information for:
{% if min_unit_buy_price or min_unit_bom_price %} {% else %}
- No pricing information is available for this part. + {% trans 'No pricing information is available for this part.' %}
{% endif %} diff --git a/InvenTree/stock/templates/stock/item_base.html b/InvenTree/stock/templates/stock/item_base.html index f5459dac27..a72b727f69 100644 --- a/InvenTree/stock/templates/stock/item_base.html +++ b/InvenTree/stock/templates/stock/item_base.html @@ -451,7 +451,7 @@ $("#stock-edit").click(function () { "{% url 'stock-item-edit' item.id %}", { reload: true, - submit_text: "Save", + submit_text: '{% trans "Save" %}', } ); }); diff --git a/InvenTree/stock/templates/stock/location.html b/InvenTree/stock/templates/stock/location.html index 5c2b4e04db..74e43f88bb 100644 --- a/InvenTree/stock/templates/stock/location.html +++ b/InvenTree/stock/templates/stock/location.html @@ -160,7 +160,7 @@ $("#stock-export").click(function() { launchModalForm("{% url 'stock-export-options' %}", { - submit_text: "Export", + submit_text: '{% trans "Export" %}', success: function(response) { var url = "{% url 'stock-export' %}"; @@ -188,8 +188,8 @@ secondary: [ { field: 'parent', - label: 'New Location', - title: 'Create new location', + label: '{% trans "New Location" %}', + title: '{% trans "Create new location" %}', url: "{% url 'stock-location-create' %}", }, ] diff --git a/InvenTree/stock/templates/stock/stock_adjust.html b/InvenTree/stock/templates/stock/stock_adjust.html index a72407f735..5ba98231b0 100644 --- a/InvenTree/stock/templates/stock/stock_adjust.html +++ b/InvenTree/stock/templates/stock/stock_adjust.html @@ -40,7 +40,7 @@ {% endif %} - + {% endfor %}
Unit Cost{% trans 'Unit Cost' %} Min: {% include "price.html" with price=min_unit_bom_price %} Max: {% include "price.html" with price=max_unit_bom_price %}
Total Cost{% trans 'Total Cost' %} Min: {% include "price.html" with price=min_total_bom_price %} Max: {% include "price.html" with price=max_total_bom_price %}
- Note: BOM pricing is incomplete for this part + {% trans 'Note: BOM pricing is incomplete for this part' %}
- No BOM pricing available + {% trans 'No BOM pricing available' %}
diff --git a/InvenTree/templates/InvenTree/search.html b/InvenTree/templates/InvenTree/search.html index 5eb755dcb2..b65ec00c00 100644 --- a/InvenTree/templates/InvenTree/search.html +++ b/InvenTree/templates/InvenTree/search.html @@ -133,14 +133,14 @@ InvenTree | {% trans "Search Results" %} columns: [ { field: 'name', - title: 'Name', + title: '{% trans "Name" %}', formatter: function(value, row, index, field) { return renderLink(value, '/part/category/' + row.pk + '/'); }, }, { field: 'description', - title: 'Description', + title: '{% trans "Description" %}', }, ], }); @@ -270,14 +270,14 @@ InvenTree | {% trans "Search Results" %} columns: [ { field: 'name', - title: 'Name', + title: '{% trans "Name" %}', formatter: function(value, row, index, field) { return renderLink(row.pathstring, '/stock/location/' + row.pk + '/'); }, }, { field: 'description', - title: 'Description', + title: '{% trans "Description" %}', }, ], }); diff --git a/InvenTree/templates/js/modals.js b/InvenTree/templates/js/modals.js index 2c246d2a36..004e81c000 100644 --- a/InvenTree/templates/js/modals.js +++ b/InvenTree/templates/js/modals.js @@ -253,7 +253,7 @@ function loadingMessageContent() { */ // TODO - This can be made a lot better - return " Waiting for server..."; + return " {% trans 'Waiting for server...' %}"; } diff --git a/InvenTree/templates/js/stock.js b/InvenTree/templates/js/stock.js index bfb539c3c5..02714810e3 100644 --- a/InvenTree/templates/js/stock.js +++ b/InvenTree/templates/js/stock.js @@ -976,8 +976,8 @@ function loadStockTrackingTable(table, options) { formatter: function(value, row, index, field) { // Manually created entries can be edited or deleted if (!row.system) { - var bEdit = ""; - var bDel = ""; + var bEdit = ""; + var bDel = ""; return "
" + bEdit + bDel + "
"; } else { diff --git a/InvenTree/templates/qr_button.html b/InvenTree/templates/qr_button.html index cc10e0cd26..5ed65d32ab 100644 --- a/InvenTree/templates/qr_button.html +++ b/InvenTree/templates/qr_button.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 1854da380b7e758501261d9731ea86adef338a68 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Apr 2021 04:07:27 +0200 Subject: [PATCH 05/16] made filters.js dynamic for translation --- InvenTree/InvenTree/urls.py | 1 + InvenTree/templates/base.html | 2 +- .../script/inventree => templates/js}/filters.js | 10 ++++++---- 3 files changed, 8 insertions(+), 5 deletions(-) rename InvenTree/{InvenTree/static/script/inventree => templates/js}/filters.js (94%) diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index a9f53a7014..7c22639e65 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -110,6 +110,7 @@ dynamic_javascript_urls = [ url(r'^stock.js', DynamicJsView.as_view(template_name='js/stock.js'), name='stock.js'), url(r'^tables.js', DynamicJsView.as_view(template_name='js/tables.js'), name='tables.js'), url(r'^table_filters.js', DynamicJsView.as_view(template_name='js/table_filters.js'), name='table_filters.js'), + url(r'^filters.js', DynamicJsView.as_view(template_name='js/filters.js'), name='filters.js'), ] urlpatterns = [ diff --git a/InvenTree/templates/base.html b/InvenTree/templates/base.html index 2120d0ccfb..aa571ef19a 100644 --- a/InvenTree/templates/base.html +++ b/InvenTree/templates/base.html @@ -139,7 +139,6 @@ InvenTree - @@ -156,6 +155,7 @@ InvenTree + diff --git a/InvenTree/InvenTree/static/script/inventree/filters.js b/InvenTree/templates/js/filters.js similarity index 94% rename from InvenTree/InvenTree/static/script/inventree/filters.js rename to InvenTree/templates/js/filters.js index df767441d4..01b74763e0 100644 --- a/InvenTree/InvenTree/static/script/inventree/filters.js +++ b/InvenTree/templates/js/filters.js @@ -1,3 +1,5 @@ +{% load i18n %} + /** * Code for managing query filters / table options. * @@ -188,7 +190,7 @@ function generateAvailableFilterList(tableKey) { var html = `